Exemple de politiques d'autorisations IAM pour autoriser les fonctions définies par l'utilisateur (UDF) Amazon Athena - Amazon Athena

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.

Exemple de politiques d'autorisations IAM pour autoriser les fonctions définies par l'utilisateur (UDF) Amazon Athena

Les exemples de politique d'autorisation présentés dans cette rubrique illustrent les actions autorisées requises et les ressources pour lesquelles elles sont autorisées. Examinez attentivement ces politiques et modifiez-les en fonction de vos besoins avant d'attacher des politiques d'autorisation similaires aux identités IAM.

Exemple
 – Autoriser un principal IAM à exécuter et renvoyer des requêtes contenant une instruction UDF Athena

La politique d'autorisations basée sur l'identité suivante autorise les actions dont un utilisateur ou un autre principal IAM a besoin pour exécuter des requêtes utilisant des instructions UDF Athena.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "athena:StartQueryExecution", "lambda:InvokeFunction", "athena:GetQueryResults", "s3:ListMultipartUploadParts", "athena:GetWorkGroup", "s3:PutObject", "s3:GetObject", "s3:AbortMultipartUpload", "athena:StopQueryExecution", "athena:GetQueryExecution", "s3:GetBucketLocation" ], "Resource": [ "arn:aws:athena:*:MyAWSAcctId:workgroup/MyAthenaWorkGroup", "arn:aws:s3:::MyQueryResultsBucket/*", "arn:aws:lambda:*:MyAWSAcctId:function:OneAthenaLambdaFunction", "arn:aws:lambda:*:MyAWSAcctId:function:AnotherAthenaLambdaFunction" ] }, { "Sid": "VisualEditor1", "Effect": "Allow", "Action": "athena:ListWorkGroups", "Resource": "*" } ] }
Explication des autorisations
Actions autorisées Explication
"athena:StartQueryExecution", "athena:GetQueryResults", "athena:GetWorkGroup", "athena:StopQueryExecution", "athena:GetQueryExecution",

Autorisations Athena nécessaires pour exécuter des requêtes dans le groupe de travail MyAthenaWorkGroup.

"s3:PutObject", "s3:GetObject", "s3:AbortMultipartUpload"

s3:PutObject et s3:AbortMultipartUpload autorisent l'écriture des résultats de requête dans tous les sous-dossiers du compartiment des résultats de requête tel qu'il est spécifié par l'identificateur de ressource arn:aws:s3:::MyQueryResultsBucket/*, où MyQueryResultsBucket est le compartiment de résultats de requête Athena. Pour de plus amples informations, veuillez consulter Utilisation des résultats des requêtes, des requêtes récentes et des fichiers de sortie.

s3:GetObject permet de lire les résultats de requête et l'historique des requêtes pour la ressource spécifiée comme arn:aws:s3:::MyQueryResultsBucket, où MyQueryResultsBucket est le compartiment de résultats de requête Athena. Pour de plus amples informations, veuillez consulter Utilisation des résultats des requêtes, des requêtes récentes et des fichiers de sortie.

s3:GetObject permet également de lire à partir de la ressource spécifiée comme "arn:aws:s3:::MyLambdaSpillBucket/MyLambdaSpillPrefix*", où MyLambdaSpillPrefix est spécifié dans la configuration de la ou des fonctions Lambda appelées.

