【正解】A、E
【0からの解説】
要件は「許可されたネットワーク(データサイエンティストの VPC)からのみ S3 データレイクにアクセスさせる」ことです。これを安全かつ確実に実現する組み合わせを選びます。
(A) ゲートウェイ VPC エンドポイント for S3 を作成すると、EC2 → S3 のトラフィックがインターネットを経由せず AWS ネットワーク内を通り、特定の VPC からのアクセス経路を確立できます。これにより「どのネットワークから来たか」を制御する基盤になります。
(E) S3 バケットポリシーに s3:DataAccessPointArn 条件キーを使った条件を追加すると、「特定の S3 アクセスポイント経由のリクエストにのみ s3:GetObject を許可」できます。アクセスポイントは VPC に紐づけて作成できるため、結果として「許可された VPC(ネットワーク)からのアクセスのみ許可」を実現できます。
A でネットワーク経路を、E でアクセスポイント経由を強制することで、許可されたネットワーク以外からのアクセスを排除できます。
【誤りの選択肢】
B:アクセスポイントは原則として「対象バケットと同じ AWS アカウント」に作成します。データレイク(S3 バケット)は別アカウントにあるため、データサイエンティストのアカウントにアクセスポイントを作るのは適切ではありません(必要なのはバケット側=データレイク側の制御)。
C:EC2 ロール側に DataAccessPointArn 条件を付けても、それは「呼び出し側が自分の権限を狭める」だけで、データレイク(バケット)側で他経路からのアクセスを拒否する効果がありません。許可されたネットワークのみという要件は、リソース側(バケットポリシー)で強制する必要があります。
D:S3 へのアクセスポイント宛トラフィックは、ルートテーブルでアクセスポイントに直接ルーティングするものではありません。S3 へのプライベート経路はゲートウェイ VPC エンドポイント(A)で実現します。アクセスポイントへの「ルーティング」という設定自体が誤りです。
【参考】
S3 のゲートウェイエンドポイントAmazon S3 アクセスポイントの管理とアクセス制御