本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
資料表最佳化先決條件
資料表最佳化工具會假設您在為資料表啟用最佳化選項 (壓縮、快照保留和孤立檔案刪除) 時所指定的 AWS Identity and Access Management (IAM) 角色許可。您可以為所有最佳化工具建立 的單一角色,或為每個最佳化工具建立個別角色。
孤立檔案刪除最佳化工具不需要 glue:updateTable
或 s3:putObject
許可。快照過期和壓縮最佳化工具需要相同的許可集。
IAM 角色必須具有讀取資料和更新 Data Catalog 中繼資料的權限。您可以建立 IAM 角色,並連接下列內嵌政策:
-
新增下列內嵌政策,為未註冊資料的位置授予 Amazon S3 讀取/寫入許可 AWS Lake Formation。此政策也包含更新 Data Catalog 中資料表的許可,以及允許 AWS Glue 在日誌中新增 Amazon CloudWatch 日誌和發佈指標的許可。針對 Amazon S3 中未向 Lake Formation 註冊的來源資料,存取權將由 Amazon S3 和 AWS Glue 動作的 IAM 權限政策決定。
在下列內嵌政策中,請將 bucket-name
取代為 Amazon S3 儲存貯體名稱,將 aws-account-id
和 region
取代為有效的 AWS
帳號和 Data Catalog 的區域,將 database_name
取代為資料庫的名稱,以及將 table_name
取代為資料表的名稱。
- JSON
-
-
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:DeleteObject"
],
"Resource": [
"arn:aws:s3:::amzn-s3-demo-bucket
/*"
]
},
{
"Effect": "Allow",
"Action": [
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::amzn-s3-demo-bucket
"
]
},
{
"Effect": "Allow",
"Action": [
"glue:UpdateTable",
"glue:GetTable"
],
"Resource": [
"arn:aws:glue:us-east-1
:111122223333
:table/<database-name>
/<table-name>
",
"arn:aws:glue:us-east-1
:111122223333
:database/<database-name>
",
"arn:aws:glue:us-east-1
:111122223333
:catalog"
]
},
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": [
"arn:aws:logs:us-east-1
:111122223333
:log-group:/aws-glue/iceberg-compaction/logs:*",
"arn:aws:logs:us-east-1
:111122223333
:log-group:/aws-glue/iceberg-retention/logs:*",
"arn:aws:logs:us-east-1
:111122223333
:log-group:/aws-glue/iceberg-orphan-file-deletion/logs:*"
]
}
]
}
-
使用下列政策針對向 Lake Formation 註冊的資料啟用壓縮功能。
如果最佳化角色沒有在資料表上授予的IAM_ALLOWED_PRINCIPALS
群組許可,則該角色需要資料表上的 Lake Formation ALTER
、 DESCRIBE
INSERT
和 DELETE
許可。
如需向 Lake Formation 註冊 Amazon S3 儲存貯體的詳細資訊,請參閱將 Amazon S3 位置新增至您的資料湖。
- JSON
-
-
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"lakeformation:GetDataAccess"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"glue:UpdateTable",
"glue:GetTable"
],
"Resource": [
"arn:aws:glue:us-east-1
:111122223333
:table/databaseName
/tableName
",
"arn:aws:glue:us-east-1
:111122223333
:database/databaseName
",
"arn:aws:glue:us-east-1
:111122223333
:catalog"
]
},
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": [
"arn:aws:logs:us-east-1
:111122223333
:log-group:/aws-glue/iceberg-compaction/logs:*",
"arn:aws:logs:us-east-1
:111122223333
:log-group:/aws-glue/iceberg-retention/logs:*",
"arn:aws:logs:us-east-1
:111122223333
: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 帳戶中,您需要包含壓縮角色的下列許可。
- JSON
-
-
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"kms:Decrypt",
"kms:GenerateDataKey"
],
"Resource": [
"arn:aws:kms:us-east-1
:111122223333
:key/key-id
"
]
}
]
}
-
您用來執行壓縮程序的角色必須具有該角色的 iam:PassRole
權限。
- JSON
-
-
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"iam:PassRole"
],
"Resource": [
"arn:aws:iam::111122223333
:role/<optimizer-role-name>
"
]
}
]
}
-
將下列信任政策新增至 AWS Glue 服務的角色,以擔任 IAM 角色來執行壓縮程序。
- JSON
-
-
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"Service": "glue.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
-
(選用) 若要更新 Data Catalog 設定以啟用目錄層級資料表最佳化,所使用的 IAM 角色必須具有根目錄的 glue:UpdateCatalog
許可或 AWS Lake Formation ALTER CATALOG
許可。您可以使用 GetCatalog
API 驗證目錄屬性。