EC2 Image builder とは

## 勉強前イメージ

EC2のイメージを作ってくれるやつ？
でもイメージって手で作れるんじゃね？？？

## 調査

### EC2 Image builder とは

AMIのアップデートを自動的に自動化出来るサービスになります。

今まで取得したAMIを定期的にアップデートして再作成などしないといけません。
また、アカウントを跨いだAMIの共有なども面倒でした。
EC2 Image builder を使うとインスタンスを起動してアップデートすることなく、
自動的にアップデートでき、EC2 Image builder自体は無料で利用することができます(EBSなどの費用はかかります。)

### EC2 Image builder の用語

- ビルドコンポーネント

ソフトウェアのパッケージのダウンロード・インストールなど定義するドキュメントでyaml形式で書かれます。

- レシピ

ソースのイメージとソースイメージに適用して出力イメージに必要な構成を作るコンポーネントを定義するドキュメント

- イメージパイプライン

安全なOSイメージを構成するための自動化構成でレシピからAMIを取得するパイプライン(ビルド・検証・テスト)を定義してるものです。

### 流れ

作成の流れとして、以下になります。

1. コンポーネントを作成
2. コンポーネントを元にレシピの作成
3. レシピを元にイメージパイプライン作成
4. イメージパイプラインからAMIの取得

### 作ってみる

- イメージパイプラインを作成

ホーム > EC2 Image builder へ進み、イメージパイプラインを作成を行います。

![1EC2 Image Builder - Google Chrome 2021-10-09 08.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/e69fa5ba-fd09-70a4-3bcc-ae00c4443589.png)


- パイプラインの詳細を指定

パイプライン名を指定します。
また、どういう頻度や方法でビルドするのかを決めます。

![1EC2 Image Builder - Google Chrome 2021-10-09 09.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/14d231bb-d570-5f59-20a5-8a64b3f9cbb8.png)


- レシピを選択

レシピを作成します。
既存のレシピはなかったので新しく作りました。
今回はAMIを作成、またレシピの名前とバージョンの指定を行います。

![2EC2 Image Builder - Google Chrome 2021-10-09 09.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/295f7638-68c8-ecfe-bafd-ce5ed2393a06.png)

ここではOSやイメージ、OSのバージョンをどうするのかの指定をします。

![3EC2 Image Builder - Google Chrome 2021-10-09 09.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/7ad515c5-a433-da7b-29e8-5458ba0059b7.png)

コンポーネントを指定します。
今回はpythonとmariadb、phpを入れてみました。

![4EC2 Image Builder - Google Chrome 2021-10-09 09.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/63ae85f8-0ec2-9a2c-25e4-286df90fc701.png)

テストコンポーネントも指定します。
rebootするように指定しました。

![5EC2 Image Builder - Google Chrome 2021-10-09 09.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/83d4f208-5bfc-e1a2-cce9-7df351d85a9f.png)


- インフラストラクチャ設定

インフラは今回デフォルトにしますが、
普通に業務で使う際は色々決まりがあると思うので、 「新しいインフラストラクチャ設定を作成する」 から
キーペアなどを設定してください

![6EC2 Image Builder - Google Chrome 2021-10-09 09.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/0bc399cc-d7fd-505e-32a4-20c1f48909f7.png)


- ディストリビューションの設定を定義

こちらも今回デフォルトにしますが、
アカウント横断でAMIを使う際などは 「新しいディストリビューション設定を作成する」 から
アカウントなどの設定をしてください

![7EC2 Image Builder - Google Chrome 2021-10-09 09.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/0645184b-cff4-0ddf-f619-c1ee5a395c42.png)


- 最終確認

設定に間違いがないか確認を行い、パイプラインを作成します。

![8EC2 Image Builder - Google Chrome 2021-10-09 09.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/76ddaf8d-b916-21b9-3092-ccfeb219e12f.png)


- パイプラインの作成完了

パイプラインが作成できました。

![9EC2 Image Builder - Google Chrome 2021-10-09 09.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/17d2897d-c9b7-970b-3d5c-54ba0e6ee273.png)


- パイプラインを実行

できたパイプラインを実行してみます。
パイプラインにチェックを行い、アクションから「パイプラインの実行」を行います。

![10EC2 Image Builder - Google Chrome 2021-10-09 09.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/761ffbee-c8ad-13e3-e881-2d737857fda5.png)


test-pipelineの中を見てみると、作成中になっています。

![11EC2 Image Builder - Google Chrome 2021-10-09 09.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/7495082b-324f-cbca-9a9c-5db18758db4b.png)


- EC2インスタンス作成

新しいEC2インスタンスができました！

![12インスタンス _ EC2 Management Console - Google Chrome 20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/33c02db7-c49c-2b5b-90f8-2c5e8fe40dbb.png)


## 勉強後イメージ

そんなに難しくなく作れた気がする・・・まぁ詳細設定しようとすると難しいんだろうな。。。。
AMIを自動で更新してくれるの嬉しいね

## 参考

- [EC2のイメージ作成を劇的に効率化するEC2 Image Builderが発表されました！ #reinvent](https://dev.classmethod.jp/articles/ec2-image-builder/)
- [【re:Invent 2019】新機能 EC2 Image Builder を使ってみた](https://techblog.forgevision.com/entry/2019/12/04/004144)