AWS で AMI イメージを別リージョンにコピーしようとしたら Images with EC2 BillingProduct codes cannot be copied to another AWS account が出た件

原因

AWS の仕様上、別のアカウントから移行してきた AMI イメージを別リージョンに移すことはできない。

参考: AMI のコピー - Amazon Elastic Compute Cloud

制限

billingProduct コードと関連付けられた AMI を別のアカウントから共有した場合、これをコピーすることはできません。 これには Windows AMI、AWS Marketplace の AMI などが含まれます。

対処方法

具体例で説明したい。

まず状況は以下としよう。

  • コピー元リージョン: 東京
  • コピー先リージョン: シドニー
  • (コピーしたい)AMI イメージ: シンガポールから東京に移行してきたもの

この時、AMI イメージをシドニーにコピーするには、以下のようにする。

  • (1) コピー元の東京で、AMI イメージからEC2インスタンスを作る
  • (2) 1で作ったEC2インスタンスから AMI イメージを作る
  • (3) 2で作ったイメージをコピー先のシドニーにコピーする

つまり コピー元リージョンで作ったインスタンス をイメージ化することで、イメージの内部情報(BillingProduct codeと呼ばれるやつ)をコピー元リージョンのものに書き換える、というイメージか。

なぜこんな仕様なの?

これは私の推測だが、billingProduct コードとは要するに AWS が管理する「AMI イメージ単位のライセンス」みたいなもの。Windows AMI や RHEL AMI みたいに OS 側でライセンスが必要なもの、あるいは AWS Marketplace AMI みたいにそもそも有料で販売されているもの等に対して、無闇にコピーされるのを防ぐ仕組み……ではないかと思う。

ソースがあったらどなたか教えてください。。。