【正解】B、D
【0からの解説】
3 層の Web アプリでセッション(ログイン状態やカート内容など)を扱うとき、各 EC2 インスタンスのメモリにセッションを持たせると、インスタンスが入れ替わるとセッションが失われます。これを避ける定番が「外部のデータストアにセッションを保存する」設計です。本問は「セッションデータを永続的に保存する」ことを明確に要求しているため、データを実際に保持できるストアを選びます。
・Amazon DynamoDB(B)はフルマネージドの NoSQL で、低レイテンシかつ高い耐久性でセッションデータを保存でき、セッションストアとして広く使われます。
・Amazon ElastiCache for Redis(D)はインメモリで高速なうえ、レプリケーションや永続化機能を備え、AWS が推奨する代表的なセッション外部化の手段です。
どちらもインスタンスから独立してセッションを保持するため、スケールイン/アウトしてもセッションが維持されます。
【誤りの選択肢】
A:ALB のスティッキーセッションは同じユーザーを同じインスタンスに固定するだけで、セッションデータ自体をどこかに保存するものではありません。そのインスタンスが落ちればセッションは失われ、「永続的に保存」という要件を満たしません。
C:Amazon Cognito はユーザーのサインアップ/認証(ID 管理)を担うサービスで、アプリのトランザクション用セッションデータを汎用的に保存する用途には合いません。
E:AWS Systems Manager にセッションデータを永続保存する仕組みはありません(Application Manager は運用リソースの可視化・管理用)。要件と無関係です。
【参考】
ElastiCache でのセッション管理(AWS データベースブログ)Amazon DynamoDB とは