AWSSupport-TroubleshootGlueConnection - AWS Systems Manager 自動化 Runbook 參考

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

AWSSupport-TroubleshootGlueConnection

Description

AWSSupport-TroubleshootGlueConnections Runbook 可協助疑難排解 AWS Glue 連線問題。測試連線的目標必須透過 JDBC 連線達到,並且可以是 Amazon Relational Database Service (Amazon RDS) 叢集/執行個體、Amazon Redshift 叢集,或可透過 JDBC 存取的任何其他目標。在前兩個案例中, Reachability Analyzer 工具用於判斷是否授予來源 (AWS Glue) 和目標 (Amazon RDS 或 Amazon Redshift) 之間的連線。

如果連線的目標不是 Amazon RDS 或 Amazon Redshift,仍會透過在 AWS Glue 與連線相同的子網路中建立 AWS Lambda 函數 (網路存在點) 來測試連線,並檢查目標名稱是否可以解析,以及是否可在目標連接埠中連線。

重要

為了執行 Reachability Analyzer 檢查,彈性網路介面會在每個連線的資料來源子網路中建立。請確定您在這些子網路上有足夠的可用 IPs,而且在執行此自動化之前,一個 IP 的耗用不會影響您的工作負載。

重要

此自動化建立的所有資源都會加上標籤,以便輕鬆找到。使用的標籤為:

  • AWSSupport-TroubleshootGlueConnection:true

  • AutomationExecutionIdAmazon EC2 Systems Manager 執行 ID

如何運作?

Runbook 會執行下列步驟:

  • 描述連線 AWS Glue 以取得連線檢查的來源資訊 (子網路和安全群組)。

  • 從 JDBC URL 中參考的資料來源擷取目標資訊 (子網路和安全群組),如果存在,則從 DatasourceSecurityGroupsDatasourceSubnets 參數擷取目標資訊。

  • 如果 JDBC URL 中存在的資料來源是 Amazon RDS 執行個體或叢集或 Amazon Redshift 叢集,則此自動化會使用先前步驟中收集的來源和目標資訊來建立 ENIs,並使用 Reachability Analyzer 來執行它們之間的連線檢查。

  • Lambda 函數 (在此自動化內容中為網路存在點) 用於執行 L4 連線和名稱解析檢查。

  • 相同的 Lambda 函數用於對 Amazon S3 端點執行檢查。

  • 政策模擬器用於判斷連線中使用的 IAM 角色是否具有所需的許可。

  • 自動化會檢查連線所使用的安全群組是否具有預期的組態。

  • 產生的報告包含測試連線操作中失敗的可能原因,和/或成功執行的測試。

執行此自動化 (主控台)

文件類型

 自動化

擁有者

Amazon

平台

/

必要的 IAM 許可

AutomationAssumeRole 參數需要下列動作才能成功使用 Runbook。

  • cloudformation:CreateStack

  • cloudformation:DeleteStack

  • ec2:CreateNetworkInsightsPath

  • ec2:CreateNetworkInterface

  • ec2:CreateTags

  • ec2:DeleteNetworkInsightsAnalysis

  • ec2:DeleteNetworkInsightsPath

  • ec2:DeleteNetworkInterface

  • ec2:StartNetworkInsightsAnalysis

  • iam:AttachRolePolicy

  • iam:CreateRole

  • iam:DeleteRole

  • iam:DeleteRolePolicy

  • iam:DetachRolePolicy

  • iam:PutRolePolicy

  • iam:TagRole

  • lambda:CreateFunction

  • lambda:DeleteFunction

  • lambda:TagResource

  • logs:CreateLogGroup

  • logs:DeleteLogGroup

  • logs:PutRetentionPolicy

  • logs:TagResource

  • glue:GetConnection

  • glue:GetDataCatalogEncryptionSettings

  • cloudformation:DescribeStacks

  • cloudformation:DescribeStackEvents

  • ec2:DescribeDhcpOptions

  • ec2:DescribeNetworkInsightsPaths

  • ec2:DescribeNetworkInsightsAnalyses

  • ec2:DescribeSecurityGroupRules

  • ec2:DescribeSecurityGroups

  • ec2:DescribeSubnets

  • ec2:DescribeVpcs

  • ec2:DescribeVpcAttribute

  • iam:GetRole

  • iam:ListAttachedRolePolicies

  • iam:SimulatePrincipalPolicy

  • kms:DescribeKey

  • lambda:InvokeFunction

  • lambda:GetFunction

  • s3:GetEncryptionConfiguration

  • iam:PassRole

