Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Conditions préalables requises pour l'optimisation des tables
L'optimiseur de table suppose les autorisations du AWS Identity and Access Management (IAM) rôle que vous spécifiez lorsque vous activez les options d'optimisation (compactage, conservation des instantanés et suppression de fichiers orphelins) pour une table. Vous pouvez créer un rôle unique pour tous les optimiseurs ou créer des rôles distincts pour chaque optimiseur.
Note
L'optimiseur de suppression de fichiers orphelins ne nécessite pas les autorisations glue:updateTable
ors3:putObject
. Les optimiseurs d'expiration et de compactage des instantanés nécessitent le même ensemble d'autorisations.
Le IAM rôle doit disposer des autorisations nécessaires pour lire les données et mettre à jour les métadonnées dans le catalogue de données. Vous pouvez créer un IAM rôle et y associer les politiques intégrées suivantes :
-
Ajoutez la politique en ligne suivante qui accorde à Amazon S3 des autorisations de lecture/écriture sur l'emplacement pour les données qui ne sont pas enregistrées auprès de AWS Lake Formation. Cette politique inclut également les autorisations permettant de mettre à jour la table dans le catalogue de données et d'autoriser AWS Glue pour ajouter des identifiants Amazon CloudWatch journaux et statistiques de publication. Pour les données source dans Amazon S3 qui ne sont pas enregistrées auprès de Lake Formation, l'accès est déterminé par IAM les politiques d'autorisation d'Amazon S3 et AWS Glue actions.
Dans les politiques intégrées suivantes, remplacez-le
bucket-name
par le nom de votre compartiment Amazon S3aws-account-id
etregion
par un AWS numéro de compte et région du catalogue de données,database_name
avec le nom de votre base de données ettable_name
le nom de la table.{ "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:*" } ] } -
Utilisez la stratégie suivante pour activer le compactage des données enregistrées auprès de Lake Formation.
Si le rôle d'optimisation ne dispose pas d'autorisations de
IAM_ALLOWED_PRINCIPALS
groupe accordées sur la table, le rôle nécessite Lake FormationALTER
INSERT
etDELETE
des autorisations sur la table.DESCRIBE
Pour plus d'informations sur l'enregistrement d'un bucket Amazon S3 auprès de Lake Formation, consultez Ajouter un emplacement Amazon S3 à votre lac de données.
{ "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:*" } ] } -
(Facultatif) Pour optimiser les tables Iceberg avec les données des compartiments Amazon S3 chiffrées à l'aide du chiffrement côté serveur, le rôle de compactage nécessite des autorisations pour déchiffrer les objets Amazon S3 et générer une nouvelle clé de données pour écrire des objets dans les compartiments chiffrés. Ajoutez la politique suivante à la politique souhaitée AWS KMS clé. Nous prenons uniquement en charge le chiffrement au niveau du compartiment.
{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
<aws-account-id>
:role/<optimizer-role-name>
" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*" } -
(Facultatif) Pour l'emplacement des données enregistré auprès de Lake Formation, le rôle utilisé pour enregistrer l'emplacement nécessite des autorisations pour déchiffrer les objets Amazon S3 et générer une nouvelle clé de données pour écrire des objets dans les compartiments chiffrés. Pour plus d'informations, consultez la rubrique Enregistrement d'un emplacement Amazon S3 chiffré.
-
(Facultatif) Si le AWS KMS la clé est stockée dans un autre AWS compte, vous devez inclure les autorisations suivantes pour le rôle de compactage.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": ["arn:aws:kms:
<REGION>
:<KEY_OWNER_ACCOUNT_ID>
:key/<KEY_ID>
" ] } ] } -
Le rôle que vous utilisez pour exécuter le compactage doit disposer de l'autorisation
iam:PassRole
correspondante.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": [ "arn:aws:iam::
<account-id>
:role/<optimizer-role-name>
" ] } ] } -
Ajoutez la politique de confiance suivante au rôle pour AWS Glue service pour assumer le IAM rôle d'exécuter le processus de compactage.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "glue.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }