目的

lambdaで”hello lambda”を表示するまでの手順を説明します。
初めてLambdaを触ったとき、チュートリアル通りに進めて躓いたところがあったので、備忘を兼ねてメモを残します。

手順

  1. lambdaのページへアクセスします。
    lambdaのページへアクセスします。

  2. 「関数の作成」をクリックします。
    関数の作成をクリックします。

  3. “1から作成”が選択されている状態で、ページ下部へスクロールします。
    ページ下部へスクロールします。

  4. 以下のパラメーターを入力後、「関数の作成」をクリックします。
    名前:hello-world
    ランタイム:Node.js 6.10
    ロール:テンプレートから新しいロールを作成
    ロール名:hello-world
    ポリシーテンプレート:CloudFormationのスタック読み取りアクセス権限
    パラメーターを入力して、「関数の作成」をクリックします。

  5. 関数が作成されました。画面下へスクロールして関数を修正します。
    ページ下部へスクロールします。

  6. デフォルトのコードを下記のように書き換えます。
    コードを修正します。
    コードは以下の通りです。修正内容は後述します。

    exports.handler = (event, context, callback) => {
        var response = {
            statusCode: 200,
            headers: {
                "x-custom-header" : "my custom header value"
           },
           body: "hello lambda"
        };  
        context.succeed(response);
    };
    
  7. ページ上部へ戻って、トリガーとしてAPI Gatewayを設定します。左側のメニューから”API Gateway”をクリックします。
    トリガーとしてAPI Gatewayを設定します。

  8. API Gatewayがトリガーとして設定されました。ページ下部へスクロールします。
    ページ下部へスクロールします。

  9. API Gatewayを下記パラメーターの通り設定します。設定後右下の「追加」ボタンをクリックします。
    API: 新規APIの作成
    API名: hello-world
    デプロイされるステージ:hello
    セキュリティ:オープン
    API Gatewayを設定します。

  10. lambda関数を保存します。右上の「保存」ボタンをクリックします。
    右上の「保存」ボタンをクリックしてlambda関数を保存します。

  11. lambda関数へアクセスするURLを確認します。API Gatewayの詳細を開きます。
    lambda関数のAPI GatewayのURLを確認します。

  12. 確認したURLへブラウザでアクセスすると、以下の通り”hello lambda”が表示されます。
    ブラウザでAPI GatewayのURLへアクセスします。

補足

ソースコードを修正しているのは、デフォルトのレスポンス形式では502の”internal server error”となってしまうからです。
API Gatewayのレスポンス形式は以下の通りです。

{
    "statusCode": httpStatusCode,
    "headers": { "headerName": "headerValue", ... },
    "body": "..." //文字列
}

こちらは、AWS公式ドキュメントにも詳しく記載されています。

まとめ

lambdaを使う基本的な流れについて説明しました。
AWSは変化が早いので、躓いたらまずは公式ドキュメントを確認するのがよいでしょう。