View a markdown version of this page

AWSSupport-TroubleshootDMSEndpointConnection - AWS Systems Manager Automation Runbook 參考

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

AWSSupport-TroubleshootDMSEndpointConnection

Description

AWSSupport-TroubleshootDMSEndpointConnection Runbook 可協助診斷和疑難排解 AWS Database Migration Service 複寫執行個體和 AWS DMS 端點之間的連線問題。自動化使用 Reachability Analyzer 檢查來測試網路連線,並分析網路組態,以識別可能阻止成功 AWS DMS 遷移的潛在連線問題。

重要

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

重要

此 Runbook 會建立和叫用 AWS Lambda 函數,這會產生 Lambda 費用。每個 Reachability Analyzer 分析執行也會產生費用。如需定價詳細資訊,請參閱網路分析索引標籤下的 Amazon VPC 定價頁面和AWS Lambda 定價

如何運作?

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 等。

執行此自動化 (主控台)

文件類型

 自動化

擁有者

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 作為連接的受管政策,以便成功執行 Reachability Analyzer 測試。

範例政策:

{ "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 AWSSupport-TroubleshootDMSEndpointConnection中導覽至 。

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

  3. 針對輸入參數,輸入下列內容:

    • 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]$

  4. 選取執行

  5. 自動化會啟動。

  6. 文件會執行下列步驟:

    • 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),確保自動化完成後不會保留任何剩餘資源。

  7. 完成後,請檢閱輸出區段以取得執行的詳細結果:

    • GetTestConnectionStatus.status

      AWS DMS 複寫執行個體和端點之間的目前連線測試狀態 (例如,成功、失敗、測試)。

    • DescribeCloudFormationErrorFromStackEvents.Events

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

    • GenerateReport.report

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

    • GenerateErrors.report

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

參考

Systems Manager Automation