開発チームは AWS CodeBuild で Node.js アプリケーションをビルドしています。npm install のたびに公開 npm レジストリから全依存関係を取得するためビルドが遅く、外部レジストリ障害時にはパイプライン全体が失敗します。チームは社内で承認済みのパッケージのみを使わせつつ、公開パッケージは透過的に取得・キャッシュし、ビルドの安定性と速度を向上させたいと考えています。これらを満たす施策の組み合わせはどれですか?(2 つ選択)
承認済みパッケージの一元管理と公開パッケージの透過的キャッシュには AWS CodeArtifact が最適です。CodeArtifact リポジトリに npm 公開レジストリを上流(upstream)として接続すると、初回取得時にパッケージがリポジトリへ保持され、以降は外部レジストリ障害の影響を受けずに取得できます。CodeBuild では aws codeartifact get-authorization-token でトークンを取得し npm のレジストリを CodeArtifact に向けます。 ビルド速度の向上には CodeBuild のキャッシュ機能が有効です。S3 キャッシュやローカルカスタムキャッシュで node_modules や npm キャッシュをビルド間で再利用すれば、依存解決の時間を短縮できます。 選択肢Cの特権モードは Docker デーモン実行のための設定であり、Docker レイヤーキャッシュは CodeBuild 環境では永続化されず npm 依存管理の解決にはなりません。 選択肢Dの自前ミラーを EC2 で運用する案は CodeArtifact と比べ運用負荷が高く、マネージドサービスを使うべきです。 選択肢Eの ECR はコンテナイメージ/OCI アーティファクト用であり、npm パッケージレジストリとしては機能しません。