AWS CodeBuild のよくある質問
全般
Q: AWS CodeBuild とは何ですか?
AWS CodeBuild は、クラウド内の完全マネージド型の継続的統合サービスです。CodeBuild では、ソースコードのコンパイル、テストの実行、デプロイ可能なパッケージの生成を行えます。CodeBuild では自分のビルドサーバーをプロビジョニング、管理、スケールする必要がありません。CodeBuild が自動的にスケールし複数のビルドを同時に処理するため、ビルドはキューで待機する必要がありません。CodeBuild のパッケージ済みのビルド環境を使用するか、ご自分のビルドツールを使用するカスタムビルド環境を作成することによりすぐに開始できます。CodeBuild の課金は、分単位です。
Q: CodeBuild を使用する理由は何ですか?
ビルドサーバーソフトウェアをご自分でセットアップ、パッチ適用、維持することなく、CodeBuild ではフルマネージドの機能を使用することができます。ビルドジョブを CodeBuild に送信すると、ビルドごとに新しく作成される一時コンピューティングコンテナで実行されます。ビルドが完了すると、そのコンテナは破棄されます。ビルドサーバーのハードウェアやソフトウェアを管理する必要がありません。また、CodeBuild ではビルドのボリュームに合わせて自動的にスケールされます。送信したビルドごとに直ちに処理され、個別のビルドを同時に実行することもできるため、ビルドがキューで待機することは決してありません。
Q: CodeBuild の料金について教えてください。
詳細については、AWS CodeBuild の料金表ページを参照してください。
CodeBuild の使用
Q: ビルドプロジェクトとは何ですか?
ビルドプロジェクトを使用して、CodeBuild でビルドを実行する方法を定義します。これには、ソースコードの取得場所、使用するビルド環境、実行するビルドコマンド、ビルドした出力の保存場所などの情報が含まれます。ビルド環境は、オペレーティングシステム、プログラム言語ランタイム、および CodeBuild がビルドを実行するために使用するツールを組み合わせたものです。
Q: ビルドプロジェクトの設定方法を教えてください。
ビルドプロジェクトは、コンソールまたは AWS CLI を使用して設定できます。ソースリポジトリの場所、ランタイム環境、ビルドコマンド、コンテナが担う IAM ロール、およびビルドの実行に必要なコンピューティングクラスを指定します。また、buildspec.yml ファイルでビルドコマンドを指定することもできます。
Q: CodeBuild はどのソースリポジトリをサポートしていますか?
CodeBuild は AWS CodeCommit、S3、GitHub、GitHub Enterprise、Bitbucket に接続して、ビルド用のソースコードを取得できます。
Q: CodeBuild はどのプログラミングフレームワークをサポートしていますか?
CodeBuild は、Java、Ruby、Python、Go、Node.js、Android、.NET Core、PHP、Docker のサポート対象バージョン向けにあらかじめ設定されている環境を提供しています。また、Docker イメージを作成して Amazon EC2 Container Registry または Docker Hub レジストリにアップロードすることにより、独自の環境をカスタマイズすることもできます。このカスタムイメージをビルドプロジェクトで参照することができます。
Q: CodeBuild では、どの Windows ビルドラインタイムが事前に設定されていますか?
CodeBuild は、.NET Core 2.0 用に事前設定された Windows ビルド環境を提供します。Microsoft .NET Framework のお客様にも事前設定済みのビルド環境を提供することを考えています。こうしたお客様の多くは、Microsoft の独自仕様のライブラリを使用するためのライセンスをお持ちです。ただし、現時点ではこのようなお客様のご要望に共同で対応することに関して Microsoft 側は消極的です。Docker イメージを作成し、そのイメージを Amazon EC2 Container Registry または Docker Hub レジストリにアップロードすることにより、.NET Framework などの他のビルドターゲットをサポートするように環境を自分でカスタマイズすることができます。このカスタムイメージをビルドプロジェクトで参照することができます。
Q: ビルドを実行するとどうなりますか?
CodeBuild では、ビルドプロジェクトで定義されたクラスの一時コンピューティングコンテナが作成されます。これは、指定したランタイム環境でロードされ、ソースコードがダウンロードされてプロジェクトで設定されたコマンドが実行されます。生成された結果は S3 バケットにアップロードされ、その後コンピューティングコンテナは破棄されます。ビルド中、CodeBuild は、ビルドされた出力をサービスコンソールおよび Amazon CloudWatch にストリームします。
Q: 初めてビルドする場合の設定を教えてください。
AWS マネジメントコンソールにサインインし、ビルドプロジェクトを作成してビルドを実行します。CodeBuild の説明については、開始方法を参照してください。手順を説明したチュートリアルがあります。また、CodeBuild ローカルを使用してビルドをローカルでテストおよびデバッグすることもできます。
Q: CodeBuild は Jenkins と併用できますか?
はい。CodeBuild Plugin for Jenkins を使用して、CodeBuild を Jenkins ジョブに組み込むことができます。ビルドジョブは CodeBuild に送信されるめ、Jenkins ワーカーノードのプロビジョニングや管理は必要ありません。
Q: 過去のビルド結果を表示するには、どうすればよいですか?
過去のビルド結果には、コンソール、CloudWatch または API からアクセスできます。この結果には、結果 (成功または失敗)、ビルド時間、成果物の場所、およびログの場所が含まれます。CodeBuild ダッシュボードでは、メトリクスを表示して時間と共に変化するビルドの動作を理解できます。ダッシュボードにはビルドの試行回数、成功の回数、失敗の回数、ビルド時間が表示されます。また、CloudWatch コンソールでより詳細なビルドメトリクスを表示することもできます。CloudWatch での CodeBuild のモニタリングについての詳細については、ドキュメントをご覧ください。
Q: 過去のビルド失敗をデバッグするには、どうすればよいですか?
ビルド実行中に生成される詳細なログを調査してビルドをデバッグするか、CodeBuild ローカルを使用してビルドをローカルでテストおよびデバッグすることができます。
Q: .NET Core for Windows ビルド環境で、build.general1.small がサポートされていないのはなぜですか?
.NET Core for Windows ビルド環境には、Windows Docker ベースコンテナとその他のライブラリのサイズのために、build.general1.small コンピューティングインスタンスタイプで利用可能なメモリと処理能力よりも、さらに多くのメモリと処理能力が必要です。このような制限により、.NET Core for Windows ビルド環境では無料利用枠をご利用いただけません。
Q: AWS CodeBuild のイベントに関する通知やアラートを受け取るにはどうすればよいですか?
ビルドプロジェクトに影響を与えるイベントに関する通知を作成することができます。通知は Amazon SNS 通知という形で送信されます。各通知には、ステータスメッセージに加えて、その通知が生成される原因となったイベントが存在するリソースへのリンクも含まれます。 通知に追加費用はかかりませんが、Amazon SNS など、通知に利用される他の AWS のサービスの料金が課金される場合があります。通知の使用開始方法については、通知ユーザーガイドを参照してください。さらに、AWS Chatbot をご利用のお客様は、お使いの Slack チャンネルまたは Amazon Chime チャットルームに通知が送信されるよう設定することも可能です。詳細については、こちらをご確認ください。
セキュリティ
Q: CodeBuild で保存されたビルドの成果物を暗号化することはできますか?
はい。AWS Key Management Service (AWS KMS) に保存したキーを指定することにより、成果物を暗号化できます。
Q: CodeBuild では、他の顧客のビルドとどのように分離していますか?
CodeBuild では、ユーザーごとに分離された新しい環境でビルドが実行され、完了すると各ビルド環境は破棄されます。CodeBuild では、インフラストラクチャレベルおよび実行レベルでセキュリティ保護と分離を行っています。
Q: AWS Identity and Access Management (IAM) を CodeBuild へのアクセスの管理に使用できますか?
はい。IAM ポリシーでのリソースレベルのアクセス権限により、ビルドプロジェクトへのアクセスをコントロールできます。
リージョン
Q: CodeBuild はどのリージョンをサポートしていますか?
詳細については、各リージョンの製品とサービス を参照してください。
AWS CodeBuild 料金表の詳細