LoginSignup
0
0

[過去記事]AWS S3のバケットのCSVが更新・登録されたことをきっかけにLambda関数を実行してみよう!

Posted at

前提

本記事の内容は以前に記載した下記記事実施直後の状態から実施してゆきます。

今回つくるもの

S3の指定したバケットの指定したフォルダにCSVファイルがアップロード、もしくは既存のCSVが更新された時に下記で作成した「Hello for lambda!」を返すLambda関数を実行するようにしてみます!

S3のCSVを登録・更新する作業は手作業で実施しようと思います。

Cursor_と_private__Online_Whiteboard_for_Visual_Collaboration-1024x402.png

準備

S3の準備

CSVの更新やアップロードを感知するためのS3バケットを作成します。
筆者はlambda-trigger-test-for-miriwoというバケットを全てのパブリックアクセスを許可し作成しておきました。(その他の設定値はデフォルトです。)

Cursor_と_S3_bucket-1-706x1024.png

作成したlambda-trigger-test-for-miriwoバケットのルートに「contents」フォルダーを作成します。

Cursor_と_lambda-trigger-test-for-miriwo_-_S3_bucket-1024x370.png

下記の2種類の内容のCSVファイルを用意します。

  • test_1.csv

    test_1.csv
    id,first_name,last_name,password,age,
    1,Tarou,Yamada,abcd1234,20,
    2,Hanako,Yamada,abcd1234,22,
    3,Tarou,Satou,abcd1234,24,
    4,Hanako,Satou,abcd1234,16,
    
  • test_2.csv

    test_2.csv
    id,first_name,last_name,password,age,
    1,Tarou,Yamada,abcd1234,20,
    

先に作成したtest_1.csvをS3のcontentsフォルダにアップロードします。

Cursor_と_lambda-trigger-test-for-miriwo_-_S3_bucket-2-1024x284.png

test_2.csvは「実行」の手順の中でアップロードしますのでまだローカルで保持しておいてください。

Lambdaの準備

関数の概要の「トリガーを追加」をクリックします。

Cursor_と_test_function_-_Lambda-6-1024x392.png

「ソースを選択」にて「S3」を選択します。

Cursor_と_トリガーの追加_-_Lambda-2.png

表示された内容を下記の様に設定してゆきます。

  • Bucket:先に作成したバケット名を選択
  • Event type:PUTを選択(今回は登録・更新どちらでも感知してほしいため)
  • Prefix:contents/(監視対象のフォルダ名)
  • Suffix:.csv(監視対象ファイル形式)

設定を確認し「追加」をクリックします。

Cursor_と_トリガーの追加_-_Lambda-3.png

下記のようにトリガーがAPI GatewayとS3両方表示されれば準備は完了です。(ちなみに今の状態だとURLでアクセスしても、S3に登録・更新があった時でも両方当該のLambda関数が実行される状態です。)

Cursor_と_test_function_-_Lambda-7-1024x457.png

実行

今回はCSV系のトリガーでも2種類の方法でLambdaが実行されることを確認します。

CSV更新でLambda関数が実行されるか

まずはCSVの更新でLambdaが実行されるかを確認します。
ローカルのtest_1.csvを開き下記の様に内容を更新し保存します。

test_1.csv
id,first_name,last_name,password,
1,Tarou,Yamada,abcd1234,
2,Hanako,Yamada,abcd1234,
3,Tarou,Satou,abcd1234,
4,Hanako,Satou,abcd1234,

ローカルで内容を更新したtest_1.csvをlambda-trigger-test-for-miriwoバケットのcontentsフォルダにアップロードします。既に同じ名前のファイルが存在しているので更新扱いになります。

アップロードが成功したことを確認します。

その後、Lambdaのページに移動します。「モニタリング」をクリックしましょう。

Cursor_と_test_function_-_Lambda-8-1024x389.png

CloudWatch メトリックスのフィルターで「1時間」を選択し、少し時間を置いて更新マークをクリックします。

Cursor_と_test_function_-_Lambda-9-1024x167.png

もしCSVの更新トリガーで当該の関数が実行されていたとすれば、Invocationsのグラフ部分に実行ポイントが出るはずです、、!(若干のタイムラグがあります。S3にアップロード後すぐにグラフに変化があるわけではありません。ただ、最大でも5分ほどのラグだと思うので、それ以上まっても音沙汰ないばあいトリガー部分の設定、特にバケットやフォルダ名などを確認しましょう!CSVをアップロードしたバケットも正しいか確認しましょう。)

Cursor_と_test_function_-_Lambda-10-1024x516.png

ちなみに実行時間はUTC(日本時間の-9時間)で表示されるのでご注意ください。

これで更新によるLambda関数の実行が確認できました!

CSV登録でLambda関数が実行されるか

次にCSV登録でLambda関数が実行されかを確認します。

test_2.csvをlambda-trigger-test-for-miriwoバケットのcontentsフォルダにアップロードします。

その後アップロードが成功したことを確認し、Lambdaページの「モニタリング」からInvocationsのグラフを見ながら更新ボタンをクリックしてみましょう!

2回連続で実行しているので棒線で作図されていますがこれで、登録によるLambda関数の実行が確認できました!

Cursor_と_test_function_-_Lambda-11-1024x301.png

おわりに

S3のCSVの登録・更新を感知してLambda関数を動かす事ができました!設定は比較的簡単でした!
ただトリガー設定が一つでも間違えているとLambdaが動いてくれないので注意が必要です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0