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
以上です。