質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.12%
AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

解決済

Athenaでクエリを送れない

katahik
katahik

総合スコア75

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

1回答

0リアクション

0クリップ

965閲覧

投稿2022/03/03 07:10

編集2022/03/04 06:35

実現したいこと

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": "*" } ] }

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

katahik

2022/03/03 07:55

この記事は初めてみました。ありがとうございます。やってみます。
katahik

2022/03/03 10:29

記事を参考に試してみましたが、変わらずエラーがでます。詳細は質問文に追記いたします。
yu_1985

2022/03/03 10:40

クロスアカウント用のバケットポリシーを追記したということはこのS3バケットはAthenaの実行アカウントと別のアカウントにあるということですか?
katahik

2022/03/03 12:48

DataLake管理者ユーザーとAthena実行ユーザーが存在していますが、同じアカウントIDの中でIAMユーザーを分けているだけです。。。この場合でも必要かと思いポリシーをアタッチしましたが、コメントを読むと必要なさそうですかね?
yu_1985

2022/03/03 14:09

> Athena テーブルと S3 バケットが同じアカウントにある場合は、S3 バケットポリシーをアタッチする必要はありません 記載のとおりです。クロスアカウントじゃないなら必要ないです。 Lake FormationのPermissionがLF-Tag espressionになっていますが、LF Tagの設定はどうしてますか? また、Permissionの設定はそれだけでしょうか?
katahik

2022/03/03 23:01

Athena実行ユーザー(datalake_user)のPermissionの設定を追記しました(以前から設定済) なお、Athena実行ユーザー(datalake_user)のPermissionの設定は、この画像以外行っていないです。

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.12%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。