DVA-C02デプロイHARD単一選択

ある企業がAWS CodeArtifactを使ってプライベートnpmパッケージを管理している。CI/CDパイプラインのCodeBuildステージでnpm installを実行する際に、CodeArtifactのリポジトリからパッケージを取得させたい。CodeBuildサービスロールには必要なCodeArtifactのIAM権限が付与されている。buildspec.ymlに追加すべき設定として最も適切なものはどれか。

  1. A. .npmrcファイルをリポジトリにコミットしてCodeArtifactのエンドポイントURLを記載する
  2. B. pre_buildフェーズで aws codeartifact login --tool npm --domain <ドメイン名> --repository <リポジトリ名> を実行して、npmの認証トークンを設定する
  3. C. buildフェーズでnpm config set registry https://codeartifact.<region>.amazonaws.com を直接設定する
  4. D. 環境変数NPM_TOKEN にCodeArtifactの認証トークンをSecretsManagerから取得して設定する
解答と解説を見る

正解: B

aws codeartifact loginコマンドは、CodeArtifactの認証トークン(有効期間12時間)を取得してnpmの設定ファイル(~/.npmrc)に自動的に書き込む。これにより、以降のnpm installコマンドが自動的にCodeArtifactリポジトリを参照するようになる。CodeBuildのIAMロールに権限があれば追加のクレデンシャル管理なしに実行できる。Cはnpm configでレジストリURLを設定するが、認証トークンが含まれないためプライベートパッケージの取得に失敗する。DはNPM_TOKENを使う方法だが、CodeArtifactのトークン取得にはaws codeartifact get-authorization-tokenコマンドが必要であり、npm config setでの設定も別途必要になる。Aの.npmrcをリポジトリにコミットする方法は認証トークンの有効期限が12時間しかないため実用的でなく、トークンをリポジトリに含めるセキュリティリスクもある。

▸ この試験を本気で演習する(全150問・無料)