このトピックのアクセス許可ポリシーの例は、使用可能な必須アクションとそれらのアクションが許可されるリソースを示しています。同様のアクセス許可ポリシーを 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": "*"
}
]
}
実行可能なアクション | 説明 |
---|---|
|
|
|
|
|
クエリが Resource ブロックで指定された AWS Lambda 関数を呼び出すことを許可します。例えば、MyAthenaLambdaFunction が呼び出される Lambda 関数の名前を指定する arn:aws:lambda:*: などです。例に示すように、複数の関数を指定できます。 |
例 – 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/*"
},
{
"Sid": "ECR",
"Effect": "Allow",
"Action": [
"ecr:BatchGetImage",
"ecr:GetDownloadUrlForLayer"
],
"Resource": "arn:aws:ecr:*:*:repository/*"
}
]
}
実行可能なアクション | 説明 |
---|---|
|
リソースとしてリストされている Lambda 関数の作成と管理を許可します。この例では、名前のプレフィックスがリソース識別子 |
|
リソース識別子 AWS Serverless Application Repository で指定された、arn:aws:s3:::awsserverlessrepo-changesets- が必要なバケットの読み取りを許可します。 |
|
リソース |
|
リソース ID AWS Serverless Application Repository によって指定された arn:aws:serverlessrepo:*:*:applications/* でアプリケーションの検索、表示、公開、および更新を許可します。 |