Q38 — AWS SAP-C02 第3章
第 38/75 問 | ← 第3章
Q263. ある企業が、ユーザーがランダムな写真をアップロード・検索できるWeb向け画像サービスを構築しています。ピーク時の利用では、世界中から最大10,000人のユーザーが画像をアップロードします。その後、サービスはアップロードされた画像にテキストをオーバーレイし、その画像を企業のWebサイト上に公開します。 ソリューションアーキテクトは、どの設計を実装すべきでしょうか?
- A. アップロードされた画像をAmazon Elastic File System(Amazon EFS)に保存します。各画像に関するアプリケーションログ情報をAmazon CloudWatch Logsに送信します。CloudWatch Logsを参照して処理対象の画像を判断するAmazon EC2インスタンスのフェleetを起動します。処理済みの画像は、Amazon EFS内の別のディレクトリに配置します。Amazon CloudFrontを有効化し、オリジンとしてEC2インスタンスのフェleet内の1台を指定します。
- B. アップロードされた画像をAmazon S3バケットに保存し、S3バケットイベント通知を設定してAmazon Simple Notification Service(Amazon SNS)にメッセージを送信します。Application Load Balancer(ALB)の後ろにAmazon EC2インスタンスのフェleetを配置し、ALB経由でAmazon SNSからメッセージを取得して画像を処理し、Amazon Elastic File System(Amazon EFS)に配置します。SNSのメッセージ数を監視するAmazon CloudWatchメトリクスを用いてEC2インスタンスのスケールアウトを行います。Amazon CloudFrontを有効化し、オリジンとしてEC2インスタンスのフェleetの前に配置したALBを指定します。
- C. アップロードされた画像をAmazon S3バケットに保存し、S3バケットイベント通知を設定してAmazon Simple Queue Service(Amazon SQS)キューにメッセージを送信します。SQSキューからメッセージを取得して画像を処理し、別のS3バケットに配置するAmazon EC2インスタンスのフェleetを起動します。キューの深さを監視するAmazon CloudWatchメトリクスを用いてEC2インスタンスのスケールアウトを行います。 Amazon CloudFrontを有効化し、オリジンとして処理済み画像を格納するS3バケットを指定します。 ✓
- D. アップロードされた画像を、Amazon EC2スポットインスタンスのフェleetにマウントされた共有Amazon Elastic Block Store(Amazon EBS)ボリューム上に保存します。各アップロード画像とその処理状況(未処理/処理済み)を記録するAmazon DynamoDBテーブルを作成します。Amazon EventBridge(旧Amazon CloudWatch Events)ルールを用いてEC2インスタンスのスケールアウトを行います。Amazon CloudFrontを有効化し、オリジンとしてEC2インスタンスのフェleetの前に配置したElastic Load Balancerを指定します。
正解: C. アップロードされた画像をAmazon S3バケットに保存し、S3バケットイベント通知を設定してAmazon Simple Queue Service(Amazon SQS)キューにメッセージを送信します。SQSキューからメッセージを取得して画像を処理し、別のS3バケットに配置するAmazon EC2インスタンスのフェleetを起動します。キューの深さを監視するAmazon CloudWatchメトリクスを用いてEC2インスタンスのスケールアウトを行います。 Amazon CloudFrontを有効化し、オリジンとして処理済み画像を格納するS3バケットを指定します。
解説
このユースケースには、選択肢Cが最も適したソリューションです。アップロードされた画像をAmazon S3バケットに保存することは、非常にスケーラブルかつ耐久性の高いソリューションです。S3バケットイベント通知を設定してAmazon SQSキューにメッセージを送信することで、画像ファイルの非同期処理が可能になります。SQSキューからメッセージを取得して画像を処理し、別のS3バケットに保存するAmazon EC2インスタンスのフェleetを構築できます。また、キューの深さを監視するAmazon CloudWatchメトリクスを活用すれば、必要に応じてEC2インスタンスをスケールアウトできます。さらに、処理済み画像を格納するS3バケットをオリジンとしてAmazon CloudFrontを有効化することで、ユーザーへの低遅延コンテンツ配信が実現されます。 選択肢A:このユースケースでは、Amazon EFSのコストが非常に高くなります。 選択肢B:Amazon SNSはApplication Load Balancer(ALB)をネイティブなサブスクライバーとしてサポートしていません。 選択肢D:データがAmazon EBSボリューム上に保存されるため、データ損失のリスクが存在します。