Amazon Athena ユーザー定義関数 (UDF) を許可する IAM 許可ポリシーの例 - Amazon Athena

Amazon Athena ユーザー定義関数 (UDF) を許可する IAM 許可ポリシーの例

このトピックのアクセス許可ポリシーの例は、使用可能な必須アクションとそれらのアクションが許可されるリソースを示しています。同様のアクセス許可ポリシーを IAM ID にアタッチする前に、これらのポリシーを慎重に検討し、要件に従って変更してください。

- IAM プリンシパルが Athena UDF ステートメントを含むクエリを実行して返すことを許可する

以下のアイデンティティベースの許可ポリシーは、ユーザーまたは他の IAM プリンシパルが Athena UDF ステートメントを使用するクエリを実行するために必要なアクションを許可します。

{ "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": "*" } ] }
許可の説明
実行可能なアクション 説明
"athena:StartQueryExecution", "athena:GetQueryResults", "athena:GetWorkGroup", "athena:StopQueryExecution", "athena:GetQueryExecution",

MyAthenaWorkGroup ワークグループでのクエリの実行に必要な Athena 許可です。

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

s3:PutObjects3:AbortMultipartUpload は、arn:aws:s3:::MyQueryResultsBucket/* リソース識別子によって指定されたクエリ結果バケットのすべてのサブフォルダへのクエリ結果の書き込みを許可します。ここでの MyQueryResultsBucket は、Athena クエリ結果バケットです。詳細については、「クエリ結果、最近のクエリ、および出力ファイルの使用」を参照してください。

s3:GetObject は、arn:aws:s3:::MyQueryResultsBucket として指定されたリソースのクエリ結果とクエリ履歴の読み取りを許可します。ここでの MyQueryResultsBucket は、Athena クエリ結果バケットです。詳細については、「クエリ結果、最近のクエリ、および出力ファイルの使用」を参照してください。

s3:GetObject も、"arn:aws:s3:::MyLambdaSpillBucket/MyLambdaSpillPrefix*" として指定されたリソースからの読み取りを許可します。ここでの MyLambdaSpillPrefix は、呼び出される Lambda 関数の設定で指定されます。

"lambda:InvokeFunction"
クエリが Resource ブロックで指定された AWS Lambda 関数を呼び出すことを許可します。例えば、MyAthenaLambdaFunction が呼び出される Lambda 関数の名前を指定する arn:aws:lambda:*:MyAWSAcctId:function:MyAthenaLambdaFunction などです。例に示すように、複数の関数を指定できます。
– IAM プリンシパルに Athena UDF の作成を許可する
{ "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/*" } ] }
許可の説明
実行可能なアクション 説明
"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",

リソースとしてリストされている Lambda 関数の作成と管理を許可します。この例では、名前のプレフィックスがリソース識別子 arn:aws:lambda:*:MyAWSAcctId:function:MyAthenaLambdaFunctionsPrefix* で使用されます。ここでの MyAthenaLambdaFunctionsPrefix は、Lambda 関数グループの名前で使用される共有プレフィックスで、これによって Lambda 関数をリソースとして個別に指定する必要がなくなります。1 つ、または複数の Lambda 関数リソースを指定できます。

"s3:GetObject"
リソース識別子 AWS Serverless Application Repository で指定された、arn:aws:s3:::awsserverlessrepo-changesets-1iiv3xa62ln3m/* が必要なバケットの読み取りを許可します。
"cloudformation:*"

リソース MyCFStackPrefix によって指定されている AWS CloudFormation スタックの作成と管理を許可します。これらのスタックおよびスタックセットは、AWS Serverless Application Repository がコネクタと UDF をデプロイする方法です。

"serverlessrepo:*"
リソース ID AWS Serverless Application Repository によって指定された arn:aws:serverlessrepo:*:*:applications/* でアプリケーションの検索、表示、公開、および更新を許可します。