

# Amazon EC2 AMI ライフサイクル
<a name="ami-lifecycle"></a>

Amazon マシンイメージ (AMI) は、インスタンスのセットアップと起動に必要なソフトウェアを提供するイメージです。インスタンスを起動するときは、AMI を指定する必要があります。Amazon が提供する AMI を使用するか、独自の AMI を作成できます。AMI は、インスタンスを起動する AWS リージョン に配置する必要があります。

AMI のライフサイクルには、AMI の作成、コピー、非推奨化、無効化、削除 (登録解除) が含まれます。

**AMI を作成する** Amazon は、インスタンスの起動に使用できる AMI を提供していますが、ニーズに合わせてカスタム AMI を作成することもできます。カスタム AMI を作成するには、既存の AMI からインスタンスを起動し、インスタンスをカスタマイズし (ソフトウェアのインストールやオペレーティングシステムの設定など）、インスタンスから AMI を作成します。インスタンスのカスタマイズはすべて AMI に保存されるため、新しい AMI から起動されたインスタンスにはこれらのカスタマイズが含まれます。

**Attestable AMI** EC2 インスタンスアテステーションをサポートする AMI を作成するには、「[構成証明可能 AMI](attestable-ami.md)」を参照してください。

**AMI をコピーする** AMI を使用してインスタンスを起動できるのは、AMI が配置されている AWS リージョン 内のみです。複数のリージョンで同じ設定でインスタンスを起動する必要がある場合は、AMI を他のリージョンにコピーします。

**AMI を非推奨にする** AMI を旧版または期限切れとしてマークするには、即時または将来の非推奨日を設定できます。非推奨の AMI は AMI リストに表示されませんが、AMI ID がわかっている場合、ユーザーとサービスは非推奨の AMI を引き続き使用できます。

**AMI を無効にする** AMI の使用を一時的に使用できないようにするには、AMI を無効にします。AAMI が無効になっていると、その AMI を使用して新しいインスタンスを起動できません。ただし、AMI を再度有効にすると、インスタンスを再度起動できるようになります。なお、AMI から既に起動されている既存のインスタンスは、AMI を無効にしても影響を受けません。

**AMI の登録解除 (削除)** AMI が不要になった場合は、登録を解除して、新しいインスタンスの起動に使用できなくなります。AMI が保持ルールと一致すると、AMI はごみ箱に移動し、保持期間が終了する前に復元できます。その後、AMI は完全に削除されます。保持ルールと一致しない場合、そのルールは直ちに完全に削除されます。AMI の登録を解除しても、AMI から起動された既存のインスタンスには影響しないことに注意してください。

**AMI ライフサイクルの自動化** Amazon Data Lifecycle Manager を使用して、Amazon EBS-backed AMI とそのバッキングスナップショットの作成、保持、コピー、非推奨、登録削除を自動化できます。EC2 Image Builder を使用して、カスタマイズされた AMI の作成、管理、デプロイを自動化することもできます。詳細については、「*Amazon EBS ユーザーガイド*」および「[EC2 Image Builder ユーザーガイド](https://docs.aws.amazon.com/imagebuilder/latest/userguide/what-is-image-builder.html)」の「[Automate backups with Amazon Data Lifecycle Manager](https://docs.aws.amazon.com/ebs/latest/userguide/snapshot-lifecycle.html)」を参照してください。

**Topics**
+ [AMI を作成する](creating-an-ami-ebs.md)
+ [Amazon S3-backed AMI を作成する](creating-an-ami-instance-store.md)
+ [Windows Sysprep を使用して AMI を作成する](ami-create-win-sysprep.md)
+ [AMI のコピー](CopyingAMIs.md)
+ [AMI を保存および復元する](ami-store-restore.md)
+ [AMI 祖先](ami-ancestry.md)
+ [API の使用](ec2-ami-usage.md)
+ [AMI を非推奨にする](ami-deprecate.md)
+ [AMI の無効化](disable-an-ami.md)
+ [AMI の登録解除](deregister-ami.md)

# Amazon EBS-backed AMI を作成する
<a name="creating-an-ami-ebs"></a>

Amazon EC2 インスタンスまたは Amazon EC2 インスタンスのルートボリュームのスナップショットから、独自の Amazon EBS-backed AMI を作成できます。

インスタンスから Amazon EBS-backed AMI を作成するには、既存の Amazon EBS-backed AMI を使用してインスタンスを起動することから開始します。この AMI は、例えば、AWS Marketplace から取得した AMI、[VM Import/Export](https://docs.aws.amazon.com/vm-import/latest/userguide/what-is-vmimport.html) を使用して作成した AMI、またはユーザーがアクセス可能なその他の任意の AMI です。特定の要件を満たすようにインスタンスをカスタマイズしたら、新しい AMI を作成して登録します。その後、新しい AMI を使用して、カスタマイズした新しいインスタンスを起動できます。

**注記**  
EC2 インスタンスアテステーションをサポートする AMI を作成するには、「[構成証明可能 AMI](attestable-ami.md)」を参照してください。

以下に説明された手順は、暗号化された Amazon Elastic Block Store (Amazon EBS) ボリューム (ルートボリュームを含む) でバックアップされた Amazon EC2 インスタンスにも、暗号化されていないボリューム同様に機能します。

AMI の作成プロセスは、Amazon S3-backed AMI の場合とは異なります。詳細については、「[Amazon S3-backed AMI を作成する](creating-an-ami-instance-store.md)」を参照してください。

**Topics**
+ [インスタンスからの AMI 作成の概要](#process-creating-an-ami-ebs)
+ [インスタンスから AMI を作成する](#how-to-create-ebs-ami)
+ [スナップショットから AMI を作成する](#creating-launching-ami-from-snapshot)

## インスタンスからの AMI 作成の概要
<a name="process-creating-an-ami-ebs"></a>

次の図は、実行中の EC2 インスタンスから Amazon EBS-backed AMI を作成するプロセスをまとめたものです。既存の AMI から開始して、インスタンスを起動してカスタマイズし、そこから新しい AMI を作成し、最後に新しい AMI のインスタンスを起動します。図表内の数字は、次の説明の数値と一致します。

![\[インスタンスから AMI を作成するワークフロー\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/running-instance.png)


**1 — AMI \$11: 既存の AMI から始める**  
作成する AMI に似た既存の AMI を検索します。例えば、AWS Marketplace から取得した AMI、[VM Import/Export](https://docs.aws.amazon.com/vm-import/latest/userguide/what-is-vmimport.html) を使用して作成した AMI、またはユーザーがアクセス可能なその他の任意の AMI です。この AMI を必要に応じてカスタマイズします。  
図表内の **EBS ルートボリュームスナップショット \$11** は、AMI が Amazon EBS-backed AMI であり、ルートボリュームに関する情報がこのスナップショットに格納されていることを示します。

**2 — 既存の AMI からインスタンスを起動する**  
AMI を設定する方法は、新しい AMI のベースとなる AMI からインスタンスを起動し、インスタンスをカスタマイズすることです (図表内の **3**)。次に、カスタマイズを含む新しい AMI を作成します (図表内の **4**)。

**3 — EC2 インスタンス \$11: インスタンスをカスタマイズする**  
インスタンスに接続し、必要に応じてカスタマイズします。新しい AMI には、これらのカスタマイズが含まれます。  
インスタンスで次のアクションを実行して、インスタンスをカスタマイズできます。  
+ ソフトウェアやアプリケーションをインストールする
+ データをコピーする
+ 起動時間を短縮するために一時ファイルの消去、ハードディスクのデフラグ、占有領域の開放処理を行います。
+ 追加の EBS ボリュームをアタッチする

**4 – イメージを作成する**  
インスタンスから AMI を作成する際に、Amazon EC2 がインスタンスをシャットダウンしてから AMI を作成するのは、インスタンス上のすべての動作を停止し、作成プロセス中に一貫した状態が保たれるようにするためです。インスタンスが一貫した状態にあり、適切に AMI を作成できる場合、インスタンスの電源を落として再起動しないように、Amazon EC2 に指定できます。XFS などの一部のファイルシステムでは、アクティビティのフリーズおよびフリーズ解除が可能なため、インスタンスを再起動しなくてもイメージを安全に作成できます。  
AMI 作成プロセスの間、Amazon EC2 はインスタンスのルートボリュームとインスタンスにアタッチされているその他の EBS ボリュームのスナップショットを作成します。[AMI の登録を解除](deregister-ami.md)してスナップショットを削除するまで、スナップショットは課金の対象となります。インスタンスにアタッチされるいずれかのボリュームが暗号化されている場合、新しい AMI は、Amazon EBS 暗号化をサポートするインスタンスでのみ正常に起動します。  
ボリュームのサイズによっては、AMI 作成プロセスの完了に数分かかる場合があります (最長で 24 時間かかることもあります)。AMI を作成する前に、ボリュームのスナップショットを作成しておくと、効率が向上する可能性があります。この方法では、AMI を作成する際に作成する必要があるのは小さい差分スナップショットのみになるため、プロセスがよりすばやく完了します (スナップショット作成の合計時間は同じです)。

**5 — AMI \$12: 新しい AMI**  
プロセスが完了すると、新しい AMI と、インスタンスのルートボリュームから作成されたスナップショット (**スナップショット \$12**) が得られます。ルートボリュームに加えて、インスタンスストアボリュームまたは EBS ボリュームをインスタンスに追加した場合、新しい AMI のブロックデバイスマッピングにこれらのボリュームの情報が含まれます。  
Amazon EC2 では AMI は自動的に登録されます。

**6 – 新しい AMI からインスタンスを起動する**  
新しい AMI を使用してインスタンスを起動できます。

**7 — EC2 インスタンス \$12: 新しいインスタンス**  
ユーザーが新しい AMI を使用してインスタンスを起動すると、Amazon EC2 はスナップショットを使用して、そのインスタンスのルートボリュームのために新しい EBS ボリュームを作成します。インスタンスのカスタマイズ時に、インスタンスストアボリュームまたは EBS ボリュームを追加した場合、新しい AMI のブロックデバイスマッピングにこれらのボリュームの情報が含まれ、新しい AMI から起動するインスタンスのブロックデバイスマッピングに自動的にこれらのボリュームの情報が含まれます。新しいインスタンスのブロックデバイスマッピングに指定されているインスタンスストアボリュームは新しく、AMI の作成に使用したインスタンスのインスタンスストアボリュームからのデータは含まれていません。EBS ボリュームのデータは永続的です。詳細については、[Amazon EC2 インスタンスでのボリュームのブロックデバイスマッピング](block-device-mapping-concepts.md) を参照してください。  
EBS-backed AMI から新しいインスタンスを作成する場合、本稼働環境に移す前にそのルートボリュームと追加 EBS ストレージの両方を初期化する必要があります。詳細については、「Amazon EBS ユーザーガイド」の「[Amazon EBS ボリュームの初期化](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-initialize.html)」を参照してください。

## インスタンスから AMI を作成する
<a name="how-to-create-ebs-ami"></a>

既存のインスタンスがある場合は、このインスタンスから AMI を作成できます。

------
#### [ Console ]

**AMI を作成するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開きます。

1. ナビゲーションペインで、[**インスタンス**] を選択してください。

1. AMI を作成するインスタンスを選択し、**[アクション]** 、**[イメージとテンプレート]** の順に選択し、**[イメージの作成]** をクリックしてください。
**ヒント**  
このオプションが無効になっている場合、そのインスタンスは Amazon EBS-backed インスタンスではありません。

1. **[イメージの作成]** ページで、次の情報を指定します。

   1. **[イメージ名]** に、最大 127 文字までイメージの一意の名前を入力してください。

   1. **[イメージの説明]** に、最大 255 文字までイメージの説明を入力します (オプション)。

   1. **[インスタンスを再起動]** の場合、チェックボックスをオンのまま (デフォルト) にするか、オフにします。
      + **[インスタンスを再起動]** がオンの場合、Amazon EC2 が新しい AMI を作成するとき、データの保管時にアタッチされたボリュームのスナップショットを取得できるようにインスタンスを再起動して、一貫性のある状態を維持します。
      + **[インスタンスを再起動]** をクリアすると、Amazon EC2 が新しい AMI を作成しても、インスタンスはシャットダウンおよび再起動されません。
**警告**  
**[インスタンスを再起動]** をクリアした場合は、作成されたイメージのファイルシステムの整合性は保証されません。

   1. **[インスタンスボリューム]** - 次のとおり、ルートボリュームを変更し、Amazon EBS およびインスタンスストアボリュームを追加できます。

      1. ルートボリュームは、最初の行で定義されます。
         + ルートボリュームのサイズを変更するには、[**サイズ**] に必要な値を入力してください。
         + [**終了時に削除**] を選択した場合、この AMI から作成されたインスタンスを終了すると、EBS ボリュームが削除されます。[**終了時に削除**] をオフにした場合は、インスタンスを終了しても、EBS ボリュームは削除されません。詳細については、[インスタンスの終了時にデータを保持する](preserving-volumes-on-termination.md) を参照してください。

      1. EBS ボリュームを追加するには、[**ボリューム追加**] を選択します (これにより、新しい行が追加されます)。**[ストレージタイプ]** で **[EBS]** を選択し、行のフィールドに入力してください。作成した AMI からインスタンスを起動すると、追加したボリュームは自動的にそのインスタンスにアタッチされます。空のボリュームはフォーマットしてマウントする必要があります。スナップショットベースのボリュームはマウントする必要があります。

      1. インスタンスストアボリュームを追加するには、「[Amazon EC2 AMI にインスタンスストアボリュームを追加する](adding-instance-storage-ami.md)を参照してください。その後新しい AMI からインスタンスを起動すると、追加されたボリュームは自動的に初期化されてマウントされます。これらのボリュームには、AMI の作成に使用された実行中のインスタンスのインスタンスストアボリュームのデータは含まれません。

   1. **スナップショットの送信先** – インスタンスボリュームが EBS ローカルスナップショットをサポートしているローカルゾーンにある場合は、AMI のスナップショットを作成する場所を選択します。
      + **AWS リージョン**: ボリュームのローカルゾーンの親リージョンにスナップショットを作成します。
      + **AWS ローカルゾーン**: ボリュームと同じローカルゾーンにスナップショットを作成します。
**注記**  
このオプションは、EBS ローカルスナップショットをサポートするローカルゾーンにのみ、インスタンスがローカルゾーンで作成された場合に限って表示されます。ボリュームがリージョンにある場合、このオプションは表示されず、スナップショットはボリュームと同じリージョンに自動作成されます。詳細については、「*Amazon EBS ユーザーガイド*」の「[Local snapshots in Local Zones](https://docs.aws.amazon.com/ebs/latest/userguide/snapshots-localzones.html)」を参照してください。
**重要**  
インスタンスのボリュームのスナップショットはすべて同じ場所に存在する必要があります。既存のスナップショットの場所を確認してください。選択した送信先とは別の場所に既存のスナップショットがある場合、AMI の作成は失敗します。

   1. **タグ** - AMI とスナップショットに同じタグを付けることも、異なるタグを付けることもできます。
      + AMI とスナップショットに*同じ*タグを付けるには、[**イメージとスナップショットに一緒にタグを付ける**] を選択してください。AMI と作成されるすべてのスナップショットには、同じタグが適用されます。
      + AMI とスナップショットに*異なる*タグを付けるには、[**イメージとスナップショットに個別にタグを付ける**] を選択してください。AMI と作成されるスナップショットには、異なるタグが適用されます。ただし、すべてのスナップショットに同じタグが付けられます。各スナップショットに異なるタグを付けることはできません。

      (オプション) タグを追加するには、[**Add tag**] を選択し、そのタグのキーと値を入力してください。各タグについて、これを繰り返します。

   1. AMI を作成する準備ができたら、**[イメージの作成]** を選択してください。

1. 作成中に AMI のステータスを表示するには

   1. ナビゲーションペインで **[AMI]** を選択してください。

   1. フィルタを **[自分が所有]** に設定し、リストから AMI を探します。

      最初は、ステータスは `pending` ですが、数分後 `available` に変わります。

1. (オプション) 新しい AMI に作成されたスナップショットを表示するには:

   1. 前のステップで特定した AMI の ID をメモします。

   1. ナビゲーションペインで、[**スナップショット**] を選択してください。

   1. フィルターを **[自分が所有]** に設定し、新しい AMI ID のスナップショットを **[説明]** 列で検索します。

      ユーザーがこの AMI からインスタンスを起動すると、Amazon EC2 はこのスナップショットを使用して、インスタンスのルートボリュームを作成します。

------
#### [ AWS CLI ]

**AMI を作成するには**  
[create-image](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-image.html) コマンドを使用します。

```
aws ec2 create-image \
    --instance-id i-1234567890abcdef0 \
    --name "my-web-server" \
    --description "My web server image" \
    --no-reboot
```

------
#### [ PowerShell ]

**AMI を作成するには**  
[New-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2Image.html) コマンドレットを使用します。

```
New-EC2Image `
    -InstanceId i-1234567890abcdef0 ` 
    -Name "my-web-server" `
    -Description "My web server image" `
    -NoReboot $true
```

------

## スナップショットから AMI を作成する
<a name="creating-launching-ami-from-snapshot"></a>

インスタンスのルートボリュームのスナップショットがある場合、このスナップショットから AMI を作成できます。

**注記**  
ほとんどの場合、Windows、RedHat、SUSE、SQL Server の AMI には、正しいライセンス情報が存在する必要があります。詳細については、「[AMI の請求情報について](ami-billing-info.md)」を参照してください。スナップショットから AMI を作成する場合、`RegisterImage` オペレーションはスナップショットのメタデータから正しい請求情報を取得しますが、これには適切なメタデータが必要です。正しい請求情報が適用されたかどうかを確認するには、新しい AMI の **[プラットフォームの詳細]** フィールドを確認します。フィールドが空であるか、所定のオペレーティングシステムコード (Windows、RedHat、SUSE、SQL など) と一致しない場合、AMI の作成は失敗しているため、この AMI を破棄して「[インスタンスから AMI を作成する](#how-to-create-ebs-ami)」の手順に従う必要があります。

------
#### [ Console ]

**スナップショットから AMI を作成するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開きます。

1. ナビゲーションペインで、[**スナップショット**] を選択してください。

1. AMI の作成元になるスナップショットを選択してから、**[アクション]**、**[スナップショットからイメージ作成]** の順に選択してください。

1. **[スナップショットからイメージを作成]** ページで、次の情報を指定します。

   1. **[イメージ名]** に、イメージのわかりやすい名前を入力してください。

   1. **[説明]** に、イメージの簡単な説明を入力してください。

   1. **[アーキテクチャ]** で、イメージアーキテクチャを選択してください。32 ビットの場合は **[i386]**、64 ビットの場合は **[x86\$164]**、64 ビット ARM の場合は **[arm64]**、64 ビット macOS の場合は **[x86\$164]** をそれぞれ選択してください。

   1. **[ルートデバイス名]** に、ルートボリュームに使用するデバイス名を入力してください。詳細については、「[Amazon EC2 インスタンス上のボリュームのデバイス名](device_naming.md)」を参照してください。

   1. **[仮想化タイプ]** で、この AMI から起動されたインスタンスで使用する仮想化タイプを選択してください。詳細については、[仮想化タイプ](ComponentsAMIs.md#virtualization_types) を参照してください。

   1. (準仮想化の場合のみ) **[カーネル ID]** で、イメージのオペレーティングシステムのカーネルを選択してください。インスタンスのルートボリュームのスナップショットを使用している場合、元のインスタンスと同じカーネル ID を選択してください。不明な場合は、デフォルトのカーネルを使用してください。

   1. (準仮想仮想化の場合のみ) **[RAM ディスク ID]** で、イメージの RAM ディスクを選択してください。カーネルを選択した場合は、サポートするドライバーとともに特定の RAM ディスクを選択しなければならない可能性があります。

   1. **[ブートモード]** では、イメージのブートモードを選択するか **[デフォルトを使用]** を選択し、この AMI でインスタンスを起動したときにインスタンスタイプでサポートされているブートモードで起動するようにします。詳細については、「[Amazon EC2 AMI のブートモードを設定する](set-ami-boot-mode.md)」を参照してください。

   1. (オプション) **[ブロックデバイスマッピング]** で、ルートボリュームをカスタマイズし、データボリュームを追加します。

      ボリュームごとに、サイズ、タイプ、パフォーマンス特性、終了時の削除の動作、および暗号化ステータスを指定できます。ルートボリュームについては、サイズをスナップショットのサイズより小さくすることはできません。ボリュームタイプには、汎用 SSD `gp3` がデフォルトで選択されています。

   1. (オプション) **[タグ]** で、新しい AMI に 1 つ以上のタグを追加できます。(オプション) タグを追加するには、[**タグ追加**] を選択し、そのタグのキーと値を入力してください。各タグについて、これを繰り返します。

   1. AMI を作成する準備ができたら、**[イメージの作成]** を選択してください。

1. (Windows、RedHat、SUSE、SQL Server のみ) 正しい請求情報が適用されたかどうかを確認するには、新しい AMI の **[プラットフォームの詳細]** フィールドを確認します。フィールドが空であるか、所定のオペレーティングシステムコード (**Windows** や **RedHat** など) と一致しない場合、AMI の作成は失敗しているため、この AMI を破棄して「[インスタンスから AMI を作成する](#how-to-create-ebs-ami)」の手順に従う必要があります。

------
#### [ AWS CLI ]

**AWS CLI を使用してスナップショットから AMI を作成するには**  
[register-image](https://docs.aws.amazon.com/cli/latest/reference/ec2/register-image.html) コマンドを使用します。

```
aws ec2 register-image \
    --name my-image \
    --root-device-name /dev/xvda \
    --block-device-mappings DeviceName=/dev/xvda,Ebs={SnapshotId=snap-0db2cf683925d191f}
```

------
#### [ PowerShell ]

**PowerShell を使用してスナップショットから AMI を作成するには**  
[Register-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Register-EC2Image.html) コマンドレットを使用します。

```
$block = @{SnapshotId=snap-0db2cf683925d191f}
Register-EC2Image `
    -Name my-image `
    -RootDeviceName /dev/xvda `
    -BlockDeviceMapping @{DeviceName="/dev/xvda";Ebs=$block}
```

------

# Amazon S3-backed AMI を作成する
<a name="creating-an-ami-instance-store"></a>

インスタンスの起動時に指定する AMI によってルートボリュームのタイプが決まります。

Amazon S3-backed Linux AMI を作成するには、既存の Amazon S3-backed Linux AMI から起動したインスタンスから始めます。ニーズに合わせてインスタンスをカスタマイズしたら、ボリュームをバンドルし、新しい AMI を登録します。新しい AMI を使用して、カスタマイズした新しいインスタンスを起動できます。

Windows AMI はルートボリュームのインスタンスストアをサポートしていないため、Amazon S3-backed Windows AMI を作成することはできません。

**重要**  
インスタンスストアボリュームをルートボリュームとしてサポートし、Amazon S3-backed AMI を必要とするインスタンスタイプは C1、C3、D2、I2、M1、M2、M3、R3、X1 のみです。

AMI の作成プロセスは、Amazon EBS-backed AMI の場合とは異なります。詳細については、「[Amazon EBS-backed AMI を作成する](creating-an-ami-ebs.md)」を参照してください。

**Topics**
+ [AMI 作成の概要](#process-creating-an-ami-instance-store)
+ [前提条件](#bundle-ami-prerequisites)
+ [Amazon Linux インスタンスから AMI を作成する](#amazon_linux_instructions)
+ [Amazon EC2 AMI ツールのセットアップ](set-up-ami-tools.md)
+ [Amazon EC2 AMI ツールリファレンス](ami-tools-commands.md)
+ [Amazon S3-backed AMI を EBS-backed AMI に変換する](Using_ConvertingS3toEBS.md)

## AMI 作成の概要
<a name="process-creating-an-ami-instance-store"></a>

次の図は、インスタンスストアのルートボリュームを持つインスタンスから AMI を作成するプロセスをまとめたものです。

![\[Amazon S3-backed AMI の作成\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/ami_create_instance_store.png)


最初に、作成する AMI と同様の AMI からインスタンスを起動します。インスタンスに接続し、それをカスタマイズできます。インスタンスのカスタマイズが終わったら、それをバンドルできます。バンドルプロセスが完了するには数分間かかります。プロセスが完了すると、イメージマニフェスト (`image.manifest.xml`) とルートボリューム用のテンプレートを含むファイル (`image.part.`*xx*) で構成されるバンドルが作成されます。次に、バンドルを Amazon S3 バケットにアップロードし、AMI を登録します。

**注記**  
Amazon S3-backed Linux AMI の S3 バケットにオブジェクトをアップロードするには、バケットで ACL を有効にする必要があります。有効にしない場合、Amazon EC2 はアップロードするオブジェクトに ACL を設定できません。宛先のバケットが S3 オブジェクトの所有権のバケット所有者強制設定を使用している場合、ACL が無効になるため、この方法は使えません。詳細については、「[バケットのオブジェクト所有権のコントロールと ACL の無効化](https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html)」を参照してください。

お客様が新しい AMI を使用してインスタンスを起動すると、Amazon はユーザーが Amazon S3 にアップロードしたバンドルを使用してインスタンスのルートボリュームを作成します。Amazon S3 のバンドルで使用されるストレージ領域については、お客様がその領域を削除するまでアカウントに料金が発生します。詳細については、「[Amazon EC2 AMI の登録を解除する](deregister-ami.md)」を参照してください。

ルートボリュームに加えて、インスタンスストアボリュームをインスタンスに追加した場合、新しい AMI のブロックデバイスマッピングにこれらのボリュームの情報が含まれ、新しい AMI から起動するインスタンスのブロックデバイスマッピングに自動的にこれらのボリュームの情報が含まれます。詳細については、「[Amazon EC2 インスタンスでのボリュームのブロックデバイスマッピング](block-device-mapping-concepts.md)」を参照してください。

## 前提条件
<a name="bundle-ami-prerequisites"></a>

AMI を作成するには、最初に次のタスクを完了する必要があります。
+ AMI ツールをインストールします。詳細については、[Amazon EC2 AMI ツールのセットアップ](set-up-ami-tools.md) を参照してください。
+ AWS CLI をインストールします。詳細については、「[AWS CLIを使い始める](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html)」を参照してください。
+ バンドルに S3 バケットがあり、バケットに ACL が有効になっていることを確認します。ACL の設定の詳細については、「[ACL の設定](https://docs.aws.amazon.com/AmazonS3/latest/userguide/managing-acls.html)」を参照してください。
  + AWS マネジメントコンソール を使用して S3 バケットを作成するには、[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) で Amazon S3 コンソールを開き、**[バケツ作成]** を選択してください。
  + AWS CLI で S3 バケットを作成するには、「[mb](https://docs.aws.amazon.com/cli/latest/reference/s3/mb.html)」コマンドを使用できます。インストールしている AMI ツールのバージョンが 1.5.18 以降の場合は、`ec2-upload-bundle` コマンドを使用して S3 バケットを作成することもできます。詳細については、「[ec2-upload-bundle](ami-tools-commands.md#ami-upload-bundle)」を参照してください。
+ バンドル内のファイルが S3 バケットで暗号化されていないことを確認します。AMI に暗号化が必要な場合は、代わりに EBS-backed AMI を使用できます。詳細については、「[EBS-backed AMI での暗号化の利用](AMIEncryption.md)」を参照してください。
+ AWS アカウント ID があることを確認します。詳細については、「AWS アカウント管理リファレンスガイド」の「[AWS アカウント 識別表示](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-identifiers.html)」を参照してください。
+ AWS CLI を使用するのに必要な認証情報があることを確認します。詳細については、*AWS Command Line Interface ユーザーガイド*の「[AWS CLI に対する認証とアクセスコントロール](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-authentication.html)」を参照してください。
+ X.509 証明書および対応するプライベートキーがあることを確認します。
  + X.509 証明書を作成する必要がある場合は、「[署名証明書の管理](set-up-ami-tools.md#ami-tools-managing-certs)」を参照してください。X.509 証明書とプライベートキーは、AMI の暗号化/復号に使用されます。
  + [中国 (北京)] `$EC2_AMITOOL_HOME/etc/ec2/amitools/cert-ec2-cn-north-1.pem` 証明書を使用します。
  + [AWS GovCloud (米国 – 西部)] `$EC2_AMITOOL_HOME/etc/ec2/amitools/cert-ec2-gov.pem` 証明書を使用します。
+ インスタンスに接続し、カスタマイズします。例えば、ソフトウェアとアプリケーションをインストールしたり、データをコピーしたり、一時ファイルを削除したり、Linux 設定を変更したりできます。

## Amazon Linux インスタンスから AMI を作成する
<a name="amazon_linux_instructions"></a>

次の手順では、Amazon Linux 1 を実行するインスタンスストアのルートボリュームを持つインスタンスから AMI を作成する方法について説明します。他の Linux ディストリビューションを実行するインスタンスでは機能しない可能性があります。

**AMI ツールの使用準備を整えるには (HVM インスタンスのみ)**

1. AMI ツールでは、GRUB のレガシーが正常に起動する必要があります。次のコマンドを使用して GRUB をインストールします。

   ```
   [ec2-user ~]$ sudo yum install -y grub
   ```

1. 次のコマンドを使用して、パーティション管理パッケージをインストールします。

   ```
   [ec2-user ~]$ sudo yum install -y gdisk kpartx parted
   ```

**インスタンスストアのルートボリュームを持つ Amazon Linux インスタンスから AMI を作成するには**

この手順では、「[前提条件](#bundle-ami-prerequisites)」に記載された前提条件が満たされていることを前提としています。

次のコマンドでは、*ユーザー入力プレースホルダー*をユーザー自身の情報で置き換えます。

1. インスタンスに認証情報をアップロードします。Amazon ではこれらの認証情報を使用して、お客様と Amazon EC2 だけがお客様の AMI にアクセスできるようにします。

   1. 次のように、認証情報のための一時ディレクトリをインスタンスに作成します。

      ```
      [ec2-user ~]$ mkdir /tmp/cert
      ```

      それにより、作成したイメージから認証情報を除外できます。

   1. [scp](linux-file-transfer-scp.md) などの安全なコピーツールを使用して、コンピュータからインスタンスの `/tmp/cert` ディレクトリに X.509 証明書と対応するプライベートキーをコピーします。次の `-i my-private-key.pem` コマンドの **scp** オプションは、X.509 プライベートキーではなく、SSH でインスタンスに接続するために使用するプライベートキーです。次に例を示します。

      ```
      you@your_computer:~ $ scp -i my-private-key.pem /path/to/pk-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem /path/to/cert-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem ec2-user@ec2-203-0-113-25.compute-1.amazonaws.com:/tmp/cert/
      pk-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem  100%  717     0.7KB/s   00:00
      cert-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem  100%  685     0.7KB/s   00:00
      ```

   または、これらがプレーンテキストファイルの場合、証明書とキーをテキストエディタで開き、コンテンツを `/tmp/cert` の新しいファイルにコピーできます。

1. <a name="step_with_bundle_path_amazon_linux"></a>インスタンス内から [ec2-bundle-vol](ami-tools-commands.md#ami-bundle-vol) コマンドを実行して、Amazon S3 にアップロードするバンドルを準備します。`-e` オプションを指定して、認証情報を保存するディレクトリを除外します。デフォルトでは、バンドルプロセスで機密情報を含んでいる可能性があるファイルを除外します。ファイルには、`*.sw`、`*.swo`、`*.swp`、`*.pem`、`*.priv`、`*id_rsa*`、`*id_dsa*`、`*.gpg`、`*.jks`、`*/.ssh/authorized_keys`、`*/.bash_history` などがあります。これらのファイルをすべて含めるには、`--no-filter` オプションを使用します。これらのファイルの一部を含めるには、`--include` オプションを使用します。
**重要**  
AMI バンドルプロセスは、デフォルトで、ルートボリュームを表す `/tmp` ディレクトリに、圧縮され暗号化された一連のファイルを作成します。バンドルを格納するのに十分な空きディスク領域が `/tmp` にない場合、`-d /path/to/bundle/storage` オプションを使用して、バンドルを格納する別の場所を指定する必要があります。インスタンスによっては、エフェメラルストレージが `/mnt` または `/media/ephemeral0` にマウントされて使用可能になっている場合があります。または、バンドルを格納する新しい Amazon EBS ボリュームを作成、アタッチ、およびマウントすることもできます。詳細については、「Amazon EBS ユーザーガイド」の「[Amazon EKS ボリュームの作成](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-creating-volume.html)」を参照してください。

   1. **ec2-bundle-vol** コマンドは、root として実行する必要があります。ほとんどのコマンドで、**sudo** を使用することでアクセス許可を昇格させることができますが、この場合は、環境変数を維持するために **sudo -E su** を実行する必要があります。

      ```
      [ec2-user ~]$ sudo -E su
      ```

      これで、bash プロンプトにより root ユーザーとして識別されるようになったことと、root シェルにいることを示すハッシュタグにドル記号が置き換えられたことに注意してください。

      ```
      [root ec2-user]#
      ```

   1. AMI のバンドルを作成するには、次のように [ec2-bundle-vol](ami-tools-commands.md#ami-bundle-vol) コマンドを実行します。

      ```
      [root ec2-user]# ec2-bundle-vol -k /tmp/cert/pk-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem -c /tmp/cert/cert-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem -u 123456789012 -r x86_64 -e /tmp/cert --partition gpt
      ```
**注記**  
中国 (北京) および AWS GovCloud (米国 – 西部) リージョンについては、`--ec2cert` パラメータを使用し、[前提条件](#bundle-ami-prerequisites)に従って証明書を指定します。

      イメージの作成には数分かかります。このコマンドが完了したら、`/tmp` (またはデフォルト以外の) ディレクトリにバンドルが含まれます (`image.manifest.xml`、および複数の `image.part.`*xx* ファイル)。

   1. root シェルを終了します。

      ```
      [root ec2-user]# exit
      ```

1. (オプション) インスタンスストアをさらに追加するには、AMI 用の `image.manifest.xml` ファイルで、ブロックデバイスマッピングを編集します。詳細については、[Amazon EC2 インスタンスでのボリュームのブロックデバイスマッピング](block-device-mapping-concepts.md) を参照してください。

   1. `image.manifest.xml` ファイルのバックアップを作成します。

      ```
      [ec2-user ~]$ sudo cp /tmp/image.manifest.xml /tmp/image.manifest.xml.bak
      ```

   1. `image.manifest.xml` ファイルの形式を変更し、読み取りと編集が簡単になるようにします。

      ```
      [ec2-user ~]$ sudo xmllint --format /tmp/image.manifest.xml.bak > /tmp/image.manifest.xml
      ```

   1. テキストエディタで `image.manifest.xml` のブロックデバイスマッピングを編集します。次の例は、`ephemeral1` インスタンスストアボリュームの新しいエントリを示しています。
**注記**  
無効な種類のファイルの一覧については、「[ec2-bundle-vol](ami-tools-commands.md#ami-bundle-vol)」を参照してください。

      ```
          <block_device_mapping>
            <mapping>
              <virtual>ami</virtual>
              <device>sda</device>
            </mapping>
            <mapping>
              <virtual>ephemeral0</virtual>
              <device>sdb</device>
            </mapping>
            <mapping>
              <virtual>ephemeral1</virtual>
              <device>sdc</device>
            </mapping>
            <mapping>
              <virtual>root</virtual>
              <device>/dev/sda1</device>
            </mapping>
          </block_device_mapping>
      ```

   1. `image.manifest.xml` ファイルを保存し、テキストエディタを終了します。

1. バンドルを Amazon S3 にアップロードするには、次のように [ec2-upload-bundle](ami-tools-commands.md#ami-upload-bundle) コマンドを実行します。

   ```
   [ec2-user ~]$ ec2-upload-bundle -b amzn-s3-demo-bucket/bundle_folder/bundle_name -m /tmp/image.manifest.xml -a your_access_key_id -s your_secret_access_key
   ```
**重要**  
US East (N. Virginia) 以外のリージョンで AMI を登録するには、`--region` オプションと、すでにターゲットリージョンに存在するバケットパス、またはターゲットリージョンで作成できる一意のバケットパスの両方でターゲットリージョンを指定する必要があります。

1. (オプション) バンドルを Amazon S3 にアップロードしたら、次の `/tmp` コマンドを使用して、インスタンスの **rm** ディレクトリからバンドルを削除できます。

   ```
   [ec2-user ~]$ sudo rm /tmp/image.manifest.xml /tmp/image.part.* /tmp/image
   ```
**重要**  
`-d /path/to/bundle/storage` で [Step 2](#step_with_bundle_path_amazon_linux) オプションを使用してパスを指定した場合は、`/tmp` ではなくそのパスを使用します。

1. AMI を登録するには、次のように [register-image](https://docs.aws.amazon.com/cli/latest/reference/ec2/register-image.html) コマンドを実行します。

   ```
   [ec2-user ~]$ aws ec2 register-image --image-location amzn-s3-demo-bucket/bundle_folder/bundle_name/image.manifest.xml --name AMI_name --virtualization-type hvm
   ```
**重要**  
[ec2-upload-bundle](ami-tools-commands.md#ami-upload-bundle) コマンドでリージョンを以前に指定した場合は、このコマンドでもう一度そのリージョンを指定します。

# Amazon EC2 AMI ツールのセットアップ
<a name="set-up-ami-tools"></a>

AMI ツールを使用して、Amazon S3-backed Linux AMI を作成および管理できます。ツールを使用するには、Linux インスタンスにインストールする必要があります。AMI ツールは RPM として使用できるとともに、RPM をサポートしていない Linux ディストリビューションでは .zip ファイルとして使用できます。

**RPM を使用して AMI ツールを設定するには**

1. yum などの Linux ディストリビューション用のパッケージマネージャを使用して Ruby をインストールします。次に例を示します。

   ```
   [ec2-user ~]$ sudo yum install -y ruby
   ```

1. wget や curl などのツールを使用して RPM ファイルをダウンロードします。次に例を示します。

   ```
   [ec2-user ~]$ wget https://s3.amazonaws.com/ec2-downloads/ec2-ami-tools.noarch.rpm
   ```

1. 次のコマンドを使用して RPM ファイルの署名を確認する:

   ```
   [ec2-user ~]$ rpm -K ec2-ami-tools.noarch.rpm
   ```

   上のコマンドは、ファイルの SHA1 および MD5 ハッシュが `OK.` であることを示しています。ハッシュが `NOT OK` であることをコマンドが示している場合、次のコマンドを使用してファイルのヘッダー SHA1 および MD5 ハッシュを表示します。

   ```
   [ec2-user ~]$ rpm -Kv ec2-ami-tools.noarch.rpm
   ```

   次に、ファイルのヘッダー SHA1 および MD5 ハッシュを、以下の検証済み AMI ツールハッシュと比較し、ファイルの正統性を確認します。
   + ヘッダー SHA1: a1f662d6f25f69871104e6a62187fa4df508f880
   + MD5: 9faff05258064e2f7909b66142de6782

   ファイルのヘッダー SHA1 および MD5 ハッシュが検証済み AMI ツールハッシュと一致する場合、次のステップに進みます。

1. 次のコマンドを使用して RPM をインストールします。

   ```
   [ec2-user ~]$ sudo yum install ec2-ami-tools.noarch.rpm
   ```

1. [ec2-ami-tools-version](ami-tools-commands.md#ami-tools-version) コマンドを使用してインストールした AMI ツールを検証します。

   ```
   [ec2-user ~]$ ec2-ami-tools-version
   ```
**注記**  
[cannot load such file -- ec2/amitools/version (LoadError)] などのロードエラーを受信した場合は、次のステップを実行し、AMI ツールをインストールした場所を `RUBYLIB` パスに追加します。

1. (オプション) 前のステップでエラーが発生した場合、AMI ツールをインストールした場所を `RUBYLIB` パスに追加します。

   1. 追加するパスを調べるには、次のコマンドを実行します。

      ```
      [ec2-user ~]$ rpm -qil ec2-ami-tools | grep ec2/amitools/version
      /usr/lib/ruby/site_ruby/ec2/amitools/version.rb
      /usr/lib64/ruby/site_ruby/ec2/amitools/version.rb
      ```

      上記の例では、以前のロードエラーから失われたファイルは `/usr/lib/ruby/site_ruby` および `/usr/lib64/ruby/site_ruby` にあります。

   1. 前のステップの場所を `RUBYLIB` パスに追加します。

      ```
      [ec2-user ~]$ export RUBYLIB=$RUBYLIB:/usr/lib/ruby/site_ruby:/usr/lib64/ruby/site_ruby
      ```

   1. [ec2-ami-tools-version](ami-tools-commands.md#ami-tools-version) コマンドを使用してインストールした AMI ツールを検証します。

      ```
      [ec2-user ~]$ ec2-ami-tools-version
      ```

**zip ファイルを使用して AMI ツールを設定するには**

1. Ruby をインストールし、**apt-get** など、Linux ディストリビューション用のパッケージマネージャを使用して解凍します。次に例を示します。

   ```
   [ec2-user ~]$ sudo apt-get update -y && sudo apt-get install -y ruby unzip
   ```

1. wget や curl などのツールを使用して .zip ファイルをダウンロードします。次に例を示します。

   ```
   [ec2-user ~]$ wget https://s3.amazonaws.com/ec2-downloads/ec2-ami-tools.zip
   ```

1. `/usr/local/ec2` など、適切なインストールディレクトリにファイルを解凍します。

   ```
   [ec2-user ~]$ sudo mkdir -p /usr/local/ec2
   $ sudo unzip ec2-ami-tools.zip -d /usr/local/ec2
   ```

   .zip ファイルには、フォルダ (ec2-ami-tools-*x*.*x*.*x*) が含まれます。ここで、*x*.*x*.*x* はツールのバージョン番号 (例: `ec2-ami-tools-1.5.7`) です。

1. `EC2_AMITOOL_HOME` 環境変数を、ツールのインストールディレクトリに設定します。次に例を示します。

   ```
   [ec2-user ~]$ export EC2_AMITOOL_HOME=/usr/local/ec2/ec2-ami-tools-x.x.x
   ```

1. ツールを `PATH` 環境変数に追加します。次に例を示します。

   ```
   [ec2-user ~]$ export PATH=$EC2_AMITOOL_HOME/bin:$PATH
   ```

1. [ec2-ami-tools-version](ami-tools-commands.md#ami-tools-version) コマンドを使用してインストールした AMI ツールを検証できます。

   ```
   [ec2-user ~]$ ec2-ami-tools-version
   ```

## 署名証明書の管理
<a name="ami-tools-managing-certs"></a>

AMI ツールの特定のコマンドでは、デジタル署名用証明書 (X.509 証明書とも呼ばれる) が必要です。証明書を作成し、AWS にアップロードする必要があります。例えば、証明書の作成に OpenSSL などのサードパーティ製のツールを使用できます。

**デジタル署名用証明書を作成するには**

1. OpenSSL をインストールおよび設定します。

1. プライベートキーを `openssl genrsa` コマンドを使用して作成し、出力を `.pem` ファイルで保存します。2048 ビットまたは 4096 ビット RSA キーの作成を推奨しています。

   ```
   openssl genrsa 2048 > private-key.pem
   ```

1. `openssl req` コマンドを使用して、証明書を作成します。

   ```
   openssl req -new -x509 -nodes -sha256 -days 365 -key private-key.pem -outform PEM -out certificate.pem
   ```

証明書を AWS にアップロードするには、[upload-signing-certificate](https://docs.aws.amazon.com/cli/latest/reference/iam/upload-signing-certificate.html) コマンドを使用します。

```
aws iam upload-signing-certificate --user-name user-name --certificate-body file://path/to/certificate.pem
```

ユーザーの証明書を一覧表示するには、[list-signing-certificates](https://docs.aws.amazon.com/cli/latest/reference/iam/list-signing-certificates.html) コマンドを使用します。

```
aws iam list-signing-certificates --user-name user-name
```

ユーザーのデジタル署名用証明書を無効化または再有効化するには、[update-signing-certificate](https://docs.aws.amazon.com/cli/latest/reference/iam/update-signing-certificate.html) コマンドを使用します。次のコマンドは証明書を無効にします。

```
aws iam update-signing-certificate --certificate-id OFHPLP4ZULTHYPMSYEX7O4BEXAMPLE --status Inactive --user-name user-name
```

証明書を削除するには、[delete-signing-certificate](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-signing-certificate.html) コマンドを使用します。

```
aws iam delete-signing-certificate --user-name user-name --certificate-id OFHPLP4ZULTHYPMSYEX7O4BEXAMPLE
```

# Amazon EC2 AMI ツールリファレンス
<a name="ami-tools-commands"></a>

AMI ツールコマンドを使用して、Amazon S3-backed Linux AMI を作成および管理できます。ツールをセットアップする方法は、「[Amazon EC2 AMI ツールのセットアップ](set-up-ami-tools.md)」を参照してください。

アクセスキーについては、「*IAM ユーザーガイド*」の「[Managing access keys for IAM users](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html)」を参照してください。

**Topics**
+ [ec2-ami-tools-version](#ami-tools-version)
+ [ec2-bundle-image](#ami-bundle-image)
+ [ec2-bundle-vol](#ami-bundle-vol)
+ [ec2-delete-bundle](#ami-delete-bundle)
+ [ec2-download-bundle](#ami-download-bundle)
+ [ec2-migrate-manifest](#ami-migrate-manifest)
+ [ec2-unbundle](#ami-unbundle)
+ [ec2-upload-bundle](#ami-upload-bundle)
+ [AMI ツール用の一般的なオプション](#common-args-ami)

## ec2-ami-tools-version
<a name="ami-tools-version"></a>

### 説明
<a name="ami-tools-version-description"></a>

AMI ツールのバージョンについて説明します。

### 構文
<a name="ami-tools-version-request"></a>

**ec2-ami-tools-version**

### Output
<a name="ami-tools-version-output"></a>

バージョン情報。

### 例
<a name="ami-tools-version-response"></a>

このコマンド例では、使用中の AMI ツールのバージョン情報を表示します。

```
[ec2-user ~]$ ec2-ami-tools-version
1.5.2 20071010
```

## ec2-bundle-image
<a name="ami-bundle-image"></a>

### 説明
<a name="bundle-image-description"></a>

ループバックファイル内に作成されるオペレーティングシステムイメージから Amazon S3-backed Linux AMI を作成します。

### 構文
<a name="bundle-image-request"></a>

****ec2-bundle-image** -c *path* -k *path* -u *account* -i *path* [-d *path*] [--ec2cert *path*] [-r *architecture*] [--productcodes *code1*,*code2*,...] [-B *mapping*] [-p *prefix*]** 

### オプション
<a name="bundle-image-parameters"></a>

`-c, --cert` *パス*  
ユーザーの PEM エンコード RSA パブリックキー証明書ファイル。  
必須: はい

`-k, --privatekey` *パス*  
PEM エンコードされる RSA キーファイルへのパス。このバンドルをバンドル解除するには、このキーを指定する必要があるため、安全な場所に保管してください。このキーは AWS アカウントに登録されている必要はありません。  
必須: はい

`-u, --user ` *アカウント*  
ダッシュのない、ユーザーの AWS アカウント ID。  
必須: はい

`-i, --image` *パス*  
バンドルするイメージへのパス。  
必須: はい

`-d, --destination` *パス*  
バンドルを作成するディレクトリ。  
デフォルト: `/tmp`  
必須: いいえ

`--ec2cert` *パス*  
イメージマニフェストの暗号化に使用される Amazon EC2 X.509 パブリックキー証明書へのパス。  
`us-gov-west-1` および `cn-north-1` リージョンではデフォルト以外のパブリックキー証明書を使用し、その証明書へのパスは、このオプションで指定する必要があります。証明書へのパスは、AMI ツールのインストール方法によって異なります。Amazon Linux の場合、証明書の場所は `/opt/aws/amitools/ec2/etc/ec2/amitools/` です。「[Amazon EC2 AMI ツールのセットアップ](set-up-ami-tools.md)」の RPM または ZIP ファイルから AMI ツールをインストールした場合、証明書の場所は `$EC2_AMITOOL_HOME/etc/ec2/amitools/` です。  
必須: `us-gov-west-1` および `cn-north-1` リージョンのみ。

`-r, --arch` *アーキテクチャ*  
イメージアーキテクチャ。コマンドラインでアーキテクチャを指定しない場合、バンドルの開始時に入力を求められます。  
有効な値: `i386` \$1 `x86_64`  
必須: いいえ

`--productcodes` *code1、code2、…*  
登録時にイメージにアタッチする、カンマ区切りの製品コード。  
必須: いいえ

`-B, --block-device-mapping` *マッピング*  
インスタンスタイプが指定されたデバイスをサポートする場合に、この AMI のインスタンスにブロックデバイスを公開する方法を定義します。  
キーと値のペアのカンマ区切りのペアを指定します。名キーは仮想名であり、各値は対応するデバイス名です。仮想名には以下が含まれています。  
+ `ami` — インスタンスによって判断されるルートファイルシステムデバイス
+ `root` — カーネルによって判断されるルートファイルシステムデバイス
+ `swap` — インスタンスによって判断されるスワップデバイス
+ `ephemeralN` — N 番目のインスタンスストアボリューム
必須: いいえ

`-p, --prefix`*prefix*  
バンドル済み AMI ファイルのファイル名プレフィクス。  
デフォルト: イメージファイルの名前。例えば、イメージパスが `/var/spool/my-image/version-2/debian.img` である場合、デフォルトのプレフィクスは `debian.img` です。  
必須: いいえ

`--kernel` *kernel\$1id*  
廃止。カーネルを設定するには、[register-image](https://docs.aws.amazon.com/cli/latest/reference/ec2/register-image.html) を使用します。  
必須: いいえ

`--ramdisk` *ramdisk\$1id*  
廃止。必要に応じて、[register-image](https://docs.aws.amazon.com/cli/latest/reference/ec2/register-image.html) を使用して RAM ディスクを設定します。  
必須: いいえ

### Output
<a name="bundle-image-output"></a>

バンドルプロセスのステージとステータスを記述するステータスメッセージ。

### 例
<a name="bundle-image-response"></a>

この例は、ループバックファイルで作成されたオペレーティングシステムイメージから、バンドルされた AMI を作成します。

```
[ec2-user ~]$ ec2-bundle-image -k pk-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem -c cert-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem -u 111122223333 -i image.img -d bundled/ -r x86_64
Please specify a value for arch [i386]: 
Bundling image file...
Splitting bundled/image.gz.crypt...
Created image.part.00
Created image.part.01
Created image.part.02
Created image.part.03
Created image.part.04
Created image.part.05
Created image.part.06
Created image.part.07
Created image.part.08
Created image.part.09
Created image.part.10
Created image.part.11
Created image.part.12
Created image.part.13
Created image.part.14
Generating digests for each part...
Digests generated.
Creating bundle manifest...
ec2-bundle-image complete.
```

## ec2-bundle-vol
<a name="ami-bundle-vol"></a>

### 説明
<a name="bundle-vol-description"></a>

インスタンスのルートボリュームのコピーを圧縮、暗号化、署名することで、Amazon S3-backed Linux AMI を作成します。

Amazon EC2 はインスタンスから製品コード、カーネル設定、RAM ディスク設定、およびブロックデバイスマッピングを継承しようとします。

デフォルトでは、バンドルプロセスで機密情報を含んでいる可能性があるファイルを除外します。ファイルには、`*.sw`、`*.swo`、`*.swp`、`*.pem`、`*.priv`、`*id_rsa*`、`*id_dsa*`、`*.gpg`、`*.jks`、`*/.ssh/authorized_keys`、`*/.bash_history` などがあります。これらのファイルをすべて含めるには、`--no-filter` オプションを使用します。これらのファイルの一部を含めるには、`--include` オプションを使用します。

詳細については、[Amazon S3-backed AMI を作成する](creating-an-ami-instance-store.md) を参照してください。

### 構文
<a name="bundle-vol-request"></a>

****ec2-bundle-vol** -c *path* -k *path* -u *account* [-d *path*] [--ec2cert *path*] [-r *architecture*] [--productcodes *code1*,*code2*,...] [-B *mapping*] [--all] [-e *directory1*,*directory2*,...] [-i *file1*,*file2*,...] [--no-filter] [-p *prefix*] [-s *size*] [--[no-]inherit] [-v *volume*] [-P *type*] [-S *script*] [--fstab *path*] [--generate-fstab] [--grub-config *path*]** 

### オプション
<a name="bundle-vol-parameters"></a>

`-c, --cert` *パス*  
ユーザーの PEM エンコード RSA パブリックキー証明書ファイル。  
必須: はい

`-k, --privatekey ` *パス*   
ユーザーの PEM エンコード RSA キーファイルへのパス。  
必須: はい

`-u, --user` *アカウント*  
ダッシュのない、ユーザーの AWS アカウント ID。  
必須: はい

`-d, --destination` *送信先*  
バンドルを作成するディレクトリ。  
デフォルト: `/tmp`  
必須: いいえ

`--ec2cert` *パス*  
イメージマニフェストの暗号化に使用される Amazon EC2 X.509 パブリックキー証明書へのパス。  
`us-gov-west-1` および `cn-north-1` リージョンではデフォルト以外のパブリックキー証明書を使用し、その証明書へのパスは、このオプションで指定する必要があります。証明書へのパスは、AMI ツールのインストール方法によって異なります。Amazon Linux の場合、証明書の場所は `/opt/aws/amitools/ec2/etc/ec2/amitools/` です。「[Amazon EC2 AMI ツールのセットアップ](set-up-ami-tools.md)」の RPM または ZIP ファイルから AMI ツールをインストールした場合、証明書の場所は `$EC2_AMITOOL_HOME/etc/ec2/amitools/` です。  
必須: `us-gov-west-1` および `cn-north-1` リージョンのみ。

`-r, --arch ` *アーキテクチャ*  
イメージアーキテクチャ。コマンドラインでこれを指定しない場合、バンドルの開始時に入力を求められます。  
有効な値: `i386` \$1 `x86_64`  
必須: いいえ

`--productcodes` *code1、code2、…*  
登録時にイメージにアタッチする、カンマ区切りの製品コード。  
必須: いいえ

`-B, --block-device-mapping` *マッピング*  
インスタンスタイプが指定されたデバイスをサポートする場合に、この AMI のインスタンスにブロックデバイスを公開する方法を定義します。  
キーと値のペアのカンマ区切りのペアを指定します。名キーは仮想名であり、各値は対応するデバイス名です。仮想名には以下が含まれています。  
+ `ami` — インスタンスによって判断されるルートファイルシステムデバイス
+ `root` — カーネルによって判断されるルートファイルシステムデバイス
+ `swap` — インスタンスによって判断されるスワップデバイス
+ `ephemeralN` — N 番目のインスタンスストアボリューム
必須: いいえ

`-a, --all`  
リモートでマウントされたファイルシステムのディレクトリを含めて、すべてのディレクトリをバンドルします。  
必須: いいえ

`-e, --exclude ` *directory1、directory2、…*  
バンドルオペレーションから除外する絶対ディレクトリパスとファイルのリスト。このパラメータは `--all` オプションを上書きします。除外を指定すると、パラメータとともにリストされたディレクトリとサブディレクトリは、ボリュームにバンドルされません。  
必須: いいえ

`-i, --include ` *file1、file2、…*  
バンドルオペレーションに含めるファイルのリスト。指定されたファイルは、それ以外の場合は AMI から除外されます。これは、機密情報が含まれる可能性があるためです。  
必須: いいえ

`--no-filter`  
指定した場合、AMI からファイルは除外されません。これは、機密情報が含まれる可能性があるためです。  
必須: いいえ

`-p, --prefix `*prefix*  
バンドル済み AMI ファイルのファイル名プレフィクス。  
デフォルト: `image`  
必須: いいえ

`-s, --size` *サイズ*  
作成するイメージファイルの MB (1024 \$1 1024 バイト) 単位のサイズ。最大サイズは 10240 MB です。  
デフォルト: 10240  
必須: いいえ

`--[no-]inherit`  
イメージがインスタンスのメタデータを継承するかどうかを示します (デフォルトでは継承します)。`--inherit` を有効にし、インスタンスメタデータにアクセスできない場合、バンドルは失敗します。  
必須: いいえ

`-v, --volume ` *ボリューム*  
バンドルを作成する、マウントされたボリュームへの絶対パス。  
デフォルト: ルートディレクトリ (/)。  
必須: いいえ

`-P, --partition` *type*  
ディスクイメージでパーティションテーブルを使用するかどうかを示します。パーティションテーブルタイプを指定しない場合、デフォルトでは、該当する場合はボリュームの親ブロックデバイスで使用されるタイプになります。それ以外の場合、デフォルトは `gpt` です。  
有効な値: `mbr` \$1 `gpt` \$1 `none`  
必須: いいえ

`-S, --script` *スクリプト*  
バンドルの直前に実行するカスタマイズスクリプト。スクリプトでは単一の引数である、ボリュームのマウントポイントが予期されます。  
必須: いいえ

`--fstab` *パス*  
イメージにバンドルする fstab へのパス。これを指定しない場合、Amazon EC2 は /etc/fstab をバンドルします。  
必須: いいえ

`--generate-fstab`  
Amazon EC2 で提供される fstab を使用してボリュームをバンドルします。  
必須: いいえ

`--grub-config`  
イメージにバンドルする別の grub 設定ファイルへのパス。デフォルトでは、`ec2-bundle-vol` は `/boot/grub/menu.lst` または `/boot/grub/grub.conf` が、クローンされたイメージ上に存在することを想定します。このオプションにより、別の grub 設定ファイルへのパスを指定することができ、このファイルはデフォルトに上書きしてコピーされます (存在する場合)。  
必須: いいえ

`--kernel` *kernel\$1id*  
廃止。カーネルを設定するには、[register-image](https://docs.aws.amazon.com/cli/latest/reference/ec2/register-image.html) を使用します。  
必須: いいえ

`--ramdisk`*ramdisk\$1id*  
廃止。必要に応じて、[register-image](https://docs.aws.amazon.com/cli/latest/reference/ec2/register-image.html) を使用して RAM ディスクを設定します。  
必須: いいえ

### Output
<a name="bundle-vol-output"></a>

バンドルのステージとステータスを説明するステータスメッセージ。

### 例
<a name="bundle-vol-response"></a>

この例では、ローカルマシンのルートファイルシステムのスナップショットを圧縮、暗号化、署名することで、バンドルされた AMI を作成します。

```
[ec2-user ~]$ ec2-bundle-vol -d /mnt -k pk-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem -c cert-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem -u 111122223333 -r x86_64
  Copying / into the image file /mnt/image...
  Excluding:
       sys
       dev/shm
       proc
       dev/pts
       proc/sys/fs/binfmt_misc
       dev
       media
       mnt
       proc
       sys
       tmp/image
       mnt/img-mnt
  1+0 records in
  1+0 records out
  mke2fs 1.38 (30-Jun-2005)
  warning: 256 blocks unused.

  Splitting /mnt/image.gz.crypt...
  Created image.part.00
  Created image.part.01
  Created image.part.02
  Created image.part.03
  ...
  Created image.part.22
  Created image.part.23
  Generating digests for each part...
  Digests generated.
  Creating bundle manifest...
  Bundle Volume complete.
```

## ec2-delete-bundle
<a name="ami-delete-bundle"></a>

### 説明
<a name="delete-bundle-description"></a>

Amazon S3 ストレージから、指定されたバンドルを削除します。バンドルを削除した後で、対応する AMI からインスタンスを起動することはできません。

### 構文
<a name="delete-bundle-request"></a>

****ec2-delete-bundle** -b *bucket* -a *access\$1key\$1id* -s *secret\$1access\$1key* [-t *token*] [--url *url*] [--region *region*] [--sigv *version*] [-m *path*] [-p *prefix*] [--clear] [--retry] [-y]** 

### オプション
<a name="delete-bundle-parameters"></a>

`-b, --bucket `*bucket*  
バンドルされた AMI に続いてオプションの '/' 区切りパスプレフィクスを含む Amazon S3 バケットの名前  
必須: はい

`-a, --access-key` *access\$1key\$1id*  
AWS アクセスキー ID。  
必須: はい

`-s, --secret-key` *secret\$1access\$1key*  
AWS シークレットアクセスキー。  
必須: はい

`-t, --delegation-token` *トークン*  
AWS リクエストに渡す委任トークン。詳細については、*IAM ユーザーガイド*の「[IAM の一時的なセキュリティ認証情報](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html)」を参照してください。  
必須: 一時的なセキュリティ認証情報を使用している場合のみ。  
デフォルト: `AWS_DELEGATION_TOKEN` 環境変数の値 (設定されている場合)。

`--region`*リージョン*  
リクエスト署名で使用するリージョン。  
デフォルト: `us-east-1`  
必須: 署名バージョン 4 を使用する場合は必須

`--sigv`*version*  
リクエストに署名するときに使用する署名バージョン。  
有効な値: `2` \$1 `4`  
デフォルト: `4`  
必須: いいえ

`-m, --manifest`*パス*  
マニフェストファイルへのパス。  
必須: `--prefix` または `--manifest` のどちらかを指定する必要があります。

`-p, --prefix`*prefix*  
バンドルされた AMI ファイル名プレフィクス。プレフィクス全体を指定します。例えば、プレフィクスが image.img である場合は、`-p image.img` ではなく `-p image` を使用します。  
必須: `--prefix` または `--manifest` のどちらかを指定する必要があります。

`--clear`  
指定されたバンドルを削除した後で空の場合は、Amazon S3 バケットを削除します。  
必須: いいえ

`--retry`  
すべての Amazon S3 エラーで、オペレーションあたり最大 5 回まで自動的に再試行します。  
必須: いいえ

`-y, --yes`  
すべてのプロンプトへの答えが [yes] であると自動的に想定します。  
必須: いいえ

### Output
<a name="delete-bundle-output"></a>

Amazon EC2 は、削除プロセスのステージとステータスを示すステータスメッセージを表示します。

### 例
<a name="delete-bundle-response"></a>

この例では、Amazon S3 からバンドルを削除します。

```
[ec2-user ~]$ ec2-delete-bundle -b amzn-s3-demo-bucket -a your_access_key_id -s your_secret_access_key
Deleting files:
amzn-s3-demo-bucket/image.manifest.xml
amzn-s3-demo-bucket/image.part.00
amzn-s3-demo-bucket/image.part.01
amzn-s3-demo-bucket/image.part.02
amzn-s3-demo-bucket/image.part.03
amzn-s3-demo-bucket/image.part.04
amzn-s3-demo-bucket/image.part.05
amzn-s3-demo-bucket/image.part.06
Continue? [y/n]
y
Deleted amzn-s3-demo-bucket/image.manifest.xml
Deleted amzn-s3-demo-bucket/image.part.00
Deleted amzn-s3-demo-bucket/image.part.01
Deleted amzn-s3-demo-bucket/image.part.02
Deleted amzn-s3-demo-bucket/image.part.03
Deleted amzn-s3-demo-bucket/image.part.04
Deleted amzn-s3-demo-bucket/image.part.05
Deleted amzn-s3-demo-bucket/image.part.06
ec2-delete-bundle complete.
```

## ec2-download-bundle
<a name="ami-download-bundle"></a>

### 説明
<a name="download-bundle-description"></a>

指定された Amazon S3-backed Linux AMI を Amazon S3 ストレージからダウンロードします。

### 構文
<a name="download-bundle-request"></a>

****ec2-download-bundle** -b *bucket* -a *access\$1key\$1id* -s *secret\$1access\$1key* -k *path* [--url *url*] [--region *region*] [--sigv *version*] [-m *file*] [-p *prefix*] [-d *directory*] [--retry]** 

### オプション
<a name="download-bundle-parameters"></a>

`-b, --bucket` *バケット*  
バンドルが存在する Amazon S3 バケットの名前。この後に、オプションで '/' 区切りのパスプレフィクスが続きます。  
必須: はい

`-a, --access-key` *access\$1key\$1id*  
AWS アクセスキー ID。  
必須: はい

`-s, --secret-key` *secret\$1access\$1key*  
AWS シークレットアクセスキー。  
必須: はい

`-k, --privatekey` *パス*  
マニフェストの復号に使用されるプライベートキー。  
必須: はい

`--url` *url*  
Amazon S3 サービスの URL。  
デフォルト: `https://s3.amazonaws.com/`  
必須: いいえ

`--region` *region*  
リクエスト署名で使用するリージョン。  
デフォルト: `us-east-1`  
必須: 署名バージョン 4 を使用する場合は必須

`--sigv` *バージョン*  
リクエストに署名するときに使用する署名バージョン。  
有効な値: `2` \$1 `4`  
デフォルト: `4`  
必須: いいえ

`-m, --manifest` *ファイル*  
マニフェストファイル名 (パスなし)。マニフェスト `-m`またはプレフィクス `-p`を指定することをお勧めします。  
必須: いいえ

`-p, --prefix `*prefix*  
バンドル済み AMI ファイルのファイル名プレフィクス。  
デフォルト: `image`  
必須: いいえ

`-d, --directory ` *ディレクトリ*  
ダウンロードしたバンドルが保存されているディレクトリ。ディレクトリが存在している必要があります。  
デフォルト: 現在の作業ディレクトリ。  
必須: いいえ

 `--retry`   
すべての Amazon S3 エラーで、オペレーションあたり最大 5 回まで自動的に再試行します。  
必須: いいえ

### Output
<a name="download-bundle-output"></a>

ダウンロードプロセスの多様な段階ステータスを示すメッセージが表示されます。

### 例
<a name="download-bundle-response"></a>

この例では、`bundled` ディレクトリを作成 (Linux **mkdir** コマンドを使用) し、Amazon S3 `amzn-s3-demo-bucket` バケットからバンドルをダウンロードします。

```
[ec2-user ~]$ mkdir bundled
[ec2-user ~]$ ec2-download-bundle -b amzn-s3-demo-bucket/bundles/bundle_name -m image.manifest.xml -a your_access_key_id -s your_secret_access_key -k pk-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem -d mybundle
Downloading manifest image.manifest.xml from amzn-s3-demo-bucket to mybundle/image.manifest.xml ...
Downloading part image.part.00 from amzn-s3-demo-bucket/bundles/bundle_name to mybundle/image.part.00 ...
Downloaded image.part.00 from amzn-s3-demo-bucket
Downloading part image.part.01 from amzn-s3-demo-bucket/bundles/bundle_name to mybundle/image.part.01 ...
Downloaded image.part.01 from amzn-s3-demo-bucket
Downloading part image.part.02 from amzn-s3-demo-bucket/bundles/bundle_name to mybundle/image.part.02 ...
Downloaded image.part.02 from amzn-s3-demo-bucket
Downloading part image.part.03 from amzn-s3-demo-bucket/bundles/bundle_name to mybundle/image.part.03 ...
Downloaded image.part.03 from amzn-s3-demo-bucket
Downloading part image.part.04 from amzn-s3-demo-bucket/bundles/bundle_name to mybundle/image.part.04 ...
Downloaded image.part.04 from amzn-s3-demo-bucket
Downloading part image.part.05 from amzn-s3-demo-bucket/bundles/bundle_name to mybundle/image.part.05 ...
Downloaded image.part.05 from amzn-s3-demo-bucket
Downloading part image.part.06 from amzn-s3-demo-bucket/bundles/bundle_name to mybundle/image.part.06 ...
Downloaded image.part.06 from amzn-s3-demo-bucket
```

## ec2-migrate-manifest
<a name="ami-migrate-manifest"></a>

### 説明
<a name="migrate-manifest-description"></a>

別のリージョンをサポートするように Amazon S3-backed Linux AMI (証明書、カーネル、RAM ディスクなど) を変更します。

### 構文
<a name="migrate-manifest-request"></a>

****ec2-migrate-manifest** -c *path* -k *path* -m *path* \$1(-a *access\$1key\$1id* -s *secret\$1access\$1key* --region *region*) \$1 (--no-mapping)\$1 [--ec2cert *ec2\$1cert\$1path*] [--kernel *kernel-id*] [--ramdisk *ramdisk\$1id*]** 

### オプション
<a name="migrate-manifest-parameters"></a>

`-c, --cert` *パス*  
ユーザーの PEM エンコード RSA パブリックキー証明書ファイル。  
必須: はい

`-k, --privatekey` *パス*  
ユーザーの PEM エンコード RSA キーファイルへのパス。  
必須: はい

`--manifest` *パス*  
マニフェストファイルへのパス。  
必須: はい

`-a, --access-key` *access\$1key\$1id*  
AWS アクセスキー ID。  
必須: 自動マッピングを使用する場合は必須です。

`-s, --secret-key ` *secret\$1access\$1key*  
AWS シークレットアクセスキー。  
必須: 自動マッピングを使用する場合は必須です。

`--region` *region*  
マッピングファイル内で検索するリージョン。  
必須: 自動マッピングを使用する場合は必須です。

`--no-mapping`  
カーネルと RAM ディスクの自動マッピングを無効にします。  
 移行中、Amazon EC2 は、コピー先リージョン用に設計されたカーネルと RAM ディスクで、マニフェストファイルのカーネルと RAM ディスクを置き換えます。`--no-mapping` パラメータを指定しない場合、`ec2-migrate-bundle` は `DescribeRegions` および `DescribeImages` オペレーションを使用して、自動化されたマッピングを実行します。  
必須: 自動マッピングに使用される `-a`、`-s`、および `--region` オプションを指定しない場合は必須です。

`--ec2cert` *パス*  
イメージマニフェストの暗号化に使用される Amazon EC2 X.509 パブリックキー証明書へのパス。  
`us-gov-west-1` および `cn-north-1` リージョンではデフォルト以外のパブリックキー証明書を使用し、その証明書へのパスは、このオプションで指定する必要があります。証明書へのパスは、AMI ツールのインストール方法によって異なります。Amazon Linux の場合、証明書の場所は `/opt/aws/amitools/ec2/etc/ec2/amitools/` です。「[Amazon EC2 AMI ツールのセットアップ](set-up-ami-tools.md)」の ZIP ファイルから AMI ツールをインストールした場合、証明書の場所は `$EC2_AMITOOL_HOME/etc/ec2/amitools/` です。  
必須: `us-gov-west-1` および `cn-north-1` リージョンのみ。

`--kernel` *kernel\$1id*  
選択するカーネルの ID。  
カーネルと RAM ディスクではなく PV-GRUB を使用することをお勧めします。詳細については、「Amazon Linux 2 ユーザーガイド」の「[ユーザー提供カーネル](https://docs.aws.amazon.com/linux/al2/ug/UserProvidedKernels.html)」を参照してください。**
必須: いいえ

`--ramdisk` *ramdisk\$1id*  
選択する RAM ディスクの ID。  
カーネルと RAM ディスクではなく PV-GRUB を使用することをお勧めします。詳細については、「Amazon Linux 2 ユーザーガイド」の「[ユーザー提供カーネル](https://docs.aws.amazon.com/linux/al2/ug/UserProvidedKernels.html)」を参照してください。**
必須: いいえ

### Output
<a name="migrate-manifest-output"></a>

バンドルプロセスのステージとステータスを記述するステータスメッセージ。

### 例
<a name="migrate-manifest-response"></a>

この例では、`my-ami.manifest.xml` マニフェストで指定された AMI を米国から EU にコピーします。

```
[ec2-user ~]$ ec2-migrate-manifest --manifest my-ami.manifest.xml --cert cert-HKZYKTAIG2ECMXYIBH3HXV4ZBZQ55CLO.pem --privatekey pk-HKZYKTAIG2ECMXYIBH3HXV4ZBZQ55CLO.pem --region eu-west-1 

Backing up manifest...
Successfully migrated my-ami.manifest.xml It is now suitable for use in eu-west-1.
```

## ec2-unbundle
<a name="ami-unbundle"></a>

### 説明
<a name="unbundle-description"></a>

Amazon S3-backed Linux AMI からバンドルを再作成します。

### 構文
<a name="unbundle-request"></a>

****ec2-unbundle** -k *path* -m *path* [-s *source\$1directory*] [-d *destination\$1directory*]** 

### オプション
<a name="unbundle-parameters"></a>

`-k, --privatekey` *パス*  
PEM エンコードされる RSA キーファイルへのパス。  
必須: はい

`-m, --manifest` *パス*  
マニフェストファイルへのパス。  
必須: はい

`-s, --source` *source\$1directory*  
バンドル含むディレクトリ。  
デフォルト: 現在のディレクトリ。  
必須: いいえ

`-d, --destination` *destination\$1directory*  
AMI をバンドル解除するディレクトリ。宛先ディレクトリが存在している必要があります。  
デフォルト: 現在のディレクトリ。  
必須: いいえ

### 例
<a name="unbundle-response"></a>

この Linux および UNIX の例では、`image.manifest.xml` ファイルに指定された AMI をバンドル解除します。

```
[ec2-user ~]$ mkdir unbundled
$ ec2-unbundle -m mybundle/image.manifest.xml -k pk-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem -s mybundle -d unbundled
$ ls -l unbundled
total 1025008
-rw-r--r-- 1 root root 1048578048 Aug 25 23:46 image.img
```

### Output
<a name="unbundle-output"></a>

バンドル解除プロセスの多様な段階ステータスを示すメッセージが表示されます。

## ec2-upload-bundle
<a name="ami-upload-bundle"></a>

### 説明
<a name="upload-bundle-description"></a>

Amazon S3-backed Linux AMI のバンドルを Amazon S3 にアップロードし、アップロードされたオブジェクトで適切なアクセスコントロールリスト (ACL) を設定します。詳細については、「[Amazon S3-backed AMI を作成する](creating-an-ami-instance-store.md)」を参照してください。

**注記**  
Amazon S3-backed Linux AMI の S3 バケットにオブジェクトをアップロードするには、バケットで ACL を有効にする必要があります。有効にしない場合、Amazon EC2 はアップロードするオブジェクトに ACL を設定できません。宛先のバケットが S3 オブジェクトの所有権のバケット所有者強制設定を使用している場合、ACL が無効になるため、この方法は使えません。詳細については、「[バケットのオブジェクト所有権のコントロールと ACL の無効化](https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html)」を参照してください。

### 構文
<a name="upload-bundle-request"></a>

****ec2-upload-bundle** -b *bucket* -a *access\$1key\$1id* -s *secret\$1access\$1key* [-t *token*] -m *path* [--url *url*] [--region *region*] [--sigv *version*] [--acl *acl*] [-d *directory*] [--part *part*] [--retry] [--skipmanifest]** 

### オプション
<a name="upload-bundle-parameters"></a>

`-b, --bucket` *バケット*  
バンドルを保存する Amazon S3 バケットの名前。その後にオプションで '/' 区切りのパスプレフィクスが続きます。バケットが存在しない場合、バケット名を使用できる場合はバケットが作成されます。さらに、バケットが存在せず、AMI ツールのバージョンが 1.5.18 以降の場合、このコマンドはバケットの ACL を設定します。  
必須: はい

`-a, --access-key` *access\$1key\$1id*  
AWS アクセスキー ID。  
必須: はい

`-s, --secret-key` *secret\$1access\$1key*  
お客様の AWS シークレットアクセスキー。  
必須: はい

`-t, --delegation-token` *トークン*  
AWS リクエストに渡す委任トークン。詳細については、*IAM ユーザーガイド*の「[IAM の一時的なセキュリティ認証情報](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html)」を参照してください。  
必須: 一時的なセキュリティ認証情報を使用している場合のみ。  
デフォルト: `AWS_DELEGATION_TOKEN` 環境変数の値 (設定されている場合)。

`-m, --manifest` *パス*  
マニフェストファイルへのパス。マニフェストファイルはバンドルプロセス中に作成され、バンドルを含むディレクトリにあります。  
必須: はい

`--url` *url*  
廃止。バケットの場所が (`--region` ではなく) `EU` に制約されない限り、代わりに `eu-west-1` オプションを使用します。`--location` フラグは、その特定の場所の制限を対象にする唯一の方法です。  
Amazon S3 エンドポイントサービスの URL。  
デフォルト: `https://s3.amazonaws.com/`  
必須: いいえ

`--region` *region*  
宛先の S3 バケットに対してリクエスト署名で使用するリージョン。  
+ バケットが存在せず、リージョンを指定しない場合、ツールは (`us-east-1` で) 場所の制約のないバケットを作成します。
+ バケットが存在せず、リージョンを指定した場合、ツールは指定したリージョンでバケットを作成します。
+ バケットが存在し、リージョンを指定しない場合、ツールはバケットの場所を使用します。
+ バケットが存在し、リージョンとして `us-east-1` を指定した場合、ツールはエラーメッセージなしでバケットの実際の場所を使用し、一致する既存のファイルは上書きされます。
+ バケットが存在し、バケットの実際の場所に一致しない (`us-east-1` 以外の) リージョンを指定した場合、ツールはエラーで終了します。
バケットが (`EU` ではなく) `eu-west-1` の場所に制約されている場合は、代わりに `--location` フラグを使用します。`--location` フラグは、その特定の場所の制限を対象にする唯一の方法です。  
デフォルト: `us-east-1`  
必須: 署名バージョン 4 を使用する場合は必須

`--sigv` *バージョン*  
リクエストに署名するときに使用する署名バージョン。  
有効な値: `2` \$1 `4`  
デフォルト: `4`  
必須: いいえ

`--acl` *acl*  
バンドルされたイメージのアクセスコントロールリストのポリシー。  
有効な値: `public-read` \$1 `aws-exec-read`  
デフォルト: `aws-exec-read`  
必須: いいえ

`-d, --directory` *ディレクトリ*  
バンドルされた AMI 部分を含むディレクトリ。  
デフォルト: マニフェストファイルを含むディレクトリ (`-m` オプションを参照)。  
必須: いいえ

`--part` *パート*  
指定された部分とそれ以降のすべての部分のアップロードを開始します。例えば、`--part 04`。  
必須: いいえ

`--retry`  
すべての Amazon S3 エラーで、オペレーションあたり最大 5 回まで自動的に再試行します。  
必須: いいえ

`--skipmanifest`  
マニフェストをアップロードしません。  
必須: いいえ

`--location` *の場所*  
廃止。バケットの場所が (`--region` ではなく) `EU` に制約されない限り、代わりに `eu-west-1` オプションを使用します。`--location` フラグは、その特定の場所の制限を対象にする唯一の方法です。  
宛先 Amazon S3 バケットの場所の制約。バケットが存在し、バケットの実際の場所に一致しない場所を指定する場合、ツールはエラーで終了します。バケットが存在し、場所を指定しない場合、ツールはバケットの場所を使用します。バケットが存在しない場合に場所を指定すると、ツールは、指定した場所でバケットを作成します。バケットが存在せず、場所を指定しない場合、ツールは (`us-east-1` で) 場所の制約のないバケットを作成します。  
デフォルト: `--region` を指定した場合、場所はその指定したリージョンに設定されます。`--region` を指定しない場合、場所はデフォルトで `us-east-1` になります。  
必須: いいえ

### Output
<a name="upload-bundle-output"></a>

Amazon EC2 は、アップロードプロセスのステージとステータスを示すステータスメッセージを表示します。

### 例
<a name="upload-bundle-response"></a>

この例では、`image.manifest.xml` マニフェストで指定されたバンドルをアップロードします。

```
[ec2-user ~]$ ec2-upload-bundle -b amzn-s3-demo-bucket/bundles/bundle_name -m image.manifest.xml -a your_access_key_id -s your_secret_access_key
Creating bucket...
Uploading bundled image parts to the S3 bucket amzn-s3-demo-bucket ...
Uploaded image.part.00
Uploaded image.part.01
Uploaded image.part.02
Uploaded image.part.03
Uploaded image.part.04
Uploaded image.part.05
Uploaded image.part.06
Uploaded image.part.07
Uploaded image.part.08
Uploaded image.part.09
Uploaded image.part.10
Uploaded image.part.11
Uploaded image.part.12
Uploaded image.part.13
Uploaded image.part.14
Uploading manifest ...
Uploaded manifest.
Bundle upload completed.
```

## AMI ツール用の一般的なオプション
<a name="common-args-ami"></a>

AMI ツールのほとんどで、以下の任意のパラメータを使用できます。

`--help, -h`  
ヘルプメッセージを表示します。

`--version`  
バージョンと著作権表記を表示します。

`--manual`  
手動のエントリを表示します。

`--batch`  
インタラクティブなプロンプトを制約するバッチモードで実行します。

`--debug`  
問題のトラブルシューティング時に役立つ可能性がある情報を表示します。

# Amazon S3-backed AMI を EBS-backed AMI に変換する
<a name="Using_ConvertingS3toEBS"></a>

所有している Amazon S3-backed Linux AMI は、Amazon EBS-Backed Linux AMI に変換できます。

**重要**  
所有していない AMI を変換することはできません。

**Amazon S3-backed AMI を Amazon EBS-backed AMI に変換するには**

1. Amazon EBS-backed AMI から Amazon Linux インスタンスを起動します。詳細については、[コンソールのインスタンス起動ウィザードを使用して EC2 インスタンスを起動する](ec2-launch-instance-wizard.md) を参照してください。Amazon Linux インスタンスには、AWS CLI および AMI ツールがプリインストールされています。

1. Amazon S3-backed AMI をバンドルするのに使用した X.509 プライベートキーをインスタンスにアップロードします。Amazon はこのキーを使用して、お客様と Amazon EC2 だけがお客様の AMI にアクセスできるようにします。

   1. 次のように、X.509 プライベートキーのインスタンスに一時ディレクトリを作成します。

      ```
      [ec2-user ~]$ mkdir /tmp/cert
      ```

   1. [scp](linux-file-transfer-scp.md) などの安全なコピーツールを使用して、コンピュータから `/tmp/cert` ディレクトリに X.509 プライベートキーをコピーします。次のコマンドの *my-private-key* パラメータは、SSH でインスタンスに接続するために使用するプライベートキーです。例:

      ```
      you@your_computer:~ $ scp -i my-private-key.pem /path/to/pk-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem ec2-user@ec2-203-0-113-25.compute-1.amazonaws.com:/tmp/cert/
      pk-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem  100%  717     0.7KB/s   00:00
      ```

1. 環境変数を設定して、AWS CLI を使用します。詳細については、「[環境変数](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-envvars.html)」を参照してください。

   1. (推奨) AWS アクセスキー、シークレットキーおよびセッショントークンの環境変数を設定します。

      ```
      [ec2-user ~]$ export AWS_ACCESS_KEY_ID=your_access_key_id
      [ec2-user ~]$ export AWS_SECRET_ACCESS_KEY=your_secret_access_key
      [ec2-user ~]$ export AWS_SESSION_TOKEN=your_session_token
      ```

   1. AWS アクセスキーおよびシークレットキーの環境変数を設定します。

      ```
      [ec2-user ~]$ export AWS_ACCESS_KEY_ID=your_access_key_id
      [ec2-user ~]$ export AWS_SECRET_ACCESS_KEY=your_secret_access_key
      ```

1. 新しい AMI の Amazon エラスティックブロックストア (Amazon EBS) ボリュームを準備します。

   1. [create-volume](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-volume.html) コマンドを使用して、インスタンスと同じアベイラビリティーゾーンに空の EBS ボリュームを作成します。コマンド出力のボリューム ID を書き留めてください。
**重要**  
 この EBS ボリュームは、元のインスタンスストアのルートボリュームと同じサイズ以上である必要があります。

      ```
      aws ec2 create-volume \
          --size 10 \
          --region us-west-2 \
          --availability-zone us-west-2b
      ```

   1. [attach-volume](https://docs.aws.amazon.com/cli/latest/reference/ec2/attach-volume.html) コマンドを使用して、Amazon EBS-backed インスタンスにボリュームをアタッチします。

      ```
      aws ec2 attach-volume \
          --volume-id vol-01234567890abcdef \
          --instance-id i-1234567890abcdef0 \
          --region us-west-2
      ```

1. バンドルのフォルダを作成します。

   ```
   [ec2-user ~]$ mkdir /tmp/bundle
   ```

1. `/tmp/bundle` コマンドを使用して、インスタンスストアバック AMI のバンドルを [ec2-download-bundle](ami-tools-commands.md#ami-download-bundle) にダウンロードします。

   ```
   [ec2-user ~]$ ec2-download-bundle -b amzn-s3-demo-bucket/bundle_folder/bundle_name -m image.manifest.xml -a $AWS_ACCESS_KEY_ID -s $AWS_SECRET_ACCESS_KEY --privatekey /path/to/pk-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem -d /tmp/bundle
   ```

1. [ec2-unbundle](ami-tools-commands.md#ami-unbundle) コマンドを使用して、バンドルからイメージファイルを再作成します。

   1. バンドルフォルダにディレクトリを変更します。

      ```
      [ec2-user ~]$ cd /tmp/bundle/
      ```

   1. [ec2-unbundle](ami-tools-commands.md#ami-unbundle) コマンドを実行します。

      ```
      [ec2-user bundle]$ ec2-unbundle -m image.manifest.xml --privatekey /path/to/pk-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem
      ```

1. バンドルを解除したイメージから新しい EBS ボリュームにファイルをコピーします。

   ```
   [ec2-user bundle]$ sudo dd if=/tmp/bundle/image of=/dev/sdb bs=1M
   ```

1. バンドルを解除した新しいパーティションのボリュームを調査します。

   ```
   [ec2-user bundle]$ sudo partprobe /dev/sdb1
   ```

1. ブロックデバイスの一覧を表示してマウントするデバイス名を選択してください。

   ```
   [ec2-user bundle]$ lsblk
   NAME         MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
   /dev/sda    202:0    0   8G  0 disk
   └─/dev/sda1 202:1    0   8G  0 part /
   /dev/sdb    202:80   0  10G  0 disk
   └─/dev/sdb1 202:81   0  10G  0 part
   ```

   この例では、マウントするパーティションは `/dev/sdb1` ですが、デバイス名はおそらく異なります。ボリュームが仕切られていない場合は、マウントするデバイスは `/dev/sdb` に似ています (デバイスパーティションの末尾に数値なし)。

1. 新しい EBS ボリュームのマウントポイントを作成し、ボリュームをマウントします。

   ```
   [ec2-user bundle]$ sudo mkdir /mnt/ebs
   [ec2-user bundle]$ sudo mount /dev/sdb1 /mnt/ebs
   ```

1. EBS ボリュームの `/etc/fstab` ファイルを任意のテキストエディタ (**vim** や **nano** など) で開き、インスタンスストア (エフェメラル) ボリュームのエントリがあれば削除します。EBS ボリュームが `/mnt/ebs` に取付けられるため、`fstab` ファイルは `/mnt/ebs/etc/fstab` にあります。

   ```
   [ec2-user bundle]$ sudo nano /mnt/ebs/etc/fstab
   #
   LABEL=/     /           ext4    defaults,noatime  1   1
   tmpfs       /dev/shm    tmpfs   defaults        0   0
   devpts      /dev/pts    devpts  gid=5,mode=620  0   0
   sysfs       /sys        sysfs   defaults        0   0
   proc        /proc       proc    defaults        0   0
   /dev/sdb        /media/ephemeral0       auto    defaults,comment=cloudconfig    0       2
   ```

   この例では、最後の行を削除する必要があります。

1. ボリュームをアンマウントし、インスタンスからデタッチします。

   ```
   [ec2-user bundle]$ sudo umount /mnt/ebs
   [ec2-user bundle]$ aws ec2 detach-volume --volume-id vol-01234567890abcdef --region us-west-2
   ```

1. 次のように、新しい EBS ボリュームから AMI を作成します。

   1. 新しい EBS ボリュームのスナップショットを作成します。

      ```
      [ec2-user bundle]$ aws ec2 create-snapshot --region us-west-2 --description "your_snapshot_description" --volume-id vol-01234567890abcdef
      ```

   1. スナップショットが完了していることを確認します。

      ```
      [ec2-user bundle]$ aws ec2 describe-snapshots --region us-west-2 --snapshot-id snap-0abcdef1234567890
      ```

   1. 元の AMI で使用されたプロセッサアーキテクチャ、仮想化タイプ、カーネルイメージ (`aki`) を、**describe-images** コマンドを使用して特定します。このステップでは、元の Amazon S3-backed AMI の AMI ID が必要です。

      ```
      [ec2-user bundle]$ aws ec2 describe-images --region us-west-2 --image-id ami-0abcdef1234567890 --output text
      IMAGES	x86_64	amazon/amzn-ami-pv-2013.09.2.x86_64-s3	ami-8ef297be	amazon	available	public	machine	aki-fc8f11cc	instance-store	paravirtual	xen
      ```

      この例では、アーキテクチャは `x86_64` で、カーネルイメージ ID は `aki-fc8f11cc` です。次のステップでこれらの値を使用します。前述のコマンドの出力では `ari` ID もリストされますので、これも書き留めます。

   1. 新しい EBS ボリュームのスナップショット ID と前のステップで書き留めた値を使用して、新しい AMI を登録します。前述のコマンド出力に `ari` ID がリストされていた場合は、その ID を次のコマンドで `--ramdisk-id ari_id`. を使用して指定します。

      ```
      [ec2-user bundle]$ aws ec2 register-image --region us-west-2 --name your_new_ami_name --block-device-mappings DeviceName=device-name,Ebs={SnapshotId=snap-0abcdef1234567890} --virtualization-type paravirtual --architecture x86_64 --kernel-id aki-fc8f11cc --root-device-name device-name
      ```

1. (オプション) 新しい AMI からインスタンスを起動できることをテストした後で、この手順で作成した EBS ボリュームを削除できます。

   ```
   aws ec2 delete-volume --volume-id vol-01234567890abcdef
   ```

# Windows Sysprep を使用して Amazon EC2 AMI を作成する
<a name="ami-create-win-sysprep"></a>

Microsoft システム準備 (Windows Sysprep) ツールは、新しいイメージをキャプチャする前にインスタンス固有のシステム設定を削除して、オペレーティングシステムの一般化バージョンを作成します。

[EC2 Image Builder](https://docs.aws.amazon.com/imagebuilder/latest/userguide/what-is-image-builder.html) を使用して、ソフトウェアと設定が事前にインストール、定義、カスタマイズされたセキュアな最新の「ゴールデン」サーバーイメージの作成、管理、デプロイを自動化することをお勧めします。

Windows Sysprep で、Windows 起動エージェント (EC2Launch v2、EC2Launch、EC2Config) を使って標準化された AMI を作成することもできます。

**重要**  
Windows Sysprep を使用してインスタンスのバックアップを作成しないでください。Windows Sysprep はシステム固有の情報を削除します。この情報を削除すると、インスタンスのバックアップに予期しない結果が生じる場合があります。

Windows Sysprep のトラブルシューティングについては、「[Amazon EC2 Windows インスタンスの Sysprep の問題をトラブルシューティングする](sysprep-troubleshoot.md)」を参照してください。

**Topics**
+ [Windows Sysprep のステップ](#sysprep-phases)
+ [[開始する前に]](#sysprep-begin)
+ [EC2Launch v2 で Windows Sysprep を使用する](sysprep-using-ec2launchv2.md)
+ [EC2Launch で Windows Sysprep を使用する](ec2launch-sysprep.md)
+ [EC2Config で Windows Sysprep を使用する](sysprep-using.md)

## Windows Sysprep のステップ
<a name="sysprep-phases"></a>

Windows Sysprep は、次のステップを通じて実行されます。
+ **一般化**: Sysprep ツールはイメージに固有の情報と設定を削除します。Windows Sysprep は、例えばセキュリティ識別子 (SID)、コンピュータ名、イベントログおよび特定のドライバーなどを削除します。このステップを完了すると、オペレーティングシステム (OS) は AMI を作成する準備が整いました。
**注記**  
Windows 起動エージェントで Windows Sysprep を実行すると、`PersistAllDeviceInstalls` はデフォルトで true に設定されているため、システムによってドライバーの削除が禁止されます。
+ **特定化**: プラグアンドプレイはコンピュータをスキャンして、検出されたデバイス用のドライバをインストールします。Sysprep ツールは、コンピュータ名や SID など OS に固有の要件を生成します。必要に応じて、このフェーズでコマンドを実行できます。
+ **アウトオブボックスエクスペリエンス (OOBE)**: システムによって Windows セットアップの省略バージョンが実行され、システム言語、タイムゾーン、登録組織などの情報を入力するように求められます。Windows 起動エージェントで Windows Sysprep を実行すると、応答ファイルによってこのステップが自動化されます。

## [開始する前に]
<a name="sysprep-begin"></a>
+ Windows Sysprep を実行する前に、Windows Sysprep を実行する単一の管理者アカウント以外のすべてのローカルユーザーアカウントとすべてのアカウントプロファイルを削除することをお勧めします。追加のアカウントとプロファイルを使用して Windows Sysprep を実行すると、プロファイルデータの損失や Windows Sysprep の完了の失敗など、予期しない動作が発生する可能性があります。
+ 詳細については、「[Sysprep Overview](https://learn.microsoft.com/en-us/windows-hardware/manufacture/desktop/sysprep--system-preparation--overview)」を参照してください。
+ Sysprep でサポートされているサーバーロールについては、「[Sysprep Support for Server Roles](https://learn.microsoft.com/en-us/windows-hardware/manufacture/desktop/sysprep-support-for-server-roles)」を参照してください。

# EC2Launch v2 で Windows Sysprep を使って AMI を作成する
<a name="sysprep-using-ec2launchv2"></a>

EC2Launch v2 エージェントがインストールされたインスタンスからイメージを作成すると、EC2Launch v2 はイメージが作成されたときに特定のタスクを実行します。これには Windows Sysprep を使用した作業が含まれます。詳細については、「[Windows Sysprep のステップ](ami-create-win-sysprep.md#sysprep-phases)」を参照してください。

**Topics**
+ [Windows Sysprep のアクション](#sysprep-actions-ec2launchv2)
+ [Sysprep 後](#sysprep-post-ec2launchv2)
+ [EC2Launch v2 で Windows Sysprep を実行する](#sysprep-gui-procedure-ec2launchv2)

## Windows Sysprep のアクション
<a name="sysprep-actions-ec2launchv2"></a>

イメージを準備するために、Windows Sysprep と EC2Launch v2 は以下のアクションを実行します。

1. **[EC2Launch の設定]** ダイアログボックスで **[Sysprep によるシャットダウン]** を選択すると、システムは `ec2launch sysprep` コマンドを実行します。

1. EC2Launch v2 は、`unattend.xml` のレジストリ値を読み取ることで、`HKEY_USERS\.DEFAULT\Control Panel\International\LocaleName` ファイルの内容を編集します。このファイルは `C:\ProgramData\Amazon\EC2Launch\sysprep` ディレクトリにあります。

1. システムは `BeforeSysprep.cmd` を実行します。このコマンドは、次のレジストリキーを作成します。

   **reg add "HKEY\$1LOCAL\$1MACHINE\$1SYSTEM\$1CurrentControlSet\$1Control\$1Terminal Server" /v fDenyTSConnections /t REG\$1DWORD /d 1 /f**

   レジストリキーは再度有効になるまで RDP 接続を無効にします。RDP 接続を無効にすることは、安全上の観点より必要となります。これは、Windows Sysprep 実行後の最初のブートセッション中、RDP が接続できるわずかな時間の間に管理者パスワードが空白となるためです。

1. EC2Launch v2 サービスは、以下のコマンドを実行して Windows Sysprep を呼び出します。

   **sysprep.exe /oobe /generalize /shutdown /unattend: "C:\$1ProgramData\$1Amazon\$1EC2Launch\$1sysprep\$1unattend.xml"**

### ステップの一般化
<a name="sysprep-generalize-ec2launchv2"></a>
+ EC2Launch v2 は、コンピュータ名や SID などイメージに固有の情報と設定を削除します。インスタンスがドメインのメンバーである場合は、そのドメインから削除されます。`unattend.xml` 応答ファイルには、このステップに影響する以下の設定が含まれています。
  + **PersistAllDeviceInstalls**: この設定は、Windows セットアップがデバイスを削除したり再設定することを防ぐことによってイメージ準備プロセスを高速化します。これは、Amazon AMI を実行するためには特定のドライバーが必要となり、これらのドライバーの再検出には時間がかかるためです。
  + **DoNotCleanUpNonPresentDevices**: この設定では、現在存在しないデバイス用のプラグアンドプレイ情報を保持します。
+ Windows Sysprep は AMI の作成の準備完了後に OS をシャットダウンします。システムは、新しいインスタンスを起動するか、または元のインスタンスを起動します。

### ステップの特定化
<a name="sysprep-specialize-ec2launchv2"></a>

システムは、コンピュータ名や SID など OS に固有の要件を生成します。またシステムは、`unattend.xml` 応答ファイルで指定した設定に基づいて、以下のアクションを実行します。
+ **CopyProfile**: Windows Sysprep は、組み込まれた管理者のプロファイルを含むすべてのユーザープロファイルを削除するように設定できます。この設定は、組み込まれた管理者アカウントを保持するため、アカウントで作成したすべてのカスタム設定は新しいイメージに引き継がれます。デフォルト値は `True` です。

  **CopyProfile** は、デフォルトのプロファイルを既存のローカル管理者プロファイルに置き換えます。Windows Sysprep の実行後にログインしたすべてのアカウントは、最初のログイン時にそのプロファイルとその内容のコピーを受け取ります。

  新しいイメージに引き継ぐ特定のユーザープロファイルがない場合、この設定を `False` に変更します。Windows Sysprep はすべてのユーザープロファイルを削除します (これにより時間とディスク領域が節約されます)。
+ **タイムゾーン**: タイムゾーンはデフォルトで世界時 (UTC) に設定されます。
+ **順序 1 の同期コマンド**: システムは次のコマンドを実行して、管理者アカウントを有効化し、パスワード条件を指定します。

  ```
  net user Administrator /ACTIVE:YES /LOGONPASSWORDCHG:NO /EXPIRES:NEVER /PASSWORDREQ:YES
  ```
+ **順序 2 の同期コマンド**: システムは、管理者パスワードを組み換えます。このセキュリティ対策の目的は、`setAdminAccount` のタスクを設定していない場合、Windows Sysprep の完了後にインスタンスへのアクセスを防ぐことです。

  システムは、ローカルの起動エージェントディレクトリ (`C:\Program Files\Amazon\EC2Launch\`) から次のコマンドを実行します。

  ```
  EC2Launch.exe internal randomize-password --username Administrator
  ```
+ リモートデスクトップ接続を有効にするため、システムはターミナルサーバーの `fDenyTSConnections` レジストリキーを false に設定します。

### OOBE のステップ
<a name="sysprep-oobe-ec2launchv2"></a>

1. システムは EC2Launch v2 応答ファイルを使用して以下の設定を指定します。
   + `<InputLocale>en-US</InputLocale>`
   + `<SystemLocale>en-US</SystemLocale>`
   + `<UILanguage>en-US</UILanguage>`
   + `<UserLocale>en-US</UserLocale>`
   + `<HideEULAPage>true</HideEULAPage>`
   + `<HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE>`
   + `<ProtectYourPC>3</ProtectYourPC>`
   + `<BluetoothTaskbarIconEnabled>false</BluetoothTaskbarIconEnabled>`
   + `<TimeZone>UTC</TimeZone>`
   + `<RegisteredOrganization>Amazon.com</RegisteredOrganization>`
   + `<RegisteredOwner>EC2</RegisteredOwner>`
**注記**  
一般化ステップと特殊化ステップの実行中、EC2Launch v2 によって OS のステータスがモニタリングされます。OS が Sysprep のステップにあることが EC2Launch v2 によって検出された場合、以下のメッセージがシステムログに発行されます。  
Windows is being configured. SysprepState=IMAGE\$1STATE\$1UNDEPLOYABLE

1. システムは EC2Launch v2 を実行します。

## Sysprep 後
<a name="sysprep-post-ec2launchv2"></a>

Windows Sysprep が完了すると、EC2Launch v2 によって以下のメッセージがコンソール出力に送信されます。

```
Windows sysprep configuration complete.
```

次に、EC2Launch v2 は以下のアクションを実行します。

1. `agent-config.yml` ファイルの内容を読み取り、設定されたタスクを実行します。

1. `preReady` ステージのすべてのタスクを実行します。

1. 完了したら、`Windows is ready` メッセージをインスタンスのシステムログに送信します。

1. `PostReady` ステージのすべてのタスクを実行します。

EC2Launch v2 の詳細については、「[EC2 Windows インスタンスの起動時に EC2Launch v2 エージェントを使用してタスクを実行する](ec2launch-v2.md)」を参照してください。

## EC2Launch v2 で Windows Sysprep を実行する
<a name="sysprep-gui-procedure-ec2launchv2"></a>

以下の手順に従って、EC2Launch v2 で Windows Sysprep を使用して標準化 AMI を作成します。

1. Amazon EC2 コンソールで、複製する AMI の場所を特定します。

1. Windows インスタンスを起動して接続します。

1. カスタム設定

   1. Windows の **[スタート]** メニューから、**[Amazon EC2Launch 設定]** を検索して選択します。**[Amazon EC2Launch 設定]** ダイアログボックスのオプションと設定の詳細については、「[EC2Launch v2 設定を Windows インスタンスに構成する](ec2launch-v2-settings.md)」を参照してください。

   1. 変更を加えた場合、シャットダウンする前に **[保存]** を選択してください。

1. **[Sysprep を使用してシャットダウン]** または **[Sysprep を使用せずにシャットダウン]** を選択します。

Windows Sysprep を実行しインスタンスをシャットダウンするかどうか確認を求められたら **[はい]** をクリックします。EC2Launch v2 は Windows Sysprep を実行します。次に、インスタンスからログオフされ、インスタンスがシャットダウンされます。Amazon EC2 コンソールの [**Instances (インスタンス)**] ページでは、インスタンスの状態が `Running` から `Stopping` に変わった後、`Stopped` に変わります。この状態になれば、インスタンスから AMI を安全に作成できます。

コマンドラインから Windows Sysprep ツールを手動で呼び出すには、次のコマンドを使います。

```
"%programfiles%\amazon\ec2launch\ec2launch.exe" sysprep --shutdown=true
```

# EC2Launch で Windows Sysprep を使って AMI を作成する
<a name="ec2launch-sysprep"></a>

EC2Launch エージェントがインストールされたインスタンスからイメージを作成すると、EC2Launch はイメージが作成されたときに特定のタスクを実行します。これには Windows Sysprep を使用した作業が含まれます。詳細については、「[Windows Sysprep のステップ](ami-create-win-sysprep.md#sysprep-phases)」を参照してください。

EC2Launch は、AMI でイメージ準備プロセスを自動化および保護する Windows Sysprep 用のデフォルトの応答ファイルとバッチファイルを提供します。これらのファイルの変更はオプションです。デフォルトでは、これらのファイルは `C:\ProgramData\Amazon\EC2-Windows\Launch\Sysprep` ディレクトリにあります。

**重要**  
Windows Sysprep を使用してインスタンスのバックアップを作成しないでください。Windows Sysprep はシステム固有の情報を削除します。この情報を削除すると、インスタンスバックアップで意図しない結果が生じる可能性があります。

**Topics**
+ [Windows Sysprep の EC2Launch 応答ファイルとバッチファイル](#ec2launch-sysprep-answer-batch)
+ [EC2Launch で Windows Sysprep を実行する](#ec2launch-sysprep-running)
+ [カスタム AMI の起動時に Server 2016 以降のメタデータ/KMS ルートを更新する](#update-metadata-KMS)

## Windows Sysprep の EC2Launch 応答ファイルとバッチファイル
<a name="ec2launch-sysprep-answer-batch"></a>

Windows Sysprep の EC2Launch 応答ファイルとバッチファイルには以下のものが含まれます。

`Unattend.xml`  
これがデフォルトの応答ファイルです。`SysprepInstance.ps1` を実行するか、ユーザーインターフェイスで **ShutdownWithSysprep** を選択すると、このファイルから設定が読み取られます。

`BeforeSysprep.cmd`  
このバッチファイルをカスタマイズし、EC2Launch が Windows Sysprep を実行する前にコマンドを実行します。

`SysprepSpecialize.cmd`  
このバッチファイルをカスタマイズして、Windows Sysprep の特定化ステップ中にコマンドを実行します。

## EC2Launch で Windows Sysprep を実行する
<a name="ec2launch-sysprep-running"></a>

Windows Server 2016 以降の完全インストール (デスクトップ体験を含む) では、EC2Launch を使用して手動で、または **[EC2 起動設定]** アプリケーションを使用して、Windows Sysprep を実行できます。

**[EC2 起動設定] アプリケーションを使用して Windows Sysprep を実行するには**

1. Amazon EC2 コンソールで、Windows Server 2016 以降の AMI を見つけるか作成します。

1. AMI から Windows インスタンスを起動します。

1. Windows インスタンスに接続し、カスタマイズします。

1. [**EC2LaunchSettings**] アプリケーションを検索して実行します。このアプリケーションは、デフォルトでは `C:\ProgramData\Amazon\EC2-Windows\Launch\Settings` ディレクトリにあります。  
![\[EC2 Launch Settings アプリケーション\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/ec2launch-sysprep.png)

1. 必要に応じて、オプションを選択または選択解除します。これらの設定は `LaunchConfig.json` ファイルに保存されます。

1. [**Administrator Password**] で、以下のいずれかを行います。
   + [**Random**] を選択します。EC2Launch は、ユーザーのキーを使用してパスワードを生成し、暗号化します。この設定はインスタンス起動後に無効になるため、インスタンスを再起動したり、停止して起動した場合でもパスワードは保持されます。
   + [**Specify**] を選択し、システム要件を満たすパスワードを入力します。このパスワードはクリアテキストとして `LaunchConfig.json` に保存され、Windows Sysprep で管理者パスワードが設定されると削除されます。ここでシャットダウンした場合、パスワードはすぐに設定されます。EC2Launch は、ユーザーのキーを使用してパスワードを暗号化します。
   + [**DoNothing**] を選択して、`unattend.xml` ファイルでパスワードを指定します。`unattend.xml` でパスワードを指定しない場合、管理者アカウントは無効になります。

1. [**Shutdown with Sysprep (Sysprep を使用してシャットダウン)**] を選択します。

**EC2Launch を使用して手動で Windows Sysprep を実行するには**

1. Amazon EC2 コンソールで、複製する Windows Server 2016 以降の Datacenter エディション AMI を見つけるか作成します。

1. Windows インスタンスを起動して接続します。

1. インスタンスをカスタマイズします。

1. `LaunchConfig.json` ファイルで設定を指定します。デフォルトでは、このファイルは `C:\ProgramData\Amazon\EC2-Windows\Launch\Config` ディレクトリにあります。

   `adminPasswordType` で、次のいずれかの値を指定します。  
`Random`  
EC2Launch は、ユーザーのキーを使用してパスワードを生成し、暗号化します。この設定はインスタンス起動後に無効になるため、インスタンスを再起動したり、停止して起動した場合でもパスワードは保持されます。  
`Specify`  
EC2Launch は、`adminPassword` で指定したパスワードを使用します。指定したパスワードがシステム要件を満たさない場合は、代わりに EC2Launch によってランダムなパスワードが生成されます。このパスワードはクリアテキストとして `LaunchConfig.json` に保存され、Windows Sysprep で管理者パスワードが設定されると削除されます。EC2Launch は、ユーザーのキーを使用してパスワードを暗号化します。  
`DoNothing`  
EC2Launch は、`unattend.xml` ファイルで指定したパスワードを使用します。`unattend.xml` でパスワードを指定しない場合、管理者アカウントは無効になります。

1. (オプション) 必要に応じて、`unattend.xml` およびその他の設定ファイルで設定を指定します。手動のインストールを計画している場合は、これらのファイルに変更を加える必要はありません。デフォルトでは、このファイルは `C:\ProgramData\Amazon\EC2-Windows\Launch\Sysprep` ディレクトリにあります。

1. Windows PowerShell で、`./InitializeInstance.ps1 -Schedule` を実行します。デフォルトでは、このスクリプトは `C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts` ディレクトリにあります。このスクリプトは、次の起動中に初期化するようインスタンスをスケジュールします。次のステップで `SysprepInstance.ps1` スクリプトを実行する前に、このスクリプトを実行する必要があります。

1. Windows PowerShell で、`./SysprepInstance.ps1` を実行します。デフォルトでは、このスクリプトは `C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts` ディレクトリにあります。

ユーザーは自動的にログオフさせられ、インスタンスがシャットダウンします。Amazon EC2 コンソールの [**Instances (インスタンス)**] ページを見ると、インスタンスの状態が `Running` から `Stopping` に、そして `Stopped` へ変わるのがわかります。この状態になれば、インスタンスから AMI を安全に作成できます。

## カスタム AMI の起動時に Server 2016 以降のメタデータ/KMS ルートを更新する
<a name="update-metadata-KMS"></a>

カスタム AMI の起動時に Server 2016 以降のメタデータ/KMS ルートを更新するには、以下のいずれかの操作を行います。
+ EC2LaunchSettings GUI (C:\$1ProgramData\$1Amazon\$1EC2-Windows\$1Launch\$1Settings\$1Ec2LaunchSettings.exe) を実行し、Windows Sysprep を使用してシャットダウンするオプションを選択します。
+ AMI を作成する前に、EC2LaunchSettings を実行し、Windows Sysprep を使用しないでシャットダウンします。これにより、次回の起動時に実行される EC2 Launch の初期化タスクが設定され、インスタンスのサブネットに基づいてルートが設定されます。
+ [PowerShell](ec2launch-config.md#ec2launch-inittasks) から AMI を作成する前に、EC2 Launch の初期化タスクを手動で再スケジュールします。
**重要**  
タスクを再スケジューリングする前に、デフォルトではパスワードリセット動作となることに注意してください。
+ Windows のライセンス認証またはインスタンスメタデータの通信に関するエラーが発生している実行中のインスタンスのルートを更新するには、「[Windows のライセンス認証を行うことができません](common-messages.md#activate-windows)」を参照してください。

# EC2Config で Windows Sysprep を使って AMI を作成する
<a name="sysprep-using"></a>

EC2Config サービスがインストールされたインスタンスからイメージを作成すると、EC2Config はイメージが作成されたときに特定のタスクを実行します。これには Windows Sysprep を使用した作業が含まれます。詳細については、「[Windows Sysprep のステップ](ami-create-win-sysprep.md#sysprep-phases)」を参照してください。

**Topics**
+ [Windows Sysprep のアクション](#sysprep-actions)
+ [Sysprep 後](#sysprep-post)
+ [EC2Config サービスで Windows Sysprep を実行する](#sysprep-gui-procedure)

## Windows Sysprep のアクション
<a name="sysprep-actions"></a>

イメージを準備するために、Windows Sysprep と EC2Config サービスは次のアクションを実行します。

1. **[EC2 サービスのプロパティ]** ダイアログボックスで **[Sysprep を使用してシャットダウンする]** を選択すると、システムは **ec2config.exe -sysprep** コマンドを実行します。

1. EC2Config サービスは `BundleConfig.xml` ファイルの内容を読み込みます。デフォルトでは、このファイルは `C:\Program Files\Amazon\Ec2ConfigService\Settings` ディレクトリにあります。

    `BundleConfig.xml` ファイルには、以下の設定が含まれています。これらの設定は変更できます：
   + **AutoSysprep**: Windows Sysprep を自動で使用するかどうかを示します。[EC2 サービスプロパティ] ダイアログボックスで Windows Sysprep を実行した場合、この値を変更する必要はありません。デフォルト値は `No` です。
   + **SetRDPCertificate**: リモートデスクトップサーバーに自己署名証明書を設定します。これによって、リモートデスクトッププロトコール (RDP) を安全に使用して、インスタンスに接続できます。新しいインスタンスに証明書が必要な場合は、値を `Yes` に変更します。この設定は、Windows Server 2012 のインスタンスでは使用されません。これらのオペレーティングシステムが独自の証明書を生成できるためです。デフォルト値は `No` です。
   + **SetPasswordAfterSysprep**: 新しく起動したインスタンスにランダムなパスワードを設定し、ユーザー起動キーで暗号化して、暗号化されたパスワードをコンソールに出力します。新しいインスタンスにランダムに暗号化されたパスワードを設定しない場合は、値 `No` に変更します。デフォルト値は `Yes` です。
   +  **PreSysprepRunCmd**: 実行するコマンドの場所。コマンドは、デフォルトでは `C:\Program Files\Amazon\Ec2ConfigService\Scripts\BeforeSysprep.cmd` ディレクトリにあります。

1. システムは `BeforeSysprep.cmd` を実行します。このコマンドは、次のレジストリキーを作成します。

   ```
   reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 1 /f
   ```

   レジストリキーは再度有効になるまで RDP 接続を無効にします。RDP 接続を無効にすることは、安全上の観点より必要となります。これは、Windows Sysprep 実行後の最初のブートセッション中、RDP が接続できるわずかな時間の間に管理者パスワードが空白となるためです。

1. EC2Config サービスは、以下のコマンドを実行して Windows Sysprep を呼び出します。

   ```
   sysprep.exe /unattend: "C:\Program Files\Amazon\Ec2ConfigService\sysprep2008.xml" /oobe /generalize /shutdown
   ```

### ステップの一般化
<a name="sysprep-generalize"></a>
+ このツールは、コンピュータ名や SID のようなイメージに固有の情報と設定を削除します。インスタンスがドメインのメンバーである場合は、そのドメインから削除されます。`sysprep2008.xml` 応答ファイルには、このステップに影響する以下の設定が含まれています。
  + **PersistAllDeviceInstalls**: この設定は、Windows セットアップがデバイスを削除したり再設定することを防ぐことによってイメージ準備プロセスを高速化します。これは、Amazon AMI を実行するためには特定のドライバーが必要となり、これらのドライバーの再検出には時間がかかるためです。
  + **DoNotCleanUpNonPresentDevices**: この設定では、現在存在しないデバイス用のプラグアンドプレイ情報を保持します。
+ Windows Sysprep は AMI の作成の準備完了後に OS をシャットダウンします。システムは、新しいインスタンスを起動するか、または元のインスタンスを起動します。

### ステップの特定化
<a name="sysprep-specialize"></a>

システムは、コンピュータ名や SID など OS に固有の要件を生成します。またシステムは、sysprep2008.xml 応答ファイルで指定した設定に基づいて、次のアクションを実行します。
+ **CopyProfile**: Windows Sysprep は、組み込まれた管理者のプロファイルを含むすべてのユーザープロファイルを削除するように設定できます。この設定は、組み込まれた管理者アカウントを保持するため、アカウント作成したすべてのカスタム設定は新しいイメージに引き継がれます。デフォルト値は True です。

  **CopyProfile** は、デフォルトのプロファイルを既存のローカル管理者プロファイルに置き換えます。Windows Sysprep の実行後にログインしたすべてのアカウントは、最初のログイン時にそのプロファイルとその内容のコピーを受け取ります。

  新しいイメージに引き継ぐことを希望する特定のユーザープロファイルがない場合、この設定を「いいえ」に変更します。Windows Sysprep はすべてのユーザーを削除します。これによって時間とディスク領域が節約されます。
+ **タイムゾーン**: タイムゾーンはデフォルトで世界時 (UTC) に設定されます。
+ **順序 1 の同期コマンド**: システムは次のコマンドを実行して、管理者アカウントを有効化し、パスワード条件を指定します。

  **net user Administrator /ACTIVE:YES /LOGONPASSWORDCHG:NO /EXPIRES:NEVER /PASSWORDREQ:YES**
+ **順序 2 の同期コマンド**: システムは、管理者パスワードを組み換えます。このセキュリティ対策の目的は、ec2setpassword 設定を有効にしていない場合、Windows Sysprep の完了後にインスタンスへのアクセスを防ぐことです。

  C:\$1Program Files\$1Amazon\$1Ec2ConfigService\$1ScramblePassword.exe" -u Administrator
+ **順序 3 の同期コマンド**: システムは次のコマンドを実行します。

  C: \$1Program Files\$1Amazon\$1Ec2ConfigService\$1Scripts\$1SysprepSpecializePhase.cmd

   このコマンドは、RDP を再度有効にする次のレジストリキーを追加します。

  reg add "HKEY\$1LOCAL\$1MACHINE\$1SYSTEM\$1CurrentControlSet\$1Control\$1Terminal Server" /v fDenyTSConnections /t REG\$1DWORD /d 0 /f

### OOBE のステップ
<a name="sysprep-oobe"></a>

1. EC2Config サービス応答ファイルを使用すると、システムは次の設定を指定します。
   + <InputLocale>en-US</InputLocale>
   + <SystemLocale>en-US</SystemLocale>
   + <UILanguage>en-US</UILanguage>
   + <UserLocale>en-US</UserLocale>
   + <HideEULAPage>true</HideEULAPage>
   + <HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE>
   + <NetworkLocation>その他</NetworkLocation>
   + <ProtectYourPC>3</ProtectYourPC>
   + <BluetoothTaskbarIconEnabled>false</BluetoothTaskbarIconEnabled>
   + <TimeZone>UTC</TimeZone>
   + <RegisteredOrganization>Amazon.com</RegisteredOrganization>
   + <RegisteredOwner>Amazon</RegisteredOwner>
**注記**  
一般化と特定化ステップにおいて、EC2Config サービスは OS のステータスをモニタリングします。OS が Sysprep のステップにあることが EC2Config によって検出された場合、以下のメッセージがシステムログに発行されます。  
EC2ConfigMonitorState: 0 Windows is being configured. SysprepState=IMAGE\$1STATE\$1UNDEPLOYABLE

1. OOBE フェーズが完了すると、システムは `SetupComplete.cmd` から `C:\Windows\Setup\Scripts\SetupComplete.cmd` を実行します。2015 年 4 月以前の Amazon パブリック AMI では、このファイルは空となり、イメージには何も実行されません。2015 年 4 月以降のパブリック AMI では、ファイルに **call "C:\$1Program Files\$1Amazon\$1Ec2ConfigService\$1Scripts\$1PostSysprep.cmd"** の値が含まれます。

1. システムが `PostSysprep.cmd` を実行し、次の操作を行います。
   + ローカル管理者パスワード期限切れにならないよう設定します。パスワードの期限が切れた場合、管理者がログインできないことがあります。
   + MSSQLServer マシン名を設定すると (インストールされている場合)、名前は AMI で同期されます。

## Sysprep 後
<a name="sysprep-post"></a>

Windows Sysprep が完了したら、EC2Config サービスは次のメッセージをコンソール出力へ送信します。

```
Windows sysprep configuration complete.
			Message: Sysprep Start
			Message: Sysprep End
```

そして、EC2Config は次のアクションを実行します。

1. config.xml ファイルのコンテンツを読み取り、すべての有効なプラグインを示します。

1. 「Windows の準備が終了する前」のすべてのプラグインを同時に実行します。
   + Ec2SetPassword
   + Ec2SetComputerName
   + Ec2InitializeDrives
   + Ec2EventLog
   + Ec2ConfigureRDP
   + Ec2OutputRDPCert
   + Ec2SetDriveLetter
   + Ec2WindowsActivate
   + Ec2DynamicBootVolumeSize

1. これが完了すると、「Windows の準備完了」のメッセージをインスタンスのシステム ログに送信します。

1. 「Windows の準備が終了した後」のすべてのプラグインを同時に実行します
   + Amazon CloudWatch Logs 
   + UserData
   + AWS Systems Manager (Systems Manager) 

Windows プラグインの詳細については、「[EC2Config サービスを使用して、EC2 レガシー Windows オペレーティングシステムインスタンスの起動時にタスクを実行する](ec2config-service.md)」を参照してください。

## EC2Config サービスで Windows Sysprep を実行する
<a name="sysprep-gui-procedure"></a>

以下の手順に従って、Windows Sysprep と EC2Config サービスを使用して標準化 AMI を作成します。

1. Amazon EC2 コンソールで複製を希望する AMI を見つけるか、[作成](creating-an-ami-ebs.md)します。

1. Windows インスタンスを起動して接続します。

1. カスタマイズする。

1. EC2Config サービス応答ファイルで特定設定を指定します。

   `C:\Program Files\Amazon\Ec2ConfigService\sysprep2008.xml`

1. Windows の [**スタート**] メニューから [**すべてのプログラム**] を選び、次に [**EC2ConfigService 設定**] を選択します。

1. [**Ec2 サービスプロパティ**] ダイアログボックスで [**イメージ**] タブを選択します。Ec2 サービスプロパティダイアログボックスのオプションと設定についての詳細は、「[Ec2 サービスプロパティ](ec2config-service.md)」を参照してください。

1. 管理者パスワードのオプションを選択してから、[**Shutdown with Sysprep**] または [**Shutdown without Sysprep**] を選択します。EC2Config は、選択したパスワードオプションに基づいて設定ファイルを編集します。
   + **ランダム**: EC2Config はパスワードを生成してユーザーのキーで暗号化し、暗号化されたパスワードをコンソールに表示します。この設定は初回起動後に無効になるため、インスタンスを再起動したり、停止して起動した場合でもパスワードは保持されます。
   + **指定**: パスワードは、Windows Sysprep 応答ファイルに暗号化されていない形式 (平文) で保存されます。Windows Sysprep が次に実行されると、管理者パスワードに設定されます。ここでシャットダウンした場合、パスワードはすぐに設定されます。サービスを再開すると、管理者パスワードは削除されます。このパスワードは後で取得できないため覚えておくことが重要です。
   + **既存のパスワードを保持**: Windows Sysprep の実行時や EC2Config の再起動時に、管理者アカウントの既存のパスワードは変更されません。このパスワードは後で取得できないため覚えておくことが重要です。

1. [**OK**] を選択してください。

Windows Sysprep を実行しインスタンスをシャットダウンするかどうか確認を求められたら **[はい]** をクリックします。これにより、EC2Config が Windows Sysprep を実行します。次に、ユーザーは自動的にログオフさせられ、インスタンスがシャットダウンします。Amazon EC2 コンソールの [**インスタンス**] ページを見ると、インスタンスの状態が `Running` から `Stopping`、最終的に `Stopped` に変わるのがわかります。この状態になれば、インスタンスから AMI を安全に作成できます。

コマンドラインから Windows Sysprep ツールを手動で呼び出すには、次のコマンドを使います。

```
"%programfiles%\amazon\ec2configservice\"ec2config.exe -sysprep"" 
```

**注記**  
CMD シェルが C:\$1Program Files\$1Amazon\$1EC2ConfigService\$1 ディレクトリ内に既に存在する場合、コマンドの二重引用符は不要です。

ただし、この操作は慎重に行ってください。`Ec2ConfigService\Settings` フォルダで指定した XML ファイルオプションが正しくないと、インスタンスに接続できなくなる場合があります。設定ファイルの詳細については、「[EC2Config の設定ファイル](ec2config-service.md#UsingConfigXML_WinAMI)」を参照してください。コマンドラインから Windows Sysprep を設定して実行する例については、「`Ec2ConfigService\Scripts\InstallUpdates.ps1`」を参照してください。

# Amazon EC2 AMI のコピー
<a name="CopyingAMIs"></a>

複数のリージョンを横断する、一貫性のある Amazon EC2 インスタンス設定が必要な場合は、すべてのインスタンスを起動するための単一の Amazon マシンイメージ (AMI) をテンプレートとして使用します。ただし、AMI はリージョンに固有のリソースであるため、特定の AWS リージョンでインスタンスを起動するときは、そのリージョンに AMI を配置する必要があります。したがって複数のリージョンで同じ AMI を使用するときは、その AMI をソースのリージョンからターゲットとなる各リージョンにコピーする必要があります。

AMI をコピーする方法は、*同じ[パーティション](https://docs.aws.amazon.com/glossary/latest/reference/glos-chap.html#partition)内*のリージョン間でコピーするか、*異なるパーティション*のリージョン間でコピーするかによって異なります。
+ **クロスリージョンコピー** – AMI を*同じパーティション内*のリージョン間でコピーします。例えば、商用パーティション内のリージョン間でコピーするなどです。この方法については本トピックで説明します。
+ **クロスパーティションコピー** – AMI を*特定のパーティションから別のパーティション*にコピーします。例えば、商用パーティションから AWS GovCloud (US) パーティションにコピーするなどです。この方法の詳細については「[AMI を保存および復元する許可された AMI](ami-store-restore.md)」を参照してください。
+ **クロスアカウントコピー** – 別の AWS アカウントが[お使いの AWS アカウントと共有している](sharingamis-explicit.md) AMI のコピーを作成します。この方法については本トピックで説明します。

クロスリージョンコピーとクロスアカウンコピーの完了までに要する時間は、ベストエフォートベースとなります。完了時間をコントロールする必要がある場合は、15 分から 48 時間までの範囲で完了時間を指定して、AMI が所定の時間内にコピーされるようにすることができます。時間ベースの AMI コピー操作には追加料金が適用されます。詳細については、「*Amazon EBS ユーザーガイド*」の「[料金と請求](https://docs.aws.amazon.com/ebs/latest/userguide/time-based-copies.html)」を参照してください。

**Topics**
+ [考慮事項](#copy-ami-considerations)
+ [コスト](#copy-ami-costs)
+ [Amazon EC2 AMI をコピーするための権限を付与する](copy-ami-permissions.md)
+ [AMI のコピー](#ami-copy-steps)
+ [保留中の AMI コピー操作の中止](#ami-copy-stop)
+ [Amazon EC2 AMI コピーの仕組み](how-ami-copy-works.md)

## 考慮事項
<a name="copy-ami-considerations"></a>
+ **AMI をコピーするためのアクセス許可** – IAM ポリシーを使用すると、AMI をコピーするためのアクセス許可をユーザーに付与したり、それを拒否したりできます。2024 年 10 月 28 日以降、ソース AMI の `CopyImage` アクションにリソースレベルのアクセス許可を指定できます。新しい AMI のリソースレベルのアクセス許可は以前と同様に利用できます。
+ **起動許可と Amazon S3 バケット許可** – AWS は、起動許可と Amazon S3 バケット許可をソース AMI から新しい AMI にコピーしません。コピー操作が完了したら、新しいAMIに起動パーミッションと Amazon S3バケットパーミッションが適用できます。
+ **タグ** – コピーできるのは、ソース AMI にアタッチされているユーザー定義の AMI タグだけです。システムタグ (`aws:` プレフィックスが付いている) や、他の AWS アカウント がアタッチしたユーザー定義タグはコピーされません。AMI をコピーするときに、新しい AMI とそのバックアップスナップショットに新しいタグをアタッチできます。
+ **時間ベースの AMI コピーのクォータ** – *累積スナップショットコピースループットクォータ*に達すると、それ以降の時間ベースの AMI コピーリクエストは失敗します。詳細については「*Amazon EBS ユーザーガイド*」の「[クォータ](https://docs.aws.amazon.com/ebs/latest/userguide/time-based-copies.html#time-based-copies-quota)」を参照してください。
+ **サポートされている送信元と送信先のコピー** – コピーできるかどうか、および新しい AMI で許可される送信先はソース AMI の場所によって決まります。
  + 1 つのリージョンにあるソース AMI は、そのリージョン内、別のリージョン、そのリージョンに関連付けられた Outpost、またはそのリージョン内のローカルゾーンにコピーできます。
  + 1 つのローカルゾーンにあるソース AMI は、そのローカルゾーン内、そのローカルゾーンの親リージョン、または同じ親リージョンを持つ他の特定のローカルゾーンにコピーできます。
  + Outpost にあるソース AMI はコピーできません。
+ **送信元と送信先の CLI パラメータ** – CLI を使用する場合、次のパラメータを使用して、コピーする AMI の送信元の場所と新しい AMI の送信先を指定できます。コピーオペレーションはコピー先リージョンで開始する必要があります。`--region` パラメータを省略すると、AWS CLI 設定で構成されているデフォルトのリージョンがコピー先になります。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/CopyingAMIs.html)

## コスト
<a name="copy-ami-costs"></a>

完了時間を指定しない場合、AMI のコピーに料金はかかりません。ただし、時間を指定して AMI をコピーした場合は、追加料金がかかります。詳細については、「*Amazon EBS ユーザーガイド*」の「[料金と請求](https://docs.aws.amazon.com/ebs/latest/userguide/time-based-copies.html#time-based-copies-pricing)」を参照してください。

標準のストレージ料金とデータ転送料金が適用されます。EBS-backed AMI をコピーする場合は、追加の EBS スナップショットのストレージに対して料金が発生します。

# Amazon EC2 AMI をコピーするための権限を付与する
<a name="copy-ami-permissions"></a>

EBS-backed AMI または Amazon S3-backed AMI をコピーするには、次の IAM アクセス許可が必要です。
+ `ec2:CopyImage` – AMI をコピーするアクセス許可。EBS-backed AMI の場合、AMI のバックアップするスナップショットをコピーするアクセス許可も付与します。
+ `ec2:CreateTags` – ターゲット AMI にタグ付けするアクセス許可。EBS-backed AMI の場合、ターゲット AMI のバックアップするスナップショットにタグ付けするアクセス許可も付与します。

インスタンスストアバック AMI をコピーする場合は、*追加で*次の IAM アクセス許可が必要です。
+ `s3:CreateBucket` – 新しい AMI のターゲットリージョンに S3 バケットを作成するアクセス許可
+ `s3:PutBucketOwnershipControls` – 新しく作成された S3 バケットACLs を有効にして `aws-exec-read` [既定 ACL](https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html#canned-acl) でオブジェクトを書き込めるようにするアクセス許可
+ `s3:GetBucketAcl` – ソースバケットの ACL を読み取るアクセス許可
+ `s3:ListAllMyBuckets` – ターゲットリージョンで AMI の既存の S3 バケットを検出するアクセス許可
+ `s3:GetObject` – ソースバケットのオブジェクトを読み取るアクセス許可
+ `s3:PutObject` – ターゲットバケットにオブジェクトを書き込むアクセス許可
+ `s3:PutObjectAcl` – ターゲットバケットの新しいオブジェクトのアクセス許可を書き込むアクセス許可

**注記**  
2024 年 10 月 28 日以降、ソース AMI の `CopyImage` アクションにリソースレベルのアクセス許可を指定できます。ターゲット AMI のリソースレベルのアクセス許可は以前と同様に利用できます。詳細については、「*サービス認可リファレンス*」の「[Amazon EC2 で定義されたアクション](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonec2.html#amazonec2-actions-as-permissions)」でテーブル内の **[CopyImage]** を参照してください。

## EBS-backed AMI をコピーし、ターゲット AMI とスナップショットにタグ付けするための IAM ポリシーの例
<a name="permissions-to-copy-ebs-backed-ami"></a>

次のポリシー例では、EBS-backed AMI をコピーし、ターゲット AMI とそのバックアップするスナップショットにタグを付けるアクセス許可を付与します。

**注記**  
2024 年 10 月 28 日以降、`Resource` 要素でスナップショットを指定できます。詳細については、「*サービス認可リファレンス*」の「[Amazon EC2 で定義されたアクション](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonec2.html#amazonec2-actions-as-permissions)」でテーブル内の **[CopyImage]** を参照してください。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
        "Sid": "PermissionToCopyAllImages",
        "Effect": "Allow",
        "Action": [
            "ec2:CopyImage",
            "ec2:CreateTags"
        ],
        "Resource": [
            "arn:aws:ec2:*::image/*",
            "arn:aws:ec2:*::snapshot/*"
        ]
    }]
}
```

------

## EBS-backed AMI をコピーし、新しいスナップショットのタグ付けを拒否する IAM ポリシーの例
<a name="permissions-to-copy-ebs-backed-ami-but-deny-tagging-new-snapshots"></a>

`ec2:CopySnapshot` アクセス許可は、`ec2:CopyImage` アクセス許可を取得すると自動的に付与されます。新しいバッキングスナップショットにタグ付けするアクセス許可は明示的に拒否し、`ec2:CreateTags` アクションの `Allow` 効果を上書きできます。

次のポリシー例では、EBS-backed AMI をコピーするアクセス許可を付与しますが、ターゲット AMI の新しいバックアップするスナップショットのタグ付けは拒否します。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
            "Effect": "Allow",
            "Action": [
                "ec2:CopyImage",
                "ec2:CreateTags"
            ],
            "Resource": [
                "arn:aws:ec2:*::image/*",
                "arn:aws:ec2:*::snapshot/*"
            ]
        },
        {
            "Effect": "Deny",
            "Action": "ec2:CreateTags",
            "Resource": "arn:aws:ec2:::snapshot/*"
        }
    ]
}
```

------

## Amazon S3-backed AMI をコピーし、ターゲット AMI にタグ付けするための IAM ポリシーの例
<a name="permissions-to-copy-instance-store-backed-ami"></a>

次のポリシー例では、指定されたソースバケットの Amazon S3-backed AMI を指定されたリージョンにコピーし、ターゲット AMI にタグ付けするアクセス許可を付与します。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
            "Sid": "PermissionToCopyAllImages",
            "Effect": "Allow",
            "Action": [
                "ec2:CopyImage",
                "ec2:CreateTags"
            ],
            "Resource": "arn:aws:ec2:*::image/*"
        },
        {
            "Effect": "Allow",
            "Action": "s3:ListAllMyBuckets",
            "Resource": [
                "arn:aws:s3:::*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": "s3:GetObject",
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-source-bucket/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:CreateBucket",
                "s3:GetBucketAcl",
                "s3:PutObjectAcl",
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::amis-for-111122223333-in-us-east-2-hash"
            ]
        }
    ]
}
```

------

AMI ソースバケットの Amazon リソースネーム (ARN) を検索するには、[https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) で Amazon EC2 コンソールを開き、ナビゲーションペインで [**AMI**] を選択し、[**ソース**] 列でバケット名を特定します。

**注記**  
`s3:CreateBucket` アクセス許可は、初めて Amazon S3-backed AMI を個々のリージョンにコピーするときにのみ必要です。その後、リージョンですでに作成された Amazon S3 バケットは、そのリージョンにコピーする将来のすべての AMI に保存されます。

## AMI のコピー
<a name="ami-copy-steps"></a>

コピーできるのは、自分が所有している AMI、または別のアカウントから共有された AMI です。サポートされている送信元と送信先の組み合わせについては、「[考慮事項](#copy-ami-considerations)」を参照してください。

------
#### [ Console ]

**AMI をコピーするには**

1. Amazon EC2 コンソール ([https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)) を開きます。

1. コンソールのナビゲーションバーから、AMI を含むリージョンを選択してください。

1. ナビゲーションペインで、**[AMI]** を選択し、リージョンで利用できる AMI のリストを表示します。

1. コピーする AMI が表示されない場合は、別のフィルターを選択してください。AMI は、**[自己所有]**、**[プライベートイメージ]**、**[パブリックイメージ]**、および **[無効化されたイメージ]** でフィルタリングできます。

1. コピーする AMI を選択して、**[アクション]**、**[AMI のコピー]** の順に選択してください。

1. **[Amazon マシンイメージ (AMI) をコピー]** のページで、次の情報を指定します。

   1. **[AMI コピー名]** : 新しい AMI の名前。この名前にはオペレーティングシステム情報を含めることができます (Amazon EC2 は AMI の詳細を表示するときにこの情報を提供しません)。

   1. **[AMI コピーの説明]** : デフォルトでは、オリジナルからコピーを見分けられるように、ソース AMI に関する情報が説明に含まれています。この説明は必要に応じて変更できます。

   1. **[送信先リージョン]** : AMI をコピーするリージョン。詳細については、「[リージョン間のコピー](how-ami-copy-works.md#copy-amis-across-regions)」および「[アカウント間のコピー](how-ami-copy-works.md#copy-ami-across-accounts)」を参照してください。

   1. **[タグのコピー]**: このチェックボックスをオンにし、AMI のコピー時にユーザー定義の AMI タグを含めます。システムタグ (`aws:` プレフィックスが付いている) や、他の AWS アカウント がアタッチしたユーザー定義タグはコピーされません。

   1. **時間ベースのコピー**: 次のように、指定した時間内にコピーを完了させるか、ベストエフォートベースで完了させるかを指定できます。
      + 指定した時間内にコピーを完了させるには:
        + **[時間ベースのコピーを有効にする]** を選択します。
        + **[完了時間]** に、コピーに割り当てる時間 (分) を 15 分単位で入力します。完了期間は、AMI に関連付けられているすべてのスナップショットに適用されます。

          詳細については、「*Amazon EBS ユーザーガイド*」の「[料金と請求](https://docs.aws.amazon.com/ebs/latest/userguide/time-based-copies.html)」を参照してください。
      + ベストエフォートベースでコピーを完了するには:
        + **[時間ベースのコピーを有効にする]** の選択を外したままにします。

   1. (EBS バックされた AMI のみ) **[AMI コピーの EBS スナップショットを暗号化]**: ターゲットスナップショットを暗号化するか、別のキーを使用して再暗号化する場合、このチェックボックスを選択してください。デフォルトで暗号化を有効にしている場合、**[AMI コピーの EBS スナップショットを暗号化]** チェックボックスがオンになり、オフにできません。詳細については、「[暗号化とコピー](how-ami-copy-works.md#ami-copy-encryption)」を参照してください。

   1. (EBS-backed AMI のみ) **[KMS キー]**: ターゲットスナップショットを暗号化するための KMS キー。

   1. **[タグ]**: 新しい AMI と新しいスナップショットに同じタグを付けることも、異なるタグでタグ付けすることもできます。
      + 新しい AMI と新しいスナップショットに*同じタグ*を付けるには、**[イメージとスナップショットに対し一緒にタグを付けます]** を選択してください。新しい AMI と作成されるすべてのスナップショットには、同じタグが適用されます。
      + 新しい AMI と新しいスナップショットに*異なる*タグを付けるには、**[イメージとスナップショットに対し個別にタグを付けます]** を選択してください。新しい AMI と作成されるスナップショットには、異なるタグが適用されます。ただし、作成されるすべての新しいスナップショットには同じタグが付けられることに注意してください。新しいそれぞれのスナップショットに異なるタグを付けることはできません。

      (オプション) タグを追加するには、[**タグ追加**] を選択し、そのタグのキーと値を入力してください。各タグについて、これを繰り返します。

   1. AMI をコピーする準備ができたら、**[AMI のコピー]** を選択してください。

      新しい AMI の初期ステータスは `Pending` です。ステータスが `Available` になると、AMI のコピー操作は完了です。

------
#### [ AWS CLI ]

**リージョン間で AMI をコピーするには**  
[copy-image](https://docs.aws.amazon.com/cli/latest/reference/ec2/copy-image.html) コマンドを使用します。コピー元リージョンおよび送信先リージョンの両方を指定する必要があります。コピー元のリージョンは、`--source-region` パラメータを使用して指定します。`--region` パラメータを使用して送信先リージョンを指定できます (このパラメータを省略すると AWS CLI 設定で構成されているデフォルトのリージョンが使用されます)。

```
aws ec2 copy-image \
    --source-image-id ami-0abcdef1234567890 \
    --source-region us-west-2 \
    --name my-ami \
    --region us-east-1
```

AMI のコピー時にターゲットスナップショットを暗号化する場合は、追加のパラメータを (`--encrypted` および `--kms-key-id`) を指定する必要があります。

**リージョンからローカルゾーンに AMI をコピーするには**  
[copy-image](https://docs.aws.amazon.com/cli/latest/reference/ec2/copy-image.html) コマンドを使用します。送信元と送信先の両方を指定する必要があります。コピー元のリージョンは、`--source-region` パラメータを使用して指定します。送信先のローカルゾーンは、`--destination-availability-zone` パラメータを使用して指定します (`--destination-availability-zone-id` を使用することもできます)。リージョン内の AMI は、同じリージョン内のローカルゾーンにのみコピーできます。

```
aws ec2 copy-image \
    --source-image-id ami-0abcdef1234567890 \
    --source-region cn-north-1 \
    --destination-availability-zone cn-north-1-pkx-1a \
    --name my-ami \
    --region cn-north-1
```

**ローカルゾーンからリージョンに AMI をコピーするには**  
[copy-image](https://docs.aws.amazon.com/cli/latest/reference/ec2/copy-image.html) コマンドを使用します。送信元と送信先の両方を指定する必要があります。コピー元のリージョンは、`--source-region` パラメータを使用して指定します。`--region` パラメータを使用して送信先リージョンを指定します (このパラメータを省略すると AWS CLI 設定で構成されているデフォルトのリージョンが使用されます)。送信元のローカルゾーンは、指定されたソース AMI ID の場所から継承されます。ローカルゾーンの AMI は、そのローカルゾーンの親リージョンにのみコピーできます。

```
aws ec2 copy-image \
    --source-image-id ami-0abcdef1234567890 \
    --source-region cn-north-1 \
    --name my-ami \
    --region cn-north-1
```

**ローカルゾーン間で AMI をコピーするには**  
[copy-image](https://docs.aws.amazon.com/cli/latest/reference/ec2/copy-image.html) コマンドを使用します。送信元と送信先の両方を指定する必要があります。送信元のローカルゾーンのリージョンは、`--source-region` パラメータを使用して指定します。送信先のローカルゾーンは、`--destination-availability-zone` パラメータを使用して指定します (`--destination-availability-zone-id` を使用することもできます)。送信元のローカルゾーンは、指定されたソース AMI ID の場所から継承されます。`--region` パラメータを使用して送信先ローカルゾーンの親リージョンを指定します (このパラメータを省略すると AWS CLI 設定で構成されているデフォルトのリージョンが使用されます)。

```
aws ec2 copy-image \
    --source-image-id ami-0abcdef1234567890 \
    --source-region cn-north-1 \
    --destination-availability-zone cn-north-1-pkx-1a \
    --name my-ami \
    --region cn-north-1
```

------
#### [ PowerShell ]

**リージョン間で AMI をコピーするには**  
[Copy-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Copy-EC2Image.html) コマンドレットを使用します。コピー元リージョンおよび送信先リージョンの両方を指定する必要があります。コピー元のリージョンは、`-SourceRegion` パラメータを使用して指定します。送信先リージョンは、`-Region` パラメータ、または [Set-AWSDefaultRegion](https://docs.aws.amazon.com/powershell/latest/userguide/pstools-installing-specifying-region.html) コマンドレットを使用して指定できます。

```
Copy-EC2Image `
    -SourceImageId ami-0abcdef1234567890 `
    -SourceRegion us-west-2 `
    -Name my-ami `
    -Region us-east-1
```

AMI のコピー時にターゲットスナップショットを暗号化する場合は、追加のパラメータを (`-Encrypted` および `-KmsKeyId`) を指定する必要があります。

**リージョンからローカルゾーンに AMI をコピーするには**  
[Copy-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Copy-EC2Image.html) コマンドレットを使用します。送信元と送信先の両方を指定する必要があります。コピー元のリージョンは、`-SourceRegion` パラメータを使用して指定します。送信先のローカルゾーンは、`-DestinationAvailabilityZone` パラメータを使用して指定します (`-DestinationAvailabilityZoneId` を使用することもできます)。リージョン内の AMI は、同じリージョン内のローカルゾーンにのみコピーできます。

```
Copy-EC2Image `
    -SourceImageId ami-0abcdef1234567890 `
    -SourceRegion cn-north-1 `
    -DestinationAvailabilityZone cn-north-1-pkx-1a `
    -Name my-ami `
    -Region cn-north-1
```

**ローカルゾーンからリージョンに AMI をコピーするには**  
[Copy-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Copy-EC2Image.html) コマンドレットを使用します。送信元と送信先の両方を指定する必要があります。コピー元のリージョンは、`-SourceRegion` パラメータを使用して指定します。送信先リージョンは、`-Region` パラメータ、または [Set-AWSDefaultRegion](https://docs.aws.amazon.com/powershell/latest/userguide/pstools-installing-specifying-region.html) コマンドレットを使用して指定します。送信元のローカルゾーンは、指定されたソース AMI ID の場所から継承されます。ローカルゾーンの AMI は、そのローカルゾーンの親リージョンにのみコピーできます。

```
Copy-EC2Image `
    -SourceImageId ami-0abcdef1234567890 `
    -SourceRegion cn-north-1 `
    -Name my-ami `
    -Region cn-north-1
```

**ローカルゾーン間で AMI をコピーするには**  
[Copy-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Copy-EC2Image.html) コマンドレットを使用します。送信元と送信先の両方を指定する必要があります。送信元のローカルゾーンのリージョンは、`-SourceRegion` パラメータを使用して指定します。送信先のローカルゾーンは、`-DestinationAvailabilityZone` パラメータを使用して指定します (`-DestinationAvailabilityZoneId` を使用することもできます)。送信元のローカルゾーンは、指定されたソース AMI ID の場所から継承されます。送信先のローカルゾーンの親リージョンは、`-Region` パラメータ、または [Set-AWSDefaultRegion](https://docs.aws.amazon.com/powershell/latest/userguide/pstools-installing-specifying-region.html) コマンドレットを使用して指定できます。

```
Copy-EC2Image `
    -SourceImageId ami-0abcdef1234567890 `
    -SourceRegion cn-north-1 `
    -DestinationAvailabilityZone cn-north-1-pkx-1a `
    -Name my-ami `
    -Region cn-north-1
```

------

## 保留中の AMI コピー操作の中止
<a name="ami-copy-stop"></a>

次の手順を使用して、保留中の AMI コピーを停止できます。

------
#### [ Console ]

**AMI のコピー操作を中止するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションバーのリージョンセレクターから対象のリージョンを選択してください。

1. ナビゲーションペインで [**AMI**] を選択してください。

1. コピーを中止する AMI を選択し、**[アクション]**、**[AMI を登録解除]** を選択してください。

1. 確認を求めるメッセージが表示されたら、**[AMI の登録解除]** を選択してください。

------
#### [ AWS CLI ]

**AMI のコピー操作を中止するには**  
[deregister-image](https://docs.aws.amazon.com/cli/latest/reference/ec2/deregister-image.html) コマンドを使用します。

```
aws ec2 deregister-image --image-id ami-0abcdef1234567890
```

------
#### [ PowerShell ]

**を使用して AMI のコピー操作を中止するには**  
[Unregister-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Unregister-EC2Image.html) コマンドレットを使用します。

```
Unregister-EC2Image -ImageId ami-0abcdef1234567890
```

------

# Amazon EC2 AMI コピーの仕組み
<a name="how-ami-copy-works"></a>

ソース AMI をコピーすると、見た目は同じでもまったく別の*ターゲット* AMI とも呼ばれる新しい AMI になります。ターゲット AMI にはそれ独自の AMI ID があります。ソース AMI は、ターゲット AMI に影響を及ぼさずに変更または登録解除できます。逆の場合も同様です。

EBS-backed AMI を使用すると、それぞれのバックアップするスナップショットは、同一だが区別されるターゲットスナップショットにコピーされます。AMI を新しいリージョンにコピーすると、スナップショットは完全な (増分ではない) コピーになります。暗号化されていないバッキングスナップショットを暗号化するか、新しい KMS キーに暗号化すると、スナップショットは完全な (増分ではない) コピーになります。以降の AMI のコピー操作では、バッキングスナップショットの増分コピーが作成されます。

**Topics**
+ [リージョン間のコピー](#copy-amis-across-regions)
+ [アカウント間のコピー](#copy-ami-across-accounts)
+ [時間ベースの AMI コピー操作](#ami-time-based)
+ [暗号化とコピー](#ami-copy-encryption)

## リージョン間のコピー
<a name="copy-amis-across-regions"></a>

地理的に分散したリージョンに AMI をコピーすると、次のような利点があります。
+ 一貫性のあるグローバルなデプロイメント: 1 つのリージョンから別のリージョンに AMI をコピーすることで、一貫性のあるインスタンスを同じ AMI から別のリージョンに起動できます。
+ スケーラビリティ: ユーザーの場所にかかわらず、ユーザーのニーズに合ったグローバルアプリケーションをより簡単に設計できます。
+ パフォーマンス: アプリケーションを配布したり、アプリケーションの重要なコンポーネントをユーザーの近くに配置したりすることでパフォーマンスを向上できます。また、インスタンスの種類やその他の AWS サービスなど、リージョン固有の機能を活用することもできます。
+ 高可用性: アプリケーションを設計し、AWS リージョン全体にわたってデプロイして可用性を高めることができます。

次の図は、ソース AMI と異なるリージョンにある 2 つのコピーされた AMI、およびそこから起動される EC2 インスタンスの関係を示します。AMI からインスタンスを起動すると、AMI が存在する同じリージョンに存在します。ソース AMI を変更し、それらの変更をターゲットリージョンの AMI に反映させる場合、ソース AMI をターゲットリージョンに再度コピーする必要があります。

![\[別のリージョンにコピーされた AMI\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/ami_copy.png)


Amazon S3-backed AMI を最初にリージョンにコピーするときに、そのリージョンにコピーされた AMI に Amazon S3 バケットを作成します。そのリージョンにコピーするすべての Amazon S3-backed AMI が、このバケットに保存されます。バケット名の形式は次のとおりです: AMI-for-*アカウント*-in-*リージョン*-*ハッシュ* 例: `amis-for-123456789012-in-us-east-2-yhjmxvp6`。

**前提条件**  
AMI をコピーする前に、ソース AMI のすべての内容が、異なるリージョンでの実行をサポートするように更新されていることを確認する必要があります。例えば、データベース接続文字列や同様のアプリケーション設定データが、適切なリソースを指すように更新する必要があります。それ以外の場合、対象のリージョンの新しい AMI から起動したインスタンスは元のリージョンのリソースをまだ使用している可能性があり、それによりパフォーマンスとコストに影響が及ぶことがあります。

**制限事項**
+ コピー先のリージョンには、AMI の同時コピー操作が 300 個に制限されます。これは、時間ベースの AMI コピー操作にも適用されます。
+ 準仮想化 (PV) AMI がサポートされていないリージョンに、PV AMI をコピーすることはできません。詳細については、「[仮想化タイプ](ComponentsAMIs.md#virtualization_types)」を参照してください。

## アカウント間のコピー
<a name="copy-ami-across-accounts"></a>

他の AWS アカウント の AMI が [AWS アカウント と共有されている](sharingamis-explicit.md)場合は、共有 AMI をコピーできます。これは、クロスアカウントコピーと呼ばれています。共有される AMI はソース AMI です。ソース AMI をコピーする際に、新しい AMI を作成します。新しい AMI は、多くの場合、ターゲット AMI と呼ばれます。

**AMI のコスト**
+ 共有されている AMI の場合、リージョン内のストレージについて、共有されている AMI のアカウントに課金されます。
+ 自分のアカウントと共有された AMI をコピーした場合、アカウントのコピー先の AMI の所有者は自分になります。
  + ソース AMI の所有者は、標準の Amazon EBS または Amazon S3 転送料金が課金されます。
  + 宛先リージョン内のターゲット AMI のストレージについて料金が課金されます。

**リソースのアクセス許可**  
別のアカウントと共有した AMI をコピーするときは、ソース AMI の所有者から、AMI 自体の読み取り許可だけでなく、それをバックアップしているストレージの読み取り許可も、付与してもらう必要があります。ストレージは、関連 EBS スナップショット (Amazon EBS-backed AMI の場合) か、関連 S3 バケット (Amazon S3-backed AMI の場合) のどちらかです。共有 AMI に暗号化されたスナップショットがある場合、所有者はキーをユーザーと共有する必要があります。リソースのアクセス許可付与についての詳細は、EBS スナップショットの場合は「*Amazon EBS ユーザーガイド*」の「[Amazon EBS スナップショットを他の AWS アカウント と共有](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-modifying-snapshot-permissions.html)」を参照してください。S3 バケットの場合、「*Amazon S3 ユーザーガイド*」の「[Amazon S3 で ID とアクセスの管理](https://docs.aws.amazon.com/AmazonS3/latest/userguide/security-iam.html)」を参照してください。

**注記**  
ソース AMI にアタッチされたタグは、複数のアカウントでターゲット AMI にコピーされません。

## 時間ベースの AMI コピー操作
<a name="ami-time-based"></a>

単一の関連付けられたスナップショットを持つ EBS-backed AMI に対して時間ベースの AMI コピー操作を開始すると、**個々の時間ベースのスナップショットコピー操作**と同じ動作をし、同じスループット制限が適用されます。

複数の関連スナップショットを持つ EBS-backed AMI に対して時間ベースの AMI コピー操作を開始すると、**同時に実行される時間ベースのスナップショットコピー操作**と同じように動作し、同じスループット制限が適用されます。関連付けられたスナップショットごとに個別のスナップショットコピーリクエストが発生し、それぞれが累積スナップショットコピースループットクォータに影響します。指定した完了期間は、関連付けられている各スナップショットに適用されます。

詳細については、「*Amazon EBS ユーザーガイド*」の「[料金と請求](https://docs.aws.amazon.com/ebs/latest/userguide/time-based-copies.html)」を参照してください。

## 暗号化とコピー
<a name="ami-copy-encryption"></a>

次の表は、各種 AMI コピーのシナリオにおける暗号化サポートを示します。暗号化されたスナップショットを生成するために暗号化されていないスナップショットをコピーすることはできますが、暗号化されていないスナップショットを生成するために暗号化されたスナップショットをコピーすることはできません。


| シナリオ | 説明 | サポート対象 | 
| --- | --- | --- | 
| 1 | 非暗号化から非暗号化 | はい | 
| 2 | 暗号化から暗号化 | はい | 
| 3 | 非暗号化から暗号化 | はい | 
| 4 | 暗号化から非暗号化 | いいえ | 

**注記**  
`CopyImage` アクション中の暗号化は Amazon EBS-backed AMI にのみ適用されます。Amazon S3-backed AMI はスナップショットを使用しないため、コピーを使用して暗号化ステータスを変更することはできません。

暗号化パラメータを指定しないで AMI をコピーすると、デフォルトでバックアップするスナップショットは元の暗号化ステータスと一緒にコピーされます。したがって、ソース AMI が暗号化されていないスナップショットでバックアップされている場合、結果のターゲットスナップショットも暗号化されません。同様に、ソース AMI のスナップショットが暗号化されている場合、結果のターゲットスナップショットも同じ AWS KMS キーで暗号化されます。複数のスナップショットでバックアップされている AMI の場合、各ターゲットスナップショットは対応するソーススナップショットの暗号化状態を保持します。

AMI コピー中にターゲットバッキングスナップショットの暗号化状態を変更するには、暗号化パラメータを指定できます。次の例では、ターゲット AMI の暗号化状態を変更するために `CopyImage` アクションに暗号化パラメータが指定されるデフォルトではないケースを示しています。

**暗号化されていないソース AMI の暗号化されたターゲット AMI へのコピー**

このシナリオでは、暗号化されていないルートスナップショットでバックアップされた AMI は、暗号化されたルートスナップショットを持つ AMI にコピーされます。`CopyImage` アクションは、カスタマー管理された型キーなど、2 つの暗号化パラメータで呼び出されます。その結果、ルートスナップショットの暗号化ステータスが変更され、ターゲット AMI はソーススナップショットと同じデータを含むルートスナップショットにバックアップされますが、指定されたキーを使用して暗号化されます。両方の AMI でスナップショットのストレージコストと、いずれかの AMI から起動するインスタンスの料金が発生します。

**注記**  
デフォルトで暗号化を有効にすると、AMI 内のすべてのスナップショットで `Encrypted` パラメータを `true` に設定したのと同じ効果があります。

![\[AMI をコピーし、スナップショットをオンザフライで暗号化\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/ami-to-ami-convert.png)


`Encrypted` パラメータを設定すると、このインスタンスの単一のスナップショットが暗号化されます。`KmsKeyId` パラメータを指定しない場合は、デフォルトのカスタマー管理された型キーを使用して、スナップショットのコピーが暗号化されます。

暗号化されたスナップショットを持つ AMI のコピーの詳細については、「[EBS-backed AMI での暗号化の利用](AMIEncryption.md)」を参照してください。

# S3 を使用して AMI を保存および復元する
<a name="ami-store-restore"></a>

Amazon マシンイメージ (AMI) を Amazon S3 バケットに保存し、AMI を別の S3 バケットにコピーして、S3 バケットから復元できます。S3 バケットを使用して AMI を保存および復元することで、AMI をある AWS パーティションから別のパーティション (例えば、主要な商用パーティションから AWS GovCloud (US) パーティション) にコピーできます。AMI を S3 バケットに保存することで、AMI のアーカイブコピーを作成することもできます。

S3 を使用した AMI の保存および復元のサポート対象の API は、`CreateStoreImageTask`、`DescribeStoreImageTasks`、および `CreateRestoreImageTask` です。

`CopyImage` は、AWS パーティション*内*の AMI のコピーの際に使用することが推奨される API です。ただし、`CopyImage` は、AMI を*別の*パーティションにコピーできません。

AWS パーティションの詳細については、「*IAM ユーザーガイド*」の「[Amazon リソースネーム (ARN)](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html)」ページの「*パーティション*」を参照してください。

**警告**  
AWS パーティションまたは AWS リージョン間でデータを移動する場合、適用されるすべての法令およびビジネス要件 (適用される政府の規制およびデータ所在地に関する要件を含みますが、これらに限られません) を確実に遵守してください。

**Topics**
+ [ユースケース](#use-cases)
+ [制限事項](#ami-store-restore-limitations)
+ [コスト](#store-restore-costs)
+ [AMI の保存と復元の仕組み](store-restore-how-it-works.md)
+ [保存イメージタスクを作成する](work-with-ami-store-restore.md)

## ユースケース
<a name="use-cases"></a>

**Topics**
+ [AWS パーティション間で AMI をコピーする](#copy-to-partition)
+ [AMI のアーカイブコピーを作成する](#archival-copies)

### AWS パーティション間で AMI をコピーする
<a name="copy-to-partition"></a>

S3 バケットを使用して AMI を保存および復元することで、ある AWS パーティションから別のパーティションに、またはある AWS リージョンから別のリージョンに AMI をコピーできます。次の例では、主要な商用パーティションから AWS GovCloud (US) パーティションに、具体的には `us-east-2` リージョンから `us-gov-east-1` リージョンに AMI をコピーします。

あるパーティションから別のパーティションに AMI をコピーするには、次の手順に従います。
+ `CreateStoreImageTask` を使用して、現在のリージョンの S3 バケットに AMI を保存します。この例では、S3 バケットは `us-east-2` にあります。
+ `DescribeStoreImageTasks` を使用して、保存タスクの進行状況をモニタリングします。タスクが完了すると、オブジェクトが S3 バケットに表示されます。
+ 任意の手順を使用して、保存された AMI オブジェクトをターゲットパーティションの S3 バケットにコピーします。この例では、S3 バケットは `us-gov-east-1` にあります。
**注記**  
パーティションごとに異なる AWS 認証情報が必要なため、S3 オブジェクトをあるパーティションから別のパーティションに直接コピーすることはできません。パーティション間で S3 オブジェクトをコピーするプロセスは、このドキュメントの対象外です。例として、次のコピープロセスを提供していますが、お客様のセキュリティ要件を満たすコピープロセスを使用する必要があります。  
パーティション間で 1 つの AMI をコピーするためのコピープロセスはシンプルです。ソースバケットから中間ホスト (EC2 インスタンスやラップトップなど) に[オブジェクトをダウンロード](https://docs.aws.amazon.com/AmazonS3/latest/userguide/download-objects.html)し、中間ホストからターゲットバケットに[オブジェクトをアップロード](https://docs.aws.amazon.com/AmazonS3/latest/userguide/upload-objects.html)するだけです。プロセスの各段階で、パーティションの AWS 認証情報を使用します。
より持続的な使用のために、コピーを管理するアプリケーションの開発をご検討ください。S3 [マルチパートダウンロードとアップロード](https://docs.aws.amazon.com/AmazonS3/latest/userguide/mpuoverview.html)を使用することも考慮に値します。
+ `CreateRestoreImageTask` を使用して、ターゲットパーティションの S3 バケットから AMI を復元します。この例では、S3 バケットは `us-gov-east-1` にあります。
+ その状態が使用可能になるタイミングを確認するために、AMI を記述して復元タスクの進行状況をモニタリングします。また、スナップショットを記述することで、復元される AMI を構成するスナップショットの進行状況 (%) をモニタリングすることもできます。

### AMI のアーカイブコピーを作成する
<a name="archival-copies"></a>

AMI を S3 バケットに保存することで、AMI のアーカイブコピーを作成できます。AMI は S3 内の 1 つのオブジェクトにパックされ、すべての AMI メタデータ (共有情報を除く) は、保存された AMI の一部として保持されます。AMI データは、ストレージプロセスの一環として圧縮されます。簡単に圧縮できるデータを含む AMI は、S3 で小さめのオブジェクトとなります。コストを削減するために、より安価な S3 ストレージ階層を使用できます。詳細については、[Amazon S3 ストレージクラス](https://aws.amazon.com/s3/storage-classes/)および [Amazon S3 の料金](https://aws.amazon.com/s3/pricing/)をご参照ください。

## 制限事項
<a name="ami-store-restore-limitations"></a>
+ AMI を保存するには、AWS アカウント が AMI とそのスナップショットを所有しているか、AMI とそのスナップショットを[アカウントと直接共有する](sharingamis-explicit.md)必要があります。[公開されているだけの](sharingamis-intro.md) AMI は保存できません。
+ これらの API を使用して保存できるのは、EBS-backed AMI だけです。
+ 準仮想化 (PV) AMI はサポートされていません。
+ 保存可能な AMI の上限サイズ (圧縮前) は、5,000 GB です。
+ 保存イメージリクエストのクォータ: 進行中の 1,200 GB の保存作業 (スナップショットデータ)。
+ 復元イメージリクエストのクォータ: 進行中の 600 GB の復元作業 (スナップショットデータ)。
+ 保存タスク中は、スナップショットを削除してはならず、保存を実行する IAM プリンシパルにはスナップショットへのアクセス権が必要です。それ以外の場合は、保存プロセスが失敗します。
+ 同じ S3 バケットに AMI の複数のコピーを作成することはできません。
+ S3 バケットに保存されている AMI は、元の AMI ID では復元できません。[AMI エイリアシング](https://docs.aws.amazon.com/systems-manager/latest/userguide/parameter-store-ec2-aliases.html)を使用すると、これを軽減できます。
+ 現在、保存 API と復元 API は、AWS Command Line Interface、AWS SDK、および Amazon EC2 API を使用する場合にのみサポートされます。Amazon EC2 コンソールを使用して AMI を保存および復元することはできません。

## コスト
<a name="store-restore-costs"></a>

S3 を使用して AMI を保存および復元する場合、保存 API と復元 API で使用されるサービス、およびデータ転送について料金が発生します。API は、S3 と EBS Direct API を使用します (これらの API がスナップショットデータにアクセスするために内部的に使用されます)。詳細については、[Amazon S3 の料金](https://aws.amazon.com/s3/pricing/)および [Amazon EBS の料金](https://aws.amazon.com/ebs/pricing/)をご参照ください。

# AMI の保存と復元の仕組み
<a name="store-restore-how-it-works"></a>

S3 を使用して AMI を保存および復元するには、次の API を使用します。
+ `CreateStoreImageTask` – AMI を S3 バケットに保存する
+ `DescribeStoreImageTasks` – AMI 保存タスクの進行状況を示す
+ `CreateRestoreImageTask` – S3 バケットから AMI を復元する

**Topics**
+ [CreateStoreImageTask](#CreateStoreImageTask)
+ [DescribeStoreImageTasks](#DescribeStoreImageTasks)
+ [CreateRestoreImageTask](#CreateRestoreImageTask)
+ [ファイルパス](#file-paths-in-s3)

## CreateStoreImageTask
<a name="CreateStoreImageTask"></a>

`CreateStoreImageTask` API は、AMI を単一のオブジェクトとして S3 バケットに保存します。

API は、AMI とそのスナップショットからすべてのデータを読み取るタスクを作成し、[S3 マルチパートアップロード](https://docs.aws.amazon.com/AmazonS3/latest/userguide/mpuoverview.html)を使用して S3 オブジェクトにデータを保存します。API は、リージョン固有でない AMI メタデータの大部分を含む AMI のすべてのコンポーネント、および AMI に含まれるすべての EBS スナップショットを取得し、S3 内の単一のオブジェクトにパックします。データは、S3 で使用される領域の量を削減するために、アップロードプロセスの一環として圧縮されるので、S3 内のオブジェクトは AMI 内のスナップショットのサイズの合計よりも小さくなる可能性があります。

この API を呼び出すアカウントに AMI タグとスナップショットタグが表示されている場合、それらは保持されます。

S3 のオブジェクトは AMI と同じ ID を持っていますが、`.bin` 拡張子が付いています。AMI 名、AMI の説明、AMI の登録日、AMI の所有者アカウント、および保存オペレーションのタイムスタンプといったデータも S3 オブジェクトに S3 メタデータタグとして保存されます。

タスクを完了するのにかかる時間は、AMI のサイズによって異なります。また、タスクがキューに入れられているため、進行中の他のタスクの数にも依存します。`DescribeStoreImageTasks` API を呼び出してタスクの進行状況を追跡できます。

進行中のすべての AMI のサイズの合計は、アカウントごとに 1,200 GB の EBS スナップショットデータに制限されます。進行中のタスクが制限未満になるまで、それ以降のタスクの作成は拒否されます。例えば、200 GB のスナップショットデータを持つ AMI と 400 GB のスナップショットデータを持つ別の AMI が現在保存されている場合、別のリクエストが受け入れられます。これは、進行中の合計が 600 GB で、制限未満であるためです。ただし、1,200 GB のスナップショットデータを持つ 1 つの AMI が現在保存されようとしている場合は、タスクが完了するまでそれ以降のタスクは拒否されます。

## DescribeStoreImageTasks
<a name="DescribeStoreImageTasks"></a>

`DescribeStoreImageTasks` API は、AMI の保存タスクの進行状況を示します。指定した AMI のタスクを記述できます。AMI を指定しない場合、過去 31 日間に処理されたすべての保存イメージタスクのページ分割されたリストが表示されます。

各 AMI タスクについて、応答では、タスクが `InProgress`、`Completed`、または `Failed` のいずれであるかが示されます。`InProgress` のタスクの場合、応答では、進行状況がパーセンテージで示されます。

タスクは時系列の逆順にリストされます。

現時点では、前月のタスクのみを表示できます。

## CreateRestoreImageTask
<a name="CreateRestoreImageTask"></a>

`CreateRestoreImageTask` API は、`CreateStoreImageTask` リクエストを使用して以前に作成された S3 オブジェクトから AMI を復元するタスクを開始します。

復元タスクは、保存タスクが実行されたリージョンと同じリージョンまたは別のリージョンで実行できます。

AMI オブジェクトの復元ソースである S3 バケットは、復元タスクがリクエストされたリージョンと同じリージョンに存在する必要があります。AMI はこのリージョンで復元されます。

AMI は、保存された AMI の値に対応する名前、説明、ブロックデバイスマッピングなどのメタデータとともに復元されます。このアカウントの名前は、リージョン内の AMI に対して一意である必要があります。名前を指定しない場合、新しい AMI は元の AMI と同じ名前になります。AMI は、復元プロセス時に生成される新しい AMI ID を取得します。

AMI 復元タスクを完了するのにかかる時間は、AMI のサイズによって異なります。また、タスクがキューに入れられているため、進行中の他のタスクの数にも依存します。タスクの進行状況は、AMI ([describe-images](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html)) またはその EBS スナップショット ([describe-snapshots](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-snapshots.html)) を記述することで確認できます。タスクが失敗すると、AMI とスナップショットは失敗の状態に移行されます。

進行中のすべての AMI のサイズの合計は、アカウントあたり 600 GB (復元後のサイズに基づく) の EBS スナップショットデータに制限されます。進行中のタスクが制限未満になるまで、それ以降のタスクの作成は拒否されます。

## ファイルパス
<a name="file-paths-in-s3"></a>

AMI を保存および復元するときは、次の方法でファイルパスを使用できます。
+ AMI を S3 に保存する場合、ファイルパスをバケット名に追加できます。システム内部では、バケット名からパスが分離され、AMI を保存するために生成されたオブジェクトキーにそのパスが追加されます。完全なオブジェクトパスは、API 呼び出しからのレスポンスに表示されます。
+ AMI を復元する場合、オブジェクトキーパラメータを使用できるので、オブジェクトキー値の先頭にパスを追加できます。

**例: ファイルパスが追加されたバケット名**  
AMI を保存する場合、バケット名の後にファイルパスを指定します。

```
amzn-s3-demo-bucket/path1/path2
```

作成されるオブジェクトキーを次に示します。

```
path1/path2/ami-0abcdef1234567890.bin
```

AMI を復元するときは、バケット名とオブジェクトキーの両方を指定します。例については「[保存イメージタスクを作成する](work-with-ami-store-restore.md#create-store-image-task)」を参照してください。

# 保存イメージタスクを作成する
<a name="work-with-ami-store-restore"></a>

AMI を S3 バケットに保存するときに、保存イメージタスクが作成されます。保存イメージタスクを使用して、プロセスの進行状況と結果をモニタリングできます。

**Topics**
+ [AMI のセキュリティ保護](#securing-amis)
+ [S3 を使用して AMI を保存および復元するためのアクセス権限](#ami-s3-permissions)
+ [保存イメージタスクを作成する](#create-store-image-task)
+ [復元イメージタスクを作成する](#create-restore-image-task)

## AMI のセキュリティ保護
<a name="securing-amis"></a>

AMI のコンテンツを保護するために十分なセキュリティをもって S3 バケットが確実に設定されていること、および AMI オブジェクトがバケット内に残っている限り、セキュリティが確実に維持されるようにすることが重要です。これを実行できない場合は、これらの API の使用はお勧めしません。S3 バケットへのパブリックアクセスが許可されていないことを確認します。必須ではありませんが、AMI を保存する S3 バケットのために[サーバー側の暗号化](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html)を有効にすることをお勧めします。

S3 バケットに適切なセキュリティを設定する方法については、次のセキュリティトピックをご参照ください。
+ [Amazon S3 ストレージへのパブリックアクセスのブロック](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-control-block-public-access.html)
+ [Amazon S3 バケット向けのサーバー側のデフォルトの暗号化動作の設定](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-encryption.html)
+ [AWS Config ルールの s3-bucket-ssl-requests-only に準拠するには、どの S3 バケットポリシーを使用できますか?](https://repost.aws/knowledge-center/s3-bucket-policy-for-config-rule)
+ [Amazon S3 サーバーアクセスログ記録の有効化](https://docs.aws.amazon.com/AmazonS3/latest/userguide/enable-server-access-logging.html)

AMI スナップショットが S3 オブジェクトにコピーされると、データは TLS 接続を介してコピーされます。暗号化されたスナップショットを使用して AMI を保存できますが、スナップショットは保存プロセスの一部として復号されます。

## S3 を使用して AMI を保存および復元するためのアクセス権限
<a name="ami-s3-permissions"></a>

IAM プリンシパルが Amazon S3 を使用して AMI を保存または復元する場合は、必要な許可を付与する必要があります。

次のポリシーの例には、IAM プリンシパルが保存タスクと復元タスクを実行できるようにするために必要なすべてのアクションが含まれています。

特定のリソースへのアクセス権のみをプリンシパルに付与する IAM ポリシーを作成することもできます。ポリシーの例については、「*IAM ユーザーガイド*」の「[AWS リソースのアクセス管理](https://docs.aws.amazon.com/IAM/latest/UserGuide/access.html)」を参照してください。

**注記**  
AMI を構成するスナップショットが暗号化されている場合、またはアカウントの暗号化がデフォルトで有効になっている場合は、IAM プリンシパルに KMS キーを使用するための許可が付与されている必要があります。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:DeleteObject",
                "s3:GetObject",
                "s3:ListBucket",
                "s3:PutObject",
                "s3:PutObjectTagging",
                "s3:AbortMultipartUpload",
                "ebs:CompleteSnapshot",
                "ebs:GetSnapshotBlock",
                "ebs:ListChangedBlocks",
                "ebs:ListSnapshotBlocks",
                "ebs:PutSnapshotBlock",
                "ebs:StartSnapshot",
                "ec2:CreateStoreImageTask",
                "ec2:DescribeStoreImageTasks",
                "ec2:CreateRestoreImageTask",
                "ec2:GetEbsEncryptionByDefault",
                "ec2:DescribeTags",
                "ec2:CreateTags"
            ],
            "Resource": "*"
        }
    ]
}
```

------

## 保存イメージタスクを作成する
<a name="create-store-image-task"></a>

AMI を S3 バケットに保存するには、まず保存イメージタスクを作成します。タスクを完了するのにかかる時間は、AMI のサイズによって異なります。タスクが成功または失敗するまで、タスクの進行状況を追跡できます。

------
#### [ AWS CLI ]

**保存イメージタスクを作成するには**  
[create-store-image-task](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-store-image-task.html) コマンドを使用します。

```
aws ec2 create-store-image-task \
    --image-id ami-0abcdef1234567890 \
    --bucket amzn-s3-demo-bucket
```

以下は出力の例です。

```
{
  "ObjectKey": "ami-0abcdef1234567890.bin"
}
```

**保存イメージタスクの進行状況を表示するには**  
[describe-store-image-tasks](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-store-image-tasks.html) コマンドを使用します。

```
aws ec2 describe-store-image-tasks \
    --image-ids ami-0abcdef1234567890 \
    --query StoreImageTaskResults[].StoreTaskState \
    --output text
```

以下は出力の例です。

```
InProgress
```

------
#### [ PowerShell ]

**保存イメージタスクを作成するには**  
[New-EC2StoreImageTask](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2StoreImageTask.html) コマンドレットを使用します。

```
New-EC2StoreImageTask `
    -ImageId ami-0abcdef1234567890 `
    -Bucket amzn-s3-demo-bucket
```

以下は出力の例です。

```
ObjectKey         : ami-0abcdef1234567890.bin
```

**保存イメージタスクの進行状況を表示するには**  
[Get-EC2StoreImageTask](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2StoreImageTask.html) コマンドレットを使用します。

```
(Get-EC2StoreImageTask -ImageId ami-0abcdef1234567890).StoreTaskState
```

以下は出力の例です。

```
InProgress
```

------

## 復元イメージタスクを作成する
<a name="create-restore-image-task"></a>

復元された AMI の名前を指定する必要があります。このアカウントの名前は、リージョン内の AMI に対して一意である必要があります。復元された AMI は、新しい AMI ID を取得します。

------
#### [ AWS CLI ]

**復元イメージタスクを作成するには**  
[create-restore-image-task](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-restore-image-task.html) コマンドを使用します。

```
aws ec2 create-restore-image-task \
    --object-key ami-0abcdef1234567890.bin \
    --bucket amzn-s3-demo-bucket \
    --name "my-restored-ami"
```

以下は出力の例です。

```
{
   "ImageId": "ami-1234567890abcdef0"
}
```

------
#### [ PowerShell ]

**復元イメージタスクを作成するには**  
[New-EC2RestoreImageTask](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2RestoreImageTask.html) コマンドレットを使用します。

```
New-EC2RestoreImageTask `
    -ObjectKey ami-0abcdef1234567890.bin `
    -Bucket amzn-s3-demo-bucket `
    -Name "my-restored-ami"
```

以下は出力の例です。

```
ImageId         : ami-1234567890abcdef0
```

------

# AMI 祖先を使用して AMI のオリジンをトレースする
<a name="ami-ancestry"></a>

AMI 祖先は、すべての祖先 AMI の ID とリージョンを返すことで、AMI のオリジンをトレースするのに役立ちます。AMI を作成またはコピーすると、新しい AMI はソース (親) AMI の ID とリージョンを保持します。これにより、ルート AMI に遡るまで AMI のチェーンを追跡することができます。

**主な利点**

AMI 祖先を使用すると、次のことができます。
+ AMI 派生を追跡して、内部ポリシーに準拠していることを確認する。
+ 祖先 AMI でセキュリティの問題が見つかったときに、脆弱性を持つ可能性がある AMI を特定する。
+ 複数のリージョンにわたる AMI オリジンの可視性を維持する。

**Topics**
+ [AMI 祖先の仕組み](#how-ami-ancestry-works)
+ [考慮事項](#ami-ancestry-conditions)
+ [AMI 祖先を表示する](#view-ami-ancestry)
+ [ソースを AMI を識別](#identify-source-ami-used-to-create-new-ami)

## AMI 祖先の仕組み
<a name="how-ami-ancestry-works"></a>

AMI 祖先は、指定された AMI の作成に使用された親 AMI、親の親など、ルート AMI に遡るまで AMI を識別します。処理の流れ
+ 各 AMI には、ソース (親) AMI の ID とリージョンが表示されます。
+ 選択した AMI から始まる祖先エントリのリストには、各親 AMI が順番に表示されます。
+ 祖先エントリのリストは、ルート AMI に到達するまでトレースバックすることができます。ルート AMI は次のいずれかです。
  + [検証済みプロバイダー](sharing-amis.md#verified-ami-provider)からのパブリック AMI (所有者エイリアスによって識別されます。これは `amazon` または `aws-marketplace` です)。
  + 祖先が記録されていない AMI。例えば、[RegisterImage](creating-an-ami-ebs.md#creating-launching-ami-from-snapshot) を使用してスナップショットのセットから直接 AMI を作成する場合、インスタンスから AMI を作成する場合とは異なり、追跡できるソース AMI はありません。
  + ソース AMI が別の[パーティション](https://docs.aws.amazon.com/glossary/latest/reference/glos-chap.html#partition)の AMI。
  + リスト内の 50 番目の AMI。祖先リスト内の AMI の最大数は 50 です。

## 考慮事項
<a name="ami-ancestry-conditions"></a>
+ ソース AMI の ID とリージョンは、[CreateImage](creating-an-ami-ebs.md#how-to-create-ebs-ami)、[CopyImage](CopyingAMIs.md#ami-copy-steps)、または [CreateRestoreImageTask](store-restore-how-it-works.md#CreateRestoreImageTask) を使用して作成された AMI でのみ使用できます。
+ [CreateImage](creating-an-ami-ebs.md#how-to-create-ebs-ami) (インスタンスから AMI を作成) を使用して作成された AMI の場合、ソース AMI ID はインスタンスの起動に使用される AMI の ID です。
+ ソース AMI 情報は、次の場合は使用できません。
  + [RegisterImage](creating-an-ami-ebs.md#creating-launching-ami-from-snapshot) を使用して作成された AMI (スナップショットから作成されているため)。
  + 一部の古い AMI。
+ ソース AMI 情報は、次の場合に保持されます。
  + AMI がリージョン間でコピーされている場合。
  + ソース AMI が登録解除 (削除) されている場合。
  + お客様がソース AMI にアクセスできない場合。
+ 各祖先リストが 50 AMI に制限されている場合。

## AMI 祖先を表示する
<a name="view-ami-ancestry"></a>

次の方法を使用して、AMI の祖先を表示できます。

------
#### [ Console ]

**AMI の祖先を表示するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで [**AMI**] を選択してください。

1. AMI を選択し、**[AMI 祖先]** タブを選択します。

1. **[AMI 祖先エントリ]** テーブルには、祖先リスト内のすべての AMI が一覧表示されます。
   + **AMI ID** – 祖先リスト内の各 AMI の識別子。テーブルの最初のエントリは選択した AMI です。その後に祖先が続きます。
   + **ソース AMI ID** – **AMI ID** 列の AMI が作成された AMI の ID。ダッシュ (**-**) は、AMI 祖先リストの末尾を示します。
   + **ソース AMI リージョン** – ソース AMI がある AWS リージョン です。
   + **祖先レベル** – 祖先リスト内の位置。意味を次に記します。
     + **0 (入力 AMI)** は、お客様が祖先を知りたいと考えている、選択した AMI を示します。
     + 数字が増えると、古い祖先が表示されます。
     + ***n* (元の AMI)** はルート AMI を示し、数は祖先リストをどこまで遡るかを示します。
   + **作成日** – AMI が作成された日時。UTC 形式。
   + **所有者エイリアス** – AMI 所有者のエイリアス (`amazon` など)。ダッシュ (**-**) は、AMI に所有者エイリアスがないことを示します。

------
#### [ AWS CLI ]

**AMI 祖先を表示するには**  
[get-image-ancestry](https://docs.aws.amazon.com/cli/latest/reference/ec2/get-image-ancestry.html) コマンドを使用して、AMI の ID を指定します。

```
aws ec2 get-image-ancestry \
    --image-id ami-1111111111EXAMPLE \
    --region us-east-1
```

以下は出力の例です。出力には、AMI が祖先順に一覧表示されます。最初のエントリは指定された (入力) AMI で、その後に親、親の親などが続き、ルート AMI で終わります。

```
{
    "ImageAncestryEntries": [
        {
            "CreationDate": "2025-01-17T18:37:50.000Z",
            "ImageId": "ami-1111111111EXAMPLE", // Input AMI
            "SourceImageId": "ami-2222222222EXAMPLE",
            "SourceImageRegion": "us-east-1"

        },
        {
            "CreationDate": "2025-01-17T18:37:50.000Z",
            "ImageId": "ami-2222222222EXAMPLE", // Parent AMI
            "SourceImageId": "ami-3333333333EXAMPLE",
            "SourceImageRegion": "us-east-1"
        },
        ...
        {
            "CreationDate": "2025-01-17T18:37:50.000Z",
            "ImageId": "ami-8888888888EXAMPLE", // Root AMI
            "ImageOwnerAlias": "aws-marketplace",
            "SourceImageId": "ami-9999999999EXAMPLE",
            "SourceImageRegion": "us-east-2"
        }
    ]
}
```

------
#### [ PowerShell ]

**AMI 祖先を表示するには**  
[Get-EC2ImageAncestry](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2ImageAncestry.html) コマンドレットを使用します。

```
Get-EC2ImageAncestry -ImageId ami-1111111111EXAMPLE
```

以下は出力の例です。出力には、AMI が祖先順に一覧表示されます。最初のエントリは指定された (入力) AMI で、その後に親、親の親などが続き、ルート AMI で終わります。

```
ImageAncestryEntries : {
    @{
        CreationDate = "2025-01-17T18:37:50.000Z"
        ImageId = "ami-1111111111EXAMPLE"    # Input AMI
        SourceImageId = "ami-2222222222EXAMPLE"
        SourceImageRegion = "us-east-1"
    },
    @{
        CreationDate = "2025-01-17T18:37:50.000Z"
        ImageId = "ami-2222222222EXAMPLE"    # Parent AMI
        SourceImageId = "ami-3333333333EXAMPLE"
        SourceImageRegion = "us-east-1"
    },
    ...
    @{
        CreationDate = "2025-01-17T18:37:50.000Z"
        ImageId = "ami-8888888888EXAMPLE"    # Root AMI
        ImageOwnerAlias = "aws-marketplace"
        SourceImageId = "ami-9999999999EXAMPLE"
        SourceImageRegion = "us-east-2"
    }
}
```

------

## ソースを AMI を識別
<a name="identify-source-ami-used-to-create-new-ami"></a>

AMI の作成に使用される直接の親 (ソース) AMI のみを特定する必要がある場合は、次の方法を使用できます。

------
#### [ Console ]

**選択した AMI の作成に使用されるソース AMI を特定するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで [**AMI**] を選択してください。

1. AMI を選択して詳細を表示します。

   ソース AMI 情報は、**[ソース AMI ID]** および **[ソース AMI リージョン]** のフィールドに表示されます。

------
#### [ AWS CLI ]

**指定した AMI の作成に使用されるソース AMI を特定するには**  
[describe-images](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html) コマンドを使用します。

```
aws ec2 describe-images \
    --region us-east-1 \
    --image-ids ami-0abcdef1234567890 \
    --query "Images[].{ID:SourceImageId,Region:SourceImageRegion}"
```

以下は出力の例です。

```
[
    {
        "ID": "ami-0abcdef1234567890",
        "Region": "us-west-2"
    }
}
```

------
#### [ PowerShell ]

**指定した AMI の作成に使用されるソース AMI を特定するには**  
[Get-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Image.html) コマンドレットを使用します。

```
Get-EC2Image -ImageId ami-0abcdef1234567890 | Select SourceImageId, SourceImageRegion
```

以下は出力の例です。

```
SourceImageId           SourceImageRegion
-------------           -----------------
ami-0abcdef1234567890 us-west-2
```

------

# AMI の使用を管理およびモニタリングする
<a name="ec2-ami-usage"></a>

AWS には、AMI の使用状況を効果的に管理およびモニタリングするのに役立ついくつかの機能が用意されています。共有 AMI を使用しているアカウントの追跡、AMI が最後に使用された日時の特定、AWS アカウント で特定の AMI を参照しているリソースの検出を行うことができます。

AMI の使用状況を管理およびモニタリングするための機能の概要を次の表に示します。


| 機能 | ユースケース | 主な利点 | 
| --- | --- | --- | 
| [AMI の使用状況レポート](your-ec2-ami-usage.md) | AMI を使用している AWS アカウントと、各 AMI の使用量を可視化します。 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ec2-ami-usage.html)  | 
| [最後に使用された追跡](ami-last-launched-time.md) | AMI が最後に使用された日時を確認します。 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ec2-ami-usage.html)  | 
| [AMI の参照チェック](ec2-ami-references.md) | AWS リソースが最新の準拠 AMI を使用していることを確認します。 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ec2-ami-usage.html)  | 

**Topics**
+ [AMI の使用状況を表示する](your-ec2-ami-usage.md)
+ [Amazon EC2 AMI が最後に使用された日時を確認する](ami-last-launched-time.md)
+ [指定した AMI を参照しているリソースを識別します。](ec2-ami-references.md)

# AMI の使用状況を表示する
<a name="your-ec2-ami-usage"></a>

Amazon マシンイメージ (AMI) を他の AWS アカウント (特定の AWS アカウント、組織、組織単位 (OU)、またはパブリック) と共有する場合、AMI の使用状況レポートを作成することで、これらの AMI がどのように使用されているかを確認できます。レポートは、以下を可視化します。
+ EC2 インスタンスまたは起動テンプレートで AMI を使用している AWS アカウント
+ 各 AMI を参照している EC2 インスタンスまたは起動テンプレートの数

AMI の使用状況レポートは、以下を行って AMI をより効果的に管理するのに役立ちます。
+ AMI の登録解除または無効化を安全に行うことができるように、AMI を参照している AWS アカウントとリソースタイプを特定します。
+ ストレージコストを削減するために登録を解除する未使用の AMI を特定します。
+ 最も使用されている AMI を特定します。

**Topics**
+ [AMI 使用状況レポートの仕組み](#how-ami-usage-reports-work)
+ [AMI の使用状況レポートを作成する](#create-ami-usage-reports)
+ [AMI の使用状況レポートを表示する](#view-ami-usage-reports)
+ [AMI の使用状況レポートを削除する](#delete-ami-usage-reports)
+ [レポートに関するクォータ](#ami-usage-report-quotas)

## AMI 使用状況レポートの仕組み
<a name="how-ami-usage-reports-work"></a>

AMI 使用状況レポートを作成するときは、以下を指定します。
+ レポート対象の AMI。
+ チェックする AWS アカウント (特定のアカウントまたはすべてのアカウント)。
+ チェックするリソースタイプ (EC2 インスタンス、起動テンプレート、またはその両方)。
+ 起動テンプレートの場合、チェックするバージョンの数 (デフォルトでは 20 の最新バージョン)。

Amazon EC2 によって AMI ごとに個別のレポートが作成されます。各レポートは以下を提供します。
+ AMI を使用している AWS アカウントのリスト。
+ アカウントごとのリソースタイプ別に AMI を参照しているリソースの数。起動テンプレートの場合、起動テンプレートの複数のバージョンで AMI が参照されているときはカウントは 1 になります。

**重要**  
AMI の使用状況レポートを生成する場合、最新のアクティビティが含まれていない可能性があります。過去 24 時間のインスタンスアクティビティと、過去数日間の起動テンプレートアクティビティがレポートに表示されないことがあります。

Amazon EC2 は、作成から 30 日後にレポートを自動的に削除します。EC2 コンソールからレポートをダウンロードしてローカルに保持できます。

## AMI の使用状況レポートを作成する
<a name="create-ami-usage-reports"></a>

AMI がどのように使用されているかを確認するには、まず AMI の使用状況レポートを作成し、レポートするアカウントとリソースタイプを指定する必要があります。レポートが作成されたら、レポートの内容を表示できます。EC2 コンソールからレポートをダウンロードすることもできます。

------
#### [ Console ]

**AMI の使用状況レポートを作成するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで [**AMI**] を選択してください。

1. AMI を選択し、**[アクション]**、**[AMI の使用状況]**、**[自分の AMI 使用状況を表示]** の順に選択します。

1. **[AMI 使用状況レポートの作成]** ページで、次の操作を行います。

   1. **[リソースタイプ]** で、レポートする 1 つ以上のリソースタイプを選択します。

   1. [**アカウント ID**] で、次のいずれかを実行します。
      + **[アカウント ID を指定]** を選択し、レポートする各アカウントの **[アカウント ID を追加]** を選択します。
      + すべてのアカウントでレポートするには、**[すべてのアカウントを含める]** を選択します。

   1. **[AMI 使用状況レポートの作成]** を選択します。

1. AMI ページで、**[AMI の使用状況]** タブを選択します。

1. 詳細を表示するレポート ID を選択します。

------
#### [ AWS CLI ]

**複数のアカウントの AMI 使用状況レポートを作成するには**  
次の必須パラメータで [create-image-usage-report](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-image-usage-report.html) コマンドを使用します。
+ `--image-id` – レポートする AMI の ID。
+ `--resource-types` – チェックするリソースのタイプ。次の例では、チェックするリソースタイプは EC2 インスタンスと起動テンプレートです。さらに、チェックする起動テンプレートのバージョンの数も指定されています (`version-depth=100`)。

 複数の特定のアカウントをレポートするには、 `--account-ids` パラメータを使用してレポートする各アカウントの ID を指定します。

```
aws ec2 create-image-usage-report \
    --image-id ami-0abcdef1234567890 \
    --account-ids 111122223333 444455556666 123456789012 \
    --resource-types ResourceType=ec2:Instance \
      'ResourceType=ec2:LaunchTemplate,ResourceTypeOptions=[{OptionName=version-depth,OptionValues=100}]'
```

**すべてのアカウントの AMI 使用状況レポートを作成するには**  
指定した AMI を使用しているすべてのアカウントをレポートするには、同じコマンドを使用しますが、`--account-ids` パラメータを省略します。

```
aws ec2 create-image-usage-report \
    --image-id ami-0abcdef1234567890 \
    --resource-types ResourceType=ec2:Instance \
      'ResourceType=ec2:LaunchTemplate,ResourceTypeOptions=[{OptionName=version-depth,OptionValues=100}]'
```

以下は出力の例です。

```
{
    "ReportId": "amiur-00b877d192f6b02d0"
}
```

**レポート作成ステータスをモニタリングするには**  
[describe-image-usage-reports](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-image-usage-reports.html) コマンドを使用して、レポート ID を指定します。

```
aws ec2 describe-image-usage-reports --report-ids amiur-00b877d192f6b02d0
```

以下は出力の例です。`State` フィールドの初期値は `pending` です。レポートエントリを表示するには、状態が `available` である必要があります。

```
{
    "ImageUsageReports": [
        {
            "ImageId": "ami-0e9ae3dc21c2b3a64",
            "ReportId": "amiur-abcae3dc21c2b3999",
            "ResourceTypes": [
                {"ResourceType": "ec2:Instance"}
            ],
            "State": "pending",
            "CreationTime": "2025-09-29T13:27:12.322000+00:00",
            "ExpirationTime": "2025-10-28T13:27:12.322000+00:00"
        }
    ]
}
```

------
#### [ PowerShell ]

**複数のアカウントの AMI 使用状況レポートを作成するには**  
以下の必須パラメータで [New-EC2ImageUsageReport](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2ImageUsageReport.html) コマンドレットを使用します。
+ `-ImageId` – レポートする AMI の ID。
+ `-ResourceType` – チェックするリソースのタイプ。次の例では、チェックするリソースタイプは EC2 インスタンスと起動テンプレートです。さらに、チェックする起動テンプレートのバージョンの数も指定されています (`'version-depth' = 100`)。

 複数の特定のアカウントをレポートするには、 `-AccountId` パラメータを使用してレポートする各アカウントの ID を指定します。

```
New-EC2ImageUsageReport `
    -ImageId ami-0abcdef1234567890 `
    -AccountId 111122223333 444455556666 123456789012 `
    -ResourceType @(
        @{ResourceType = 'ec2:Instance'},
        @{ResourceType = 'ec2:LaunchTemplate'ResourceTypeOptions = @{'version-depth' = 100}
        })
```

**すべてのアカウントの AMI 使用状況レポートを作成するには**  
指定した AMI を使用しているすべてのアカウントをレポートするには、同じコマンドを使用しますが、`-AccountId` パラメータを省略します。

```
New-EC2ImageUsageReport `
    -ImageId ami-0abcdef1234567890 `
    -ResourceType @(
        @{ResourceType = 'ec2:Instance'},
        @{ResourceType = 'ec2:LaunchTemplate'ResourceTypeOptions = @{'version-depth' = 100}
        })
```

以下は出力の例です。

```
ReportId
--------
amiur-00b877d192f6b02d0
```

**レポート作成ステータスをモニタリングするには**  
[Get-EC2ImageUsageReport](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2ImageUsageReport.html) コマンドを使用してレポート ID を指定します。

```
Get-EC2ImageUsageReport -ReportId amiur-00b877d192f6b02d0
```

以下は出力の例です。`State` フィールドの初期値は `pending` です。レポートエントリを表示するには、状態が `available` である必要があります。

```
ImageUsageReports
-----------------
{@{ImageId=ami-0e9ae3dc21c2b3a64; ReportId=amiur-abcae3dc21c2b3999; ResourceTypes=System.Object[]; State=pending; CreationTime=2025-09-29; ExpirationTime=2025-10-28}}
```

------

## AMI の使用状況レポートを表示する
<a name="view-ami-usage-reports"></a>

AMI に対して過去 30 日間に作成したすべての使用状況レポートを表示できます。Amazon EC2 は、作成から 30 日後にレポートを自動的に削除します。

レポートごとに、AMI を使用している AWS アカウントを表示できます。アカウントごとに、AMI を参照しているリソースの数をリソースタイプ別に確認できます。レポートの作成が開始されたときを表示することもできます。この情報は、レポートが**完了** (コンソール) または `available` (AWS CLI) の場合に表示されます。

**重要**  
AMI の使用状況レポートを生成する場合、最新のアクティビティが含まれていない可能性があります。過去 24 時間のインスタンスアクティビティと、過去数日間の起動テンプレートアクティビティがレポートに表示されないことがあります。

------
#### [ Console ]

**AMI の使用状況レポートを表示するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで [**AMI**] を選択してください。

1. AMI を選択します。

1. **[My usage reports]** タブを選択します。

   レポートリストには以下が表示されます。
   + 選択した AMI に対して過去 30 日間に生成されたすべてのレポート。
   + レポートごとに、**[レポート開始時間]** 列にレポートが作成された日付が表示されます。

1. レポートの ID を選択すると、その内容が表示されます。

1. AMI の詳細ページの **[My usage reports]** タブに戻るには、**[この AMI のすべてのレポートを表示]** を選択します。

------
#### [ AWS CLI ]

**指定した AMI のすべての AMI 使用状況レポートを一覧表示するには**  
[describe-image-usage-reports](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-image-usage-reports.html) コマンドを使用して、レポートのリストを取得する AMI の ID を指定します。

```
aws ec2 describe-image-usage-reports --image-ids ami-0abcdef1234567890
```

以下は出力の例です。スキャンされたリソースタイプ、レポートの作成日と有効期限とともに各レポート ID が一覧表示されます。この情報を使用して、エントリを表示するレポートを識別できます。

```
{
  "ImageUsageReports": [
    {
      "ImageId": "ami-0abcdef1234567890",
      "ReportId": "amiur-1111111111111111",
      "ResourceTypes": [
        {
          "ResourceType": "ec2:Instance"
        }
      ],
      "State": "available",
      "CreationTime": "2025-09-29T13:27:12.322000+00:00",
      "ExpirationTime": "2025-10-28T13:27:12.322000+00:00",
      "Tags": []
    },
    {
      "ImageId": "ami-0abcdef1234567890",
      "ReportId": "amiur-22222222222222222",
      "ResourceTypes": [
        {
          "ResourceType": "ec2:Instance"
        },
        {
          "ResourceType": "ec2:LaunchTemplate"
        }
      ],
      "State": "available",
      "CreationTime": "2025-10-01T13:27:12.322000+00:00",
      "ExpirationTime": "2025-10-30T13:27:12.322000+00:00",
      "Tags": []
    }
  ],
  "NextToken": "opaque"
}
```

**指定した AMI の AMI 使用状況レポートの内容を表示するには**  
[describe-image-usage-report-entries](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-image-usage-report-entries.html) コマンドを使用して AMI の ID を指定します。指定した AMI のすべてのレポートが返され、AMI を使用したアカウントとそのリソース数が表示されます。

```
aws ec2 describe-image-usage-report-entries --image-ids ami-0abcdef1234567890
```

以下は出力の例です。

```
{
  "ImageUsageReportEntries": [
    {
      "ImageId": "ami-0abcdef1234567890",
      "ResourceType": "ec2:Instance",
      "AccountId": "123412341234",
      "UsageCount": 15,
      "ReportCreationTime": "2025-09-29T13:27:12.322000+00:00",
      "ReportId": "amiur-1111111111111111"
    },
    {
      "ImageId": "ami-0abcdef1234567890",
      "ResourceType": "ec2:Instance",
      "AccountId": "123412341234",
      "UsageCount": 2,
      "ReportCreationTime": "2025-10-01T13:27:12.322000+00:00",
      "ReportId": "amiur-22222222222222222"
    },
    {
      "ImageId": "ami-0abcdef1234567890",
      "ResourceType": "ec2:Instance",
      "AccountId": "001100110011",
      "UsageCount": 39,
      "ReportCreationTime": "2025-10-01T13:27:12.322000+00:00",
      "ReportId": "amiur-22222222222222222"
    }
  ],
  "NextToken": "opaque"
}
```

**指定したレポートの AMI 使用状況レポートの内容を表示するには**  
[describe-image-usage-report-entries](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-image-usage-report-entries.html) コマンドを使用してレポートの ID を指定します。指定したレポートのすべてのエントリが返され、AMI を使用したアカウントとそのリソース数が表示されます。

```
aws ec2 describe-image-usage-report-entries --report-ids amiur-11111111111111111
```

以下は出力の例です。

```
{
  "ImageUsageReportEntries": [
    {
      "ImageId": "ami-0abcdef1234567890",
      "ResourceType": "ec2:Instance",
      "AccountId": "123412341234",
      "UsageCount": 15,
      "ReportCreationTime": "2025-09-29T13:27:12.322000+00:00",
      "ReportId": "amiur-11111111111111111"
    },
    {
      "ImageId": "ami-0abcdef1234567890",
      "ResourceType": "ec2:LaunchTemplate",
      "AccountId": "123412341234",
      "UsageCount": 4,
      "ReportCreationTime": "2025-09-29T13:27:12.322000+00:00",
      "ReportId": "amiur-11111111111111111"
    },
    {
      "ImageId": "ami-0abcdef1234567890",
      "ResourceType": "ec2:LaunchTemplate",
      "AccountId": "001100110011",
      "UsageCount": 2,
      "ReportCreationTime": "2025-09-29T13:27:12.322000+00:00",
      "ReportId": "amiur-11111111111111111"
    }
  ],
  "NextToken": "opaque"
}
```

------
#### [ PowerShell ]

**指定した AMI のすべての AMI 使用状況レポートを一覧表示するには**  
[Get-EC2ImageUsageReport](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2ImageUsageReport.html) コマンドレットを使用して、レポートのリストを取得する AMI の ID を指定します。

```
Get-EC2ImageUsageReport -ImageId ami-0abcdef1234567890
```

以下は出力の例です。スキャンされたリソースタイプ、レポートの作成日と有効期限とともに各レポート ID が一覧表示されます。この情報を使用して、エントリを表示するレポートを識別できます。

```
@{
    ImageUsageReports = @(
        @{
            ImageId = "ami-0abcdef1234567890"
            ReportId = "amiur-1111111111111111"
            ResourceTypes = @(
                @{
                    ResourceType = "ec2:Instance"
                }
            )
            State = "available"
            CreationTime = "2025-09-29T13:27:12.322000+00:00"
            ExpirationTime = "2025-10-28T13:27:12.322000+00:00"
        },
        @{
            ImageId = "ami-0abcdef1234567890"
            ReportId = "amiur-22222222222222222"
            ResourceTypes = @(
                @{
                    ResourceType = "ec2:Instance"
                }
            )
            State = "available"
            CreationTime = "2025-09-30T13:27:12.322000+00:00"
            ExpirationTime = "2025-10-29T13:27:12.322000+00:00"
        },
        @{
            ImageId = "ami-0abcdef1234567890"
            ReportId = "amiur-33333333333333333"
            ResourceTypes = @(
                @{
                    ResourceType = "ec2:Instance"
                }
            )
            State = "available"
            CreationTime = "2025-10-01T13:27:12.322000+00:00"
            ExpirationTime = "2025-10-30T13:27:12.322000+00:00"
        }
    )
    NextToken = "opaque"
}
```

**指定した AMI の AMI 使用状況レポートの内容を表示するには**  
[Get-EC2ImageUsageReportEntry](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2ImageUsageReportEntry.html) コマンドレットを使用して AMI の ID を指定します。指定した AMI のすべてのレポートが返され、AMI を使用したアカウントとそのリソース数が表示されます。

```
Get-EC2ImageUsageReportEntry -ImageId ami-0abcdef1234567890
```

以下は出力の例です。

```
ImageUsageReportEntries : {@{
    ImageId = "ami-0abcdef1234567890"
    ResourceType = "ec2:Instance"
    AccountId = "123412341234"
    UsageCount = 15
    ReportCreationTime = "2025-09-29T13:27:12.322000+00:00"
    ReportId = "amiur-1111111111111111"
    }, @{
    ImageId = "ami-0abcdef1234567890"
    ResourceType = "ec2:Instance"
    AccountId = "123412341234"
    UsageCount = 7
    ReportCreationTime = "2025-09-30T13:27:12.322000+00:00"
    ReportId = "amiur-22222222222222222"
    }...}
NextToken : opaque
```

**指定したレポートの AMI 使用状況レポートの内容を表示するには**  
[Get-EC2ImageUsageReportEntry](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2ImageUsageReportEntry.html) コマンドレットを指定してレポートの ID を指定します。指定したレポートのすべてのエントリが返され、AMI を使用したアカウントとそのリソース数が表示されます。

```
Get-EC2ImageUsageReportEntry -ReportId amiur-11111111111111111
```

以下は出力の例です。

```
ImageUsageReportEntries : {@{
    ImageId = "ami-0abcdef1234567890"
    ResourceType = "ec2:Instance"
    AccountId = "123412341234"
    UsageCount = 15
    ReportCreationTime = "2025-09-29T13:27:12.322000+00:00"
    ReportId = "amiur-11111111111111111"
    }, @{
    ImageId = "ami-0abcdef1234567890"
    ResourceType = "ec2:LaunchTemplate"
    AccountId = "123412341234"
    UsageCount = 4
    ReportCreationTime = "2025-09-29T13:27:12.322000+00:00"
    ReportId = "amiur-11111111111111111"
    }, @{
    ImageId = "ami-0abcdef1234567890"
    ResourceType = "ec2:LaunchTemplate"
    AccountId = "************"
    UsageCount = 2
    ReportCreationTime = "2025-09-29T13:27:12.322000+00:00"
    ReportId = "amiur-11111111111111111"
    }}
NextToken : opaque
```

------

## AMI の使用状況レポートを削除する
<a name="delete-ami-usage-reports"></a>

Amazon EC2 は、レポートの作成から 30 日後に自動的にレポートを削除します。その前に手動で削除することができます。

------
#### [ Console ]

**AMI の使用状況レポートを削除するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで [**AMI**] を選択してください。

1. AMI を選択します。

1. **[AMI の使用状況]** タブを選択します。

1. 削除するレポートの横にあるオプションボタンを選択して、**[削除]** を選択します。

------
#### [ AWS CLI ]

**AMI の使用状況レポートを削除するには**  
[delete-image-usage-report](https://docs.aws.amazon.com/cli/latest/reference/ec2/delete-image-usage-report.html) コマンドを使用して、レポートの ID を指定します。

```
aws ec2 delete-image-usage-report --report-id amiur-0123456789abcdefg
```

------
#### [ PowerShell ]

**AMI の使用状況レポートを削除するには**  
[Remove-EC2ImageUsageReport](https://docs.aws.amazon.com/powershell/latest/reference/items/Remove-EC2ImageUsageReport.html) コマンドレットを使用して、レポートの ID を指定します。

```
Remove-EC2ImageUsageReport -ReportId amiur-0123456789abcdefg
```

------

## レポートに関するクォータ
<a name="ami-usage-report-quotas"></a>

AMI 使用状況レポートの作成には、次のクォータが適用されます。AWS リージョン ごとにクォータが適用されます。


| 説明 | クォータ | 
| --- | --- | 
| AWS アカウント ごとの進行中の (pending) AMI 使用状況レポート | 2,000 | 
| AMI ごとの進行中の (pending) AMI 使用状況レポート | 1 | 

# Amazon EC2 AMI が最後に使用された日時を確認する
<a name="ami-last-launched-time"></a>

Amazon EC2 は、インスタンスを起動するために AMI が最後に使用された日時を自動的に追跡します。長期間インスタンスの起動に使用されていない AMI がある場合は、その AMI を[登録解除](deregister-ami.md)または[非推奨化](ami-deprecate.md)の候補とするかどうかを検討してください。

**考慮事項**
+ インスタンスを起動するために AMI が使用される場合、その発生から 24 時間経過した後に報告されます。
+ 最終起動時間を取得するには、AMI の所有者である必要があります。
+ AMI 使用状況データは、2017 年 4 月以降利用可能です。

------
#### [ Console ]

**AMI の最終起動時間を表示するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. 左のナビゲーションペインで [**AMI**] を選択してください。

1. フィルターバーから、**[Owned by me]** (自己所有) を選択します。

1. AMI のチェックボックスをオンにします。

1. **[詳細]** タブで **[最終起動時刻]** を見つけます。

------
#### [ AWS CLI ]

**AMI を記述して最終起動時間を表示するには**  
[describe-images](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html) コマンドを使用します。出力に `LastLaunchedTime` が含まれていない場合は、自分がその AMI を所有しているか確認します。

```
aws ec2 describe-images \
    --image-id ami-0abcdef1234567890 \
    --query Images[].LastLaunchedTime \
    --output text
```

以下は出力の例です。

```
2025-02-17T20:22:19Z
```

**AMI の最終起動時間の属性を表示するには**  
[describe-image-attribute](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-image-attribute.html) コマンドを使用します。ユーザーは、指定した AMI の所有者でなければなりません。

```
aws ec2 describe-image-attribute \
    --image-id ami-0abcdef1234567890 \
    --attribute lastLaunchedTime \
    --query LastLaunchedTime.Value \
    --output text
```

以下は出力の例です。

```
2025-02-17T20:22:19Z
```

------
#### [ PowerShell ]

**AMI を記述して最終起動時間を表示するには**  
[Get-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Image.html) コマンドレットを使用します。出力に `LastLaunchedTime` が含まれていない場合は、自分がその AMI を所有しているか確認します。

```
(Get-EC2Image -ImageId ami-0abcdef1234567890).LastLaunchedTime
```

以下は出力の例です。

```
2025-02-17T20:22:19Z
```

**AMI の最終起動時間の属性を表示するには**  
[Get-EC2ImageAttribute](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2ImageAttribute.html) コマンドレットを使用します。ユーザーは、指定した AMI の所有者でなければなりません。

```
(Get-EC2ImageAttribute `
    -ImageId ami-0abcdef1234567890 `
    -Attribute LastLaunchedTime).LastLaunchedTime
```

以下は出力の例です。

```
2025-02-17T20:22:19Z
```

------

# 指定した AMI を参照しているリソースを識別します。
<a name="ec2-ami-references"></a>

指定した Amazon マシンイメージ (AMI) を参照する AWS リソースは、AMI がパブリックかプライベートか、または誰が所有しているかに関係なく識別できます。この可視性により、リソースが最新の準拠 AMI を使用することが保証されます。

**主な利点**

AMI の参照をチェックすると、次のことに役立ちます。
+ アカウントでの AMI の使用を監査します。
+ 特定の AMI が参照されている場所を確認します。
+ リソースを更新して最新の AMI を参照することでコンプライアンスを維持します。

 

**Topics**
+ [サポートされているリソース](#ec2-ami-references-supported-resources)
+ [AMI 参照チェックの仕組み](#how-ami-references-works)
+ [必要な IAM 許可](#ami-references-required-permissions)
+ [AMI の参照を確認する手順](#ami-reference-procedures)

## サポートされているリソース
<a name="ec2-ami-references-supported-resources"></a>

AMI の参照は以下でチェックできます。
+ EC2 インスタンス
+ 起動テンプレート
+ SSM パラメータ
+ Image Builder のイメージレシピ
+ Image Builder コンテナレシピ

## AMI 参照チェックの仕組み
<a name="how-ami-references-works"></a>

**基本オペレーション**

AMI 参照チェックを実行する際は、以下の手順を実行します。
+ 確認する AMI を指定します。
+ スキャンするリソースタイプを選択します。
+ 指定した AMI を参照するリソースのリストを受け取ります。

**リソースタイプの選択**

コンソールで、スキャンするリソースタイプを選択します。

CLI では、次の CLI パラメータのいずれかまたは両方を使用して、スキャンするリソースタイプを指定します。
+ `IncludeAllResourceTypes`: サポートされているすべてのリソースタイプをスキャンします。
+ `ResourceTypes`: 指定したリソースタイプをスキャンします。

**応答の範囲設定**

`ResourceTypes` パラメータを使用して `ResourceTypeOptions` の値をカスタマイズすることで、EC2 インスタンスと起動テンプレートの応答範囲を指定できます。コンソールと `IncludeAllResourceTypes` パラメータはどちらもデフォルトのオプション値を使用します。`ResourceTypes` と `IncludeAllResourceTypes` を一緒に使用すると、`ResourceTypes` オプション値がデフォルトよりも優先されます。

デフォルト値を以下に示します。


| リソースタイプ | 範囲オプション (`OptionName`） | 目的 | `OptionValue` とコンソールのデフォルト値 | 
| --- | --- | --- | --- | 
| EC2 インスタンス | state-name | インスタンスの状態でフィルタリングする | pending、running、shutting-down、terminated、stopping、stopped (すべての状態) | 
| 起動テンプレート | version-depth | 確認する起動テンプレートのバージョンの数を指定します (最新バージョンから開始)。 | 10 (最新バージョン) | 

## 必要な IAM 許可
<a name="ami-references-required-permissions"></a>

DescribeImageReferences API を使用して、指定された AMI を参照するリソースを特定するには、リソースを記述するために次の IAM アクセス許可が必要です。
+ `ec2:DescribeInstances`
+ `ec2:DescribeLaunchTemplates`
+ `ec2:DescribeLaunchTemplateVersions`
+ `ssm:DescribeParameters`
+ `ssm:GetParameters`
+ `imagebuilder:ListImageRecipes`
+ `imagebuilder:ListContainerRecipes`
+ `imagebuilder:GetContainerRecipe`

**DescribeImageReferences API を使用するための IAM ポリシーの例**  
次のポリシー例では、DescribeImageReferences API を使用するアクセス許可を付与します。これには、EC2 インスタンス、起動テンプレート、Systems Manager パラメータ、Image Builder イメージレシピ、Image Builder コンテナレシピを記述するアクセス許可が含まれます。

------
#### [ JSON ]

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": "ec2:DescribeImageReferences",
			"Resource": "*"
		},
		{
			"Effect": "Allow",
			"Action": [
				"ec2:DescribeInstances",
				"ec2:DescribeLaunchTemplates",
				"ec2:DescribeLaunchTemplateVersions",
				"ssm:DescribeParameters",
				"ssm:GetParameters",
				"imagebuilder:ListImageRecipes",
				"imagebuilder:ListContainerRecipes",
				"imagebuilder:GetContainerRecipe"
			],
			"Resource": "*",
			"Condition": {
				"ForAnyValue:StringEquals": {
					"aws:CalledVia": [
						"ec2-images.amazonaws.com"
					]
				}
			}
		}
	]
}
```

------

**重要**  
自分でポリシーを作成する代わりに、AWS マネージドポリシー [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEC2ImageReferencesAccessPolicy.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEC2ImageReferencesAccessPolicy.html) を使用することを強くお勧めします。必要なアクセス許可のみを提供するカスタム IAM ポリシーを作成するには時間と専門知識が必要で、新しいリソースタイプが利用可能になったときに更新が必要になります。  
`AmazonEC2ImageReferencesAccessPolicy` マネージドポリシー:  
DescribeImageReferences API を使用するために必要なすべてのアクセス許可を付与します (EC2 インスタンス、起動テンプレート、Systems Manager パラメータ、Image Builder コンテナとイメージレシピを記述するためのアクセス許可が含まれます)。
利用可能になった新しいリソースタイプを自動的にサポートします (`IncludeAllResourceTypes` パラメータを使用する場合、特に重要です)。
`AmazonEC2ImageReferencesAccessPolicy` ポリシーは IAM アイデンティティ (ユーザー、グループ、ロール) にアタッチできます。  
このポリシーに含まれるアクセス許可を確認するには、「*AWS マネージドポリシーリファレンス*」の「[https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEC2ImageReferencesAccessPolicy.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEC2ImageReferencesAccessPolicy.html)」を参照してください。

## AMI の参照を確認する手順
<a name="ami-reference-procedures"></a>

次の手順を使用して、指定した AMI を参照している AWS リソースを特定します。

------
#### [ Console ]

**指定した AMI を参照するリソースを識別するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで [**AMI**] を選択してください。

1. 参照をチェックする 1 つまたは複数の AMI を選択します。

1. **[アクション]**、**[AMI の使用状況]**、**[参照先リソースを表示]** の順に選択します。

1. **[選択した AMI を参照しているリソースを表示]** ページで次の操作を実行します。

   1. **[リソースタイプ]** で 1 つ以上のリソースタイプを選択します。

   1. **[リソースの表示]** を選択します。

1. **[選択した AMI を参照するリソース]** セクションが表示されます。リストには、指定された AMI を参照するリソースが表示されます。各行には、以下に関する情報が表示されます。
   + **[AMI ID]** – 参照されている AMI の ID。
   + **[リソースタイプ]** – AMI を参照しているリソースのリソースタイプ。
   + **[リソース ID]** – AMI を参照しているリソースの ID。

------
#### [ AWS CLI ]

**特定のリソースタイプの AMI 参照を確認するには**  
`--resource-types` パラメータで [describe-image-references](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-image-references.html) コマンドを使用します。次の例では、EC2 インスタンス（インスタンスの状態による範囲指定)、起動テンプレート (最新の 20 個の起動テンプレートバージョンによる範囲指定)、その他の特定のリソースタイプをチェックします。

```
aws ec2 describe-image-references \
    --image-ids ami-0abcdef1234567890 ami-1234567890abcdef0 \
    --resource-types \
        'ResourceType=ec2:Instance,ResourceTypeOptions=[{OptionName=state-name,OptionValues=[running,pending]}]' \
        'ResourceType=ec2:LaunchTemplate,ResourceTypeOptions=[{OptionName=version-depth,OptionValues=[20]}]' \
        'ResourceType=ssm:Parameter' \
        'ResourceType=imagebuilder:ImageRecipe' \
        'ResourceType=imagebuilder:ContainerRecipe'
```

以下は出力の例です。

```
{
    "ImageReferences": [
        {
            "ImageId": "ami-0abcdef1234567890",
            "ResourceType": "ec2:Instance",
            "Arn": "arn:aws:ec2:us-east-1:123456789012:instance/i-1234567890abcdef0"
        },
        {
            "ImageId": "ami-1234567890abcdef0",
            "ResourceType": "ec2:LaunchTemplate",
            "Arn": "arn:aws:ec2:us-east-1:123456789012:launch-template/lt-1234567890abcdef0"
        }
    ]
}
```

**サポートされているすべてのリソースタイプの AMI 参照を確認するには**  
`--include-all-resource-types` パラメータで [describe-image-references](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-image-references.html) コマンドを使用します。

```
aws ec2 describe-image-references \
    --image-ids ami-0abcdef1234567890 ami-1234567890abcdef0 \
    --include-all-resource-types
```

**サポートされているすべてのリソースタイプと特定のオプションの AMI 参照を確認するには**  
`--include-all-resource-types` と `--resource-types` の両方のパラメータで [describe-image-references](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-image-references.html) コマンドを使用します。この例では、実行中または保留中のインスタンスに対する EC2 インスタンスの応答範囲を指定しながら、すべてのリソースタイプをチェックします。

```
aws ec2 describe-image-references \
    --image-ids ami-0abcdef1234567890 ami-1234567890abcdef0 \
    --include-all-resource-types \
    --resource-types 'ResourceType=ec2:Instance,ResourceTypeOptions=[{OptionName=state-name,OptionValues=[running,pending]}]'
```

------
#### [ PowerShell ]

**特定のリソースタイプの AMI 参照を確認するには**  
`-ResourceType` パラメータで [Get-EC2ImageReference](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2ImageReference.html) コマンドレットを使用します。次の例では、EC2 インスタンス（インスタンスの状態による範囲指定)、起動テンプレート (最新の 20 個の起動テンプレートバージョンによる範囲指定)、その他の特定のリソースタイプをチェックします。

```
Get-EC2ImageReference `
    -ImageId 'ami-0abcdef1234567890', 'ami-1234567890abcdef0' `
    -ResourceType @(
        @{
            ResourceType = 'ec2:Instance'
            ResourceTypeOptions = @(
                @{
                    OptionName = 'state-name'
                    OptionValues = @('running', 'pending')
                }
            )
        },
        @{
            ResourceType = 'ec2:LaunchTemplate'
            ResourceTypeOptions = @(
                @{
                    OptionName = 'version-depth'
                    OptionValues = @('20')
                }
            )
        },
        @{
            ResourceType = 'ssm:Parameter'
        },
        @{
            ResourceType = 'imagebuilder:ImageRecipe'
        },
        @{
            ResourceType = 'imagebuilder:ContainerRecipe'
        }
    )
```

**サポートされているすべてのリソースタイプの AMI 参照を確認するには**  
`-IncludeAllResourceTypes` パラメータで [Get-EC2ImageReference](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2ImageReference.html) コマンドレットを使用します。

```
Get-EC2ImageReference `
    -ImageId 'ami-0abcdef1234567890', 'ami-1234567890abcdef0' `
    -IncludeAllResourceTypes
```

**サポートされているすべてのリソースタイプと特定のオプションの AMI 参照を確認するには**  
`-IncludeAllResourceTypes` と `-ResourceType` の両方のパラメータで [Get-EC2ImageReference](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2ImageReference.html) コマンドレットを使用します。この例では、実行中または保留中のインスタンスに対する EC2 インスタンスの応答範囲を指定しながら、すべてのリソースタイプをチェックします。

```
Get-EC2ImageReference `
    -ImageId 'ami-0abcdef1234567890', 'ami-1234567890abcdef0' `
    -IncludeAllResourceTypes `
    -ResourceType @(
        @{
            ResourceType = 'ec2:Instance'
            ResourceTypeOptions = @(
                @{
                    OptionName = 'state-name'
                    OptionValues = @('running', 'pending')
                }
            )
        }
    )
```

------

# Amazon EC2 AMI を非推奨にする
<a name="ami-deprecate"></a>

AMI の使用を避けることで、それが古く、使用すべきではないことを示せます。AMI が非推奨となる将来の日付を特定し、AMI が使用期限切れになるタイミングを知ることも可能です。例えば、現在有効な管理が行われていない AMI の使用を避けたり、新しいバージョンで置き換えられている AMI を避けたりすることができます。新しいユーザーが古い AMI を使用することを防止するため、デフォルトで、非推奨の AMI は AMI のリストに表示されていません。ただし、既存のユーザーおよび起動サービス (起動テンプレートや Auto Scaling グループなど) では、ID を指定することで、非推奨の AMI を引き続き使用できます。AMI を削除して、ユーザーとサービスが使用できないようにするには、その AMI を[登録解除](deregister-ami.md)します。

AMIが非推奨となった後は、以下が実施されます。
+ AMI ユーザーの場合、非推奨の AMI は (ID を指定した場合や、非推奨の AMI を表示する必要があると指定した場合を除き) [DescribeImages](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeImages.html) API 呼び出しに表示されなくなります。AMIの 所有者に対しては、非推奨の AMI は引き続き [DescribeImages](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeImages.html) API 呼び出しに表示されます。
+ AMI ユーザーは、非推奨の AMI をは EC2 コンソール経由で選択できなくなります。例えば、非推奨の AMI は、インスタンスの起動ウィザードの AMI カタログに表示されません。AMI 所有者の EC2 コンソール上には、非推奨の AMI が引き続き表示されます。
+ AMI ユーザーで、非推奨となった AMI の ID がわかっている場合は、API、CLI、または SDK により、非推奨の AMI を使用しながらインスタンスの起動を継続することができます。
+ 起動テンプレートや Auto Scaling グループなどの起動サービスは、非推奨の AMI を引き続き参照できます。
+ 今後非推奨となる予定の AMI を使用して起動された EC2 インスタンスは影響を受けず、停止、起動、および再起動が可能です。

プライベート AMI とパブリック AMI の両方を非推奨にすることができます。

**Topics**
+ [コスト](#ami-deprecate-costs)
+ [考慮事項](#ami-deprecate-limitations)
+ [AMI を非推奨にする](#deprecate-ami)
+ [非推奨の AMI の詳細表示](#describe-deprecate-ami)
+ [AMI の非推奨化をキャンセルする](#cancel-deprecate-ami)

## コスト
<a name="ami-deprecate-costs"></a>

AMI を非推奨にしても、その AMI は削除されません。AMI 所有者には、その AMI のスナップショットのための料金が引き続き請求されます。スナップショットの支払いを停止するには、AMI 所有者は、[登録解除](deregister-ami.md)により AMI を削除する必要があります。

## 考慮事項
<a name="ami-deprecate-limitations"></a>
+ AMI を非推奨にするには、AMI の所有者である必要があります。
+ インスタンスを起動するために最近使用されていない AMI は、非推奨や登録解除の対象となる可能性が高いです。詳細については、「[Amazon EC2 AMI が最後に使用された日時を確認する](ami-last-launched-time.md)」を参照してください。
+ Amazon Data Lifecycle Manager EBS-backed AMI ポリシーを作成することで、EBS-backed AMI の廃止を自動化できます。詳細については、「[Create AMI lifecycle policies](https://docs.aws.amazon.com/ebs/latest/userguide/ami-policy.html)」を参照してください。
+ すべてのパブリック AMI を非推奨にする日をデフォルトで AMI 作成日の 2 年後とします。非推奨にする日は 2 年より前の日付に設定できます。非推奨にする日を取り消す場合や、非推奨にする日をもっと先の日付に変える場合は、AMI を[特定の AWS アカウントとのみ共有する](sharingamis-explicit.md)ようにして、AMI を非公開にする必要があります。

## AMI を非推奨にする
<a name="deprecate-ami"></a>

AMI を非推奨にする日時を指定することができます。ユーザーは、この AMI の所有者である必要があります。

非推奨日の上限は 10 年後ですが、パブリック AMI は例外で、上限は作成日から 2 年です。過去の日付を指定することはできません。

------
#### [ Console ]

**AMI を特定の日付に非推奨にするには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. 左のナビゲーターで **[AMI]** を選択します。

1. フィルターバーから、**[Owned by me]** (自己所有) を選択します。

1. AMI を選択し、**[Actions]** (アクション)、**[Manage AMI Deprecation]** (AMI 非推奨を管理) の順に選択します。複数の AMI を選択して、複数の AMI の同じ非推奨日を一度に設定できます。

1. **[有効化]** のチェックボックスをオンにしたら、非推奨となった日付および時刻を入力します。

1. **[保存]** を選択します。

------
#### [ AWS CLI ]

**AMI を特定の日付に非推奨にするには**  
[enable-image-deprecation](https://docs.aws.amazon.com/cli/latest/reference/ec2/enable-image-deprecation.html) コマンドを使用します。秒の値を指定した場合は、Amazon EC2 により最も近い分に丸められます。

```
aws ec2 enable-image-deprecation \
    --image-id ami-0abcdef1234567890 \
    --deprecate-at "2025-04-15T13:17:12.000Z"
```

------
#### [ PowerShell ]

**AMI を特定の日付に非推奨にするには**  
[Enable-EC2ImageDeprecation](https://docs.aws.amazon.com/powershell/latest/reference/items/Enable-EC2ImageDeprecation.html) コマンドレットを使用します。秒の値を指定した場合は、Amazon EC2 により最も近い分に丸められます。

```
Enable-EC2ImageDeprecation `
    -ImageId ami-0abcdef1234567890 `
    -DeprecateAt 2025-04-15T13:17:12.000Z
```

------

## 非推奨の AMI の詳細表示
<a name="describe-deprecate-ami"></a>

AMI が非推奨になった日時を表示し、すべての AMI を非推奨になった日付でフィルタリングすることができます。

------
#### [ Console ]

**AMI が非推奨になった日付を表示するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. 左側のナビゲーターで [**AMI**] をクリックした後、AMI を選択します。

1. **[非推奨になった時刻]** フィールドにチェックをオンにします (AMI の横にあるチェックボックスをオンにした場合、**[詳細]** タブにあります)。このフィールドには、AMI の非推奨の日次が表示されます。フィールドが空の場合は、AMI は非推奨ではありません。

**非推奨になった日付で AMI をフィルタリングするには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. 左のナビゲーターで **[AMI]** を選択します。

1. フィルターバーから、**[Owned by me]** (自己所有) または **[Private images]** (プライベートイメージ) を選択します (プライベートイメージには、共有されている AMI のほかに、所有している AMI も含まれます)。

1. 検索バーで **Deprecation time** と入力し (文字を入力すると、**[Deprecation time]** (非推奨となった時刻) のフィルターが表示されます)、演算子と日時を選択します。

------
#### [ AWS CLI ]

すべての AMI を記述すると、結果は、ユーザーが AMI ユーザーであるか AMI 所有者であるかに応じて変わってきます。
+ **AMI ユーザー** – デフォルトでは、ユーザーがすべての AMI を記述すると、ユーザーに共有されているが、ユーザーが所有者ではない非推奨の AMI は、結果から除外されます。非推奨の AMI を結果に含めるには、`--include-deprecated` オプションを指定します。
+ **AMI 所有者** – ユーザーがすべての AMI を記述すると、ユーザーが所有するすべての AMI (非推奨の AMI を含む) が、結果に含まれます。`--no-include-deprecated` オプションを使用して、所有する非推奨の AMI を除外することはできません。

**非推奨の AMI を含めて、アカウントのすべての AMI を記述するには**  
次の [describe-images](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html) コマンドを使用します。

```
aws ec2 describe-images 
    --owners 123456789012 \   
    --include-deprecated
```

**アカウントの非推奨の AMI を記述するには**  
次の [describe-images](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html) コマンドを使用します。

```
aws ec2 describe-images \
    --owners self \
    --query "Images[?DeprecationTime!=null].ImageId" \
    --output text
```

以下は出力の例です。

```
ami-0abcdef1234567890
```

**AMI が非推奨となった日付を表示するには**  
次の [describe-images](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html) コマンドを使用します。出力に `DeprecationTime` がない場合、AMI は非推奨ではなく、将来的に非推奨に設定されることもありません。

```
aws ec2 describe-images \
    --image-ids ami-0abcdef1234567890 \
    --query Images[].DeprecationTime \
    --output text
```

以下は出力の例です。

```
2025-05-01T00:00:00.000Z
```

------
#### [ PowerShell ]

**アカウントの非推奨の AMI を一覧表示するには**  
[Get-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Image.html) コマンドレットを使用します。

```
(Get-EC2Image -Owner self | Where-Object {$_.DeprecationTime -ne $null}).ImageId
```

以下は出力の例です。

```
ami-0abcdef1234567890
```

**AMI が非推奨となった日付を表示するには**  
[Get-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Image.html) コマンドレットを使用します。出力に `DeprecationTime` がない場合、AMI は非推奨ではなく、将来的に非推奨に設定されることもありません。

```
(Get-EC2Image -ImageId ami-0abcdef1234567890).DeprecationTime
```

以下は出力の例です。

```
2025-05-01T00:00:00.000Z
```

------

## AMI の非推奨化をキャンセルする
<a name="cancel-deprecate-ami"></a>

AMI の非推奨はキャンセルすることができ、それにより、非推奨の日時が削除されます。この手順を実行するには、AMI の所有者である必要があります。

------
#### [ Console ]

**非推奨となっている AMI を復旧するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. 左のナビゲーターで **[AMI]** を選択します。

1. フィルターバーから、**[Owned by me]** (自己所有) を選択します。

1. AMI を選択し、**[Actions]** (アクション)、**[Manage AMI Deprecation]** (AMI 非推奨を管理) の順に選択します。複数の AMI を選択して、複数の AMI の非推奨を一度にキャンセルできます。

1. **[有効化]** チェックボックスをオフにしたら、**[保存]** を選択します。

------
#### [ AWS CLI ]

**AMI の非推奨をキャンセルするには**  
次の [disable-image-deprecation](https://docs.aws.amazon.com/cli/latest/reference/ec2/disable-image-deprecation.html) コマンドを使用します。

```
aws ec2 disable-image-deprecation --image-id ami-0abcdef1234567890
```

------
#### [ PowerShell ]

**AMI の非推奨をキャンセルするには**  
[Disable-EC2ImageDeprecation](https://docs.aws.amazon.com/powershell/latest/reference/items/Disable-EC2ImageDeprecation.html) コマンドレットを使用します。

```
Disable-EC2ImageDeprecation -ImageId ami-0abcdef1234567890
```

------

# Amazon EC2 AMI を無効にする
<a name="disable-an-ami"></a>

AMI を無効にして、インスタンスの起動に使用されないようにできます。無効な AMI から新しいインスタンスを起動することはできません。無効化された AMI を再度有効にして、インスタンスの起動時に再び使用できるようにすることができます。

プライベート AMI とパブリック AMI の両方を無効化できます。

使用頻度は低いが、長期間保持する必要がある無効な EBS-backed AMI のストレージコストを削減するには、関連するスナップショットをアーカイブできます。詳細については、「*Amazon EBS ユーザーガイド*」の「[Amazon EBS スナップショットのアーカイブ](https://docs.aws.amazon.com/ebs/latest/userguide/snapshot-archive.html)」を参照してください。

**Topics**
+ [AMI 無効化の仕組み](#how-disable-ami-works)
+ [コスト](#ami-disable-costs)
+ [前提条件](#ami-disable-prerequisites)
+ [必要な IAM 許可](#ami-disable-iam-permissions)
+ [AMI の無効化](#disable-ami)
+ [無効化された AMI の説明](#describe-disabled-ami)
+ [無効化された AMI を再度有効にする](#re-enable-a-disabled-ami)

## AMI 無効化の仕組み
<a name="how-disable-ami-works"></a>

**警告**  
AMI を無効にすると、AMI のすべての起動権限が削除されます。

**AMI が無効になっている場合:**
+ AMI の状態は `disabled` に変わります。
+ 無効化された AMI は共有できません。AMI が公開されていたか、以前に共有されていた場合は、非公開になります。AMI が AWS アカウント、組織または組織単位で共有されていた場合、無効になっている AMI にはアクセスできなくなります。
+ 無効化された AMI は、デフォルトで [https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeImages.html](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeImages.html) API 呼び出しに表示されません。
+ 無効化された AMI は **[自分が所有]** コンソールフィルタには表示されません。無効になっている AMI を検索するには、**[無効化されたイメージ]** コンソールフィルタを使用してください。
+ 無効化された AMI は、EC2 コンソールのインスタンス起動時に選択できません。たとえば、無効化された AMI はインスタンスの起動ウィザードの AMI カタログに表示されません。また、起動テンプレート作成時にも表示されません。
+ 起動テンプレートや Auto Scaling グループなどの起動サービスは、無効化された AMI を引き続き参照できます。無効化された AMI からのそれ以降のインスタンスの起動は失敗するため、使用可能な AMI のみを参照するように、起動テンプレートと Auto Scaling グループを更新することをお勧めします。
+ 今後無効化される予定の AMI を使用して起動された EC2 インスタンスは影響を受けず、停止、起動、および再起動が可能です。
+ 無効になっている AMI に関連するスナップショットは削除できません。関連するスナップショットを削除しようとすると `snapshot is currently in use` エラーになります。

**AMI が再び有効になると:**
+ AMI の状態が `available` に変わり、インスタンスの起動に使用できるようになります。
+ AMI は共有できます。
+ AMI を無効にしたときに AMI にアクセスできなくなった AWS アカウント、組織、および組織単位は、自動的にアクセスを回復できませんが、AMI を再び共有することは可能です。

## コスト
<a name="ami-disable-costs"></a>

AMI を無効化しても、その AMI は削除されません。EBS-backed AMI の場合は、AMI の EBS スナップショットの料金を引き続きお支払いいただきます。AMI を残しておきたい場合は、スナップショットをアーカイブすることでストレージコストを削減できる場合があります。詳細については、「Amazon EBS ユーザーガイド」の「[Amazon EBS スナップショットのアーカイブ](https://docs.aws.amazon.com/ebs/latest/userguide/snapshot-archive.html)」を参照してください。AMI とそのスナップショットを保持したくない場合は、AMI を登録解除し、スナップショットを削除する必要があります。詳細については、「[AMI の登録解除](deregister-ami.md)」を参照してください。

## 前提条件
<a name="ami-disable-prerequisites"></a>

AMI を無効または再度有効にするには、AMI の所有者である必要があります。

## 必要な IAM 許可
<a name="ami-disable-iam-permissions"></a>

AMI を無効化する、および再度有効化するには、次の IAM 権限が必要です。
+ `ec2:DisableImage`
+ `ec2:EnableImage`

## AMI の無効化
<a name="disable-ami"></a>

AMI は EC2 コンソールまたは AWS Command Line Interface (AWS CLI) を使用して無効にできます。この手順を実行するには、AMI の所有者である必要があります。

------
#### [ Console ]

**AMI を無効化するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. 左のナビゲーションペインで [**AMI**] を選択してください。

1. フィルターバーから、**[Owned by me]** (自己所有) を選択します。

1. AMI を選択し、**[アクション]**、**[AMI を無効にする]** の順に選択します。複数の AMI を選択し、まとめて無効化することもできます。

1. **[AMI を無効にする]** ウィンドウで、**[AMI を無効にする]** を選択します。

------
#### [ AWS CLI ]

**AMI を無効化するには**  
次の [https://docs.aws.amazon.com/cli/latest/reference/ec2/disable-image.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/disable-image.html) コマンドを使用します。

```
aws ec2 disable-image --image-id ami-0abcdef1234567890
```

------
#### [ PowerShell ]

**AMI を無効化するには**  
[Disable-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Disable-EC2Image.html) コマンドレットを使用します。

```
Disable-EC2Image -ImageId ami-0abcdef1234567890
```

------

## 無効化された AMI の説明
<a name="describe-disabled-ami"></a>

無効化された AMI は EC2 コンソールと AWS CLI を使用して表示できます。

無効化された AMI を表示するには AMI 所有者である必要があります。無効化された AMI は非公開になるため、所有者以外には表示されません。

------
#### [ Console ]

**無効化された AMI を表示するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. 左のナビゲーションペインで [**AMI**] を選択してください。

1. フィルターバーから **[無効化された画像]** を選択します。  
![\[[無効化された画像] フィルター。\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/ami-filter-by-disabled-images.png)

------
#### [ AWS CLI ]

デフォルトでは、すべての AMI を記述した場合、無効化された AMI は結果に含まれません。非推奨の AMI を結果に含めるには、`--include-disabled` オプションを指定します。AMI が無効になっている場合、AMI の `State` フィールドは `disabled` になります。

**無効になっている AMI も含めてアカウントのすべての AMI を記述するには**  
次の [https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html) コマンドを使用します。

```
aws ec2 describe-images \
    --owners 123456789012 \
    --include-disabled
```

**アカウントの無効になっている AMI を一覧表示するには**  
次の [https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html) コマンドを使用します。

```
aws ec2 describe-images \
    --owners self \
    --include-disabled \
    --filters Name=state,Values=disabled \
    --query Images[].ImageId \
    --output text
```

以下は出力の例です。

```
ami-0abcdef1234567890
```

**AMI のステータスを記述するには**  
次の [https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html) コマンドを使用します。出力に `DeprecationTime` がない場合、AMI は非推奨ではなく、将来的に非推奨に設定されることもありません。

```
aws ec2 describe-images \
    --image-ids ami-0abcdef1234567890 \
    --query Images[].State \
    --output text
```

以下は出力の例です。

```
disabled
```

------
#### [ PowerShell ]

デフォルトでは、すべての AMI を記述した場合、無効化された AMI は結果に含まれません。無効になった AMI を結果に含めるには、`-IncludeDisabled` パラメータを指定します。AMI が無効になっている場合、AMI の `State` フィールドは `disabled` になります。

**アカウントの無効になっている AMI を一覧表示するには**  
[Get-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Image.html) コマンドレットを使用します。

```
(Get-EC2Image `
    -Owner self `
    -IncludeDisabled $true | Where-Object {$_.State -eq "disabled"}).ImageId
```

以下は出力の例です。

```
ami-0abcdef1234567890
```

**AMI のステータスを記述するには**  
[Get-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Image.html) コマンドレットを使用します。

```
(Get-EC2Image -ImageId ami-0abcdef1234567890).State.Value
```

以下は出力の例です。

```
disabled
```

------

## 無効化された AMI を再度有効にする
<a name="re-enable-a-disabled-ami"></a>

無効化された AMI を再度有効にすることができます。この手順を実行するには、AMI の所有者である必要があります。

------
#### [ Console ]

**無効化した AMI を再度有効にするには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. 左のナビゲーションペインで [**AMI**] を選択してください。

1. フィルターバーから **[無効化された画像]** を選択します。

1. AMI を選択し、**[アクション]**、**[AMI を有効化]** の順に選択します。複数の AMI を選択し、まとめて再有効化を選択することもできます。

1. **[AMI を有効化]** ウィンドウで、**[有効化]** を選択します。

------
#### [ AWS CLI ]

**無効化した AMI を再度有効にするには**  
次の [https://docs.aws.amazon.com/cli/latest/reference/ec2/enable-image.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/enable-image.html) コマンドを使用します。

```
aws ec2 enable-image --image-id ami-0abcdef1234567890
```

------
#### [ PowerShell ]

**無効化した AMI を再度有効にするには**  
[Enable-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Enable-EC2Image.html) コマンドレットを使用します。

```
Enable-EC2Image -ImageId ami-0abcdef1234567890
```

------

# Amazon EC2 AMI の登録を解除する
<a name="deregister-ami"></a>

AMI の登録を解除すると、Amazon EC2 により AMI は完全に削除されます。AMI の登録を解除すると、それを使用して新しいインスタンスを起動できなくなります。AMI の利用が終わったら、その登録を解除することを検討するとよいでしょう。

AMI が誤ってまたは悪意によって登録解除されるのを防ぐために、[登録解除保護](ami-deregistration-protection.md)を有効にすることができます。EBS-backed AMI を誤って登録解除した場合、完全に削除されるまでの許容期間内に復元した場合にのみ、[ごみ箱](https://docs.aws.amazon.com/ebs/latest/userguide/recycle-bin.html)から復元できます。

AMI の登録解除時に、関連付けられたスナップショットを同時に削除することも可能です。ただし、スナップショットが複数の AMI に関連付けられている場合、AMI は登録解除できますが、スナップショットはたとえ削除対象として指定していても削除されません。削除されていないスナップショットには、引き続きストレージコストが発生します。

AMI の登録を解除しても、AMI から既に起動したインスタンスは影響を受けません。これらのインスタンスを引き続き使用できます。デフォルトでは、AMI の登録を解除しても、その AMI の作成プロセスで作成されたスナップショットには影響はありません。これらのスナップショットのインスタンスとストレージコストには、引き続き使用料が発生します。したがって、不要なコストの発生を避けるには、インスタンスをすべて終了し、不要なスナップショットをすべて削除することをお勧めします。スナップショットは、登録解除時に自動的に削除することも、あるいは登録解除後に手動で削除することも可能です。詳細については、「[未使用のリソースによるコストを回避する](#delete-unneeded-resources-to-avoid-unnecessary-costs)」を参照してください。

AMI から起動されたインスタンスがその後登録解除された場合でも、`describe-instance-image-metadata` AWS CLI コマンドを使用して AMI に関するいくつかの概要情報を表示できます。インスタンスのメタデ[タの詳細については、を参照してくださ](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instance-image-metadata.html).い。

**Topics**
+ [考慮事項](#deregister-ami-considerations)
+ [AMI の登録解除](#deregister-an-ami)
+ [未使用のリソースによるコストを回避する](#delete-unneeded-resources-to-avoid-unnecessary-costs)
+ [Amazon EC2 AMI を登録解除から保護する](ami-deregistration-protection.md)

## 考慮事項
<a name="deregister-ami-considerations"></a>
+ アカウントが所有していない AMI の登録を解除することはできません。
+ AWS Backup サービスで管理されている AMI の登録解除に、Amazon EC2 を使用することはできません。代わりに、AWS Backup を使用して、バックアップボールト内の対応するリカバリポイントを削除します。詳細については、「*AWS Backup デベロッパーガイド*」の「[バックアップの削除](https://docs.aws.amazon.com/aws-backup/latest/devguide/deleting-backups.html)」を参照してください。

## AMI の登録解除
<a name="deregister-an-ami"></a>

Amazon EBS-backed AMI と Amazon S3-backed AMI の登録を解除できます。EBS-backed AMI の場合、関連付けられたスナップショットを同時に削除することも可能です。ただし、スナップショットが他の AMI に関連付けられている場合は、たとえ削除対象として指定していても削除されません。

------
#### [ Console ]

**AMI の登録を解除するには**

1. Amazon EC2 コンソール ([https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)) を開きます。

1. ナビゲーションペインで **[AMI]** を選択してください。

1. フィルターバーから **[自己所有]** を選択して使用可能な AMI を一覧表示するか、**[無効化されたイメージ]** を選択して無効になっている AMI を一覧表示します。

1. 登録を解除する AMI を選択してください。

1. **[アクション]**、**[AMI の登録解除]** の順に選択してください。

1. (オプション) 関連付けられたスナップショットを登録解除時に削除するには、**[関連付けられたスナップショットの削除]** チェックボックスをオンにします。
**注記**  
スナップショットが他の AMI に関連付けられている場合は、たとえこのチェックボックスを選択してもスナップショットは削除されないので注意してください。

1. **[AMI の登録解除]** を選択します。

   コンソールで AMI がリストから削除されるまで、数分ほどかかります。ステータスを更新するには、[**リフレッシュ**] を選択してください。

------
#### [ AWS CLI ]

**AMI の登録を解除するには**  
次の [deregister-image](https://docs.aws.amazon.com/cli/latest/reference/ec2/deregister-image.html) コマンドを使用します。

```
aws ec2 deregister-image --image-id ami-0abcdef1234567890
```

**AMI の登録を解除し、関連するスナップショットを削除するには**  
次の [deregister-image](https://docs.aws.amazon.com/cli/latest/reference/ec2/deregister-image.html) コマンドを使用して、`--delete-associated-snapshots` パラメータを指定します。スナップショットが他の AMI に関連付けられている場合、このパラメータを指定してもスナップショットは削除されないので注意してください。

```
aws ec2 deregister-image \
    --image-id ami-0abcdef1234567890 \
    --delete-associated-snapshots
```

------
#### [ PowerShell ]

**AMI の登録を解除するには**  
[Unregister-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Unregister-EC2Image.html) コマンドレットを使用します。

```
Unregister-EC2Image -ImageId ami-0abcdef1234567890
```

**AMI の登録を解除し、関連するスナップショットを削除するには**  
[Unregister-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Unregister-EC2Image.html) コマンドレットを使用して、`-DeleteAssociatedSnapshots` パラメータを指定します。スナップショットが他の AMI に関連付けられている場合、このパラメータを指定してもスナップショットは削除されないので注意してください。

```
Unregister-EC2Image `
    -ImageId ami-0abcdef1234567890 `
    -DeleteAssociatedSnapshots
```

------

## 未使用のリソースによるコストを回避する
<a name="delete-unneeded-resources-to-avoid-unnecessary-costs"></a>

デフォルトでは、AMI の登録を解除しても、その AMI に関連付けられたリソースは完全には削除されません。これらのリソースには、EBS-backed AMI のスナップショットと、Amazon S3-backed AMI の Amazon S3 内のファイルが含まれます。AMI の登録を解除しても、AMI から起動されたインスタンスが終了または停止することはありません。

スナップショットとファイルの保存には引き続き費用がかかり、実行中のインスタンスにも費用が発生します。

このような不要なコストの発生を避けるために、必要ないリソースを削除することをお勧めします。

**EBS-backed AMI**
+ AMI の登録解除時に、関連付けられたスナップショットを削除します。詳細については、「[AMI の登録解除](#deregister-an-ami)」を参照してください。
+ 関連付けられたスナップショットを削除せずに AMI を登録解除した場合は、手動で[スナップショットを削除](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-deleting-snapshot.html#ebs-delete-snapshot)できます。AMI の作成時に作成されたインスタンスルートボリュームのスナップショットには、次の説明形式があります。

  ```
  Created by CreateImage(i-1234567890abcdef0) for ami-0abcdef1234567890
  ```
+ AMI から起動したインスタンスが不要になった場合は、それらを[停止](Stop_Start.md#starting-stopping-instances)または[終了](terminating-instances.md#terminating-instances-console)できます。インスタンスを一覧表示するには、AMI の ID でフィルタリングします。

**Amazon S3-backed AMI**
+ [ec2-delete-bundle](ami-tools-commands.md#ami-delete-bundle) (AMI ツール) コマンドを使用して、Amazon S3 のバンドルを削除します。
+ バンドルを削除した後に Amazon S3 バケットが空になり、不要になった場合は、その[バケットを削除](https://docs.aws.amazon.com/AmazonS3/latest/userguide/delete-bucket.html)できます。
+ AMI から起動したインスタンスが不要になった場合は、それらを[削除](terminating-instances.md#terminating-instances-console)できます。インスタンスを一覧表示するには、AMI の ID でフィルタリングします。

# Amazon EC2 AMI を登録解除から保護する
<a name="ami-deregistration-protection"></a>

AMI の*登録解除保護*をオンにして、偶発的な削除や悪意のある削除を防ぐことができます。登録解除保護をオンにすると、IAM アクセス許可に関係なく、ユーザーによる AMI の削除はできなくなります。AMI の登録を解除するには、まず AMI の登録解除保護を無効にする必要があります。

AMI の登録解除保護を有効にする際、24 時間のクールダウン期間を持たせるオプションがあります。このクールダウン期間は、登録解除保護を無効にした後も有効のままになる時間です。このクールダウン期間中、AMI は登録解除できません。クールダウン期間が終了すると、AMI の登録解除が可能になります。

デフォルトでは、すべての既存および新規 AMI では登録解除保護はオフになっています。

## 登録解除保護をオンにする
<a name="enable-deregistration-protection"></a>

登録解除保護をオンにするには、次の手順を使用します。

------
#### [ Console ]

**登録解除保護をオンにするには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで **[AMI]** を選択してください。

1. フィルターバーから **[自己所有]** を選択して使用可能な AMI を一覧表示するか、**[無効化されたイメージ]** を選択して無効になっている AMI を一覧表示します。

1. 登録解除保護を有効にする AMI を選択し、**[アクション]**、**[AMI 登録解除保護の管理]** の順に選択してください。

1. **[AMI 登録解除保護の管理]** ダイアログボックスでは、クールダウン期間を有効または無効にして、登録解除保護を有効にできます。以下のオプションのいずれかを選択してください。
   + **[24 時間のクールダウン期間をつけて有効にする]** — クールダウン期間を設定すると、登録解除保護をオフにしてから 24 時間は AMI の登録を解除できません。
   + **[クールダウンなしで有効化]** — クールダウン期間を設定しないと、登録解除保護がオフにしたときに AMI をすぐに登録解除できます。

1. **[保存]** を選択します。

------
#### [ AWS CLI ]

**登録解除保護をオンにするには**  
[enable-image-deregistration-protection](https://docs.aws.amazon.com/cli/latest/reference/ec2/enable-image-deregistration-protection.html) コマンドを使用します。オプションのクールダウン期間を有効にするには、`--with-cooldown` オプションを含めます。

```
aws ec2 enable-image-deregistration-protection \
    --image-id ami-0abcdef1234567890 \
    --with-cooldown
```

------
#### [ PowerShell ]

**登録解除保護をオンにするには**  
[Enable-EC2ImageDeregistrationProtection](https://docs.aws.amazon.com/powershell/latest/reference/items/Enable-EC2ImageDeregistrationProtection.html) コマンドレットを使用します。オプションのクールダウン期間を有効にするには、`-WithCooldown` パラメータを `true` に設定します。

```
Enable-EC2ImageDeregistrationProtection `
    -ImageId ami-0abcdef1234567890 `
    -WithCooldown $true
```

------

## 登録解除保護をオフにする
<a name="disable-deregistration-protection"></a>

登録解除保護をオフにするには、次の手順を使用します。

AMI の登録解除保護をオンにしたときに 24 時間のクールダウン期間を設定した場合、登録解除保護をオフにしても、AMI をすぐに登録解除することはできません。このクールダウン期間は 24 時間の、登録解除保護を無効にした後も有効のままになる期間です。このクールダウン期間中、AMI は登録解除できません。クールダウン期間が終了すると、AMI を登録解除できます。

------
#### [ Console ]

**登録解除保護をオフにするには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで **[AMI]** を選択してください。

1. フィルターバーから **[自己所有]** を選択して使用可能な AMI を一覧表示するか、**[無効化されたイメージ]** を選択して無効になっている AMI を一覧表示します。

1. 登録解除保護を無効にする AMI を選択し、**[アクション]**、**[AMI 登録解除保護の管理]** の順に選択してください。

1. **[AMI 登録解除保護の管理]** ダイアログボックスで、**[無効にする]** を選択してください。

1. **[保存]** を選択します。

------
#### [ AWS CLI ]

**登録解除保護をオフにするには**  
[disable-image-deregistration-protection](https://docs.aws.amazon.com/cli/latest/reference/ec2/disable-image-deregistration-protection.html) コマンドを使用します。

```
aws ec2 disable-image-deregistration-protection --image-id ami-0abcdef1234567890
```

------
#### [ PowerShell ]

**登録解除保護をオフにするには**  
[Disable-EC2ImageDeregistrationProtection](https://docs.aws.amazon.com/powershell/latest/reference/items/Disable-EC2ImageDeregistrationProtection.html) コマンドレットを使用します。

```
Disable-EC2ImageDeregistrationProtection -ImageId ami-0abcdef1234567890
```

------