MetabaseとAWS Athenaの連携手順

MetabaseとAWS Athenaの連携手順

BIツールMetabaseとAWS Athenaの連携手順とまとめました。

その前にMetabaseをインストールしていない場合は以下参照してください。

Metabaseインストール手順

Metabase Athena Driverインストール

現在(2020/8)Metabaseの標準でAthenaと連携していなかった為、以下のドライバーを使用しました。

https://github.com/dacort/metabase-athena-driver

以下はMetabaseがインストールされたubuntuです。

cd metabase/plugins
wget https://github.com/dacort/metabase-athena-driver/releases/download/v1.1.0/athena.metabase-driver.jar

Metabase 実行

java -jar metabase.jar &

起動されるので、http://ホスト:3000 でアクセスします。

Athena連携設定

データベースを追加します。ドライバーをインストールした事により、プルダウンにAthenaが追加されて選べるようになるはずです。

リージョン、Workgroup(デフォルトprimary)、Metabase出力用S3バケット、アクセスキー、シークレットキーを設定すればOKです。

Athenaポリシー

AWSキーに対してのIAMポリシーですが、以下に記載しております。

https://github.com/dacort/metabase-athena-driver#example-iam-policy

S3のbucket1はAthenaの元データ格納バケット、bucket2はMetabase結果ファイル格納バケットです。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Athena",
      "Effect": "Allow",
      "Action": [
        "athena:BatchGetNamedQuery",
        "athena:BatchGetQueryExecution",
        "athena:GetCatalogs",
        "athena:GetExecutionEngine",
        "athena:GetExecutionEngines",
        "athena:GetNamedQuery",
        "athena:GetNamespace",
        "athena:GetNamespaces",
        "athena:GetQueryExecution",
        "athena:GetQueryExecutions",
        "athena:GetQueryResults",
        "athena:GetQueryResultsStream",
        "athena:GetTable",
        "athena:GetTables",
        "athena:GetWorkGroup",
        "athena:ListNamedQueries",
        "athena:ListQueryExecutions",
        "athena:ListTagsForResource",
        "athena:ListWorkGroups",
        "athena:StartQueryExecution",
        "athena:StopQueryExecution"
      ],
      "Resource": "*"
    },
    {
      "Sid": "Glue",
      "Effect": "Allow",
      "Action": [
        "glue:BatchGetPartition",
        "glue:GetDatabase",
        "glue:GetDatabases",
        "glue:GetPartition",
        "glue:GetPartitions",
        "glue:GetTable",
        "glue:GetTables",
        "glue:GetTableVersion",
        "glue:GetTableVersions"
      ],
      "Resource": "*"
    },
    {
      "Sid": "S3ReadAccess",
      "Effect": "Allow",
      "Action": ["s3:GetObject", "s3:ListBucket", "s3:GetBucketLocation"],
      "Resource": [
        "arn:aws:s3:::bucket1",
        "arn:aws:s3:::bucket1/*",
        "arn:aws:s3:::bucket2",
        "arn:aws:s3:::bucket2/*"
      ]
    },
    {
      "Sid": "AthenaResultsBucket",
      "Effect": "Allow",
      "Action": [
        "s3:PutObject",
        "s3:GetObject",
        "s3:AbortMultipartUpload",
        "s3:ListBucket",
        "s3:GetBucketLocation"
      ],
      "Resource": ["arn:aws:s3:::bucket2", "arn:aws:s3:::bucket2/*"]
    }
  ]
}

以下も追加で必要でした。

https://github.com/dacort/metabase-athena-driver/issues/56

athena:ListDataCatalogs
athena:ListDatabases
athena:ListTableMetadata
athena:GetDataCatalog

以上です。

Metabase関連記事

Comments

No comments yet. Why don’t you start the discussion?

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です