AIDXナレッジ - INSIGHT LAB

【AWS Lambda】 Lambda+python boto3を使用したs3へのデータ送信方法

作成者: Coffee|2024年12月27日

はじめに

Webサイトからデータ取得をおこない、データ分析を実施したい。

そのような状況においてAWS上にて簡単に実施できる、 Lambda + python boto3を用いたデータ準備方法をご紹介いたします。

私は個人的に使用している学習用のAWS環境を使用しております。

本記事は学習で使用できるAWS環境がある前提で進めさせていただきます。

システム構成

今回は内閣府の「国民の祝日」csvファイルをLambdaを使用してS3に送信します。

実際のデータについては以下リンクになります。

https://www8.cao.go.jp/chosei/shukujitsu/syukujitsu.csv

システム流れとしては以下になります。

  1. Lambda関数の作成
  2. S3バケットの作成
  3. IAMロールの設定
  4. Lambda関数の実行

それぞれについて詳しく説明していきます!

Lambda関数の作成

まずはLambda関数の作成をします。

Lambdaコンソールを開き関数の作成ボタンをクリックします、

「一から作成」を選択します。

関数名は今回は「test」としていますが、分かりやす名前であれば問題ないです。

ランタイムはpythonを使用するので「Python3.9」としています。

これでLambda関数の作成は完了です!

続いてPythonのコードを実際に書いていきます。

コードソースの部分に以下のコードを記述してみてください。

def lambda_handlerの中に追記していく形になります。

今回は分かりやすいようにHelloWorld文は削除してません。

urlは先ほどの内閣府の祝日カレンダーを指定しています。

s3.upload_fileについてはこの後作成するS3のバケット名及びフォルダ名を指定してます。

S3バケットの作成

先ほどのコードの送信先のS3バケットを作成します。

バケットの作成ボタンをクリックします。

バケット名を入力します。

バケット名に関しては一意でないといけないため同じ名前は使用できませんので、分かりやすい名前を自身でつけてください。

それ以外の項目についてはデフォルトで問題ないためできたらバケットを作成してください。

バケットが作成されたらフォルダの作成をします。

フォルダの作成ボタンをクリックします。

フォルダ名を入力します。

今回は「data」としています。

他はデフォルトで問題ないので出来たらフォルダを作成してください。

IAMロールの設定

上記段階だけではLambda関数実行時にアクセスエラーが出てしまいます。

(気になる方は先にLambda関数の実行をしてみるとエラーが出てきます。)

そのためIAMロールの設定が必要になります。

先ほど作成したLambda関数の画面に戻ります。

「設定」→「アクセス権限」→「ロール名」からURLでIAMロールの設定画面に飛ぶことができます。

IAMロールの画面が表示されたら「許可」→「許可を追加」→「ポリシーをアタッチ」をクリックします。

検索画面に「S3」と入力し今回はテスト用のため「AmazonS3FullAccess」を追加します。

本来は最小限のポリシーをアタッチをするのが適切になりますが個人テスト用なので問題ございません。

これでIAMロールの設定は完了です。

Lambda関数の実行

いよいよLambda関数の実行になります。

Lambda関数の画面に戻ります。

「Deploy」→「Test」で実行してみてください。

実行が成功しましたら先ほど作成したS3バケットを確認してみてください。

指定した場所に祝日データのcsvが送られていたら成功になります。

おわりに

今回使用した方法でWebサイトからS3にLambdaを使用してデータ取得を行うことができます。

ここで取得したデータから分析等に繋げることが出来るようになります。

是非データ利活用に繋げていきましょう。