0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have 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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?