重要

除了上述動作之外, AutomationAssumeRole還應該將 AmazonVPCReachabilityAnalyzerFullAccessPolicy 做為連接的受管政策,以便成功執行 Reachability Analyzer 測試。

以下是可授予 的政策範例AutomationAssumeRole

{ "Version": "2012-10-17", "Statement": [{ "Sid": "TaggedAWSResourcesPermissions", "Effect": "Allow", "Condition": { "StringEquals": { "aws:ResourceTag/AWSSupport-TroubleshootGlueConnection": "true" } }, "Action": [ "iam:AttachRolePolicy", "iam:CreateRole", "iam:DeleteRole", "iam:DeleteRolePolicy", "iam:DetachRolePolicy", "iam:TagRole", "lambda:CreateFunction", "lambda:DeleteFunction", "lambda:TagResource", "logs:DeleteLogGroup", "logs:CreateLogGroup", "logs:PutRetentionPolicy", "logs:TagResource", "cloudformation:CreateStack", "cloudformation:DeleteStack" ], "Resource": "*" }, { "Sid": "TaggedEC2ResourcesPermissions", "Effect": "Allow", "Condition": { "StringEquals": { "ec2:ResourceTag/AWSSupport-TroubleshootGlueConnection": "true" } }, "Action": [ "ec2:DeleteNetworkInterface" ], "Resource": "*" }, { "Sid": "PutRolePolicy", "Effect": "Allow", "Condition": { "StringEquals": { "iam:ResourceTag/AWSSupport-TroubleshootGlueConnection": "true" } }, "Action": [ "iam:PutRolePolicy", "iam:DeleteRolePolicy" ], "Resource": "*" }, { "Sid": "InvokeFunction", "Effect": "Allow", "Action": [ "lambda:InvokeFunction" ], "Resource": "arn:*:lambda:*:*:function:point-of-presence-*" }, { "Sid": "UnTaggedActions", "Effect": "Allow", "Action": [ "ec2:CreateNetworkInsightsPath", "ec2:DeleteNetworkInsightsAnalysis", "ec2:DeleteNetworkInsightsPath", "ec2:CreateNetworkInterface", "ec2:CreateTags", "ec2:StartNetworkInsightsAnalysis", "glue:GetConnection", "glue:GetDataCatalogEncryptionSettings", "cloudformation:DescribeStacks", "cloudformation:DescribeStackEvents", "ec2:DescribeDhcpOptions", "ec2:DescribeNetworkInsightsPaths", "ec2:DescribeNetworkInsightsAnalyses", "ec2:DescribeSecurityGroupRules", "ec2:DescribeSecurityGroups", "ec2:DescribeSubnets", "ec2:DescribeVpcs", "ec2:DescribeVpcAttribute", "iam:GetRole", "iam:ListAttachedRolePolicies", "iam:SimulatePrincipalPolicy", "kms:DescribeKey", "lambda:GetFunction", "s3:GetEncryptionConfiguration" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": "arn:*:iam::*:role/point-of-presence-*", "Condition": { "StringLikeIfExists": { "iam:PassedToService": "lambda.amazonaws.com" } } } ] }

指示

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

  1. 在文件下的 Systems Manager AWSSupport-TroubleshootGlueConnection中導覽至 。

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

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

    • AutomationAssumeRole (選用):

      (IAM) 角色的 Amazon Resource Name AWS AWS Identity and Access Management (ARN),允許 Systems Manager Automation 代表您執行動作。如果未指定角色,Systems Manager Automation 會使用啟動此 Runbook 的使用者許可。

    • TestConnectionRole (必要)

      在連線測試期間使用的 IAM 角色的 Amazon Resource Name (ARN)。

    • ConnectionName (必要)

      AWS Glue 您想要故障診斷的測試連線名稱失敗。

    • PersistReachabilityAnalyzerResults (選用)

      此旗標會通知是否應保留 Reachability Analyzer 執行的結果。預設:false.

    • PointOfPresenceLogRetentionPeriod (選用)

      Lambda 存在點的日誌將存放的天數。預設:7

    • DatasourceSubnets (選用)

      如果無法使用原始資料來源,請使用此參數來提供使用的子網路,以便仍執行連線測試。必須搭配 使用DatasourceSecurityGroups。範例:subnet-1,subnet-2

    • DatasourceSecurityGroups (選用)

      如果原始資料來源無法使用,請使用此參數來提供其使用的安全群組,以便仍執行連線測試。必須搭配 使用DatasourceSubnets。範例:sg-1,sg-2

    Input parameters form for AWS Glue connection troubleshooting with various configuration options.
  4. 選取執行。

  5. 自動化會啟動。

  6. 自動化 Runbook 會執行下列步驟:

    • ParseInputs:

      此步驟會驗證輸入組合。如果同時提供 DatasourceSubnets DatasourceSecurityGroups和 ,則它們有效並按原狀傳回。如果沒有提供,則會傳回兩個空白清單。如果只提供其中一個,步驟會引發 ValueException

    • GetConnectionDetails:

      此步驟會傳回所提供 AWS Glue 連線的詳細資訊。

    • ParseSecurityGroupList:

      此步驟用於串連 SecurityGroupIdList中的 String,以供此自動化的未來使用。

    • GetConnectionData:

      根據 JDBC URL 決定 RedShiftRdsInstanceRdsCluster和 之間的連線類型Other。此外, 會傳回 JDBC 連線中使用的網域和連接埠、連線的 Amazon VPC 及其網域名稱伺服器。

    • GetNetworkDetails:

      從 Amazon RDS 或 Amazon Redshift 目標取得子網路和安全群組資訊。

    • CreateENITemplate:

      產生用於建立網路介面的 AWS CloudFormation 範本,用於測試連線。這是執行 Reachability Analyzer 工具的必要項目。

    • CreateENIStack:

      從上一個步驟中建立的範本建立 AWS CloudFormation 堆疊。

    • GetStackDetails:

      描述在上一個 AWS CloudFormation 堆疊中建立的堆疊,並擷取SourceNetworkInterfaceTargetNetworkInterfaces資訊。

    • RunSourceToTargetCheck:

      使用 Reachability Analyzer 工具,在上一個步驟中建立的來源和目標 ENIs 之間執行檢查。

    • DeleteENIStack:

      刪除建立網路介面的 AWS CloudFormation 堆疊

    • CreateNetworkPointOfPresence:

      AWS CloudFormation 會建立做為網路存在點的 Lambda 函數。

    • GetFunctionName:

      執行 AWS CloudFormation 描述堆疊 API 呼叫,以擷取在上一個步驟中建立的 Lambda 函數名稱。

    • RunEndpointChecks:

      使用網路存在點來判斷 JDBC 連線中存在的端點是否可解析,並可在宣告的連接埠中連線。

    • CheckS3Connectivity:

      檢查從連線至 Amazon S3 AWS Glue 服務的網路連線。

    • DeletePointOfPresence:

      刪除建立 Lambda 網路存在點的 AWS CloudFormation 堆疊。

    • TestIAMRolePermissions:

      檢查用於測試的 IAM 角色是否具有執行測試所需的許可。

    • CheckConnectionSecurityGroupReferencingRule:

      檢查 AWS Glue 連線中使用的安全群組是否允許來自其本身的所有傳入流量。如果有的話,它會傳回不含此規則的安全群組清單。

    • GenerateReport:

      產生包含清單 o 調查結果 (連線測試失敗的可能原因) 和後續步驟 (嘗試解決連線測試失敗) 的報告。

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

    • 自動化結果

      在本節中,您會找到描述測試連線操作失敗 (尋找) 可能原因的案例,以及如何修正這些原因 (後續步驟)。如果自動化找不到測試失敗的原因,也會在本節中通知。

    • 成功的測試

      在本節中,您會找到通知此自動化成功測試項目的案例。如果自動化無法識別測試連線失敗的原因,則成功測試非常有用,因為它們會透過通知問題的原因來減少調查範圍。

    • 自動化錯誤

      在本節中,您將找到描述自動化期間發生的問題的案例,這些問題可能限制了自動化可執行的測試數量。案例的描述會通知哪個步驟失敗。

    Troubleshooting results for AWS Glue connection issues with DNS resolution and IAM role problems.

參考

Systems Manager Automation