こんにちは、シュガーです。
AWS Lambdaの基本シリーズとして今回はS3のバケットリスト取得方法をご紹介したいと思います。
IAMロールの作成
まず準備としてIAMロールの作成を行います。
今回はLambdaからS3の操作ができるよう権限を割り当てます。
IAMのコンソール画面の左メニューからロールを選択し、「ロールの作成」をクリックします。
ロールタイプはAWSサービスを選択し、その項目の中から「Lambda」を選択します。
次の画面のアクセス権限では、既存のポリシーをアタッチします。
「AmazonS3FullAccess」と検索をし、表示されたポリシーをアタッチしましょう。
最後の確認画面では、ロール名及び説明を明記します。
ここは自分でわかるようなロール名を設定しましょう。
「ロールの作成」をクリックすることでロールの作成が完了です。
Lambda関数の作成
それではLambda関数を作成します。
AWS Lambdaのダッシュボードから「関数の作成」を選択します。
・ステップ1
設計図の選択では「一から作成」を選択します。
・ステップ2
トリガーの設定では何もせず、そのまま「次へ」を選択します。
・ステップ3
関数の設定では、ランタイムの指定を行い、Lambda関数のコードを記述する必要があります。
また、この画面で先ほど作成したIAMロールの適用を行います。
今回ランタイムはPython 3.6を選びます。
Lambda関数は以下のように記述しました。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
# ①ライブラリのimport import boto3 print('Loading function') # ②Functionのロードをログに出力 s3 = boto3.resource('s3') # ③S3オブジェクトを取得 def lambda_handler(event, context): i = 1 # ④バケットのリストを取得してバケット名を出力 for bucket in s3.buckets.all(): print(str(i) + ':' + bucket.name) i += 1 |
次にIAMロールをアタッチします。
「既存のロールを選択」し、続けて先ほど作成したIAMロールをプルダウンから選びましょう。
ステップ4
確認画面で設定した情報に間違いがなければ「関数の作成」をクリックすることでLambda関数が作成されます。
実行結果
実行結果は以下のとおりです。
このアカウントで作成しているS3バケットを無事取得することができました。
最後に
いかがでしたでしょうか。
Lambdaを利用することでサーバレス構成を簡単に実現することができます。
当レシピでは今回の記事の他、たくさんのLambda紹介記事がございます。
ここ最近の流れとしてサーバレスが流行っているので、是非ご覧になっていただければと思います。
次回もお楽しみに。