

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

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

 **描述** 

该**AWSSupport-TroubleshootDMSEndpointConnection**运行手册有助于诊断和解决 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 复制实例和终端节点之间的连接。如果您尚未测试连接，请先进行测试，否则可能需要重新运行此运行手册。 AWS DMS 复制实例和终端节点都必须处于可用状态，才能进行准确的连接测试。

**重要**  
该运行手册创建和调用 AWS Lambda 函数，这将产生 Lambda 费用。每次 Reachability Analyzer 分析运行也会产生费用。有关定价详情，请参阅网络分析选项卡下的 [Amazon VPC 定价](https://aws.amazon.com/vpc/pricing/)页面和[AWS Lambda 定价](https://aws.amazon.com/lambda/pricing/)。

 **如何工作？** 

该运行手册通过以下阶段对 AWS DMS 连接进行系统分析：

**第 1 阶段：资源验证和先决条件**
+ **端点验证：验证** AWS DMS 端点是否存在，检索其配置（服务器名称、端口、引擎类型），并确认支持数据库引擎进行故障排除。
+ **连接测试状态**：使用 AWS DMS `DescribeConnections` API 检索复制实例和终端节点之间的当前连接测试状态，包括先前测试尝试中的任何失败消息。
+ **复制实例分析**：收集网络配置详细信息，包括 Amazon VPC ID IDs、子网 IDs、安全组，并识别复制实例的关联弹性网络接口 (ENI)。

**第 2 阶段：DNS 解析和网络路径发现**
+ **基于 Amazon VPC 的 DNS 解析**：在与复制实例相同的亚马逊 VPC 内创建一个临时 Lambda 函数，以便在亚马逊 VPC 环境中将终端节点主机名解析为其 IP 地址，从而确保精确的私有 DNS 解析。
+ **目标识别**：根据终端节点是在同一 Amazon VPC（使用 ENI）还是外部（使用已解析的 IP 地址）内，确定 Reachability Analyzer 的相应目标。
+ **IPv6 兼容性检查**：验证已解析的地址是否是 IPv4，因为 Reachability Analyzer 不支持地址。 IPv6 

**第 3 阶段：全面的网络路径分析**
+ **Reachability Analyzer** Execution：创建从复制实例 ENI 到目标（端点 ENI 或 IP 地址）的网络洞察路径，并执行全面分析以测试指定端口上的 TCP 连接。
+ **多层网络分析**：检查完整的网络路径，包括路由表、安全组、网络、Internet 网关 ACLs、NAT 网关、Amazon VPC 对等连接和传输网关，以确定连接障碍。
+ **详细解释生成**：对于失败的连接，提供了每个阻塞流量的网络组件的具体说明，包括确切的规则号、CIDR 块、端口范围和协议限制。

**第 4 阶段：报告生成和资源清理**
+ **综合报告**：生成一份详细的报告，其中包含连接测试摘要、网络路径分析结果和具体的故障说明以及补救指南。
+ **资源管理**：自动清理创建的资源（Lambda 函数、IAM 角色、网络洞察路径），除非 PersistReachabilityAnalyzerResults 将参数设置为保留分析结果以供进一步调查。
+ **错误处理**：为各种故障场景提供特定的错误报告，包括不支持的数据库引擎、资源缺失、DNS 解析失败和权限问题。

该运行手册支持对多个数据库引擎的连接进行故障排除，包括亚马逊 Aurora、亚马逊文档数据库、亚马逊 DynamoDB、亚马逊 Neptune、亚马逊 Redshift、亚马逊 S3、Azure SQL 数据库、MySQL、Oracle、PostgreSQL DB2、SQL Server 等。

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

**文档类型**

自动化

**所有者**

Amazon

**平台**

/

**所需的 IAM 权限**

`AutomationAssumeRole` 参数需要执行以下操作才能成功使用运行手册。
+ `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`应将[亚马逊VPCReachabilityAnalyzerFullAccessPolicy](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. [https://console.aws.amazon.com/systems-manager/documents/AWSSupport-TroubleshootDMSEndpointConnection/description](https://console.aws.amazon.com/systems-manager/documents/AWSSupport-TroubleshootDMSEndpointConnection/description)在 Systems Manager 的 “文档” 下导航至。

1. 选择 **Execute automation**（执行自动化）。

1. 对于输入参数，请输入以下内容：
   + **AutomationAssumeRole （可选）：**
     + 描述：（可选）允许 SSM Automation 代表您执行操作的 AWS Identity and Access Management (IAM) 角色的亚马逊资源名称 (ARN)。如果未指定角色，SSM Automation 将使用启动此运行手册的用户的权限。
     + 类型：`AWS::IAM::Role::Arn`
   + **DmsEndpointArn （必填）**
     + 描述：（必填）终端节点的亚马逊资源名称 (ARN)。 AWS Database Migration Service 
     + 类型：`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 资源名称 (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 （可选）**
     + 描述：（可选）指示是否应保留网络洞察分析执行结果的标志。
     + 类型：`Boolean`
     + 允许的值：`[true, false]`
     +  默认值：`false`
   + **LambdaRoleArn （可选）**
     + 描述：（可选）允许该 AWS Lambda 函数访问所需 AWS 服务和资源的 AWS AWS Identity and Access Management (IAM) 角色的 Amazon 资源名称 (ARN)。如果未指定任何角色，则此 Systems Manager Automation 将在您的账户中为 Lambda 创建一个 IAM 角色。
     + 类型：`AWS::IAM::Role::Arn`
     +  默认值：`""`
   + **确认（必填）**
     + 描述：（必填）输入`yes`以确认本运行手册将在您的账户中创建 Lambda 函数，如果`LambdaRoleArn`未提供，则将创建 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:**

     验证执行角色是否具有清理将在自动化过程中创建的资源的必要权限。
   + **创建 DNSResolver Lambda：**

     创建一个 AWS CloudFormation 堆栈，其中包含 Lambda 函数，该函数部署在与复制实例相同的 Amazon VPC 中。此函数用于在 Amazon VPC 环境中将 DNS 名称解析为私有 IP 地址。
   + **DescribeCloudFormationErrorFromStackEvents:**

     如果 CloudFormation 堆栈创建失败，则此步骤描述堆栈事件中的错误，以提供详细的故障信息以进行故障排除。
   + **获取 DNSResolverLambdaName：**

     从 CloudFormation 堆栈输出中检索 DNS 解析器 Lambda 函数的名称，以便在后续步骤中使用。
   + **ResolveDmsEndpoint:**

     在亚马逊 VPC 内调用 Lambda 函数将 AWS DMS 终端节点主机名解析为其 IP 地址。这可确保精确的私有 DNS 解析并验证 IPv4 兼容性。
   + **BranchOnResolveDmsEndpointErrors:**

     根据 DNS 解析错误对自动化进行分支。如果端点无法解析或无法解析到 IPv6 地址，则自动化会生成错误报告。
   + **GetReachabilityAnalyzerTarget:**

     根据亚马逊 VPC 配置和终端节点位置为 Reachability Analyzer 确定合适的目标。确定是使用 ENI（对于相同的亚马逊 VPC 终端节点）还是 IP 地址（对于外部终端节点）作为目标。
   + **GenerateErrors:**

     在前面的步骤中出现故障时，创建全面的错误报告。这包括有关端点验证错误、连接测试失败或 DNS 解析问题的详细信息以及特定的补救指南。
   + **GenerateReport:**

     创建一份全面的故障排除报告，其中包含连接状态、使用 Reachability Analyzer 的网络路径分析结果、连接障碍的详细说明以及建议的解决措施。
   + **CheckStackExists:**

     检查 CloudFormation 堆栈是否已成功创建，是否需要在清理期间删除。无论自动化成功与否，此步骤均可确保适当的资源管理。
   + **删除 DNSResolver Lambda：**

     删除包含 DNS 解析器 Lambda 函数和相关资源的 CloudFormation 堆栈（`PersistReachabilityAnalyzerResults`除非设置`true`为），确保自动化完成后没有剩余资源。

1. 完成后，请查看 “**输出**” 部分，了解执行的详细结果：
   + **GetTestConnectionStatus. status**

      AWS DMS 复制实例和端点之间的当前连接测试状态（例如，成功、失败、正在测试）。
   + **DescribeCloudFormationErrorFromStackEvents. 活动**

     如果 CloudFormation 堆栈创建失败，则此输出将包含堆栈创建过程中的详细错误事件，以帮助诊断基础架构部署问题。
   + **GenerateReport. 报告**

     一份全面的故障排除报告，其中包含连接分析结果、Reachability Analyzer 调查结果、网络路径分析、确定的特定连接障碍以及详细的补救建议，以及相关文档的链接。 AWS 
   + **GenerateErrors. 报告**

     如果在自动化过程中出现错误，则此输出将提供详细的错误报告，包括具体的失败原因、受影响的资源以及在重试自动化之前解决问题的指导。

 **参考** 

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/)