本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
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 -
AutomationExecutionId
:Amazon EC2 Systems Manager 執行 ID
如何運作?
Runbook 會執行下列步驟:
-
描述連線 AWS Glue 以取得連線檢查的來源資訊 (子網路和安全群組)。
-
從 JDBC URL 中參考的資料來源擷取目標資訊 (子網路和安全群組),如果存在,則從
DatasourceSecurityGroups
和DatasourceSubnets
參數擷取目標資訊。 -
如果 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" } } } ] }
指示
請依照下列步驟設定自動化:
-
在文件下的 Systems Manager
AWSSupport-TroubleshootGlueConnection
中導覽至 。 -
選擇 Execute automation (執行自動化)。
-
針對輸入參數,輸入下列內容:
-
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
。
-
-
選取執行。
-
自動化會啟動。
-
自動化 Runbook 會執行下列步驟:
-
ParseInputs:
此步驟會驗證輸入組合。如果同時提供
DatasourceSubnets
DatasourceSecurityGroups
和 ,則它們有效並按原狀傳回。如果沒有提供,則會傳回兩個空白清單。如果只提供其中一個,步驟會引發ValueException
。 -
GetConnectionDetails:
此步驟會傳回所提供 AWS Glue 連線的詳細資訊。
-
ParseSecurityGroupList:
此步驟用於串連
SecurityGroupIdList
中的String
,以供此自動化的未來使用。 -
GetConnectionData:
根據 JDBC URL 決定
RedShift
、RdsInstance
RdsCluster
和 之間的連線類型Other
。此外, 會傳回 JDBC 連線中使用的網域和連接埠、連線的 Amazon VPC 及其網域名稱伺服器。 -
GetNetworkDetails:
從 Amazon RDS 或 Amazon Redshift 目標取得子網路和安全群組資訊。
-
CreateENITemplate:
產生用於建立網路介面的 AWS CloudFormation 範本,用於測試連線。這是執行 Reachability Analyzer 工具的必要項目。
-
CreateENIStack:
從上一個步驟中建立的範本建立 AWS CloudFormation 堆疊。
-
GetStackDetails:
描述在上一個 AWS CloudFormation 堆疊中建立的堆疊,並擷取
SourceNetworkInterface
TargetNetworkInterfaces
資訊。 -
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 調查結果 (連線測試失敗的可能原因) 和後續步驟 (嘗試解決連線測試失敗) 的報告。
-
-
完成後,請檢閱輸出區段以取得執行的詳細結果:
-
自動化結果
在本節中,您會找到描述測試連線操作失敗 (尋找) 可能原因的案例,以及如何修正這些原因 (後續步驟)。如果自動化找不到測試失敗的原因,也會在本節中通知。
-
成功的測試
在本節中,您會找到通知此自動化成功測試項目的案例。如果自動化無法識別測試連線失敗的原因,則成功測試非常有用,因為它們會透過通知問題的原因來減少調查範圍。
-
自動化錯誤
在本節中,您將找到描述自動化期間發生的問題的案例,這些問題可能限制了自動化可執行的測試數量。案例的描述會通知哪個步驟失敗。
-
參考
Systems Manager Automation