Windowsに対応したAWS CodeBuildについて
はじめに
2018年5月からAWS CodeBuildが、Windows上の.NET Core 2.0向けの事前パッケージ化済みビルド環境を含め、Microsoft Windows Server プラットフォーム向けビルドのサポートを開始しました。そこで本記事では、AWS CodeBuildについて紹介します。
AWS CodeBuildとは
AWS CodeBuildは、クラウド上でソースコードのコンパイルからテスト実行、デプロイ可能なソフトウェアパッケージの作成までできるフルマネージドのビルドサービスです。プログラミング学習支援のサービスを提供するProgateは、インフラストラクチャ全体をAWSで実行しています。
AWS CodeBuildの利点
AWS CodeBuildの6つの利点を紹介します。
1. フルマネージドなビルドサービス
AWS CodeBuildによって、ビルドサーバやソフトウェアの設定、バッチ適用、アップデートなどのソフトウェアのインストールや管理に関わる作業は不要となります。
2. 継続的スケーリング
ビルドのボリュームに応じて、自動的にスケーリングされます。リクエストが送信されると、すぐにビルドが処理され、別のビルドと同時に実行できます。
3. 従量課金制
料金は、ビルドの実行が完了するまでにかかった分単位の時間に対して発生します。アイドル状態のビルドサーバのキャパシティについて、料金は発生しません。
4. 拡張可能
パッケージ済みのビルドツールや、AWS CodeBuildでサポートしているランタイムだけでなく、ユーザーのビルドツールやプログラミングのランタイムも使用するために、カスタマイズしたビルド環境を作成することができます。
5. 継続的インテグレーションと継続的デリバリー(CI/CD)が可能
まず継続的インテグレーションと継続的デリバリーについて説明します。
(継続的インテグレーション)
継続的インテグレーションは、DevOpsソフトウェア開発の手法です。開発者が自分のコード変更を定期的にセントラルリポジトリにマージし、その後、自動化されたビルドとテストを実行します。バグの早期発見と対処、ソフトウェアの品質向上、ソフトウェアの更新の検証からリリースまでの時間短縮が主な利点です。
(継続的デリバリー)
継続的デリバリーは、コード変更が発生すると、自動的に実稼働環境へのリリース準備が実行されるソフトウェア開発手法の1つです。継続的なデリバリーを実施すると、UIテストやロードテスト、結合テスト、API信頼性テストなどが自動的に実行され、デプロイする前に多角的にアプリケーションの更新を検証できることが主な利点です。
AWS CodeBuildは、CI/CDによって完全な自動化ソフトウェアリリースワークフローを作成できます。また、AWS CodeBuildをユーザーがこれまで使用してきたCI/CDワークフローに統合することもできます。
6. セキュア
AWS CodeBuildにおいて、ビルドアーティファクトはAWS KMSで管理される専用キーによって暗号化されます。また、AWS CodeBuildとAWS IAMは統合されているので、ビルドプロジェクトへのユーザー専用の権限を割り当てることが可能です。
AWS CodeBuildの特徴
ここでは、既に上記の利点で挙げた特徴以外の内容を紹介します。
コードのビルドとテスト
AWS CodeBuildの事前設定されたビルド環境には次のものが含まれます。
- タスクの完了に必要なオペレーティングシステム
- プログラミング言語ランタイム
- ビルドツール(Apache Maven, Gradle, npm)
そのため、ユーザーがすることは、ソースコードの場所の指定とビルド設定の選択だけになります。
AWS CodeBuildによるアーティファクトは、Amazon S3バケットに保存されますが、ビルドコマンドを使用すると、それらをアーティファクトリポジトリにアップロードすることもできます。
設定可能な項目
1. ビルドコマンドの指定
ビルドの仕様をYAMLファイルで指定すると、ビルドツールパッケージのインストールや、ユニットテストの実行、コードのパッケージ化など、ビルドの各フェーズで実行するコマンドやその他の設定を選択できます。
2. コンピューティングタイプの選択
複数のCPUとメモリの組み合わせが提供されているので、開発ニーズに応じて最適なコンピューティングタイプを選択できます。
3. ソース統合の選択
統合の例を以下に示します。
- AWS CodeCommit、GitHub、またはAmazon S3に接続した後、AWS CodeBuildでビルドを開始する
- AWS CodePipelineを使用して、AWS CodeBuildとソースリポジトリに接続し、変更をコミットするたびにビルドを自動的に開始する
モニタリング
AWS CodeBuildコンソール、AWS CLI、AWS SDKとAWS API、またはAmazon CloudWatchを使用すると、ビルドの詳細情報を表示できます。AWS CodeBuildに表示される情報は、ビルドの開始・終了時間、ステータス、コミットIDです。また、AWS CodeBuildは、ビルドメトリクスのストリーミングと、Amazon CloudWatchへのログ記録も行います。
Amazon CloudWatchを使用すると、
カスタムダッシュボードの作成、Amazon CloudWatchアラームの設定、ビルド問題のトラブルシューティング、ビルドログの調査
といったことを行うことができます。
通知の受信
ビルドプロジェクトに影響を及ぼすイベントについて通知を作成することができます。通知としては、Amazon SNS通知(ステータスメッセージや、その通知が生成される原因となったイベントが存在するリソースへのリンクを含む)が送信されます。
Windowsに関する利用上の注意点
前述のように、AWS CodeBuildが2018年からWindowsに対応するようになりました。しかし、次のいずれかに該当する方は注意が必要です。
1. Microsoft .NET Frameworkを利用する方
「はじめに」で述べたように、AWS CodeBuildでは、.NET Core 2.0 用に事前設定されたWindowsビルド環境を提供しています。しかし、Microsoft .NET Frameworkを含む、その他のビルドターゲットは次の2つの手順に従い、それらをサポートするように自身でビルド環境をカスタマイズする必要があります。
- ビルド用ランタイムツールをパッケージ化したDockerイメージを作成する
- Amazon EC2 Container RegistryまたはDocker Hubレジストリに、(1)で作成したDockerイメージをアップロードする
上記により、新しいビルドプロジェクトを作成する際にDockerイメージの場所を指定すると、 AWS CodeBuildによりそのDockerイメージがプルされ、ビルドプロジェクト設定として使用されます。
2. .NET Core for Windows ビルド環境を無料で利用しようと考えている方
AWS CodeBuildには、build.general1.smallを使うことで1ヶ月あたりビルドを100分まで無料で使用できる無料利用枠があります。しかし、build.general1.smallコンピューティングインスタンスタイプで利用可能なメモリ(3GB)と処理能力(vCPU:2)よりも、Windows Docker ベースコンテナとその他のライブラリのサイズの方が大きいため、.NET Core for Windowsビルド環境には、より多くのメモリと処理能力が必要です。
そのため、.NET Core for Windowsビルド環境では、無料利用枠の利用はできず、Windowsのビルド1分あたり0.018USDから利用できます。
まとめ
本記事では、AWS CodeBuildの利点や特徴について紹介し、後半でWindows向けのビルドを利用する場合の注意点について紹介しました。
AWS CodeBuildを利用すると、ビルドサーバのハードウェアやソフトウェアを管理する必要がなくなる上に、個別のビルドの同時実行が可能なので、ビルドがキューで待機することもなくなります。AWS CodeBuildは業務プロセスの効率化を図ることができるサービスです。