AWS CodeBuild（Code兄弟＃２）

# 目次
[1. はじめに](#はじめに)
[2. CodeBuildとは](#CodeBuildとは)
[3. CodeBuildの特徴](CodeBuildの特徴)
[4. CodeBuildのコスト](CodeBuildのコスト)
[5. 参考](#参考)

# はじめに
AWSでCI/CDを構築するために利用するCode兄弟についてまとめる。

今回は、AWS CodeBuildについて。
<br>
CI/CDについては別で詳しく解説するが、簡単なイメージ図は以下の通り。

![CICDイメージ_page-0001.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3554634/265e756a-99cb-a87b-d015-c36ba15d865b.jpeg)
<br><br>

# CodeBuildとは
[公式ドキュメント](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html)には以下のように書かれている。

>AWS CodeBuild is a fully managed build service in the cloud. CodeBuild compiles your source code, runs unit tests, and produces artifacts that are ready to deploy. CodeBuild eliminates the need to provision, manage, and scale your own build servers. It provides prepackaged build environments for popular programming languages and build tools such as Apache Maven, Gradle, and more. You can also customize build environments in CodeBuild to use your own build tools. CodeBuild scales automatically to meet peak build requests.

上記の文章を要約すると、以下のようになる。
- クラウドで動作するフルマネージドなビルドサービス
- ソースコードをコンパイルし、ユニットテストを行い、アーティファクト（Artifact）を生成
- Maven、Gradleなどの一般的なビルドツール用のパッケージを提供
- 独自のビルドツールも利用OK
- ピークのビルドリクエストに合わせてオートスケーリング
<br>
つまり、CodeBuildとは
<font color="DarkOrange">「リリースのビルドプロセスを提供する、フルマネージドビルドサービス」</font>
といえる。
<br><br>

CodeBuildはパイプラインのビルド、テストステージの役割を持っている。

![CodeBuildの対象範囲_page-0001.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3554634/035b7986-ebfd-a3dd-f58d-613947a640e4.jpeg)
<br><br>

※ビルド
ビルドとは、ソースコードからコンパイルを行ってバイナリコードに変換し、リンクによってアーティファクトを作成する流れ。
この流れを理解するには[ピヨ太さん](https://wa3.i-3-i.info/word12775.html)のサイトが大変参考になる。ここでは私が理解した内容をイメージで説明するが、詳しくはピヨ太さんのサイトを参考にしていただきたい。
<br>
![ビルドのイメージ1_page-0001.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3554634/54fd167d-9d72-9924-02d7-7076d1cb83d5.jpeg)
![ビルドのイメージ2_page-0001.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3554634/5fd5c629-3458-853c-39bf-bff76ebeccec.jpeg)
<br><br>


※アーティファクト（Artifact）
ビルドによって生成されてたファイル。
狭義の意味では、コンパイルにより生成されたバイナリコードをリンクして実行可能な状態にしたファイルのこと。
広義の意味では、ビルドプロセスによって作成された配布パッケージ、WARファイル、ログ、レポートなどを指す。

# CodeBuildの特徴
### フルマネージドサービス
CodeBuildはフルマネージドサービスであるため、サーバーのセットアップ、パッチ適用、更新、管理などの手間がなくなる。また、リクエスト量が多くなっても対応できるスケーラビリティと、ビルドした分にだけコストが発生する従量課金も他のマネージドサービスと同様である。

### 従量課金
CodeBuildは利用した分にだけ料金がかかる、従量課金を採用している。これは、スタートアップに対する心理的な壁が取り除かれることに寄与している。

### 対象ソース
ビルド対象のソースは以下から選択できる。

- S3バケット
- GitHub Enterprise
- CodeCommit
- Bitbucket
- GitHub

上記から分かる通り、AWSのサービスだけでなくGitHubやBitbucketも利用可能である。

# CodeBuildの料金
[公式サイト](https://aws.amazon.com/jp/codebuild/pricing/)には以下のように記載されている。

- 従量課金を採用しているため、前払いや最低料金はなし
- 使用したリソースにのみ料金発生
- ビルド送信から終了までの時間で分単位で計算
- コンピューティングタイプにより料金が異なる。

コンピューティングタイプはリージョンによっても異なる。詳しくは[公式サイト](https://aws.amazon.com/jp/codebuild/pricing/)を確認してほしい。

# 参考
[ビルドアーティファクトの管理](https://circleci.com/docs/ja/server/operator/managing-build-artifacts/)
[ビルドアーティファクト｜TeamCity オンプレミスドキュメント](https://pleiades.io/help/teamcity/build-artifact.html)
[AWS CodeBuild](https://aws.amazon.com/jp/codebuild/)
[AWS CodeBuild ユーザーガイド](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html)

# Code兄弟シリーズ

[AWS CodeCommit (Code兄弟＃１)](https://qiita.com/Aoi_Noguchi/items/5ce68d9edccf8550f00c)

-----------------
https://qiita.com/Aoi_Noguchi/items/ea33e53af83231629b19

https://qiita.com/Aoi_Noguchi/items/e22fa8d3abd8048e56eb

https://qiita.com/Aoi_Noguchi/items/daff6ce8c10b3878da6e

https://qiita.com/Aoi_Noguchi/items/b8662f593380235dae70