[re:Invent 2019] EC2 Image Builder でコンポーネントを作成してみた #reinvent

こんにちは、コンサル部の望月です。

いよいよ Re:Invent が始まりました!早速でてきたサービスの中で、すでに弊社ブログ内でも盛り上がっている EC2 Image Builder が、大変楽しそうだったので、いろいろ試してみようとおもいます。

Image Builder ではコンポーネントを使って、様々なソフトウェアや設定を定義することができ、最初から提供されているものとは別にユーザーで作成もすることができます。

本記事ではコンポーネントを作成を使って Apache のインストールを試してみました。

サービスの内容については、下記ブログで詳しく書かれているので、読んでみてください。

EC2のイメージ作成を劇的に効率化するEC2 Image Builderが発表されました! #reinvent

[re:Invent 2019] EC2イメージビルダーをサクッと試してみた #reinvent

やってみた

コンポーネントの作成

EC2 Image Builder のサポートページから Components の作成を行います。

  • EC2 Image Builder のサポートページからサイドバーを開き、『Components』をクリック
  • 『Create component』をクリック

  • OSには Linux を指定
  • Component name には任意の名前をつける
    • ここでは『ApacheInstall』を記入
  • Component version には任意のバージョンをつける
    • ここでは『1.0.0』を記入

  • Definition document に実行させたいコンテンツを記入する
    • 以下に実行したコンテンツになります
      • build でOSの最新化及び Apache のインストール、有効化
      • validate でパッケージがインストールされたかの確認
      • test で 80 番ポートへ接続できることの確認
name: Apache Install
description: This is Apache Install testing document.
schemaVersion: 1.0

phases:
  - name: build
    steps:
      - name: InstallLinuxUpdate
        action: UpdateOS
      - name: InstallApache
        action: ExecuteBash
        inputs:
          commands:
            - sudo yum install httpd -y
            - sudo systemctl enable httpd
            - sudo systemctl start httpd

  - name: validate
    steps:
      - name: CheckApache
        action: ExecuteBash
        inputs:
          commands:
            - rpm -qi httpd

  - name: test
    steps:
      - name: TestApache
        action: ExecuteBash
        inputs:
          commands:
            - curl localhost

  • 保存し、コンポーネントが作成されていることを確認します

イメージパイプラインの作成

イメージパイプラインの作成時に先程作成したコンポーネントを指定します

  • イメージパイプライン内の Build components から 『Browse Build components』をクリック

  • Select build components から検索条件を『Created by me』に変更し、表示された先ほど作成したコンポーネントを選択

  • イメージパイプラインを作成したら『Run pipeline』を選択し、パイプラインを実行します

AMI の確認

EC2 サービスページから AMI が作成されていることを確認します。

  • AMI を確認し、起動する

  • 起動したインスタンスへアクセスし、Apache のページが表示されることを確認します

まとめ

EC2 Image Builder を使って Apache のインストールを行うことができました。

実際やっていうことは User Data でもできる内容かとは思いますが、検証やテストといったフェースを入れることで、失敗時に AMI の作成を止めると言ったことができるため、安心して利用できるかと思います。

また、個人的ハマりどころとして、最初試したところ SSM Agent のタイムアウトとなり、イメージパイプラインが実行エラーとなりました。確認したところ、VPC やサブネットを指定せずに実行するとデフォルト VPC が使われるのですが、私のデフォルト VPC からインターネットへの接続ができないようになっており、エラーとなっていたようです。

あまり、意識しないところでのエラーではあるので、もし同じエラーで悩んでいる人はデフォルト VPC の環境確認をしてみるといいかもしれません。