AWS Glue ETL 작업의 AWS Marketplace 연결 오류를 해결하려면 어떻게 해야 하나요?

7분 분량
0

AWS Glue에서 AWS Marketplace 커넥터를 사용하고 있는데 로그에 오류가 있습니다.

해결 방법

커넥터가 표시되지 않음

AWS Marketplace에서 커넥터를 구독하지만 AWS Glue Studio의 커넥터 페이지에서 이 커넥터를 찾을 수 없습니다.

이 문제를 해결하려면, 다음 단계를 완료하세요.

  1. AWS Marketplace를 엽니다.
  2. Discover 제품을 선택한 다음 사용할 커넥터를 찾으세요.
  3. 계속 구독을 선택한 다음 승격되면 AWS 계정에 로그인합니다.
  4. 계속 구성을 선택합니다. 이 옵션이 회색으로 표시되어 선택할 수 없는 경우 이용 약관을 읽어 보세요. 약관 동의를 선택한 다음 계속 구성 버튼을 사용할 수 있을 때까지 기다립니다.
  5. 드롭다운 목록에서 배송 방법소프트웨어 버전을 선택합니다. 어떤 버전을 선택해야 할지 잘 모르겠으면 최신 버전을 선택하세요.
  6. 계속 실행을 선택한 후 사용 지침을 선택합니다.
  7. 팝업 창에서 AWS Glue Studio에서 Glue 커넥터 활성화를 선택합니다.
  8. (선택 사항) 커넥터만 설치하려면 커넥터만 활성을 선택합니다. 이 옵션에 대한 자세한 내용을 보려면 AWS Glue Studio에서 커넥터 및 연결 사용을 참조하세요. 사용자 지정 커넥터를 대신 사용하는 경우 사용자 지정 커넥터 개발을 참조하세요.

참고: 이전에 커넥터에 가입한 경우에도 이러한 단계를 반복할 수 있습니다.

IAM 역할 관련 문제

AWS Marketplace에서 커넥터를 구독하려고 하면 다음과 비슷한 AWS Identity and Access Management(IAM) 오류 메시지가 표시됩니다.

"You do not have the right permissions to make this request. Some controls have been disabled because you are missing the correct permission(s). The missing permission(s) are: aws-marketplace:Subscribe."

이 문제를 해결하려면 오류를 받은 IAM 사용자에 IAM 정책을 추가하세요. AWS Marketplace에서 사용하려면 다음 IAM 정책을 IAM 사용자에 추가하세요.

  • 구독을 볼 수 있는 권한만 부여하고 변경하지는 않으려면 AWSMarketplaceRead-only를 선택합니다.
  • 구독 및 구독 취소 권한을 부여하려면 AWSMarketplaceManageSubscriptions를 선택합니다.
  • 구독에 대한 완전한 제어 권한을 부여하려면 AWSMarketplaceFullAccess를 선택하세요.

자세한 내용을 보려면 AWS Marketplace 구독에 대한 액세스 제어를 참조하세요.

AccessDeniedException 오류

AWS Glue 작업 로그에 다음과 유사한 AccessDeniedException 오류가 표시됩니다.

"An error occurred (AccessDeniedException) when calling the GetAuthorizationToken operation: User: arn:aws:sts::xxxxxxxxxxxx:assumed-role/<IamRole>/GlueJobRunnerSession is not authorized to perform: ecr:GetAuthorizationToken on resource: * because no identity-based policy allows the ecr:GetAuthorizationToken action
Glue ETL Marketplace - failed to download connector, activation script exited with code 1
LAUNCH ERROR | Glue ETL Marketplace - failed to download connector. Please refer logs for details."

이 오류는 AWS Glue 작업과 연결된 IAM 역할이 GetAuthorizationToken 작업을 수행하려고 할 때 권한이 충분하지 않으면 발생합니다.

이 문제를 해결하려면 AWS Glue 작업에 ecr:GetAuthorizationToken 권한을 부여하세요.

  1. IAM 콘솔을 엽니다.
  2. AWS Glue 작업에서 사용 중인 IAM 역할을 선택합니다.
  3. 정책 연결을 선택합니다.
  4. 필터 정책에서 AmazonEC2ContainerRegistryReadOnly를 입력한 다음 이 정책을 선택합니다.
  5. 정책 연결을 선택합니다.

필요한 정책을 IAM 역할에 연결한 후 AWS Glue 작업을 다시 실행합니다.

자세한 내용을 보려면 AmazonEC2ContainerRegistryReadOnly, IAM 자격 증명 권한 추가 및 제거AWS Glue에 대한 IAM 권한 설정을 참조하세요.

네트워킹 문제 - VPC로부터의 네트워크 경로 없음

