Zugriff auf Athena zulassen UDFs: Beispielrichtlinien - Amazon Athena

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Zugriff auf Athena zulassen UDFs: Beispielrichtlinien

Die Beispiele für Berechtigungsrichtlinien in diesem Thema veranschaulichen die erforderlichen zulässigen Aktionen und die Ressourcen, für die sie zulässig sind. Untersuchen Sie diese Richtlinien sorgfältig und ändern Sie sie entsprechend Ihren Anforderungen, bevor Sie IAM-Identitäten ähnliche Berechtigungsrichtlinien anfügen.

Beispiel
– Erlauben Sie einem IAM-Prinzipal, Abfragen auszuführen und zurückzugeben, die eine Athena-UDF-Anweisung enthalten

Die folgende identitätsbasierte Berechtigungsrichtlinie erlaubt Aktionen, die ein Benutzer oder ein anderer IAM-Prinzipal benötigt, um Abfragen auszuführen, die Athena-UDF-Anweisungen verwenden.

{ "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": "*" } ] }
Erläuterung der Berechtigungen
Erlaubte Aktionen Erklärung
"athena:StartQueryExecution", "athena:GetQueryResults", "athena:GetWorkGroup", "athena:StopQueryExecution", "athena:GetQueryExecution",

Athena-Berechtigungen, die zum Ausführen von Abfragen in der MyAthenaWorkGroup-Arbeitsgruppe erforderlich sind.

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

s3:PutObjectund s3:AbortMultipartUpload ermöglichen das Schreiben von Abfrageergebnissen in alle Unterordner des Abfrageergebnis-Buckets, wie durch die arn:aws:s3:::MyQueryResultsBucket/* Ressourcen-ID angegeben, wobei sich der Athena-Abfrageergebnis-Bucket MyQueryResultsBucket befindet. Weitere Informationen finden Sie unter Arbeiten Sie mit Abfrageergebnissen und aktuellen Abfragen.

s3:GetObjectermöglicht das Lesen von Abfrageergebnissen und dem Abfrageverlauf für die angegebene Ressourcearn:aws:s3:::MyQueryResultsBucket, wo sich der Athena-Abfrageergebnis-Bucket MyQueryResultsBucket befindet. Weitere Informationen finden Sie unter Arbeiten Sie mit Abfrageergebnissen und aktuellen Abfragen.

s3:GetObjectermöglicht auch das Lesen von der Ressource, die als angegeben MyLambdaSpillPrefix ist"arn:aws:s3:::MyLambdaSpillBucket/MyLambdaSpillPrefix*", wo dies in der Konfiguration der aufgerufenen Lambda-Funktion oder der aufgerufenen Funktionen angegeben ist.

"lambda:InvokeFunction"
Ermöglicht Abfragen, die im Block angegebenen AWS Lambda Funktionen aufzurufen. Resource Beispiel: where arn:aws:lambda:*:MyAWSAcctId:function:MyAthenaLambdaFunction MyAthenaLambdaFunction gibt den Namen einer Lambda-Funktion an, die aufgerufen werden soll. Es können mehrere Funktionen angegeben werden, wie im Beispiel gezeigt.
Beispiel
– Erlauben Sie einem IAM-Prinzipal, eine Athena-UDF zu erstellen
{ "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/*" }, { "Sid": "ECR", "Effect": "Allow", "Action": [ "ecr:BatchGetImage", "ecr:GetDownloadUrlForLayer" ], "Resource": "arn:aws:ecr:*:*:repository/*" } ] }
Erläuterung der Berechtigungen
Erlaubte Aktionen Erklärung
"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",

Erlauben der Erstellung und Verwaltung von Lambda-Funktionen, die als Ressourcen aufgeführt sind. In diesem Beispiel wird ein Namenspräfix in der Ressourcen-ID verwendetarn:aws:lambda:*:MyAWSAcctId:function:MyAthenaLambdaFunctionsPrefix*, wobei MyAthenaLambdaFunctionsPrefix ein gemeinsames Präfix im Namen einer Gruppe von Lambda-Funktionen verwendet wird, sodass sie nicht einzeln als Ressourcen angegeben werden müssen. Sie können eine oder mehrere Lambda-Funktionsressourcen angeben.

"s3:GetObject"
Ermöglicht das Lesen eines Buckets, der die in der Ressourcen-ID arn:aws:s3:::awsserverlessrepo-changesets-1iiv3xa62ln3m/* angegebenen Anforderungen AWS Serverless Application Repository benötigt.
"cloudformation:*"

Ermöglicht die Erstellung und Verwaltung von AWS CloudFormation Stacks, die durch die Ressource MyCFStackPrefix spezifiziert werden. Mit diesen Stacks und Stacksets werden Konnektoren und bereitgestellt. AWS Serverless Application Repository UDFs

"serverlessrepo:*"
Ermöglicht das Suchen, Anzeigen, Veröffentlichen und Aktualisieren von Anwendungen in der AWS Serverless Application Repository, die durch die Ressourcen-ID angegeben sind. arn:aws:serverlessrepo:*:*:applications/*