API Gateway, Lambda, S3を使用して、ファイルを取得する処理をノンサーバで実装する~その2~
API Gateway, Lambda, S3を使用して、ファイルを取得する処理をノンサーバで実装する~その1~ - KAROUSHI -Japanese Engineer Blog-
今回はlambdaです。
pythonのlambda作成手順をあまりネット上で見かけなかったので、pythonの手順を紹介します。
lambdaの設定
Lambdaを作成する
上部タブから[サービス]→[Lambda]を選択します。
[Create a Lambda function]をクリック→"Select blue print"画面が表示されます。
(初回はcreate functionボタンが中央に表示されます)
検索ボックスの隣にあるプログラム選択ボックスから[Python 2.7]を選択すると、python関連のblue printが一覧で表示されます。
今回は[s3-get-object-python]を選択します。
Configure event sources画面が表示され、以下を設定して[Next]をクリックします。
Event source type: S3
Bucket: <S3に作成済みのバケット>
Event type: Object Created(All)
Prefix: 任意(空でもOK)
Suffix: 任意(空でもOK)
Configure function画面表示されます。
以下を設定して下へスクロールします。
Name:任意(今回はs3test)
Description: (そのまま)
Runtime: Python 2.7
Lambda function code: (そのまま)
以下の設定をします。
Hadnler: (そのまま)
Role: <S3 execution role>を選択します。
→別ウィンドウが開くので以下を設定し[許可]をクリックする。
IAMロール: lambda_s3_exec_role
ポリシー名: 新しいロールポリシーの作成
Memory(MB): (そのまま)
Timeout: (そのまま)
VPC: (そのまま)
Review画面が表示されます。
そのまま[Create function]を押下します。
すると以下のような画面に遷移しfunctionの作成に成功したことが上部に表示されます。
functionのテストを実行する
[Actions]→[Configure test event]を押下します。
するとInput test event画面が表示されます。
すでに長いjsonが載っていますが、わかりづらいので下記に変更します。
テストコード
{
"Records": [
{
"s3": {
"object": {
"key": "index.html"
},
"bucket": {
"name": "test.test.test.3"
}
}
}
]
}
[Save and test]でテストを実行します。
すると先ほどの画面に戻ります。
その画面の下部へ移動し「Execution result:succeeded(logs)」と表示されていればOKです。正常にオブジェクトが取得できています。
レスポンスとして"text/html"が返ってきていることが確認できます。
ビルド時間、応答時間などがSummaryに、ログはLog outputに表示されます。
これでlambdaの設定は完了です。