Amazon Simple Storage Service (Amazon S3) のバケットポリシーで Amazon QuickSight からのアクセスが許可されていることを確認したいです。
簡単な説明
Amazon S3 バケットが Deny ポリシーを使用している場合、そのポリシーは Amazon QuickSight コンソールで指定した S3 アクセス権限よりも優先されます。Amazon QuickSight が S3 バケットにアクセスできるようにするには、Amazon QuickSight サービスロール (aws-quicksight-service-role-v0) を Deny ポリシーの例外として追加します。
解決策
1. Amazon QuickSight に S3 バケットにアクセスする権限があることを確認します。
2. AWS コマンドラインインターフェイス (AWS CLI) または AWS Identity and Access Management (IAM) API を使用して aws-quicksight-service-role-v0 ロールの固有 ID を取得します。ID は各 Amazon QuickSight アカウントに固有です。例:
aws iam get-role --role-name aws-quicksight-service-role-v0 --query 'Role.RoleId' --output json
"AROAEXAMPLEID"
注: AWS CLI コマンドを実行したときにエラーが発生した場合は、必ず最新バージョンの AWS CLI を使用してください。
3. Amazon S3 コンソールを開きます。
4. Amazon QuickSight でアクセスしたいバケットを選択します。
5. [Permissions] ビューを選択します。
6. [バケットポリシー] を選択します。
7. この例のようなバケットポリシーを入力します。AROAEXAMPLEID は固有の ID に置き換えてください。IAM ユーザーに例外を追加するには、AIDAEXAMPLEUSERID を IAM ユーザーの固有の ID に置き換えます。IAM ユーザーポリシーには、S3 バケットの Allow ステートメントも含まれている必要があります。例:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Principal": "*",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::examplebucketname",
"arn:aws:s3:::examplebucketname/*"
],
"Condition": {
"StringNotLike": {
"aws:userid": [
"AROAEXAMPLEID:*",
"AIDAEXAMPLEUSERID"
]
}
}
}
]
}
この Deny ポリシーは、Amazon QuickSight サービスロールと IAM ユーザーに例外を追加します。
注: Amazon QuickSight サービスロールと IAM ユーザーを削除すると、バケットからロックアウトされます。この問題を解決するには、AWS アカウントのルートユーザーとしてログインし、delete-bucket-policy コマンドを使用してバケットポリシーを削除します。
関連情報
Amazon S3 バケットアクセスを特定の IAM ロールに制限する方法