AWS Marketplace 由来の AMI を新しいアカウントで使いたい —— しかし「要サブスクライブ」エラーが……

こんにちは、趙です。
最近 AWS Marketplace 由来の AMI(Amazon Linux 2023) を別アカウントで再利用しようとした際、思わぬ苦労をしたため、その解決方法として AWS Application Migration Service (MGN) を利用した事例をご紹介します。
「一見すると簡単そうな AMI の共有が、Marketplace 縛りでハマった…」という方の参考になれば幸いです。


はじめに

通常、AWS アカウント間で AMI を再利用したい場合は、AMI を共有 → コピー → EC2 起動 という流れが一般的です。
ところが「Marketplace 由来の AMI」だと、コピー先のアカウントで Marketplace のサブスクリプションに同意していない場合、下記のようなエラーで起動に失敗するケースがあります。

エラー画面
file

インスタンスを起動できませんでした
In order to use this AWS Marketplace product you need to accept terms and subscribe. To do so please visit https://aws.amazon.com/marketplace/pp?sku=8acfvh6bldsr1ojb0oe3n8je5

しかも今回扱った Marketplace 製品は、すでに 新規サブスクライブ受付終了 となっており、AWS のコンソール上で“Subscribe”ボタンが表示されない状態。
結果として、単純な共有だけではどうにもならず大変困りました。

■サブスクリプション情報
file

そこで MGN(AWS Application Migration Service) というサービスを使ったところ、Marketplace の制約を回避できたので、その流れをメモとしてまとめました。


やりたいこと

  • AWS アカウント A で稼働中の Amazon Linux 2023 (Marketplace AMI) を、別アカウント B で使いたい
  • Marketplace 製品コードが付与されているため、アカウント B で AMI を起動しようとするとエラーになる
  • 新規サブスクライブできないため、Marketplace 情報を外した形の“純粋な” AMI に変換したい

今回のポイント

  • AWS サポート に問い合わせたところ、新規サブスクライブ不可なら「他に方法がない」と回答されてしまった
  • 一般的に案内される「ボリューム差し替え」手法を試みても、なぜか Marketplace コードが再付与 される事態に
  • そこで AWS Application Migration Service (MGN) を活用し、いわゆる アカウント間でブロックレベル移行 してみることに

前提・準備

MGN は通常、オンプレミスから AWS に移行する用途で知られていますが、AWS アカウント間の移行 にも利用できます。
まず、下記のような前提を確認しましょう:

  1. 移行先アカウント (B) で MGN を有効化

  2. 移行元アカウント (A) の EC2 に MGN エージェント をインストールできる権限を用意

    • エージェントが 443 ポートで通信できるように、ネットワーク周りの設定も確認
    • /tmp に 2GB 以上の空き容量が必要(tmpfs で 2GB 以下に設定されている場合、事前に解除するなどの対応が必要)

実際にやってみた

1. 移行先アカウント (B) でサーバ追加コマンドを生成

  1. MGN コンソール → “Source servers” → “サーバーを追加”
  2. 「AWS Replication Agent のインストール」画面で OS (Linux) を選択
  3. IAM アクセスキーやセッショントークンを設定(STS AssumeRole の手順が必要な場合あり)
  4. すると最後に、Linux 用の wget & installer コマンドが生成される

2. 移行元の EC2 (Amazon Linux 2023) でコマンド実行

  1. アカウント A の該当インスタンスに SSH でログイン
  2. 先ほど生成されたコマンドを順番に実行:
    sudo wget -O aws-replication-installer-init \
       https://aws-application-migration-service-xxxx.amazonaws.com/...
    sudo chmod +x aws-replication-installer-init
    sudo ./aws-replication-installer-init --region ap-northeast-1 ...
  3. インストールが始まり、MGN によるレプリケーションが開始される
  4. MGN コンソールを開くと、対象サーバーが “Initial sync” → “Ready for testing” と進んでいく

3. テストインスタンス起動 & 確認

  1. レプリケーションがひととおり完了したら、「Test」ボタンを押してテスト用インスタンスを起動
  2. EC2 コンソールで新規起動したインスタンスを確認し、問題なく SSH/RDP 接続できるか、アプリが動作するかを確認
  3. 問題なければ MGN コンソールで “Mark as ready for cutover”

4. カットオーバー (Cutover)

  1. “Launch cutover” ボタンを押し、最終的な差分同期 & 本番インスタンスの起動
  2. 正常に立ち上がったのを確認後、不要ならソースサーバを停止し、MGN コンソールで “Finalize cutover” を実行
  3. これでレプリケーション関連の中継リソースも開放される

5. 新インスタンスから AMI を作ってみる

  1. 移行先アカウント (B) の EC2 コンソールで「イメージを作成」
  2. 作成された AMI の「製品コード」を確認
  3. Marketplace 由来の製品コードが付いていない!
  4. 試しにこの AMI から別のインスタンスを立ち上げても「要サブスクライブ」エラーは出ず、正常起動を確認

まとめ

  • Marketplace AMI は単純コピーではうまくいかない ことがある
  • 特に「すでにサブスクライブ不可な商品」の場合、アカウントをまたぐと手詰まりになるケースも
  • AWS Application Migration Service (MGN) を使ったブロックレベル移行は、Marketplace メタデータを通さず“クリーンな”カスタム AMI を作れるため有効
  • ただし、エージェント導入や STS、tmpfs の容量など、事前準備は意外と細かい
  • 最終的に本番インスタンスとして起動できれば、製品コードの縛りから解放される

おわりに

今回の作業は、いわゆる「アカウント間の AMI コピーは簡単」と思い込んでいたところで、予想外に大ハマりした事例でした。
Marketplace 製品コードが影響すると、EC2 起動時にエラーが出てしまい、さらに Marketplace ページの新規サブスクライブができない状態というダブルパンチ。
これを回避するために MGN を活用するのは若干回り道ですが、実際に試してみると意外とスムーズに移行できました。

もし同じ悩みをお持ちの方がいれば、ぜひ参考にしてみてください。
それではまた、次の記事でお会いしましょう。


参考リンク

Last modified: 2025-03-01

Author