LoginSignup
0
0

More than 1 year has passed since last update.

AWS lambda テストイベントでPOSTリクエストを作成する

Posted at

テストサンプルにPOSTボディできるものがなかったので、備忘録として。

手動で書き換えるポイントとしては、methodをPOSTにして、bodyというブロックが必要になります。
下にあるサンプルでは、Cookieもつけてます。(test=hoge123;)
要らなければブロックごと削除ですね。
BodyデータはBase64にエンコードしたものじゃないとダメのようです。
{"hoge1":"aaaaaaaaaa","hoge2":1111111111111}というJsonをつけてみました。

image.png

{
  "Records": [
    {
      "cf": {
        "config": {
          "distributionId": "EXAMPLE"
        },
        "request": {
          "uri": "/sample.html",
          "method": "POST",
          "clientIp": "2001:cdba::3257:9652",
          "body": {
            "action": "read-only",
            "data": "eyJob2dlMSI6ImFhYWFhYWFhYWEiLCJob2dlMiI6MTExMTExMTExMTExMX0=",
            "encoding": "base64",
            "inputTruncated": false
          },
          "headers": {
            "host": [
              {
                "key": "Host",
                "value": "d123.cf.net"
              }
            ],
            "user-agent": [
              {
                "key": "User-Agent",
                "value": "Test Agent"
              }
            ],

            "user-name": [
              {
                "key": "User-Name",
                "value": "aws-cloudfront"
              }
            ],
            "cookie": [
              {
                "key": "cookie",
                "value": "test=hoge123;"
              }
            ]
          }
        }
      }
    }
  ]
}

lambda@edgeのコードです。

index.js
'use strict';

exports.handler = (event, context, callback) => {

    // リクエストの取得
    const request = event.Records[0].cf.request;
    console.log("event", event);
    // body取得
    var bodyData = Buffer.from(event.Records[0].cf.request.body.data, 'base64').toString("utf-8");

    var req_body = JSON.parse(bodyData);
    console.info('req_body: ',req_body);


    callback(null, request);
};


実行ログです。

START RequestId: 83454c21-7a6b-4f9f-9085-1b5fd1e2aefc Version: $LATEST
2021-09-21T10:16:51.415Z    83454c21-7a6b-4f9f-9085-1b5fd1e2aefc    INFO    event { Records: [ { cf: [Object] } ] }
2021-09-21T10:16:51.416Z    83454c21-7a6b-4f9f-9085-1b5fd1e2aefc    INFO    req_body:  { hoge1: 'aaaaaaaaaa', hoge2: 1111111111111 }
END RequestId: 83454c21-7a6b-4f9f-9085-1b5fd1e2aefc
REPORT RequestId: 83454c21-7a6b-4f9f-9085-1b5fd1e2aefc  Duration: 56.07 ms  Billed Duration: 57 ms  Memory Size: 128 MB Max Memory Used: 65 MB  Init Duration: 165.47 ms

req_bodyというJsonオブジェクトに入ってます。
個別に取り出すときは、req_body.hoge1とかで取れると思います。

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