Athena若槻龍太2023.01.31この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。Delivery部の若槻です。Athenaでクエリの実行開始および実行結果取得を行いたい際には、AthenaだけでなくGlueやS3リソースへのアクセス権限が必要となります。そのため、クエリを実行するリソース(Lambda関数)などに必要最低限のアクセス権限を付与したいとなるとIAMポリシー設定の記述が煩雑となってしまいます。CDKで作ってみたので、サンプルコード共有します。カスタムConstructを使用することにより、Stack側の記述をシンプルにすることを目指します。サンプルコード次のようなカスタムConstructを作成しました。引数で渡されるLambda関数オブジェクトに必要なアクセス権限を付与しています。}}上記のうち、arn:aws:glue:${region}:${accountId}:catalogは馴染みの無いリソースでしたが、クエリ時にこのリソースに対してglue:GetTableアクションが実行されるため権限付与が必要でした。動作確認Lambda関数ハンドラーのコードです。Athenaのクエリ実行開始およびクエリ結果取得のシンプルな記述を可能にするライブラリであるAthena-Queryを使ってSELECTクエリを実行しています。Constructです。先程のカスタムConstructを呼び出して作成した各種リソースを引数として指定してます。}}CDKデプロイをしてリソース作成後に、Lambda関数を実行するとAthenaクエリが実行でき結果のデータを取得することができました。