네트워킹 설정은 AWS Glue 작업에 사용될 때 AWS Glue 커넥터가 제대로 작동하기에 적절하지 않을 수 있습니다. 다음과 비슷한 오류 메시지가 표시될 수 있습니다.

"botocore.exceptions.ConnectTimeoutError: Connect timeout on endpoint URL: "https://api.ecr.us-east-1.amazonaws.com/"Glue ETL Marketplace - failed to download connector, activation script exited with code 1
LAUNCH ERROR | Glue ETL Marketplace - failed to download connector. 자세한 내용을 보려면 로그를 참조하세요.
Exception in thread "main"
java.lang.Exception: Glue ETL Marketplace - failed to download connector."

위의 예제 오류 메시지는 Virtual Private Cloud(VPC) 의 네트워크 경로에 Amazon Elastic Container Registry(Amazon ECR) 저장소로 연결되는 작업 구성 요소가 없음을 나타냅니다. Amazon ECR 리포지토리에는 커넥터의 이미지가 들어 있습니다. AWS Glue는 us-east-1 AWS 리전의 Amazon ECR 리포지토리에 모든 커넥터를 저장합니다. AWS Glue 작업에서 커넥터를 사용하려면 이 리전에서 커넥터를 다운로드해야 합니다.

AWS Glue 작업에 연결이 추가되면 트래픽이 서비스와 오갈 수 있는 네트워크 경로를 설정해야 합니다. AWS Glue는 프라이빗 IP 주소를 사용하여 Amazon ECR과 같은 작업 및 서비스의 구성 요소와 통신합니다. 이 오류는 라우팅 테이블에 인터넷 게이트웨이가 있는 퍼블릭 서브넷을 사용하는 연결에서 발생할 수 있습니다. 자세한 내용을 보려면 인터넷 액세스를 위한 구성을 참조하세요.

연결을 생성할 때 VPC, 서브넷 및 보안 그룹과 같은 네트워킹 정보는 선택 사항입니다. 커넥터와 AWS Secrets Manager 키만으로 연결을 생성하면 AWS Glue 작업은 내부 NAT 게이트웨이를 사용합니다. 이 작업은 계정의 NAT 게이트웨이에 의존하지 않습니다.

이 문제를 해결하려면 다음 해결 방법 중 하나를 선택하여 네트워크 설계에 통합하세요.

NAT 게이트웨이를 생성하여 연결 서브넷에 연결

인터넷 게이트웨이를 사용하지 마세요. 대신 NAT 게이트웨이를 생성하여 연결 서브넷에 연결하세요.

  1. 계정에 연결되지 않은 탄력적 IP 주소를 프로비저닝합니다. 이 IP 주소를 NAT 게이트웨이에 연결해야 합니다.
  2. NAT 게이트웨이를 생성한 다음 퍼블릭 서브넷과 엘라스틱 IP 주소를 선택하여 퍼블릭 서브넷에 NAT 게이트웨이를 생성합니다.
  3. 프라이빗 서브넷(인터넷 게이트웨이 경로 제외)과 관련 라우팅 테이블을 생성합니다. 라우팅 테이블에서 NAT 게이트웨이를 가리키는 0.0.0.0/0의 규칙을 추가합니다. 또는 기존 서브넷 중 하나를 편집하여 NAT 게이트웨이 경로와 함께 라우팅 테이블을 사용할 수 있습니다. NAT 게이트웨이 경로와 함께 사용되는 인터넷 게이트웨이 경로가 없어야 합니다.
  4. 프라이빗 서브넷을 사용하도록 AWS Glue 연결의 서브넷을 수정합니다.
  5. AWS Glue 작업을 다시 실행하고 오류가 다시 발생하지 않는지 확인합니다.

연결에 VPC 정보를 사용하지 마세요

연결에 VPC 정보를 포함하지 마세요. 대신 인터넷 NAT 게이트웨이를 사용하세요.

  1. AWS Glue Studio에서 커넥터에 대한 새 연결을 생성합니다.
  2. Secrets Manage 키만 지정하세요. AWS Glue가 서브넷 대신 내부 NAT를 사용하도록 VPC 옵션을 추가하지 마세요.
  3. 새 연결을 사용하도록 AWS Glue 작업을 편집한 다음 작업을 다시 실행합니다.

프라이빗 네트워크 설정에서 VPC 엔드포인트를 생성하세요

프라이빗 네트워크 설정과 함께 NAT 게이트웨이 대신 VPC 엔드포인트를 사용하세요. VPC 엔드포인트를 사용하려면 다음 단계를 완료하세요.

VPC 엔드포인트 생성

먼저 Amazon ECR API 엔드포인트를 생성합니다. 그런 다음 com.amazonaws.<region>.ecr.dkr 서비스에 대한 VPC 엔드포인트를 생성한 다음, Amazon Simple Storage Service(S3) 엔드포인트를 생성합니다.

