翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
テーブル最適化の前提条件
テーブルオプティマイザは、テーブルの最適化オプションを有効にするときに指定する AWS Identity and Access Management (IAM) ロールのアクセス許可を引き受けます。すべてのオプティマイザーに対して単一のロールを作成することも、オプティマイザーごとに個別のロールを作成することもできます。IAM ロールには、データカタログ内のデータを読み取ってメタデータを更新するアクセス許可が必要です。IAM ロールを作成し、次のインラインポリシーをアタッチできます。
-
Lake Formation に登録されていないデータの場所に対する Amazon S3 の読み取り/書き込み許可を付与する次のインラインポリシーを追加します。このポリシーには、Data Catalog のテーブルを更新し、 Amazon CloudWatch がログにログを追加し、メトリクスを発行 AWS Glue することを許可するアクセス許可も含まれています。Lake Formation に登録されていない Amazon S3 のソースデータの場合、アクセスは Amazon S3 および AWS Glue アクションのIAMアクセス許可ポリシーによって決まります。
次のインラインポリシーでは、
bucket-name
を Amazon S3 バケット名、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:*" } ] } -
次のポリシーを使用して、Lake Formation に登録されたデータの圧縮を有効にします。
テーブルに対する
IAM_ALLOWED_PRINCIPALS
グループアクセス許可が最適化ロールに付与されていない場合、ロールにはテーブルに対する Lake Formation のALTER
、DESCRIBE
、INSERT
、およびDELETE
アクセス許可が必要です。Lake Formation に Amazon S3 バケットを登録する方法の詳細については、「データレイクへの 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:*" } ] } -
(オプション) サーバー側の暗号化を使用して暗号化された 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>
" ] } ] } -
圧縮プロセスを実行するロールを引き受ける AWS Glue サービスのIAMロールに、次の信頼ポリシーを追加します。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "glue.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }