LoginSignup
4
3

More than 1 year has passed since last update.

クロスアカウントでAthenaクエリ

Posted at

Atheaのクロスアカウントを試した自分メモ

  • データ所有アカウント:999999999999
  • Athenaクエリするアカウント:666666666666

6666..でAthenaクエリ
9999..にGlueカタログやS3のオブジェクト

権限設定

S3権限

【データ所有アカウント操作】
"データ所有アカウント"のAthenaでクエリされるS3バケットのバケットポリシーを以下のようにして、"Athenaクエリアカウント"からのアクセス許可しておく

{
    "Version": "2012-10-17",
    "Id": "Policy1620910711847",
    "Statement": [
        {
            "Sid": "Stmt1620910644611",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::666666666666:root"
            },
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::test-bucket-ue",
                "arn:aws:s3:::test-bucket-ue/*"
            ]
        }
    ]
}

Glue権限

【データ所有アカウント操作】
Glueの設定をクリックして、以下のアクセス権限ポリシーを設定し、"Athenaクエリアカウント"からのGlue Data Catalogへのアクセス許可する。(Glueのリソースベースのアクセス許可)

{
  "Version" : "2012-10-17",
  "Statement" : [ {
    "Effect" : "Allow",
    "Principal" : {
      "AWS" : "arn:aws:iam::666666666666:user/uehara"
    },
    "Action" : "glue:*",
    "Resource" : [ "arn:aws:glue:ap-northeast-1:999999999999:catalog", "arn:aws:glue:ap-northeast-1:999999999999:database/default", "arn:aws:glue:ap-northeast-1:999999999999:table/default/*" ]
  } ]
}

スクリーンショット 0003-05-13 22.35.28.png

IAM権限

【Athenaクエリアカウト操作】
"データ所有アカウント"のデータカタログデータベースやテーブルにアクセス許可を与えるIAMポリシーを作成し、作成したIAMポリシーを操作するIAMユーザー(またはIAMロール)にアタッチする

IAMポリシー
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "glue:*",
            "Resource": [
                "arn:aws:glue:us-east-1:999999999999:catalog",
                "arn:aws:glue:us-east-1:999999999999:database/default",
                "arn:aws:glue:us-east-1:999999999999:table/default/*"
            ]
        }
    ]
}

Athenaデータカタログとデータソース作成

【Athenaクエリアカウト操作】
Athenaの上部で[データソース]をクリックし、[データソースを接続する]をクリックする

スクリーンショット 0003-05-13 22.57.59.png

そのまま[次へ]

スクリーンショット 0003-05-13 22.58.33.png

[別のアカウントのGlue データカタログ]にチェック入れて[次へ]

スクリーンショット 0003-05-13 22.59.27.png

カタログ名に任意の名前(ここではcrosstest-uehara2)、カタログIDに"データ所有アカウント"のアカウントIDを入れて[登録]をクリック

スクリーンショット 0003-05-13 23.01.42.png

Athenaでクロスアカウントクエリ

データソースに作成したAthenaデータカタログを選択しクエリ。"データ所有アカウント"のGlueテーブルを使い、"データ所有アカウント"のS3のデータに、"Athenaクエリアカウント"からクエリ出来ている

スクリーンショット 0003-05-13 22.27.20.png

参考ドキュメント

公式
https://docs.aws.amazon.com/ja_jp/athena/latest/ug/data-sources-glue-cross-account.html
https://docs.aws.amazon.com/ja_jp/athena/latest/ug/security-iam-cross-account-glue-catalog-access.html

補足

aws cliでAthenaのデータカタログを作成する

$ cat tmpcross.json 
{
    "Description": "Cross-account Glue catalog",
    "Name": "ownerCatalog",
    "Parameters": {"catalog-id" : "999999999999"},
    "Type": "GLUE"
}
$ aws athena create-data-catalog --cli-input-json file://tmpcross.json
4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3