KAROUSHI -Japanese Engineer Blog-

コボルドからドラゴンへ -Kobold to Dragon-

システムエンジニアのブログです。サイト名は「雑魚キャラからボスキャラへレベルアップしたい!」という思いを込めて命名しました。自分はやっとリザードマンになったくらいです。

API Gateway, Lambda, S3を使用して、ファイルを取得する処理をノンサーバで実装する~その2~

API Gateway→lambda→S3の続きです。

API Gateway, Lambda, S3を使用して、ファイルを取得する処理をノンサーバで実装する~その1~ - KAROUSHI -Japanese Engineer Blog-

 

今回はlambdaです。

pythonのlambda作成手順をあまりネット上で見かけなかったので、pythonの手順を紹介します。

lambdaの設定

Lambdaを作成する

上部タブから[サービス][Lambda]を選択します。

f:id:jainders:20160603222457j:plain

[Create a Lambda function]をクリック→"Select blue print"画面が表示されます。
(初回はcreate functionボタンが中央に表示されます)

f:id:jainders:20160603222459j:plain


検索ボックスの隣にあるプログラム選択ボックスから[Python 2.7]を選択すると、python関連のblue printが一覧で表示されます。
今回は[s3-get-object-python]を選択します。

f:id:jainders:20160603222500j:plain

 

Configure event sources画面が表示され、以下を設定して[Next]をクリックします。
Event source type: S3
Bucket: <S3に作成済みのバケット>
Event type: Object Created(All)
Prefix: 任意(空でもOK)
Suffix: 任意(空でもOK)

f:id:jainders:20160603222502j:plain

Configure function画面表示されます。
以下を設定して下へスクロールします。

Name:任意(今回はs3test)
Description: (そのまま)
Runtime: Python 2.7
Lambda function code: (そのまま)

f:id:jainders:20160603222504j:plain

以下の設定をします。

Hadnler: (そのまま)
Role: <S3 execution role>を選択します。
 →別ウィンドウが開くので以下を設定し[許可]をクリックする。
  IAMロール: lambda_s3_exec_role
  ポリシー名: 新しいロールポリシーの作成
Memory(MB): (そのまま)
Timeout: (そのまま)
VPC: (そのまま)

f:id:jainders:20160603222506j:plain

f:id:jainders:20160603222507j:plain

Review画面が表示されます。
そのまま[Create function]を押下します。

f:id:jainders:20160603222511j:plain

すると以下のような画面に遷移しfunctionの作成に成功したことが上部に表示されます。

f:id:jainders:20160603222513j:plain

 

functionのテストを実行する

[Actions][Configure test event]を押下します。

f:id:jainders:20160603222515j:plain

 

するとInput test event画面が表示されます。
すでに長いjsonが載っていますが、わかりづらいので下記に変更します。

テストコード

{
  "Records": [
  {
    "s3": {
      "object": {
        "key": "index.html"
      },
      "bucket": {
        "name": "test.test.test.3"
      }
    }
  }
  ]
}

[Save and test]でテストを実行します。

f:id:jainders:20160603224904j:plain

すると先ほどの画面に戻ります。
その画面の下部へ移動し「Execution result:succeeded(logs)」と表示されていればOKです。正常にオブジェクトが取得できています。
レスポンスとして"text/html"が返ってきていることが確認できます。
ビルド時間、応答時間などがSummaryに、ログはLog outputに表示されます。

f:id:jainders:20160603222518j:plain

 

これでlambdaの設定は完了です。

次回最後にAPI Gatewayの設定を行います。

koboldtodragon.hatenablog.com