📝

Cognito ID プールの GetId の結果はキャッシュすることが推奨されている

に公開

FAQs | Amazon Cognito | Amazon Web Services (AWS)

So, it is important that you cache the response from GetId when using unauthenticated identities and not call it multiple times per user.

上記 FAQ に記載されている通り、GetId API は呼び出しごとにアイデンティティを生成します。
認証されたユーザーの場合はユーザーとアイデンティティが 1 : 1 ですが、認証されていないユーザーの場合にはユーザーとアイデンティティが 1 : 多になる可能性があります。

そのため、認証されていないユーザーからの API 呼び出しを低減するために GetId API からのレスポンスをキャッシュすることが推奨されています。

キャッシュの必要性

Amazon Cognito のクォータ - Amazon Cognito

Operation 説明 デフォルトクォータ (RPS)1 引き上げ可能
GetId ID プールからアイデンティティ ID を取得します。 25 あり

GetId API のデフォルトの呼び出し上限値は秒間 25 回です。
上限緩和は可能であるものの、どの程度緩和されるかは AWS 側の判断になるためユーザー側でキャッシュなどの対応を求められる可能性もあります。

上述のドキュメントにもリクエストレートの最適化としてリトライなどの対応が紹介されています。

API レート制限を引き上げると AWS 請求コストが増加するため、クォータの引き上げをリクエストする前に、使用量モデルの調整を検討してください。

GetId API についてもキャッシュすることでリクエストレートを最適化できる可能性があります。
どのようにキャッシュするかは要件次第ですが、GetId API からのレスポンスをデータベースに保存しておき、アプリケーションから確認する方法などが考えられます。

まとめ

今回は Cognito ID プールの GetId の結果はキャッシュすることが推奨されているという内容を紹介しました。
どなたかの参考になれば幸いです。

参考資料

Discussion