Q22 — AWS SAP-C02 第1章
第 22/75 問 | ← 第1章
Q97. ある動画処理企業が、Amazon S3バケットから画像をダウンロードし、画像を処理して変換後の画像を別のS3バケットに保存し、その画像に関するメタデータをAmazon DynamoDBテーブルに更新するアプリケーションを運用しています。このアプリケーションはNode.jsで記述されており、AWS Lambda関数として実行されます。Lambda関数は、新しい画像がAmazon S3にアップロードされた際にトリガーされます。このアプリケーションはしばらく問題なく動作していましたが、画像のサイズが大幅に増加したため、Lambda関数が頻繁にタイムアウトエラーで失敗するようになりました。現在、Lambda関数のタイムアウト設定は最大値に設定されています。ソリューションアーキテクトは、このアプリケーションのアーキテクチャを再設計して、呼び出し失敗を防止する必要があります。また、企業は基盤となるインフラストラクチャの管理を望んでいません。これらの要件を満たすために、ソリューションアーキテクトが実施すべき手順の組み合わせはどれですか?(2つ選択)
- A. アプリケーションのデプロイ方法を変更し、アプリケーションコードを含むDockerイメージを作成します。このイメージをAmazon Elastic Container Registry(Amazon ECR)にプッシュします。 ✓
- B. 互換性タイプをAWS Fargateとする新しいAmazon Elastic Container Service(Amazon ECS)タスク定義を作成します。このタスク定義を、Amazon ECRにプッシュ済みの新しいDockerイメージを使用するように設定します。Lambda関数を修正し、新しいファイルがAmazon S3に到着した際に、ECSタスク定義を用いてECSタスクを起動するようにします。 ✓
- C. Lambda関数を呼び出すParallelステートを持つAWS Step Functionsステートマシンを作成します。Lambda関数のプロビジョニング済み同時実行数を増加させます。
- D. 互換性タイプをAmazon EC2とする新しいAmazon Elastic Container Service(Amazon ECS)タスク定義を作成します。このタスク定義を、Amazon ECRにプッシュ済みの新しいDockerイメージを使用するように設定します。Lambda関数を修正し、新しいファイルがAmazon S3に到着した際に、ECSタスク定義を用いてECSタスクを起動するようにします。
- E. アプリケーションを変更し、画像をAmazon Elastic File System(Amazon EFS)に保存し、メタデータをAmazon RDS DBインスタンスに保存するようにします。Lambda関数を修正し、EFSファイル共有をマウントできるようにします。
正解: A. アプリケーションのデプロイ方法を変更し、アプリケーションコードを含むDockerイメージを作成します。このイメージをAmazon Elastic Container Registry(Amazon ECR)にプッシュします。, B. 互換性タイプをAWS Fargateとする新しいAmazon Elastic Container Service(Amazon ECS)タスク定義を作成します。このタスク定義を、Amazon ECRにプッシュ済みの新しいDockerイメージを使用するように設定します。Lambda関数を修正し、新しいファイルがAmazon S3に到着した際に、ECSタスク定義を用いてECSタスクを起動するようにします。
解説
画像サイズの増大によるLambda関数のタイムアウトエラーを解消し、呼び出し失敗を防止するには、以下の対応が有効です。 A:アプリケーションをDockerイメージ化することで、依存関係やランタイム環境をパッケージ化でき、Amazon ECRへのプッシュにより、コンテナイメージの保管・配布が容易になります。 B:AWS Fargateは、インフラストラクチャ管理不要のサーバーレスなコンテナ実行環境であり、ECSタスク定義と連携して長時間実行が必要な処理(例:大規模画像処理)を安全に実行できます。Lambda関数からECSタスクを非同期で起動することで、Lambdaのタイムアウト制限を超える処理をオフロードでき、Lambda自体は迅速に終了して可用性を維持できます。 一方、CはParallelステートとプロビジョニング済み同時実行数の増加では、個々のLambda実行時間の上限(最大15分)を突破できないため、タイムアウトの根本解決にはなりません。DはAmazon EC2互換のECSタスク定義を採用するため、企業が望まない「基盤インフラストラクチャの管理」が発生します。EはLambdaでのEFSマウントは可能ですが、EFSはI/O待ち時間が長く、大規模画像処理には不向きであり、またRDSへのメタデータ保存は要件(DynamoDB利用)に反します。 したがって、要件を満たす正しい組み合わせはAとBです。