概要
API Gatewayの途中にSQSを挟むと基本的に非同期のAPIになってしまいます。どうしても同期APIにしたいときの解決策を実験しました。
コード
https://github.com/BlueSugar620/poc-apigateway_lambda_semi_sync
解説

上のような構成になっています。API Gatewayからポストリクエストを受け取ったLambdaがDynamoDBへの結果の出力をポーリングすることにより、レスポンスとして計算結果を返すようになっています。
SQSの後のLambdaをSageMaker, ECS, EC2などに変えることもできます。サーバーレスの利点を活かしつつ、SQSでサービスを切り離すことで保守性が増します。
実際に使ってみると
通常の同期APIに対して、速度の差は感じました。0.5~1秒の遅れはあり、使用していてレスポンスに少し時間がかかりかなとは感じました。ですが、遅すぎることはないと思いました。
感想
APIの定義ですが、Terraformでapi_gateway_resourceを定義するよりも、OpenAPI定義を使用した方が見やすく感じました。
なんでもTerraformで書くのが良いわけではないのですね。いい学びになりました。
これはCTAサンプルです。
内容を編集するか削除してください。