AWS Athenaを触る時に必要な権限を確認し、余分な権限をつけずに実行するのが目的。
概要
AWS Athenaとは
Amazon Athena はインタラクティブなクエリサービスで、Amazon S3 内のデータを標準 SQL を使用して簡単に分析できるようになります。Athena はサーバーレスなので、インフラストラクチャの管理は不要です。実行したクエリに対してのみ料金が発生します。
AWS Athenaは標準でAWS Glueと統合されています。
この意味するところはS3をデータソースとしてAWS Athenaで CREATE DATABASE すると、AWS GlueカタログとしてDBが出来上がるということです。
つまり、Athenaを利用する時にはGlueの権限も必要ということです。
また、先にデータソースとしてS3を利用すると書きました。これはつまり、データソースであるS3へアクセスできる必要があるということです。
最後に、Athenaでのクエリ結果はまたS3に保存されます。ですので保存先S3へのアクセス権も必要です。
必要な権限
Athena
- action: "athena:*"
- resource: "*"
Glue
default database
- action: "glue:GetDatabase"
- action: "glue:Catalog"
- resource: "arn:aws:glue:
: :database/default
target database
- action: "glue:*"
- resource: "arn:aws:glue:
: :database/ - resource: "arn:aws:glue:
: :table/ /*
S3
source
- action: "s3:ListBucket"
- action: "s3:GetObject"
- action: "s3:GetObjectLocation"
- resouce: "arn:aws:s3:::<source_bucket>"
- resouce: "arn:aws:s3:::<source_bucket>/*"
destination
- action: "s3:PutObject"
- action: "s3:ListMultipartUploadParts"
- action: "s3:ListBucketMultipartUploads"
- action: "s3:ListBucket"
- action: "s3:GetObject"
- action: "s3:GetBucketLocation"
- action: "s3:CreateBucket"
- action: "s3:AbortMultipartUpload"
- resouce: "arn:aws:s3:::<dest_bucket>"
- resouce: "arn:aws:s3:::<dest_bucket>/*"
おわりに
Glueは default データベースに対して、Catalog、GetDatabaseあたりがないと動かないのが謎いです。