"lambda:InvokeFunction"
Permet aux requêtes d'invoquer les fonctions AWS Lambda spécifiées dans le bloc Resource. Par exemple, arn:aws:lambda:*:MyAWSAcctId:function:MyAthenaLambdaFunction, où MyAthenaLambdaFunction spécifie le nom d'une fonction Lambda à appeler. Plusieurs fonctions peuvent être spécifiées comme indiqué dans l'exemple.
Exemple
 – Autoriser un principal IAM à créer une UDF Athena
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "lambda:CreateFunction", "lambda:ListVersionsByFunction", "iam:CreateRole", "lambda:GetFunctionConfiguration", "iam:AttachRolePolicy", "iam:PutRolePolicy", "lambda:PutFunctionConcurrency", "iam:PassRole", "iam:DetachRolePolicy", "lambda:ListTags", "iam:ListAttachedRolePolicies", "iam:DeleteRolePolicy", "lambda:DeleteFunction", "lambda:GetAlias", "iam:ListRolePolicies", "iam:GetRole", "iam:GetPolicy", "lambda:InvokeFunction", "lambda:GetFunction", "lambda:ListAliases", "lambda:UpdateFunctionConfiguration", "iam:DeleteRole", "lambda:UpdateFunctionCode", "s3:GetObject", "lambda:AddPermission", "iam:UpdateRole", "lambda:DeleteFunctionConcurrency", "lambda:RemovePermission", "iam:GetRolePolicy", "lambda:GetPolicy" ], "Resource": [ "arn:aws:lambda:*:111122223333:function:MyAthenaLambdaFunctionsPrefix*", "arn:aws:s3:::awsserverlessrepo-changesets-1iiv3xa62ln3m/*", "arn:aws:iam::*:role/RoleName", "arn:aws:iam::111122223333:policy/*" ] }, { "Sid": "VisualEditor1", "Effect": "Allow", "Action": [ "cloudformation:CreateUploadBucket", "cloudformation:DescribeStackDriftDetectionStatus", "cloudformation:ListExports", "cloudformation:ListStacks", "cloudformation:ListImports", "lambda:ListFunctions", "iam:ListRoles", "lambda:GetAccountSettings", "ec2:DescribeSecurityGroups", "cloudformation:EstimateTemplateCost", "ec2:DescribeVpcs", "lambda:ListEventSourceMappings", "cloudformation:DescribeAccountLimits", "ec2:DescribeSubnets", "cloudformation:CreateStackSet", "cloudformation:ValidateTemplate" ], "Resource": "*" }, { "Sid": "VisualEditor2", "Effect": "Allow", "Action": "cloudformation:*", "Resource": [ "arn:aws:cloudformation:*:111122223333:stack/aws-serverless-repository-MyCFStackPrefix*/*", "arn:aws:cloudformation:*:111122223333:stack/serverlessrepo-MyCFStackPrefix*/*", "arn:aws:cloudformation:*:*:transform/Serverless-*", "arn:aws:cloudformation:*:111122223333:stackset/aws-serverless-repository-MyCFStackPrefix*:*", "arn:aws:cloudformation:*:111122223333:stackset/serverlessrepo-MyCFStackPrefix*:*" ] }, { "Sid": "VisualEditor3", "Effect": "Allow", "Action": "serverlessrepo:*", "Resource": "arn:aws:serverlessrepo:*:*:applications/*" } ] }
Explication des autorisations
Actions autorisées Explication
"lambda:CreateFunction", "lambda:ListVersionsByFunction", "lambda:GetFunctionConfiguration", "lambda:PutFunctionConcurrency", "lambda:ListTags", "lambda:DeleteFunction", "lambda:GetAlias", "lambda:InvokeFunction", "lambda:GetFunction", "lambda:ListAliases", "lambda:UpdateFunctionConfiguration", "lambda:UpdateFunctionCode", "lambda:AddPermission", "lambda:DeleteFunctionConcurrency", "lambda:RemovePermission", "lambda:GetPolicy" "lambda:GetAccountSettings", "lambda:ListFunctions", "lambda:ListEventSourceMappings",

Autoriser la création et la gestion des fonctions Lambda répertoriées en tant que ressources. Dans l'exemple, un préfixe de nom est utilisé dans l'identificateur de ressource arn:aws:lambda:*:MyAWSAcctId:function:MyAthenaLambdaFunctionsPrefix*, où MyAthenaLambdaFunctionsPrefix est un préfixe partagé utilisé dans le nom d'un groupe de fonctions Lambda afin qu'il ne soit pas nécessaire de les spécifier individuellement en tant que ressources. Vous pouvez spécifier une ou plusieurs ressources de fonction Lambda.

"s3:GetObject"
Permet la lecture d'un compartiment qui est requis par AWS Serverless Application Repository tel que spécifié par l'identificateur de ressource arn:aws:s3:::awsserverlessrepo-changesets-1iiv3xa62ln3m/*.
"cloudformation:*"

Permet la création et la gestion des piles AWS CloudFormation spécifiées par la ressource MyCFStackPrefix. Ces piles et ensembles de piles représentent la façon dont AWS Serverless Application Repository déploie les connecteurs et les fonctions définies par l'utilisateur.

"serverlessrepo:*"
Permet la recherche, l'affichage, la publication et la mise à jour des applications dans AWS Serverless Application Repository, spécifié par l'identificateur de ressource arn:aws:serverlessrepo:*:*:applications/*.