

# 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
   ```