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 1 year has passed since last update.

Lambda Payload version 2.0 のサンプル

Posted at

ペイロード

Lambda関数のPayloadバージョン2.0では、以下のような形式でデータが渡されます。

{
  "version": "2.0",
  "routeKey": "POST /my-endpoint",
  "rawPath": "/my-endpoint",
  "rawQueryString": "param1=value1&param2=value2",
  "headers": {
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
    "Accept-Encoding": "gzip, deflate, br",
    "Accept-Language": "en-US,en;q=0.5",
    "Content-Type": "application/json",
    "Host": "lambda.example.com",
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3"
  },
  "requestContext": {
    "accountId": "123456789012",
    "apiId": "abcdefghij",
    "domainName": "lambda.example.com",
    "domainPrefix": "lambda",
    "http": {
      "method": "POST",
      "path": "/my-endpoint",
      "protocol": "HTTP/1.1",
      "sourceIp": "192.0.2.1",
      "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3"
    },
    "requestId": "c6af9ac6-7b61-11e6-9a41-93e8deadbeef",
    "routeKey": "POST /my-endpoint",
    "stage": "prod",
    "time": "25/Mar/2020:19:36:42 +0000",
    "timeEpoch": 1585175802426
  },
  "isBase64Encoded": false,
  "body": "{\"key1\":\"value1\", \"key2\":\"value2\", \"key3\":\"value3\"}"
}

この例では、Lambda関数に渡されるデータはJSON形式です。versionフィールドにはバージョン番号が含まれ、routeKeyフィールドにはリクエストのルートキーが格納されています。headersフィールドにはHTTPリクエストヘッダーが含まれ、bodyフィールドにはリクエストの本文が含まれます。

必要に応じて、headersフィールド内のHTTPヘッダーやbodyフィールド内の本文データを解析して使用することができます。また、リクエストに関連する情報はrequestContextフィールド内に格納されています。

上記のサンプルはあくまで一例であり、実際のリクエストデータに応じてフィールドの内容は変化します。Lambda関数内でこのデータを適切に解析して処理することが重要です。

Expressでプロキシ

1. Expressアプリケーションを作成し、Lambda関数として実行するための設定を追加します。

const express = require('express');
const app = express();

app.use(express.json());

// Lambda関数として実行するためのエントリーポイントを作成します
exports.handler = async (event, context) => {
  const response = await app.run(event, context);
  return response;
};

2. ExpressアプリケーションでLambdaイベントを処理するためのルートを定義します。

app.post('/my-endpoint', (req, res) => {
  // リクエストデータの処理
  const requestBody = req.body;
  
  // レスポンスデータの作成
  const responseData = {
    message: 'Hello from Express!',
    data: requestBody
  };
  
  // レスポンスの送信
  res.json(responseData);
});

3. ExpressアプリケーションをAWS Lambdaにデプロイします。このためには、AWS Serverless Application Model(SAM)やServerless Frameworkなどのツールを使用することができます。

4. Lambda関数の設定でペイロードバージョン2.0を有効にします。これにより、Expressアプリケーションに渡されるイベントの形式がバージョン2.0になります。

以上の手順により、ExpressアプリケーションがLambda関数として動作し、ペイロードバージョン2.0のリクエストを処理することができます。Expressのルーティングやミドルウェアを使用して、さまざまなエンドポイントや処理を追加することも可能です。

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?