API Gateway + Lambda で API を作る
API Gateway と Lambda を利用して、API を作ってみます。
Lambda 関数を作成する
Lambda 関数を作成する
先に Lambda関数を作ります。作り方のサンプルはこちら。
コードは API Gateway に合わせて変更します。
export const handler = async(event) => {
const request = event
const json = JSON.parse(request.body)
// {"key1": "value1", "key2": "value2", "key3": "value3"} の値が来る前提
const responseJson = {
key1: json.key1,
key2: json.key2,
key3: json.key3
}
const response = {
statusCode: 200,
body: JSON.stringify(responseJson)
};
console.log(response)
return response;
};
var serialize = function(object) {
return JSON.stringify(object, null, 2)
}
API Gateway で API を作成する
次に、API Gateway の設定を行っていきます。
API Gateway の画面から、APIを作成をクリックします。
API名を入力し、APIの作成をクリックします。
アクションのメニューから、リソースの作成をクリックします。
リソース名を入力し、リソースの作成をクリックします。
メソッドの追加
メソッド
アクションのメニューから、メソッドの作成をクリックします。
POSTを選択し、チェックのアイコンをクリックします。
Lambda プロキシ統合の使用をチェック。
Lambda 関数に、作った Lambda関数名を入力します。
保存をクリックします。
OKをクリックします。
/echo のパスに、POSTでリクエストすると、jsEcho の Lambda 関数が呼ばれるセットが作られました。
デプロイ
API Gateway の環境にデプロイを行います。
アクションのメニューから、APIのデプロイをクリックします。
新しいステージを選択し、ステージ名を入力します。
デプロイをクリックします。
URLが表示されます。このURLでAPIが利用できます。
API へアクセスしてみる
curl でアクセスしてみます。
curl -i -X POST \
-H "Content-Type:application/json" \
-d \
'{
"key1": "value10",
"key2": "value20",
"key3": "value30"
}
' \
'https://465ge1dkxl.execute-api.ap-northeast-1.amazonaws.com/production/echo'
下記のようにレスポンスが返ってきます。
HTTP/2 200
date: Sat, 25 Feb 2023 15:42:54 GMT
content-type: application/json
content-length: 52
x-amzn-requestid: 94a0b414-793c-4159-81f3-39880ec6e93c
x-amz-apigw-id: A5vjsEksNjMFtOw=
x-amzn-trace-id: Root=1-63fa2c7d-5d0fa833144fdda73dd7708b;Sampled=0
{"key1":"value10","key2":"value20","key3":"value30"}