기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
AWSSupport-TroubleshootGlueConnection
설명
AWSSupport-TroubleshootGlueConnections 실행서는 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 Lambda 함수를 생성하고 대상 이름을 확인할 수 있는지, 대상 포트에서 연결할 수 있는지 확인하여 AWS Glue 연결을 테스트합니다.
중요
Reachability Analyzer 검사를 실행하기 위해 각 연결의 데이터 소스 서브넷에 탄력적 네트워크 인터페이스가 생성됩니다. 이러한 서브넷에 충분한 무료 IPs가 있고이 자동화를 실행하기 전에 한 IP의 소비가 워크로드에 영향을 주지 않는지 확인하세요.
중요
이 자동화에서 생성된 모든 리소스에는 태그를 지정하여 쉽게 찾을 수 있습니다. 사용되는 태그는 다음과 같습니다.
-
AWSSupport-TroubleshootGlueConnection
: true -
AutomationExecutionId
:Amazon EC2 Systems Manager 실행 ID
어떻게 작동하나요?
실행서는 다음 단계를 수행합니다.
-
AWS Glue 연결 확인을 위한 소스 정보(서브넷 및 보안 그룹)를 가져오는 연결을 설명합니다.
-
JDBC URL에서 참조되는 데이터 소스 또는
DatasourceSecurityGroups
및DatasourceSubnets
파라미터가 있는 경우 해당 데이터 소스에서 대상 정보(서브넷 및 보안 그룹)를 가져옵니다. -
JDBC URL에 있는 데이터 소스가 Amazon RDS 인스턴스 또는 클러스터이거나 Amazon Redshift 클러스터인 경우이 자동화는 이전 단계에서 수집된 소스 및 대상 정보를 모두 사용하여 ENIs를 생성하고 Reachability Analyzer를 사용하여 이들 간의 연결 확인을 수행합니다.
-
Lambda 함수(이 자동화의 맥락에서 네트워크 존재 지점)는 L4 연결 및 이름 확인 검사를 수행하는 데 사용됩니다.
-
동일한 Lambda 함수를 사용하여 Amazon S3 엔드포인트에 대한 검사를 수행합니다.
-
정책 시뮬레이터는 연결에 사용되는 IAM 역할에 필요한 권한이 있는지 확인하는 데 사용됩니다.
-
자동화는 연결에 사용되는 보안 그룹에 예상 구성이 있는지 확인합니다.
-
테스트 연결 작업 실패의 가능한 원인 및/또는 수행된 성공한 테스트가 포함된 보고서가 생성됩니다.
문서 유형
자동화
소유자
Amazon
플랫폼
/
필수 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
중요
위에서 언급한 작업 외에도 에는 Reachability Analyzer 테스트가 성공적으로 수행되도록 AmazonVPCReachabilityAnalyzerFullAccessPolicy가 연결된 관리형 정책으로 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이 사용자를 대신하여 작업을 수행하도록 허용하는 (IAM) 역할의 Amazon 리소스 이름 AWS AWS Identity and Access Management (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개가 반환됩니다. 이 중 하나만 제공되면 단계가를 올립니다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:
결과 목록(연결 테스트 실패의 가능한 이유)과 다음 단계(연결 테스트 실패 해결 시도)가 포함된 보고서를 생성합니다.
-
-
완료되면 출력 섹션에서 자세한 실행 결과를 검토합니다.
-
자동화 결과
이 섹션에서는 테스트 연결 작업이 실패할 수 있는 원인(결과)과 이를 해결하는 방법(다음 단계)을 설명하는 시나리오를 살펴봅니다. 자동화에서 테스트 실패의 원인을 찾을 수 없는 경우이 단원에서도 이를 확인할 수 있습니다.
-
성공적인 테스트
이 단원에서는이 자동화에서 성공적으로 테스트한 내용을 알려주는 시나리오를 확인할 수 있습니다. 성공한 테스트는 테스트 연결 실패의 원인을 식별할 수 없는 경우에 유용합니다. 테스트 연결 실패가 문제의 원인이 아닌 것을 알려 조사 범위를 줄이기 때문입니다.
-
자동화 오류
이 섹션에서는 자동화 중에 발생한 문제를 설명하는 시나리오를 확인할 수 있습니다.이 시나리오는 자동화가 수행할 수 있는 테스트 수를 제한했을 수 있습니다. 시나리오에 대한 설명은 실패한 단계를 알려줍니다.
-
참조
Systems Manager Automation