Lambdaのrequestsとか、zipに丸めてアップロードとか、面倒だよね。
Cloud9でLmbadaの+ボタンを押して、Lambda関数を作りましょう。
構成は、
アプリ名: lambdaDeployTestingApp
関数名: lambdaDeployTestingFunc
・・・としました。
requestsをインストールします。
(pipのバージョンが古いといわれますが、cloud9環境で新しいpipをインストールする方法が分からないので、そのままで良いか。)
~/environment $ cd lambdaDeployTestingApp ~/environment/lambdaDeployTestingApp $ pip install requests -t .
こんな感じのフォルダ構成になります。
さて、簡単にするため、lambda_function.pyは、こんな感じのプログラムにしました。
import requests def lambda_handler(event, context): print(event) return 'OK!'
こんな感じ↓↓で、ローカルでは動きましたね。
で、この状態でデプロイすれば、フォルダごとLambdaに持って行ってくれます。簡単だね。
ちなみに、この状態でs3トリガと接続した場合、
こんな感じでファイル名は見れそうです。
imgフォルダの.png指定でトリガを設定してみた。
print(event['Records'][0]['s3']['object']['key'])
疑似的なS3トリガの中身です。
{ "Records": [ { "s3": { "object": { "key": "img/test3.png" } } } ] }
【参考】
aws.amazon.com
【手順】
(1) cloud9を30分以内に消える設定で作成。
testCloud9
(2) ラムダを作成
testApp と testFunc
(3) requestsをインストール
~/environment $ cd testApp ~/environment/testApp $ pip install requests -t .
(4) 関数を記載
import requests import json def lambda_handler(event, context): print(event['Records'][0]['s3']['object']['key']) return 'OK!'
(5) テストデータを記載
{ "Records": [ { "s3": { "object": { "key": "img/test.png" } } } ] } ||< (6) テストしてラムダにアップロード (7) ラムダでS3トリガを設定 imgフォルダの.png指定でトリガを設定してみた。