EC2 Image Builderで作ったイメージを他アカウントに共有してみた #reinvent

こんにちは、中川です。

ついにre:Invent2019が始まりました! re:Invent2019の第一弾アップデートの1つにEC2 Image Builderがございます。EC2 Image Builderは、イメージの作成、保守、検証、共有、および展開を簡素化します。

本ブログでは、EC2 Image Builderで作ったイメージを他のアカウントへの共有について、ご紹介します。
組織で統一したイメージを使用したい、イメージのライフサイクルを効率的に管理したい、というときにはまるサービスです。

EC2 Image Builderのイメージ作成手順については、以下のブログを参考にしてください。

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

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

共有に関する仕様

  • 共有できる対象
    • Components
    • Images
    • Image recipes
  • Organization管理下のアカウントに共有可能で、Organizationの利用が必須
  • 暗号化を使用できない
  • 自アカウントのリソースのみ共有可能(他のアカウントから共有されたリソースを共有できない)

やってみた

Organizationを有効にしたアカウントで最初のイメージを作成したところから始めます。

AWS Resource Access Managerに接続し、[Create a resource share]をクリックします。

共有するリソースの名前を入力し、対象リソースとしてImage Builder Imagesを選択します。

最初に作成したイメージが表示されますので、チェックを有効にします。

プリンシパルでは、OrganizationのOUを選択し、一番下の[Create resource share]をクリックします。

共有リソースが表示されます。(Deletedのリソースはお試しで作成したもの)

OU配下のAWSアカウントにスイッチロールします。スイッチロールしたアカウントのResource Managerの左ペインから[Shared with me]をクリックすると、イメージが共有されていることを確認できます。

EC2 Image Builderに移動して、[Images]を選択すると、こちらでも共有されていることを確認できます。

以下の画像はAMIの一覧情報で、この時点でAMIは作成されておりません。EC2 Image Builderのイメージを共有しているため、そのアカウントでAMIを作成するには、EC2 Image Builderでパイプラインを作成し、パイプラインを実行する必要があります。

そのため、パイプラインを作成します。EC2 Image Builderで、[Create Image Pipeline]をクリックし、Browse to select an imageから、共有したイメージを選択します。

その後は、ビルドやテストのレシピを選択を進めて、パイプラインを作成します。

パイプラインを作成したら[Run Pipeline]をクリックし、パイプラインを実行します。

パイプラインを実行すると、AMIが作成されていることを確認できました。

さいごに

EC2 Image Builderで作成したイメージを他のアカウントに共有してみました。EC2 Image Builderのリソースを共有するには、Organizationが必須になりますので、ご注意ください。

ユースケースとして、組織の中で統制がきいたイメージを使う必要があり、また各プロジェクトごとにもイメージのライフサイクル管理が必要な場合は、イメージの共有は有用であると思いました。ただ、もしプロジェクトごとにイメージをリリースをしないけどイメージを共有はしたいようなケースがあれば、イメージではなくレシピやコンポーネントを共有したほうがいいケースもあるとも感じました。

EC2 Image Builderは、Golden AMIの管理がしやすくなる熱いアップデートですので、もっと深堀りして理解を深めていきたいです。

参考

Resource Sharing in EC2 Image Builder