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

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

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

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

Q&A

解決済

1回答

2218閲覧

Athenaでクエリを送れない

katahik

総合スコア79

AWS(Amazon Web Services)

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

0グッド

0クリップ

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

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

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の設定は、この画像以外行っていないです。
guest

回答1

0

自己解決

AWSServiceRoleForLakeFormationDataAccessにKMSのアタッチすることで、解決しました。

投稿2022/03/06 12:20

katahik

総合スコア79

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問