

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# `AWSSupport-TroubleshootDMSEndpointConnection`
<a name="automation-awssupport-troubleshootdmsendpointconnection"></a>

 **Description** 

**AWSSupport-TroubleshootDMSEndpointConnection** Runbook 可協助診斷和疑難排解 AWS Database Migration Service 複寫執行個體和 AWS DMS 端點之間的連線問題。自動化使用 [Reachability Analyzer](https://docs.aws.amazon.com/vpc/latest/reachability/what-is-reachability-analyzer.html) 檢查來測試網路連線，並分析網路組態，以識別可能阻止成功 AWS DMS 遷移的潛在連線問題。

**重要**  
您必須先使用 AWS DMS 主控台或 API 測試 AWS DMS 複寫執行個體與端點之間的連線，再執行此 Runbook。如果您尚未測試連線，請先執行此操作，否則您可能需要重新執行此 Runbook。 AWS DMS 複寫執行個體和端點都必須處於可用狀態，才能進行準確的連線測試。

**重要**  
此 Runbook 會建立和叫用 AWS Lambda 函數，這會產生 Lambda 費用。每個 Reachability Analyzer 分析執行也會產生費用。如需定價詳細資訊，請參閱網路分析索引標籤下的 [Amazon VPC 定價](https://aws.amazon.com/vpc/pricing/)頁面和[AWS Lambda 定價](https://aws.amazon.com/lambda/pricing/)。

 **如何運作？** 

Runbook 會透過下列階段執行 AWS DMS 連線的系統性分析：

**階段 1：資源驗證和先決條件**
+ **端點驗證**：驗證 AWS DMS 端點是否存在、擷取其組態 （伺服器名稱、連接埠、引擎類型），並確認資料庫引擎支援故障診斷。
+ **連線測試狀態**：使用 AWS DMS `DescribeConnections` API 擷取複寫執行個體和端點之間的目前連線測試狀態，包括先前測試嘗試的任何失敗訊息。
+ **複寫執行個體分析**：收集網路組態詳細資訊，包括 Amazon VPC ID、子網路 IDs、安全群組 IDs，並識別複寫執行個體的相關聯彈性網路界面 (ENI)。

**階段 2：DNS 解析和網路路徑探索**
+ **Amazon VPC 型 DNS 解析**：在與複寫執行個體相同的 Amazon VPC 內建立暫時 Lambda 函數，從 Amazon VPC 內容中將端點主機名稱解析為其 IP 地址，以確保準確的私有 DNS 解析。
+ **目標識別**：根據端點是否位於相同的 Amazon VPC （使用 ENI) 或外部 （使用解析的 IP 地址），判斷 Reachability Analyzer 的適當目標。
+ **IPv6 相容性檢查**：驗證已解析的地址是 IPv4，因為 Reachability Analyzer 不支援 IPv6 地址。

**階段 3：全面網路路徑分析**
+ **Reachability Analyzer 執行**：建立從複寫執行個體 ENI 到目標 （端點 ENI 或 IP 地址） 的 Network Insights 路徑，並執行全面的分析，以測試指定連接埠上的 TCP 連線。
+ **多層網路分析**：檢查完整的網路路徑，包括路由表、安全群組、網路 ACLs、網際網路閘道、NAT 閘道、Amazon VPC 對等互連和傳輸閘道，以識別連線障礙。
+ **詳細解釋產生**：對於連線失敗， 會針對封鎖流量的每個網路元件提供特定說明，包括確切的規則編號、CIDR 區塊、連接埠範圍和通訊協定限制。

**階段 4：報告產生和資源清除**
+ **全面報告**：產生詳細的報告，其中包含連線測試摘要、網路路徑分析結果，以及修復指引的特定失敗說明。
+ **資源管理**：自動清除已建立的資源 (Lambda 函數、IAM 角色、Network Insights 路徑），除非 PersistReachabilityAnalyzerResults 參數設定為保留分析結果以供進一步調查。
+ **錯誤處理**：提供各種失敗案例的特定錯誤報告，包括不支援的資料庫引擎、缺少資源、DNS 解析失敗和許可問題。

Runbook 支援對多個資料庫引擎的連線進行故障診斷，包括 Amazon Aurora、Amazon DocumentDB、Amazon DynamoDB、Amazon Neptune、Amazon Redshift、Amazon S3、Azure SQL Database、DB2、MySQL、Oracle、PostgreSQL、SQL Server 等。

 [執行此自動化 （主控台）](https://console.aws.amazon.com/systems-manager/automation/execute/AWSSupport-TroubleshootDMSEndpointConnection) 

**文件類型**

 自動化

**擁有者**

Amazon

**平台**

/

**必要的 IAM 許可**

`AutomationAssumeRole` 參數需要下列動作才能成功使用 Runbook。
+ `cloudformation:CreateStack`
+ `cloudformation:DeleteStack`
+ `cloudformation:DescribeStacks`
+ `cloudformation:DescribeStackEvents`
+ `dms:DescribeEndpoints`
+ `dms:DescribeReplicationInstances`
+ `dms:DescribeConnections`
+ `iam:GetRole`
+ `iam:PassRole`
+ `iam:SimulatePrincipalPolicy`
+ `lambda:CreateFunction`
+ `lambda:DeleteFunction`
+ `lambda:GetFunction`
+ `lambda:InvokeFunction`
+ `lambda:ListTags`
+ `lambda:TagResource`
+ `lambda:UntagResource`
+ `lambda:UpdateFunctionCode`

 **選用的 IAM 許可** 

只有在您未提供`LambdaRoleArn`參數且希望自動化為您建立 Lambda 執行角色`AutomationAssumeRole`時，才需要下列許可：
+ `iam:CreateRole`
+ `iam:DeleteRole`
+ `iam:AttachRolePolicy`
+ `iam:DetachRolePolicy`
+ `iam:TagRole`
+ `iam:UntagRole`

**重要**  
 除了上述動作之外， `AutomationAssumeRole`還應該將 [ AmazonVPCReachabilityAnalyzerFullAccessPolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonVPCReachabilityAnalyzerFullAccessPolicy.html) 作為[連接的受管政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html)，以便成功執行 [Reachability Analyzer](https://docs.aws.amazon.com/vpc/latest/reachability/what-is-reachability-analyzer.html) 測試。

範例政策：

```
        {
            "Version": "2012-10-17"		 	 	 ,
            "Statement": [
                {
                    "Sid": "AllowDMSTroubleshootingActions",
                    "Effect": "Allow",
                    "Action": [
                        "dms:DescribeEndpoints",
                        "dms:DescribeReplicationInstances",
                        "dms:DescribeConnections",
                        "lambda:GetFunction",
                        "lambda:ListTags",
                        "lambda:CreateFunction",
                        "lambda:DeleteFunction",
                        "lambda:TagResource",
                        "lambda:UntagResource",
                        "lambda:UpdateFunctionCode",
                        "cloudformation:DescribeStacks",
                        "cloudformation:DescribeStackEvents",
                        "cloudformation:CreateStack",
                        "cloudformation:DeleteStack",
                        "iam:GetRole",
                        "iam:SimulatePrincipalPolicy",
                        "iam:CreateRole",
                        "iam:DeleteRole",
                        "iam:TagRole",
                        "iam:UntagRole"
                    ],
                    "Resource": "*"
                },
                {
                    "Sid": "AllowDMSLambdaInvocation",
                    "Effect": "Allow",
                    "Action": [
                        "lambda:InvokeFunction"
                    ],
                    "Resource": "arn:*:lambda:*:*:function:AWSSupport-TroubleshootDMSEndpointConnection-*"
                },
                {
                    "Sid": "AllowPassRoleToDMSLambda",
                    "Effect": "Allow",
                    "Action": [
                        "iam:PassRole"
                    ],
                    "Resource": "arn:*:iam::*:role/AWSSupport-TroubleshootDMSEndpointConnection-*",
                    "Condition": {
                        "StringLikeIfExists": {
                            "iam:PassedToService": "lambda.amazonaws.com"
                        }
                    }
                },
                {
                    "Sid": "AllowRolePolicyManagement",
                    "Effect": "Allow",
                    "Action": [
                        "iam:AttachRolePolicy",
                        "iam:DetachRolePolicy"
                    ],
                    "Resource": "*",
                    "Condition": {
                        "StringLikeIfExists": {
                            "iam:ResourceTag/AWSSupport-TroubleshootDMSEndpointConnection": "true"
                        }
                    }
                }
            ]
        }
```

 **指示** 

請依照下列步驟設定自動化：

1. 在文件下的 Systems Manager [https://console.aws.amazon.com/systems-manager/documents/AWSSupport-TroubleshootDMSEndpointConnection/description](https://console.aws.amazon.com/systems-manager/documents/AWSSupport-TroubleshootDMSEndpointConnection/description)中導覽至 。

1. 選擇 **Execute automation** (執行自動化)。

1. 針對輸入參數，輸入下列內容：
   + **AutomationAssumeRole （選用）：**
     + 描述：（選用） 允許 SSM Automation 代表您執行動作的 (IAM) 角色的 AWS Identity and Access Management Amazon Resource Name (ARN)。如果未指定角色，SSM Automation 會使用啟動此 Runbook 之使用者的許可。
     + 類型：`AWS::IAM::Role::Arn`
   + **DmsEndpointArn （必要）**
     + 描述：（必要） AWS Database Migration Service 端點的 Amazon Resource Name (ARN)。
     + 類型：`String`
     + 允許模式： `^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):dms:[a-z0-9-]+:\\d{12}:endpoint:[A-Z0-9]{1,48}$`
   + **DmsReplicationInstanceArn （必要）**
     + 描述：（必要） AWS Database Migration Service 複寫執行個體的 Amazon Resource Name (ARN)。
     + 類型：`String`
     + 允許模式： `^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):dms:[a-z0-9-]+:\\d{12}:rep:[A-Z0-9]+$`
   + **PersistReachabilityAnalyzerResults （選用）**
     + 描述：（選用） 標記，通知是否應保留 Network Insights 分析執行的結果。
     + 類型：`Boolean`
     + 允許的值： `[true, false]`
     +  預設：`false`
   + **LambdaRoleArn （選用）**
     + 描述：（選用） 允許 AWS Lambda 函數存取所需 AWS 服務和資源的 (IAM) 角色的 Amazon Resource Name AWS AWS Identity and Access Management (ARN)。如果未指定角色，則此 Systems Manager Automation 會在您的帳戶中為 Lambda 建立一個 IAM 角色。
     + 類型：`AWS::IAM::Role::Arn`
     +  預設：`""`
   + **確認 （必要）**
     + 描述：（必要） 輸入 `yes` 以確認此 Runbook 會在您的帳戶中建立 Lambda 函數，如果未`LambdaRoleArn`提供 IAM 角色，則會建立 IAM 角色。
     + 類型：`String`
     + 允許模式： `^[Yy][Ee][Ss]$`

1. 選取**執行**。

1. 自動化會啟動。

1. 文件會執行下列步驟：
   + **DescribeEndpointAndCheckEngine：**

     擷取 AWS DMS 端點組態，並驗證資料庫引擎類型是否支援故障診斷。從端點組態擷取伺服器名稱、連接埠和引擎類型。
   + **BranchOnEndpointAndCheckEngineErrors：**

     根據端點驗證中的任何錯誤來分支自動化。如果發現錯誤，自動化會繼續產生錯誤報告，否則會繼續進行連線測試。
   + **GetTestConnectionStatus：**

     使用 `DescribeConnections` API 擷取 AWS DMS 端點的連線狀態和錯誤訊息。此步驟會檢查是否已執行連線測試，並擷取任何失敗訊息。
   + **BranchOnTestConnectionStatusErrors：**

     根據連線測試狀態錯誤配置自動化。如果偵測到錯誤，自動化會產生錯誤報告；否則會繼續進行複寫執行個體分析。
   + **DescribeReplicationInstance：**

     擷取 AWS DMS 複寫執行個體的網路組態詳細資訊，包括 Amazon VPC ID、子網路 IDs、安全群組 IDs，並識別相關聯的彈性網路界面 (ENI)。
   + **ValidateResourcePermissions：**

     驗證執行角色是否具有必要的許可，以清除將在自動化程序期間建立的資源。
   + **CreateDNSResolverLambda：**

     建立 AWS CloudFormation 堆疊，其中包含部署在與複寫執行個體相同 Amazon VPC 內的 Lambda 函數。此函數用於從 Amazon VPC 內容將 DNS 名稱解析為私有 IP 地址。
   + **DescribeCloudFormationErrorFromStackEvents：**

     如果 CloudFormation 堆疊建立失敗，此步驟會描述堆疊事件的錯誤，以提供詳細的失敗資訊以進行故障診斷。
   + **GetDNSResolverLambdaName：**

     從 CloudFormation 堆疊輸出擷取 DNS 解析程式 Lambda 函數的名稱，以供後續步驟使用。
   + **ResolveDmsEndpoint：**

     叫用 Lambda 函數，從 Amazon VPC 內將 AWS DMS 端點主機名稱解析為其 IP 地址。這可確保準確的私有 DNS 解析並驗證 IPv4 相容性。
   + **BranchOnResolveDmsEndpointErrors：**

     根據 DNS 解析錯誤配置自動化。如果端點無法解析或解析為 IPv6 地址，自動化會產生錯誤報告。
   + **GetReachabilityAnalyzerTarget：**

     根據 Amazon VPC 組態和端點位置，識別 Reachability Analyzer 的適當目標。決定要使用 ENI （適用於相同的 Amazon VPC 端點） 或 IP 地址 （適用於外部端點） 作為目標。
   + **GenerateErrors：**

     在先前步驟中發生失敗時建立全面的錯誤報告。這包括端點驗證錯誤、連線測試失敗或 DNS 解析問題的詳細資訊，以及特定的修補指導。
   + **GenerateReport：**

     建立全面的故障診斷報告，其中包含連線狀態、使用 Reachability Analyzer 的網路路徑分析結果、連線障礙的詳細說明，以及建議的解決動作。
   + **CheckStackExists：**

     檢查 CloudFormation 堆疊是否已成功建立，且需要在清除期間刪除。無論自動化成功或失敗，此步驟都能確保適當的資源管理。
   + **DeleteDNSResolverLambda：**

     刪除包含 DNS 解析程式 Lambda 函數和相關資源的 CloudFormation 堆疊 （除非`PersistReachabilityAnalyzerResults`設定為 `true`)，確保自動化完成後不會保留任何剩餘資源。

1. 完成後，請檢閱**輸出**區段以取得執行的詳細結果：
   + **GetTestConnectionStatus.status**

      AWS DMS 複寫執行個體和端點之間的目前連線測試狀態 （例如，成功、失敗、測試）。
   + **DescribeCloudFormationErrorFromStackEvents.Events**

     如果 CloudFormation 堆疊建立失敗，此輸出會包含堆疊建立程序的詳細錯誤事件，以協助診斷基礎設施部署問題。
   + **GenerateReport.report**

     全面的故障診斷報告，其中包含連線分析結果、 Reachability Analyzer 調查結果、網路路徑分析、識別的特定連線障礙，以及包含 AWS 相關文件連結的詳細修復建議。
   + **GenerateErrors.report**

     如果在自動化程序期間發生錯誤，此輸出會提供詳細的錯誤報告，包括特定失敗原因、受影響的資源，以及在重試自動化之前解決問題的指引。

 **參考** 

Systems Manager Automation
+ [執行此自動化 （主控台）](https://console.aws.amazon.com/systems-manager/documents/AWSSupport-TroubleshootDMSEndpointConnection/description)
+ [執行自動化](https://docs.aws.amazon.com//systems-manager/latest/userguide/automation-working-executing.html)
+ [設定 自動化](https://docs.aws.amazon.com//systems-manager/latest/userguide/automation-setup.html)
+ [支援自動化工作流程登陸頁面](https://aws.amazon.com/premiumsupport/technology/saw/)