【正解】C
【0からの解説】
Lambda の同時実行数(concurrency)は、AWS アカウント・リージョン単位で共有のプール(既定 1,000 など)から消費されます。本問では「他の Lambda 関数の呼び出しが増えると、この API 用 Lambda がスロットリングされる」と明記されており、原因は共有プールを他の関数に食い尽くされていることです。
この問題の解決策が
予約済みコンカレンシー(reserved concurrency) です。特定の関数に同時実行数を予約しておくと、(1) 他の関数がいくら呼ばれてもその予約分は必ずこの関数のために確保され(隔離される)、(2) 同時にこの関数の上限にもなります。これにより API 用 Lambda は他関数の影響を受けずに動作できます。重要なのは、
予約済みコンカレンシーの設定自体には追加料金がかからない 点で、最もコスト効率が良い選択です。よって C が正解です。
【誤りの選択肢】
A:DynamoDB の RCU を増やすのは読み込みスループット不足への対策であり、本問の原因である「Lambda の同時実行数のスロットリング」とは無関係です。
B:プロビジョンドコンカレンシーは、関数インスタンスを事前に初期化して待機させ、コールドスタートを無くす機能です。隔離にも使えますが、待機インスタンス分の料金が常時発生するためコスト効率では劣ります。本問はコールドスタートではなく「他関数によるスロットリング」が問題なので、無料で隔離できる予約済みコンカレンシーが適切です。
D:タイムアウトやメモリを増やしても、同時実行数の枯渇によるスロットリングは解消されません。レイテンシの根本原因(共有プールの奪い合い)に対処できていません。
【参考】
Lambda の予約済みコンカレンシーの設定Lambda 関数のスケーリングとコンカレンシー