翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
AWSSupport-TroubleshootGlueConnection
説明
AWSSupport-TroubleshootGlueConnections ランブックは、 AWS Glue 接続の問題のトラブルシューティングに役立ちます。テストされた接続のターゲットは JDBC 接続を介して到達する必要があり、Amazon Relational Database Service (Amazon RDS) クラスター/インスタンス、Amazon Redshift クラスター、または JDBC を介してアクセス可能なその他のターゲットのいずれかになります。最初の 2 つのケースでは、Reachability Analyzer ツールを使用して、ソース (AWS Glue) とターゲット (Amazon RDS または Amazon Redshift) 間の接続が付与されているかどうかを判断します。
接続のターゲットが Amazon RDS でも Amazon Redshift でもない場合、接続と同じサブネット (ネットワークポイントオブプレゼンス) に AWS Lambda 関数を作成し、ターゲット名が解決可能かどうか、およびターゲットポートで到達可能かどうかをチェックすることで、 AWS Glue 接続がテストされます。
重要
Reachability Analyzer チェックを実行するために、Elastic Network Interface は接続の各データソースサブネットに作成されます。これらのサブネットに十分な空き IPs があり、1 つの IP を消費しても、この自動化を実行する前にワークロードに影響しないことを確認してください。
重要
この自動化によって作成されたすべてのリソースにはタグが付けられ、簡単に見つけることができます。使用されるタグは次のとおりです。
-
AWSSupport-TroubleshootGlueConnection
: true -
AutomationExecutionId
:Amazon EC2 Systems Manager 実行 ID
動作の仕組み
ランブックは次のステップを実行します。
-
AWS Glue 接続チェックのソース情報 (サブネットとセキュリティグループ) を取得するための接続について説明します。
-
JDBC URL で参照されているデータソース、または存在する場合は および
DatasourceSubnets
パラメータからターゲット情報 (サブネットDatasourceSecurityGroups
とセキュリティグループ) を取得します。 -
JDBC URL に存在するデータソースが Amazon RDS インスタンスまたはクラスター、または Amazon Redshift クラスターの場合、この自動化は、前のステップで収集されたソース情報とターゲット情報の両方を使用して ENIs を作成し、Reachability Analyzer を使用してそれらの間の接続チェックを実行します。
-
Lambda 関数 (この自動化のコンテキストではネットワーク上の存在ポイント) を使用して、L4 接続と名前解決のチェックを実行します。
-
同じ Lambda 関数を使用して、Amazon S3 エンドポイントに対してチェックを実行します。
-
Policy Simulator は、接続で使用される IAM ロールに必要なアクセス許可があるかどうかを判断するために使用されます。
-
自動化は、接続で使用されるセキュリティグループが想定された設定になっているかどうかを確認します。
-
テスト接続オペレーションの失敗の考えられる原因、および/または実行された成功したテストを含むレポートが生成されます。
ドキュメントタイプ
Automation
[所有者]
Amazon
[Platforms] (プラットフォーム)
/
必要な IAM アクセス許可
AutomationAssumeRole
パラメータでは、ランブックを正常に使用するために、次のアクションが必要です。
-
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
重要
上記のアクションに加えて、 には AmazonVPCReachabilityAnalyzerFullAccessPolicy をアタッチされた管理ポリシーとして設定し、Reachability Analyzer テストが正常に実行されるようにAutomationAssumeRole
する必要があります。
に付与できるポリシーの例を次に示します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(オプション):
Systems Manager Automation がユーザーに代わってアクションを実行できるようにする AWS AWS Identity and Access Management (IAM) ロールの Amazon リソースネーム (ARN)。ロールが指定されていない場合、Systems Manager Automation は、このランブックを開始するユーザーのアクセス許可を使用します。
-
TestConnectionRole (必須)
接続テスト中に使用される IAM ロールの Amazon リソースネーム (ARN)。
-
ConnectionName (必須)
AWS Glue トラブルシューティングするテスト接続名が失敗しました。
-
PersistReachabilityAnalyzerResults (オプション)
Reachability Analyzer の実行結果を保持するかどうかを通知するフラグ。デフォルト:
false.
-
PointOfPresenceLogRetentionPeriod (オプション)
Lambda のプレゼンスポイントのログが保存される日数。デフォルト:
7
。 -
DatasourceSubnets (オプション)
元のデータソースが使用できない場合は、このパラメータを使用して、接続テストがまだ実行されるように使用したサブネットを指定します。で使用する必要があります
DatasourceSecurityGroups
。例えば、subnet-1,subnet-2
などです。 -
DatasourceSecurityGroups (オプション)
元のデータソースが使用できない場合は、このパラメータを使用して、接続テストがまだ実行されるように、使用したセキュリティグループを指定します。と一緒に使用する必要があります
DatasourceSubnets
。例えば、sg-1,sg-2
などです。
-
-
[実行] を選択します。
-
自動化が開始されます。
-
自動化ランブックは以下のステップを実行します。
-
ParseInputs:
このステップでは、入力の組み合わせを検証します。
DatasourceSecurityGroups
と の両方DatasourceSubnets
が指定されている場合、それらは有効であり、そのまま返されます。何も指定しない場合、2 つの空のリストが返されます。そのうちの 1 つだけが指定されている場合、ステップは を生成します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:
describe AWS CloudFormation スタック API コールを実行して、前のステップで作成した Lambda 関数の名前を取得します。
-
RunEndpointChecks:
JDBC 接続に存在するエンドポイントが、宣言されたポートで解決可能かつ到達可能かどうかを判断するために、ネットワーク上のプレゼンスポイントを使用します。
-
CheckS3Connectivity:
Amazon S3 サービス AWS Glue への接続からのネットワーク接続を確認します。
-
DeletePointOfPresence:
ネットワークポイントオブプレゼンス Lambda を作成する AWS CloudFormation スタックを削除します。
-
TestIAMRolePermissions:
テストに使用される IAM ロールに、テストの実行に必要なアクセス許可があるかどうかを確認します。
-
CheckConnectionSecurityGroupReferencingRule:
AWS Glue 接続で使用されるセキュリティグループが、それ自体からのすべての受信トラフィックを許可しているかどうかを確認します。このルールがない場合、セキュリティグループのリストが返されます。
-
GenerateReport:
検出結果のリスト (接続テストの失敗の考えられる理由) と次のステップ (接続テストの失敗の解決を試みます) を含むレポートを生成します。
-
-
完了したら、出力セクションで実行の詳細な結果を確認します。
-
自動化の結果
このセクションでは、テスト接続オペレーションが失敗する原因 (検出結果) と、それらを修正する方法 (次のステップ) を説明するシナリオを示します。自動化がテストの失敗の原因を特定できない場合は、このセクションにも通知されます。
-
成功したテスト
このセクションでは、この自動化によって正常にテストされた内容を示すシナリオを示します。成功したテストは、自動化がテスト接続の失敗の原因を特定できない場合に役立ちます。これは、問題の原因となっていないものを通知することで、調査の範囲を狭めるためです。
-
自動化エラー
このセクションでは、自動化中に発生した問題を説明するシナリオを示します。このシナリオでは、自動化が実行できるテストの数が制限されている可能性があります。シナリオの説明は、失敗したステップを通知します。
-
リファレンス
Systems Manager Automation