Athena for Spark에서 크로스 계정 AWS Glue 액세스 구성 - Amazon Athena

Athena for Spark에서 크로스 계정 AWS Glue 액세스 구성

이 주제에서는 크로스 계정 AWS Glue 액세스를 위해 소비자 계정 666666666666 및 소유자 계정 999999999999을 구성하는 방법을 보여줍니다. 계정이 구성되면 소비자 계정은 소유자의 AWS Glue 데이터베이스 및 테이블에서 Athena for Spark의 쿼리를 실행할 수 있습니다.

1. AWS Glue에서 소비자 역할에 대한 액세스를 제공합니다.

AWS Glue에서는 소유자가 소유자의 AWS Glue 데이터 카탈로그에 대한 소비자 역할 액세스를 제공하는 정책을 생성합니다.

소유자의 데이터 카탈로그에 대한 소비자 역할 액세스를 허용하는 AWS Glue 정책을 추가하려면
  1. 카탈로그 소유자 계정을 사용하여 AWS Management Console에 로그인합니다.

  2. https://console.aws.amazon.com/glue/에서 AWS Glue 콘솔을 엽니다.

  3. 탐색 창에서 데이터 카탈로그를 확장하고 카탈로그 설정을 선택합니다.

  4. 데이터 카탈로그 설정 페이지의 권한 섹션에서 다음과 같은 정책을 추가합니다. 이 정책은 소유자 계정 999999999999에 있는 데이터 카탈로그에 대한 소비자 계정 666666666666 액세스 역할을 제공합니다.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "Cataloguers", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::666666666666:role/Admin", "arn:aws:iam::666666666666:role/AWSAthenaSparkExecutionRole" ] }, "Action": "glue:*", "Resource": [ "arn:aws:glue:us-west-2:999999999999:catalog", "arn:aws:glue:us-west-2:999999999999:database/*", "arn:aws:glue:us-west-2:999999999999:table/*" ] } ] }

2. 액세스를 위해 소비자 계정 구성

소비자 계정에서 소유자의 AWS Glue Data Catalog, 데이터베이스 및 테이블에 대한 액세스를 허용하는 정책을 생성하고 정책을 역할에 연결합니다. 다음 예제에서는 소비자 계정 666666666666을 사용합니다.

소유자 AWS Glue Data Catalog에 액세스하기 위한 AWS Glue 정책을 생성하려면
  1. 소비자 계정을 사용하여 AWS Management Console에 로그인합니다.

  2. https://console.aws.amazon.com/iam/에서 IAM 콘솔을 엽니다.

  3. 서비스 탐색 창에서 액세스 관리를 확장하고 정책을 선택합니다.

  4. 정책 생성을 선택합니다.

  5. 권한 지정 페이지에서 JSON을 선택합니다.

  6. 정책 편집기에서 소유자 계정의 데이터 카탈로그에 대한 AWS Glue 작업을 허용하는 다음과 같은 JSON 문을 입력합니다.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "glue:*", "Resource": [ "arn:aws:glue:us-east-1:999999999999:catalog", "arn:aws:glue:us-east-1:999999999999:database/*", "arn:aws:glue:us-east-1:999999999999:table/*" ] } ] }
  7. 다음을 선택합니다.

  8. 검토 및 생성 페이지의 정책 이름에 정책 이름을 입력합니다.

  9. 정책 생성을 선택합니다.

그런 다음 소비자 계정에서 IAM 콘솔을 사용하여 방금 생성한 정책을 IAM 역할 또는 소비자 계정이 소유자의 데이터 카탈로그에 액세스하는 데 사용할 역할에 연결합니다.

소비자 계정의 역할에 AWS Glue 정책을 연결하려면
  1. 소비자 계정 IAM 콘솔의 탐색 창에서 역할을 선택합니다.

  2. 역할 페이지에서 정책을 연결하려는 역할을 찾습니다.

  3. 권한 추가를 선택하고 정책 연결을 선택합니다.

  4. 방금 생성한 정책을 찾습니다.

  5. 정책의 확인란을 선택하고 권한 추가를 선택합니다.

  6. 단계를 반복하여 사용하려는 다른 역할에 정책을 추가합니다.

3. 세션을 구성하고 쿼리를 생성합니다.

Athena Spark의 요청자 계정에서 지정된 역할을 사용하여 노트북 생성 또는 현재 세션 편집을 통해 액세스를 테스트할 세션을 생성합니다. 세션 속성을 구성할 때 다음 중 하나를 지정합니다.

  • Glue 카탈로그 구분자 – 이 방법에서는 쿼리에 소유자 계정 ID를 포함합니다. 세션을 사용하여 다른 소유자의 데이터 카탈로그를 쿼리하려는 경우 이 방법을 사용합니다.

  • Glue 카탈로그 ID - 이 방법에서는 데이터베이스를 직접 쿼리합니다. 세션을 사용하여 단일 소유자의 데이터 카탈로그만 쿼리하려는 경우 이 방법이 더 편리합니다.

AWS Glue 카탈로그 구분자 방법 사용

세션 속성을 편집할 때 다음을 추가합니다.

{ "spark.hadoop.aws.glue.catalog.separator": "/" }

셀에서 쿼리를 실행할 때 다음 예제와 같은 구문을 사용합니다. 이 FROM 절에서는 데이터베이스 이름 앞에 카탈로그 ID와 구분자가 필요합니다.

df = spark.sql('SELECT requestip, uri, method, status FROM `999999999999/mydatabase`.cloudfront_logs LIMIT 5') df.show()

AWS Glue 카탈로그 ID 방법 사용

세션 속성을 편집할 때 다음 속성을 입력합니다. 999999999999를 소유자 계정 ID로 바꿉니다.

{ "spark.hadoop.hive.metastore.glue.catalogid": "999999999999" }

셀에서 쿼리를 실행할 때는 다음과 같은 구문을 사용합니다. 이 FROM 절에서는 데이터베이스 이름 앞에 카탈로그 ID와 구분자가 필요하지 않습니다.

df = spark.sql('SELECT * FROM mydatabase.cloudfront_logs LIMIT 10') df.show()

추가적인 리소스

AWS Glue 데이터 카탈로그에 대한 교차 계정 액세스

AWS Lake Formation 개발자 안내서Managing cross-account permissions using both AWS Glue and Lake Formation.

AWS Prescriptive Guidance PatternsConfigure cross-account access to a shared AWS Glue Data Catalog using Amazon Athena.