実現したいこと
AWS AthenaでSELECT文を実行したいのですが、下記エラーが出ています。
Glueのクロールは成功して、DBは作成しています。
また、DDLを表示することもできています。
なにか気づいた点がありましたら、教えていただければ幸いです。
SELECT * FROM "DB名"."テーブル名" limit 10;
↓
Permission denied on S3 path: s3://バケット名/フォルダ名/DB名/テーブル名/parquetファイル名
環境
AWS上で
RDSスナップショットをS3にエクスポートして、Glueでクロールして、データカタログを作っています。
なお、AWS LakeFormationで管理をしています。
設定
ユーザー(datalake_user)
アタッチ済のポリシー
AmazonAthenaFullAccess
AmazonS3FullAccess
KMSFullAccessPolicyを作成してアタッチ
Lake Formation > Permissions
クロスアカウントクエリに必要なアクセス許可を持つ Amazon S3 バケットポリシーをアタッチ済
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1620692932186", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::○○:user/datalake_user" }, "Action": [ "s3:*" ], "Resource": [ "arn:aws:s3:::○○", "arn:aws:s3:::○○/○○/○○/*" ] } ] }
3月4日8時10分追記
LF-Tags
AWS Lake Formation > Grant permissions > Grant data permissions
AWS Lake Formation > Databases > db_sample_for_athena
db_sample_for_athena
3月4日15時40分追記
エラーコード
"errorCode":"AccessDenied", "errorMessage":"User: arn:aws:sts::アカウントID:assumed-role/AWSServiceRoleForLakeFormationDataAccess/AWSLF-00-AT-アカウントID-OSSm3ywcAP is not authorized to perform: kms:Decrypt on resource: arn:aws:kms:ap-northeast-1:アカウントID:key/○○ because no resource-based policy allows the kms:Decrypt action"
クローラのサービスロールに AWSServiceRoleForLakeFormationDataAccessを設定しています
このロールに許可しているポリシーは以下のとおりです
kms-decrypt-policy
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "kms:Decrypt", "Resource": "*" } ] }
LakeFormationGetPolicy
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "lakeformation:GetResourceLFTags", "lakeformation:GetDataAccess", "lakeformation:ListLFTags", "lakeformation:GetLFTag" ], "Resource": "*" } ] }
一旦ここを見てトラブルシュートしてみてください
https://aws.amazon.com/jp/premiumsupport/knowledge-center/access-denied-athena/
この記事は初めてみました。ありがとうございます。やってみます。
記事を参考に試してみましたが、変わらずエラーがでます。詳細は質問文に追記いたします。
クロスアカウント用のバケットポリシーを追記したということはこのS3バケットはAthenaの実行アカウントと別のアカウントにあるということですか?
DataLake管理者ユーザーとAthena実行ユーザーが存在していますが、同じアカウントIDの中でIAMユーザーを分けているだけです。。。この場合でも必要かと思いポリシーをアタッチしましたが、コメントを読むと必要なさそうですかね?
> Athena テーブルと S3 バケットが同じアカウントにある場合は、S3 バケットポリシーをアタッチする必要はありません
記載のとおりです。クロスアカウントじゃないなら必要ないです。
Lake FormationのPermissionがLF-Tag espressionになっていますが、LF Tagの設定はどうしてますか?
また、Permissionの設定はそれだけでしょうか?
Athena実行ユーザー(datalake_user)のPermissionの設定を追記しました(以前から設定済)
なお、Athena実行ユーザー(datalake_user)のPermissionの設定は、この画像以外行っていないです。
回答1件
あなたの回答
tips
プレビュー