AWS Chaliceで一部API GatewayのMockを利用する(merge-template機能)

この記事は公開されてから半年以上経過しています。情報が古い可能性がありますので、ご注意ください。

目次

背景

Chalice(+CI/CDパイプライン)を利用したAPI開発において、APIGatewayやLambdaに対する追加設定で chalice の configファイルが対応していない点があります。
個人的に遭遇した物で例えば、EFSマウント や APIGatewayのログ出力設定、カスタムレスポンス等です。

今回は前回 (EFSマウント) に引き続き、一部レスポンスをAPIGatewayのMockレスポンスを返したいという要望があり実現してみました。
(相当数のリクエストが想定されるため、Lambdaを通さずに直接レスポンスを返却したい)

前回記事はこちら

AWS Chalice の AWS CloudFormation Support
https://aws.github.io/chalice/topics/cfn.html

実装

/status エンドポイントにGETメソッドでアクセスした際に、レスポンスコード: 200、{"status": "OK"} を返却する MergeTemplateが下記のような形となります。
当然ですが下記のような動作のため、Chaliceにて既に /status へのRouteを作成していると今回のテンプレートに上書きされてしまうので要注意です。
Chalice → SAMTemplate ← 本TemplateをMerge

また、"title": "APIGateway-ResourceName"の宣言を抜くとCloudFormtationデプロイエラーとなるため
Chaliceのapp_nameを2重管理せざるを得ない形となっています。(最終的に 下記 DefinitionBody.title の名前で上書きされてしまう)

extras.json

作成されたリソース

/status リソースが作成され、GETメソッドがMock統合されている状態となりました。

レスポンス切り替え

一時対応等、手動の場合は /status リソースのGETメソッドの統合リクエスト設定中のマッピングテンプレートのレスポンスコードを変更後、APIをデプロイする事でレスポンスが下記のように変化します。

※APIデプロイ後、20秒程待つ必要あり

まとめ

利用頻度は少ないかもしれませんが、高頻度でアクセスされるエンドポイントの場合Lambda起動を抑える事ができるという点で有用かもしれません。

また、本題とはそれますが、マージ用のSAM Templateを生成系AIに作成してもらい調整した事で調査時間を大きく削減できました。
Bedrock (Anthropic Claude3シリーズ) レスポンス爆☆速でお勧めです。

投稿者プロフィール

takashi
Japan AWS Ambassadors 2023, 2024
開発会社での ASP型WEBサービス企画 / 開発 / サーバ運用 を経て
2010年よりスカイアーチネットワークスに在籍しております

機械化/効率化/システム構築を軸に人に喜んで頂ける物作りが大好きです。

ABOUTこの記事をかいた人

Japan AWS Ambassadors 2023, 2024 開発会社での ASP型WEBサービス企画 / 開発 / サーバ運用 を経て 2010年よりスカイアーチネットワークスに在籍しております 機械化/効率化/システム構築を軸に人に喜んで頂ける物作りが大好きです。