👏

Amazon API Gatewayで設定しておくといい3つのこと

2024/11/03に公開2

Amazon API Gatewayで設定しておくといい3つのこと

Amazon API GatewayでAPIを作ったときに、設定しておくといいこと3選です。

スロットリング

スロットリングとは、API Gatewayでリクエストの使用量の上限を設定して、アクセスを制限する仕組みです。
スロットリングを設定すると、想定以上のリクエストが発生した際にAPIへの負荷が抑えられ、サービスの安定性が向上します。また、上限を超えたリクエストは制限されるため、不要な課金が発生しません。
APIの負荷軽減と期せぬ費用を防ぐために設定しておくといいです。

スロットリングは使用量プラン単位、ステージ単位で設定できます。
またAWSアカウント単位でデフォルトで設定されている上限があります。上限の緩和に関しては、クォータの引き上げ可能です。
https://docs.aws.amazon.com/ja_jp/apigateway/latest/developerguide/limits.html

キャッシュ機能

キャッシュを有効にすると、エンドポイントのレスポンスをキャッシュします。
同じリクエストの場合、同じ結果を返すので、エンドポイントの処理負荷を軽減できます。
APIの応答性の向上とエンドポイントの処理負荷軽減のために設定しておくといいです。
(ただし料金はかかります。)


「デフォルトのメソッドレベルのキャッシュ」を有効にするとステージの全てのGETメソッドのキャッシュが有効になります。
ステージでのキャッシュを有効にしている際に限り、オーバーライド設定を行う事によってメソッド単位でのキャッシュを有効にできます。

CloudWatchのCacheHitCountでキャッシュから配信されたリクエストの数を得ることが出来ます。

ログ

ステージの画面で「ログとトレース」でログを出力するか設定できます。
ログからはリクエストとレスポンスの詳細やアクセス元の情報が見れるようになります。
トラブルシューティングや利用状況の把握のためにログを見れるようにしておくといいです。


APIのステージ単位でCloudWatchにロググループが作成されます。
(APIのIDで検索するとロググループが見つかります)

まとめ

まずはログだけでも!

Discussion

MeguriMeguri

突然のコメント失礼します。スロットリングの設定の重要性については非常に共感しました。APIの安定性を保つために、事前に対策を講じることがいかに大切かを再認識しました。私も最近、EchoAPIを使っていて、キャッシュ機能がとても役立っています。同じリクエストへの応答性が向上し、全体の負荷も軽減されました

tomomik210tomomik210

負荷軽減を実感されているのですね。私も設定していますが、リクエストが少ないため、あまり実感できていません。きっといつかは!