테이블 최적화 필수 조건
테이블 옵티마이저는 테이블에 최적화 옵션(압축, 스냅샷 보존, 분리된 파일 삭제)을 활성화할 때 사용자가 지정하는 AWS Identity and Access Management(IAM) 역할의 권한을 갖습니다. 모든 옵티마이저에 대해 단일 역할을 생성하거나 각 옵티마이저에 대해 별도의 역할을 생성할 수 있습니다.
참고
분리된 파일 삭제 최적화 프로그램에는 glue:updateTable
또는 s3:putObject
권한이 필요하지 않습니다. 스냅샷 만료 및 압축 최적화 프로그램에는 동일한 권한 세트가 필요합니다.
IAM 역할에는 데이터 카탈로그의 데이터를 읽고 메타데이터를 업데이트할 수 있는 권한이 있어야 합니다. IAM 역할을 생성하여 다음 인라인 정책을 연결할 수 있습니다.
-
AWS Lake Formation에 등록되지 않은 데이터에 대한 위치에서 Amazon S3 읽기/쓰기 권한을 부여하는 다음 인라인 정책을 추가하니다. 이 정책에는 데이터 카탈로그의 테이블을 업데이트하고 AWS Glue에게 Amazon CloudWatch 로그에 로그를 추가하고 지표를 게시할 수 있는 권한도 포함되어 있습니다. Lake Formation에 등록되지 않은 Amazon S3의 원본 데이터는 액세스 권한이 Amazon S3 및 AWS Glue 작업에 대한 IAM 권한 정책에 의해 결정됩니다.
다음 인라인 정책에서는 Amazon S3 버킷 이름이 있는
bucket-name
,aws-account-id
,region
을 데이터 카탈로그의 유효한 AWS 계정 번호, 리전,database_name
을 데이터베이스 이름으로,table_name
은 테이블 이름으로 대체하십시오.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:DeleteObject" ], "Resource": [ "arn:aws:s3:::
<bucket-name>
/*" ] }, { "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::<bucket-name>
" ] }, { "Effect": "Allow", "Action": [ "glue:UpdateTable", "glue:GetTable" ], "Resource": [ "arn:aws:glue:<region>
:<aws-account-id>
:table/<database-name>
/<table-name>
", "arn:aws:glue:<region>
:<aws-account-id>
:database/<database-name>
", "arn:aws:glue:<region>
:<aws-account-id>
:catalog" ] }, { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:<region>
:<aws-account-id>
:log-group:/aws-glue/iceberg-compaction/logs:*", "arn:aws:logs:<region>
:<aws-account-id>
:log-group:/aws-glue/iceberg-retention/logs:*", "arn:aws:logs:<region>
:<aws-account-id>
:log-group:/aws-glue/iceberg-orphan-file-deletion/logs:*" } ] } -
Lake Formation에 등록된 데이터에 대해 압축을 활성화하려면 다음 정책을 사용하십시오.
최적화 역할에 테이블에 대한
IAM_ALLOWED_PRINCIPALS
그룹 권한이 부여되지 않은 경우, 해당 역할에는 테이블에 대한 Lake FormationALTER
,DESCRIBE
,INSERT
및DELETE
권한이 필요합니다.Amazon S3 버킷의 Lake Formation 등록에 대한 자세한 내용은 데이터 레이크에 Amazon S3 위치 추가 섹션을 참조하세요.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "lakeformation:GetDataAccess" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "glue:UpdateTable", "glue:GetTable" ], "Resource": [ "arn:aws:glue:
<region>
:<aws-account-id>
:table/<databaseName>
/<tableName>
", "arn:aws:glue:<region>
:<aws-account-id>
:database/<database-name>
", "arn:aws:glue:<region>
:<aws-account-id>
:catalog" ] }, { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:<region>
:<aws-account-id>
:log-group:/aws-glue/iceberg-compaction/logs:*", "arn:aws:logs:<region>
:<aws-account-id>
:log-group:/aws-glue/iceberg-retention/logs:*", "arn:aws:logs:<region>
:<aws-account-id>
:log-group:/aws-glue/iceberg-orphan-file-deletion/logs:*" } ] } -
(선택 사항)서버 측 암호화를 사용하여 암호화된 Amazon S3 버킷의 데이터로 Iceberg 테이블을 최적화하려면 압축 역할에 Amazon S3 객체를 해독하고 암호화된 버킷에 객체를 쓰기 위한 새 데이터 키를 생성할 수 있는 권한이 필요합니다. 다음 텍스트를 AWS KMS 키 정책에 추가합니다. 버킷 수준 암호화만 지원합니다.
{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
<aws-account-id>
:role/<optimizer-role-name>
" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*" } -
(선택 사항) Lake Formation에 등록된 데이터 위치의 경우, 위치를 등록하는 데 사용되는 역할에는 Amazon S3 객체를 해독하고 암호화된 버킷에 객체를 쓰기 위한 새 데이터 키를 생성할 수 있는 권한이 필요합니다. 자세한 내용을 알아보려면 암호화된 Amazon S3 위치 등록을 참조하십시오.
-
(선택 사항) AWS KMS 키가 다른 AWS 계정에 저장되어 있는 경우 압축 역할에 다음 권한을 포함해야 합니다.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": ["arn:aws:kms:
<REGION>
:<KEY_OWNER_ACCOUNT_ID>
:key/<KEY_ID>
" ] } ] } -
압축을 실행하는 데 사용하는 역할에는 해당 역할에 대한
iam:PassRole
권한이 있어야 합니다.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": [ "arn:aws:iam::
<account-id>
:role/<optimizer-role-name>
" ] } ] } -
압축 프로세스를 실행하는 IAM 역할을 수임하도록 AWS Glue 서비스의 역할에 다음 신뢰 정책을 추가합니다.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "glue.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }