無限ノック › DVA 練習問題一覧 › 問題
DVAデプロイ

開発チームがAWS CodeBuildを使用してNode.jsアプリケーションを定期的にビルドしています。npm installコマンドに毎回2〜3分かかっており、ビルド時間を短縮したいと考えています。buildspec.ymlを変更してnpm依存関係をキャッシュし、ビルド間で再利用するための最も適切な設定はどれですか?

A
artifactsセクションにnode_modulesディレクトリを指定し、次のビルド実行時に前回の成果物をダウンロードしてソースコードに展開することで依存関係を再利用する
artifactsセクションはビルド成果物をS3に保管するためのもので、ビルドキャッシュの仕組みではありません。前回の成果物からnode_modulesを展開する機能はCodeBuildに存在しません。
B
phases > install > commandsにキャッシュからコピーするコマンドを追加し、ビルド終了後にnode_modulesを/tmp/cacheへコピーして次回ビルドで参照できるようにする
/tmp/cacheへの手動コピーはそのビルドインスタンス固有の一時領域に依存しており、次回のビルドで別インスタンスが使われると再利用されず、信頼性の低い方法です。
C
buildspec.ymlのcacheセクションにnode_modulesや/root/.npmのパスを指定し、CodeBuildでS3またはローカルキャッシュを有効にして依存関係を再利用する
✓ 正解
buildspec.ymlのcacheセクションはCodeBuildの公式キャッシュ機能です。S3キャッシュは複数ビルドインスタンス間で共有でき、npm installの時間を大幅に削減できます。
D
Lambda Layersにnode_modulesをパッケージしてレイヤーとしてデプロイし、CodeBuildのビルドアーティファクトから依存関係を分離することでビルド時間を短縮する
Lambda Layersはサーバーレス関数向けの依存パッケージ配布機能であり、CodeBuildのビルドキャッシュには使用できません。目的が根本的に異なります。

解説

AWS CodeBuildはbuildspec.ymlの `cache` セクションでビルドキャッシュを設定できます。`paths` フィールドにキャッシュ対象ディレクトリ(`node_modules/**/*` や `/root/.npm/**/*`)を指定し、CodeBuildプロジェクト側でS3キャッシュまたはローカルキャッシュを有効にすることで、次回ビルド時にキャッシュが再利用されnpm installの時間を大幅に短縮できます。 選択肢Aのartifactsセクションはビルド成果物をS3に出力する設定であり、次のビルドで前回の成果物を自動的にキャッシュとして再利用する仕組みはCodeBuildには存在しません。 選択肢Bの手動コピーアプローチは/tmpディレクトリがビルドコンテナ再利用時のみ保持されるため信頼性が低く、コンテナが新規起動された場合にキャッシュが消失します。 選択肢DのLambda Layersはサーバーレス関数のデプロイ用の機能であり、CodeBuildのビルド最適化に使用することはできません。

ドメイン別正答率・予想スコアでリアルタイムに実力把握

無限ノックでDVAを徹底対策。全問AI生成のオリジナル問題。

無料で演習を始める →
← DVA の問題一覧に戻る