AWS CodeBuild のよくある質問

全般

AWS CodeBuild は、クラウド内の完全マネージド型の継続的統合サービスです。CodeBuild では、ソースコードのコンパイル、テストの実行、デプロイ可能なパッケージの生成を行えます。CodeBuild では自分のビルドサーバーをプロビジョニング、管理、スケールする必要がありません。CodeBuild が自動的にスケールし複数のビルドを同時に処理するため、ビルドはキューで待機する必要がありません。CodeBuild のパッケージ済みのビルド環境を使用するか、ご自分のビルドツールを使用するカスタムビルド環境を作成することによりすぐに開始できます。CodeBuild の課金は、分単位です。

ビルドサーバーソフトウェアをご自分でセットアップ、パッチ適用、維持することなく、CodeBuild ではフルマネージドの機能を使用することができます。ビルドジョブを CodeBuild に送信すると、ビルドごとに新しく作成される一時コンピューティングコンテナで実行されます。ビルドが完了すると、そのコンテナは破棄されます。ビルドサーバーのハードウェアやソフトウェアを管理する必要がありません。また、CodeBuild ではビルドのボリュームに合わせて自動的にスケールされます。送信送信したビルドごとに直ちに処理されます。また、個別のビルドを同時に実行することもできます。そのため、ビルドがキューで待機することがありません。

詳細については、AWS CodeBuild の料金ページを参照してください。

はい。CodeBuild は、AWS CodePipeline と統合されています。ビルドアクションを追加し、クラウドで実行する継続的統合と継続的配信のプロセスをセットアップすることができます。CodePipeline コンソールでビルドをセットアップして監視する方法については、こちらをご覧ください。

CodeBuild の使用

ビルドプロジェクトを使用して、CodeBuild でビルドを実行する方法を定義します。これには、ソースコードの取得場所、使用するビルド環境、実行するビルドコマンド、ビルドした出力の保存場所などの情報が含まれます。ビルド環境は、オペレーティングシステム、プログラム言語ランタイム、および CodeBuild でビルドを実行するために使用するツールを組み合わせたものです。

ビルドプロジェクトは、コンソールまたは AWS CLI を使用して設定できます。ソースリポジトリの場所、ランタイム環境、ビルドコマンド、コンテナが担う IAM ロール、およびビルドの実行に必要なコンピューティングクラスを指定します。また、buildspec.yml ファイルでビルドコマンドを指定することもできます。

CodeBuild は AWS CodeCommit、S3、GitHub、GitHub Enterprise、Bitbucket に接続して、ビルド用のソースコードを取得できます。

CodeBuild は、Java、Ruby、Python、Go、Node.js、Android、.NET Core、PHP、Docker のサポート対象バージョン向けにあらかじめ設定されている環境を提供しています。また、Docker イメージを作成して Amazon EC2 Container Registry または Docker Hub レジストリにアップロードすることにより、独自の環境をカスタマイズすることもできます。このカスタムイメージをビルドプロジェクトで参照することができます。

CodeBuild は、.NET Core 2.0 用に事前設定された Windows ビルド環境を提供します。Microsoft .NET Framework のお客様にも事前設定済みのビルド環境を提供することを考えています。こうしたお客様の多くは、Microsoft の独自仕様のライブラリを使用するためのライセンスをお持ちです。ただし、現時点ではこのようなお客様のご要望に共同で対応することに関して Microsoft 側は消極的です。Docker イメージを作成し、そのイメージを Amazon EC2 Container Registry または Docker Hub レジストリにアップロードすることにより、.NET Framework などの他のビルドターゲットをサポートするように環境を自分でカスタマイズすることができます。このカスタムイメージをビルドプロジェクトで参照することができます。

CodeBuild では、ビルドプロジェクトで定義されたクラスの一時コンピューティングコンテナが作成されます。これは、指定したランタイム環境でロードされ、ソースコードがダウンロードされてプロジェクトで設定されたコマンドが実行されます。生成された結果は S3 バケットにアップロードされ、その後コンピューティングコンテナは破棄されます。ビルド中、CodeBuild は、ビルドされた出力をサービスコンソールおよび Amazon CloudWatch にストリームします。

AWS マネジメントコンソールにサインインし、ビルドプロジェクトを作成してビルドを実行します。CodeBuild の説明については、開始方法を参照してください。手順を説明したチュートリアルがあります。また、CodeBuild ローカルを使用してビルドをローカルでテストおよびデバッグすることもできます。

はい。CodeBuild Plugin for Jenkins を使用して、CodeBuild を Jenkins ジョブに組み込むことができます。ビルドジョブは CodeBuild に送信されます。そのため、Jenkins ワーカーノードのプロビジョニングや管理は必要ありません。

過去のビルド結果には、コンソール、CloudWatch または API からアクセスできます。この結果には、結果 (成功または失敗)、ビルド時間、成果物の場所、およびログの場所が含まれます。CodeBuild ダッシュボードでは、メトリクスを表示して時間と共に変化するビルドの動作を理解できます。ダッシュボードにはビルドの試行回数、成功の回数、失敗の回数、ビルド時間が表示されます。また CloudWatch コンソールでより詳細なビルドメトリクスを見ることもできます。CloudWatch での CodeBuild のモニタリングについての詳細については、ドキュメントをご覧ください。

ビルド実行中に生成される詳細なログを調査してビルドをデバッグするか、CodeBuild ローカルを使用してビルドをローカルでテストおよびデバッグすることができます。

.NET Core for Windows ビルド環境には、Windows Docker ベースコンテナとその他のライブラリのサイズのために、build.general1.small コンピューティングインスタンスタイプで利用可能なメモリと処理能力よりも、さらに多くのメモリと処理能力が必要です。このような制限により、.NET Core for Windows ビルド環境では無料利用枠をご利用いただけません。

ビルドプロジェクトに影響を与えるイベントに関する通知を作成することができます。通知は Amazon SNS 通知の形式で送信されます。各通知には、ステータスメッセージに加えて、その通知が生成される原因となったイベントが存在するリソースへのリンクも含まれます。 通知に追加費用はかかりませんが、Amazon SNS など、通知に利用される他の AWS のサービスの料金が課金される場合があります。通知の使用開始方法については、通知ユーザーガイドを参照してください。さらに、AWS Chatbot をご利用のお客様は、お使いの Slack チャンネルまたは Amazon Chime チャットルームに通知が送信されるよう設定することも可能です。詳細については、こちらをご確認ください。

セキュリティ

はい。AWS Key Management Service (AWS KMS) に保存したキーを指定することにより、成果物を暗号化できます。

CodeBuild では、ユーザーごとに分離された新しい環境でビルドが実行され、完了すると各ビルド環境は破棄されます。CodeBuild では、インフラストラクチャレベルおよび事項レベルでセキュリティ保護と分離を行っています。

はい。IAM ポリシーでリソースレベルのアクセス権限を発行することにより、ビルドプロジェクトへのアクセス権限を制御できます。

リージョン

詳細については、「製品およびサービス一覧 (リージョン別)」を参照してください。