DVAデプロイ
ある企業の複数の開発チームが、組織内で共有する社内製JavaScript(npm)パッケージをそれぞれのCodeBuildビルドで利用しています。要件は、(1)社内パッケージをバージョン管理して安全に配布する、(2)npmの公開レジストリへのアクセスもプロキシして一元化する、(3)サーバーの構築・運用を避け運用負荷を最小化する、です。最も適切な構成はどれですか。
AAWS CodeArtifactにリポジトリを作成し、npmの公開レジストリをアップストリームに設定して、buildspecで認証トークンを取得しnpmを構成する
✓ 正解
CodeArtifactはマネージドなパッケージリポジトリで、公開レジストリをアップストリームに設定すれば社内・公開パッケージを一元化できます。サーバー運用不要でバージョン管理とプロキシを実現し、3要件すべてを満たします。
B社内パッケージのtarballをAmazon S3バケットに配置し、buildspecでダウンロードして npm install --offline で参照する
S3にtarballを置く方式はオブジェクトストレージにすぎず、semverによるバージョン解決や依存関係の自動取得、公開レジストリのプロキシ機能を持ちません。パッケージ管理基盤として要件を満たせません。
CAmazon EC2上にVerdaccioなどのプライベートnpmレジストリを構築し、各ビルドからそのエンドポイントを参照する
EC2上にVerdaccioを構築する方式はプロキシやバージョン管理は実現できますが、インスタンスの構築・OSパッチ・スケーリング・可用性管理が必要です。サーバー運用を避け負荷を最小化する要件に明確に反します。
D社内パッケージを各アプリケーションリポジトリにGitサブモジュールとして取り込み、ビルド時にローカルパスで参照する
Gitサブモジュールはソースコードを取り込む手段であり、パッケージのセマンティックバージョニングによる配布や公開npmレジストリのプロキシを実現できません。チーム間共有や依存解決の要件を満たせません。
解説
AWS CodeArtifactはフルマネージドのアーティファクトリポジトリで、npm・pip・Maven等のパッケージをバージョン管理して配布できます。公開レジストリ(npmjsなど)をアップストリームリポジトリとして設定すると、社内パッケージと公開パッケージの取得を単一エンドポイントに一元化できます。buildspecで aws codeartifact get-authorization-token を使いトークンを取得してnpmを構成すれば、サーバー運用なしで要件をすべて満たします。
選択肢のS3配置はバージョン管理や依存解決、公開レジストリのプロキシ機能を持ちません。
選択肢のEC2上のVerdaccioはインスタンスの構築・パッチ適用・可用性管理が必要で運用負荷最小化に反します。
選択肢のGitサブモジュールはセマンティックバージョニングによる配布や公開レジストリのプロキシを実現できません。
ドメイン別正答率・予想スコアでリアルタイムに実力把握
無限ノックでDVAを徹底対策。全問AI生成のオリジナル問題。
無料で演習を始める →