Q28 — AWS DOP-C02 第2章

第 28/100 問 | ← 第2章

ある企業が、AWS CodeBuildプロジェクト内でDockerコマンドを実行してコンテナイメージをビルドしています。コンテナイメージのビルド後、CodeBuildプロジェクトはそのイメージをAmazon S3バケットにアップロードします。CodeBuildプロジェクトは、S3バケットへのアクセス権限を持つIAMサービスロールを使用しています。 DevOpsエンジニアは、S3バケットの代わりにAmazon Elastic Container Registry(Amazon ECR)リポジトリを使用してコンテナイメージを保存するよう変更する必要があります。DevOpsエンジニアは、CodeBuildプロジェクトと同じAWSリージョンにECRプライベートイメージリポジトリを作成しました。また、新しいECRリポジトリへのアクセスに必要な権限をIAMサービスロールに追加しました。さらに、buildspec.ymlファイル内のdocker buildおよびdocker pushコマンドに新しいリポジトリ情報を反映させました。 CodeBuildプロジェクトが実行されると、ECRリポジトリへのアクセスを試みる際に失敗します。 ECRリポジトリへのアクセス失敗を解決するソリューションはどれですか?

正解: A. buildspec.ymlファイルを更新し、AWS CLIコマンド`aws ecr get-login-password`を使用してECRリポジトリにログインし、認証トークンを取得します。docker loginコマンドを更新し、この認証トークンを使用してECRリポジトリにアクセスします。

解説

Dockerクライアントは、Amazon ECRと通信する前に認証が必要です。これはAWS CLIを使用して一時的なトークンを取得し、`docker login`コマンドで認証を完了することで実現されます。AWSドキュメントによると、`aws ecr get-login-password`コマンドでパスワードを取得した後、`docker login`コマンドで認証を実行する必要があります。buildspec.ymlの正しい構成には、ECR認証トークンの取得およびログイン手順を含める必要があります。オプションAはCLIでトークンを取得しログインするため、認証問題を解決します。オプションBはSecrets Managerを導入する必要がなく、ロールARNは認証資格情報ではありません。オプションCはパブリックリポジトリへの変更はセキュリティ要件に反します。オプションDは、サービスロールが既に必要な権限を付与されているため、ロールの引き受けは冗長です。