カスタムAMIを共有する際のポイント2つ

アイキャッチ AWS EC2

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、せーのです。
今回はカスタムAMIを別アカウントにて共有する場合につまづきそうな(というか私がつまづいた)ポイントを2つご紹介します。

やること

環境構築の為に必要なパッケージ等をあらかじめ入れておいたAMI(CentOS6.5)を作成、こちらを元に環境を構築(CloudFormation使用)。
同じAMIを使ってstg環境(別アカウント)を作成する。

ポイント1:アカウント番号をAMI側に追加する。

まずはManagement ConsoleのEC2コンソールより[AMI]ナビをクリックします。

ami_console

共有したいAMIを選択し、Actionsまたは右クリックから[Modify Image Permissions]を選択します。

modifyimagepermission

AMIを共有するには「Public」「Private」という2種類の方法があります。
Publicを指定するとご想像の通り全てのAWSアカウントと共有することになるのですが、なかなか使わないですね。ということでPrivateを指定します。
Privateを指定した場合、共有したいAWSアカウントのアカウントIDを登録して[Save]で保存します。

これでAWSアカウントが許可されました。 では実際に使ってみましょう。AMIを使用したCloudFormationを流します。

customAMI_error


なんでしょう、これ。

ポイント2:MarketplaceのTermを承認しておく

実はこれはAWS Marcketplaceに関するエラーです。
今回はAmazon Linuxではなく、CentOS6.5を使用したのですが、このAMIはAWS Marketplaceからlaunchしたものがベースになっています。
launchした時にTermsは承認した上で起動させるわけですが、あくまでこれはAMIがあるアカウントでのお話。共有するアカウント側では承認をしていないわけですから、承認が必要となるわけです。

AWS Marketplaceにいき、使用したベースAMIを選択します。

CentOS_6_5__x86_64__-_Release_Media_on_AWS_Marketplace

ここはさらっと[continue]

acceptTerms
[Manual Launch]を選択し、右上の[Accept Terms]をクリックします。

これでベースAMIの承認が完了し、カスタムAMIが使えるようになりました。

まとめ

これらのTipsはManagement Consoleで構築をしているとそんなに痛手にはならないかと思いますが、CloudFormationで構築をしているといちいちロールバックされ、インスタンスサイズが大きかったりすると10分とか20分とか待たされます。
是非事前にご確認してみてください。