Lambdaプロキシ統合を設定してみた

## Lambda プロキシ統合とは
Lambdaプロキシ統合はAmazon API GatewayのAPI統合タイプの1つで、API GatewayとLambda関数を接続するためのシンプルで柔軟な方法を提供します。Lambdaプロキシ統合を使用すると、クライアントはAPI Gatewayを介して単一のLambda関数を呼び出し、リクエストのレスポンスをクライアントに返します。

>Amazon API Gateway Lambda プロキシ統合は、単一の API メソッドのセットアップで API を構築するシンプル、強力、高速なメカニズムです。
Lambda プロキシ統合は、クライアントが単一の Lambda 関数をバックエンドで呼び出すことを可能にします。
この関数は、他の Lambda 関数の呼び出しを含め、他の AWS のサービスのさまざまなリソースや機能にアクセスします。

Lambda プロキシ統合は主に以下のような特徴があります。
<dl>
  <dt>シンプルで柔軟性が高い</dt>
  <dd>Lambda プロキシ統合は、API Gateway で最も基本的な統合タイプであり、設定が簡単です。また、HTTP メソッドとリクエスト ボディの形式を変更することで、さまざまなユースケースに対応できます。</dd>
  <dt>クライアントと Lambda 関数間の変更に柔軟に対応できる</dt>
  <dd>Lambda プロキシ統合では、クライアントと Lambda 関数間の HTTP ヘッダーとクエリ パラメーターをそのまま渡すため、クライアントと Lambda 関数間の変更に柔軟に対応できます。</dd>
</dl>

## Lambdaプロキシ統合を設定してみる
AWS Management Consoleにアクセスします。

![aws console.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3620518/0b6f78d4-ff62-1a1f-11eb-a91ab2d59e19.png)

AWS Management ConsoleからLambdaをクリックし、Lambda関数を作成します。
・関数名：myFunction
・ランタイム：Python 3.11
・アーキテクチャ：x86_64

![lambda作成.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3620518/9cfa19fa-bda1-91ab-dd88-92f133aa8a71.png)

Lambda関数「myFunction」作成後の画面

![lambda作成後.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3620518/7b26cf99-25a2-7e09-cda7-94f15d86be51.png)

次にAPI GatewayでLambda関数「myFunction」を呼び出すAPIを作成します。
・種類：REST API
・API名：myAPI
・APIエンドポイントタイプ：リージョン

![api作成.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3620518/4fc2f01a-0a7b-eff3-0e2f-c06f58588c89.png)

「myAPI」作成後、メソッド作成からLambdaプロキシ統合の設定を行います。
・メソッドタイプ：GET
・統合タイプ：Lambda
・Lambda関数：ap-northeast-1リージョン、「myFunction」のARNを選択

![apiメソッド作成.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3620518/c8698791-8b66-effb-e270-64a0a80a5693.png)

Lambdaプロキシ統合の設定後、Lambda関数「myFunction」のページを見るとAPI Gatewayが関数呼び出しのトリガーとして設定されていることがわかります。

![lambda_api追加.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3620518/f150100f-6470-d8a3-9285-1d267485eed3.png)

API GatewayからLambda関数「myFunction」を呼び出す準備ができたので、「myAPI」をデプロイします。
・ステージ：New Stage
・ステージ名：test

![apiデプロイ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3620518/6edebdb2-882d-32d3-5647-55f24a433f10.png)

デプロイ後の画面に表示されるURLを呼び出します。

##### 呼び出しURL
`https://{restapi_id}.execute-api.{region}.amazonaws.com/{stage_name}/`
+ `{restapi_id}`：API ID
+ `{region}`：リージョン
+ `{stage_name}`：API デプロイのステージ名

![apiデプロイ後.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3620518/11a69d21-63c4-6747-b7c8-5dcafad16761.png)

リクエスト送信後、API GatewayがLambda関数「myFunction」を呼び出すことに成功し、
""Hello from Lambda!""が応答として返ってくることが確認できました。

![api呼び出し後.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3620518/0e1793fa-84ca-4938-7517-fbdd9a88530f.png)

また、Lambda関数「myFunction」の作成時、デフォルトでイベント処理のログをCloudWatchにアップロードするアクセス権が付与されているため、CloudWatchのログイベントからもリクエストが正常終了したことを確認できます。

![cloudwatchログ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3620518/1a4cee30-2a21-14e5-cf39-5cad791a6f69.png)

## まとめ
API Gatewayを使用したLambdaプロキシ統合を設定してみました。
Lambda プロキシ統合はAPI Gateway と Lambda 関数をシンプルに接続するための方法であり、クライアントと Lambda 関数間の変更にも柔軟に対応できるため、さまざまなユースケースで活用できます。

## 参考情報
+ [API GatewayでLambdaプロキシ統合を設定する](https://docs.aws.amazon.com/ja_jp/apigateway/latest/developerguide/set-up-lambda-proxy-integrations.html)