Amazon ECR API 엔드포인트를 생성합니다.

  1. Amazon VPC 콘솔을 엽니다.
  2. 탐색 창에서 엔드포인트를 선택합니다.
  3. 엔드포인트 생성을 선택한 다음 Amazon ECR API 엔드포인트에 엔드포인트 이름을 추가합니다.
  4. 서비스 카테고리에서 AWS 서비스를 선택합니다.
  5. 서비스에서 ECR 필터를 추가한 다음 com.amazonaws.<region>ecr.api를 선택합니다.
  6. VPC에서 엔드포인트를 생성하려는 VPC를 선택합니다. 추가 설정에서 DNS 이름 활성화를 선택합니다.
  7. 서브넷에서 새 서브넷을 생성한 가용 영역을 선택합니다.
  8. 서브넷 ID에서 서브넷 이름을 선택합니다.
  9. 보안 그룹에서 사용자의 보안 그룹을 선택합니다.
  10. 정책에서 전체 액세스를 선택하면 VPC 엔드포인트를 통해 모든 리소스에 대해 모든 원칙에 따른 모든 작업을 허용합니다.
  11. (선택 사항) 태그를 추가합니다.
  12. 엔드포인트 생성을 선택합니다.

동일한 단계를 사용하여 서비스 이름 com.amazonaws.<region>.ecr.dkr에 대한 또 다른 VPC 엔드포인트를 생성합니다.

그런 후 다음 단계를 완료하여 Amazon S3 엔드포인트를 생성합니다.

  1. Amazon VPC 콘솔을 엽니다.
  2. 탐색 창에서 엔드포인트를 선택합니다.
  3. 엔드포인트 생성을 선택한 다음 엔드포인트 이름을 추가합니다.
  4. 서비스 카테고리에서 AWS 서비스를 선택합니다.
  5. 서비스에서 유형:게이트웨이 필터를 추가한 다음 com.amazonaws.<region>.s3를 선택합니다.
  6. VPC에서 엔드포인트를 생성하려는 VPC를 선택합니다.
  7. 라우팅 테이블에서 라우팅 테이블을 선택합니다.
  8. 정책에서 전체 액세스를 선택하면 VPC 엔드포인트를 통해 모든 리소스에 대해 모든 원칙에 따른 모든 작업을 허용합니다.
  9. (선택 사항) 태그를 추가합니다.
  10. 엔드포인트 생성을 선택합니다.

커넥터 구독 및 구성

이미 AWS Glue에 가입하여 커넥터를 구성한 경우에는 AWS Glue 연결 생성 섹션으로 이동하세요.

AWS Glue에서 커넥터를 구독하거나 구성하지 않은 경우 AWS Marketplace 커넥터 구독의 단계를 따르세요. 사용 지침 팝업 창에서 AWS Glue Studio에서 Glue 커넥터 활성화를 선택하면 Glue 연결 생성 페이지로 이동합니다.

AWS Glue 연결 생성

AWS Glue 콘솔에서 이미 커넥터를 추가한 경우 연결로 이동하여 커넥터를 선택합니다. 그런 다음 연결 생성을 선택합니다.

이전 단계에 따라 커넥터를 구독하고 구성한 경우 다음 단계를 완료하여 연결을 생성하세요.

  1. AWS Glue 콘솔을 엽니다.
  2. Glue 연결 생성 페이지에서 연결 이름을 추가합니다.
  3. 네트워크 옵션에서 VPC와 서브넷 및 보안 그룹을 선택합니다.
  4. 연결 생성 및 커넥터 활성화를 선택합니다.

네트워킹 문제 - AWS Glue 작업에 연결이 너무 많음

AWS Glue 작업에 연결이 너무 많아서 네트워킹 문제가 발생하면 작업 로그에 다음과 같은 오류 메시지가 표시됩니다.

"INFO - Glue ETL Marketplace - Start downloading connector jars for connection: <connection name>test connection feature: "Caused by: com.amazonaws.services.glue.exceptions.InvalidInputException: Connection: does not exist"
LAUNCH ERROR | Glue ETL Marketplace - failed to download connector. Please refer logs for details."

AWS Glue는 작업 또는 개발 엔드포인트당 하나의 연결을 지원합니다. 작업에 둘 이상의 연결을 지정하는 경우 AWS Glue는 첫 번째 연결만 사용합니다. 두 개 이상의 VPC에 액세스해야 하는 경우 전용 AWS Glue VPC를 사용하여 여러 VPC에서 ETL 작업 연결 및 실행을 참조하세요.

AWS 공식
AWS 공식업데이트됨 한 달 전