AMI のコピー - Amazon Elastic Compute Cloud

AMI のコピー

AWS リージョン内またはリージョンをまたいで Amazon マシンイメージ (AMI) をコピーできます。Amazon EBS-backed AMIs と instance store-backed AMIs のいずれもコピーできます。暗号化されたスナップショットで AMI をコピーし、コピープロセス中に暗号化ステータスを変更することもできます。共有されている AMI をコピーすることができます。

ソース AMI をコピーすると、同一ではあるが独自の識別子を使用するターゲット AMI となります。ソース AMI は、ターゲット AMI に影響を及ぼさずに変更または登録解除できます。逆の場合も同様です。

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

考慮事項

  • IAM ポリシーを使用すると、AMI をコピーするためのアクセス許可をユーザーに付与したり、それを拒否したりできます。CopyImage アクション用に指定されたリソースレベルのアクセス権限は、新しい AMI にのみ適用されます。ソース AMI に対しては、リソースレベルのアクセス許可を付与できません。

  • AWS は、起動許可と Simple Storage Service (Amazon S3) バケット許可を元の AMI から新しい AMI にコピーしません。コピー操作が完了すると、起動許可と Simple Storage Service (Amazon S3) バケット許可を新しい AMI に適用できます。

  • コピーできるのは、AMI にアタッチしたユーザー定義の AMI タグだけです。システムタグ (aws: プレフィックスが付いている) や、他の AWS アカウント がアタッチしたユーザー定義タグはコピーされません。

  • この CopyImage アクションは、別のアカウントから共有された AWS Marketplace AMI のコピーには対応していません。代わりに、別のアカウントに AWS Marketplace AMI をコピーする場合は、次の操作を行う必要があります。AWS Marketplace AMI を他のアカウントと共有し、そのアカウントで AWS Marketplace AMI を使用して EC2 インスタンスを起動します。これで、CreateImage アクションを使用してインスタンスから AMI を作成できます。新しい AMI にはすべての AWS Marketplace コードが保持されます。このプロセスは AWS Marketplace AMI から直接または間接的に派生したすべての AMI にも適用されることに注意してください。インスタンスから AMI を作成する方法の詳細については、「カスタム Windows AMI を作成する」と「」を参照してください。

コスト

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

instance store-backed AMI をコピーするアクセス許可

Instance Store-Backed AMI をコピーするには、ユーザーは Amazon S3 への許可として、s3:CreateBuckets3:GetBucketAcls3:ListAllMyBucketss3:GetObjects3:PutObjects3:PutObjectAcl が必要です。

次のポリシー例では、指定されたバケットの AMI ソースを、指定されたリージョンにコピーできます。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:ListAllMyBuckets", "Resource": [ "arn:aws:s3:::*" ] }, { "Effect": "Allow", "Action": "s3:GetObject", "Resource": [ "arn:aws:s3:::ami-source-bucket/*" ] }, { "Effect": "Allow", "Action": [ "s3:CreateBucket", "s3:GetBucketAcl", "s3:PutObjectAcl", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::amis-for-123456789012-in-us-east-1*" ] } ] }

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

注記

s3:CreateBucket 許可は、ユーザーが初めて Instance Store-Backed AMI を個々のリージョンにコピーするときにのみ必要です。その後、リージョンですでに作成された Amazon S3 バケットは、そのリージョンにコピーする将来のすべての AMIs に保存されます。

AMI のコピー

AWS Management Console、AWS Command Line Interfaceまたは SDK、または Amazon EC2 API を使用して AMI をコピーするできます。これはらいずれも CopyImage アクションをサポートしています。

前提条件

Amazon EBS スナップショットによってバックアップされた AMI を作成、または取得します。Amazon EC2 コンソールを使用すると、AWS が提供するさまざまな AMI を検索できます。詳細については、「カスタム Windows AMI を作成する」および「」「AMI の検索」を参照してください。

New console
コンソールを使用して AMI をコピーするには
  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. コンソールのナビゲーションバーから、AMI を含むリージョンを選択します。

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

  4. コピーする AMI を選択して、[Actions]、[Copy AMI] の順に選択します。

  5. [Copy AMI] (AMI のコピー) ページで、次の情報を指定します。

    • [AMI copy name] (AMI コピー名) : 新しい AMI の名前。この名前にはオペレーティングシステム情報を含めることができます (この情報は AMI の詳細としては表示されません)。

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

    • [Destination Region] (送信先リージョン) : AMI をコピーするリージョン。詳細については、「リージョン間のコピー」を参照してください。

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

    • [Encrypt EBS snapshots of AMI copy] (AMI コピーの EBS スナップショットの暗号化) : ターゲットスナップショットを暗号化するか、別のキーを使用して再暗号化する場合は、このチェックボックスを選択します。デフォルトで暗号化を有効にしている場合は、[Encrypt EBS snapshots of AMI copy] (AMI コピーの EBS スナップショットを暗号化する) チェックボックスが選択され、クリアできません。詳細については、暗号化とコピー を参照してください。

    • [KMS Key] (KMS キー) : ターゲットスナップショットを暗号化するための KMS キー。

  6. [Copy AMI] (AMI のコピー) を選択します。

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

Old console
コンソールを使用して AMI をコピーするには
  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. コンソールのナビゲーションバーから、AMI を含むリージョンを選択します。ナビゲーションペインで、[Images]、[AMIs] の順に選択し、リージョンで利用できる AMIs のリストを表示します。

  3. コピーする AMI を選択して、[Actions]、[Copy AMI] の順に選択します。

  4. [AMI のコピー] ダイアログボックスで、下記の情報を指定して [AMI のコピー] を選択します。

    • 送信先リージョン: AMI をコピーするリージョン。詳細については、リージョン間のコピー を参照してください。

    • 名前: 新しい AMI の名前。この名前にはオペレーティングシステム情報を含めることができます (この情報は AMI の詳細としては表示されません)。

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

    • 暗号化: ターゲットスナップショットを暗号化するか、別のキーを使用して再暗号化する場合は、このフィールドを選択します。デフォルトで暗号化を有効にしている場合は、[暗号化] オプションが設定され、この設定を解除することはできません。詳細については、暗号化とコピー を参照してください。

    • KMS キー: ターゲットスナップショットを暗号化するための KMS キー。

  5. コピーオペレーションが開始したことを知らせる確認ページが表示され、新しい AMI の ID が提供されます。

    コピーオペレーションの進行状況をすぐに確認するには、提供されたリンクをクリックしてください。後で進行状況を確認するには [Done] を選択し、自分の準備ができたときに、ナビゲーションバーを使用してターゲットリージョン (ある場合) を切り替え、AMI のリストから AMI を見つけます。

    ターゲット AMI の初期ステータスは pending です。ステータスが available になると、オペレーションは完了します。

AWS CLI を使用して AMI をコピーするには

AMI は、copy-image コマンドを使用してコピーできます。コピー元リージョンおよび送信先リージョンの両方を指定する必要があります。コピー元のリージョンは、--source-region パラメータを使用して指定します。--region パラメータまたは環境変数を使用して送信先リージョンを指定できます。詳細については、「AWS コマンドラインインターフェイスの設定」を参照してください。

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

コマンドの例については、「AWS CLI コマンドリファレンス」の「copy-image」の「」を参照してください。

Tools for Windows PowerShell を使用して AMI をコピーするには

AMI は、Copy-EC2Image コマンドを使用してコピーできます。コピー元リージョンおよび送信先リージョンの両方を指定する必要があります。コピー元のリージョンは、-SourceRegion パラメータを使用して指定します。-Region パラメータまたは Set-AWSDefaultRegion コマンドを使用して送信先リージョンを指定できます。詳細については、「AWS リージョンの指定」を参照してください。

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

保留中の AMI コピーオペレーションの中止

保留中の AMI のコピーは、次の手順で停止できます。

New console
コンソールを使用して AMI のコピー操作を中止するには
  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. ナビゲーションバーのリージョンセレクターから対象のリージョンを選択します。

  3. ナビゲーションペインで [AMIs] を選択します。

  4. コピーを中止する AMI を選択し、[Actions] (アクション)、[Deregister AMI] (AMI の登録解除) を選択します。

  5. 確認を求めるメッセージが表示されたら、[Deregister AMI] (AMI の登録解除) を選択します。

Old console
コンソールを使用して AMI のコピー操作を中止するには
  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. ナビゲーションバーのリージョンセレクターから対象のリージョンを選択します。

  3. ナビゲーションペインで [AMIs] を選択します。

  4. コピーを中止する AMI を選択し、[Actions]、[Deregister] を選択します。

  5. 確認を求められたら、[Continue] を選択します。

コマンドラインを使用して AMI コピー操作を中止するには

次のいずれかのコマンドを使用できます。これらのコマンドラインインターフェイスの詳細については、Amazon EC2 へのアクセス を参照してください。

リージョン間のコピー

地理的に分散したリージョンに AMI をコピーすると、次のような利点があります。

  • 一貫性のあるグローバルなデプロイメント: 1 つのリージョンから別のリージョンに AMI をコピーすることで、一貫性のあるインスタンスを同じ AMI から別のリージョンに起動できます。

  • スケーラビリティ: ユーザーの場所にかかわらず、ユーザーのニーズに合ったグローバルアプリケーションをより簡単に設計できます。

  • パフォーマンス: アプリケーションを配布したり、アプリケーションの重要なコンポーネントをユーザーの近くに配置したりすることでパフォーマンスを向上できます。また、インスタンスの種類やその他の AWS サービスなど、リージョン固有の機能を活用することもできます。

  • 高可用性: アプリケーションを設計し、AWS リージョン全体にわたってデプロイして可用性を高めることができます。

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


				別のリージョンにコピーされた AMI

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

前提条件

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

Limits
  • コピー先のリージョンには、AMI の同時コピーが 100 個までという制限があります。

アカウント間のコピー

別の AWS アカウントと AMI を共有できます。AMI の共有は AMI の所有権には影響しません。所有しているアカウントには、リージョンのストレージ料金が適用されます。詳細については、特定の AWS アカウントとの AMI の共有 を参照してください。

自分のアカウントと共有された AMI をコピーした場合、アカウントのコピー先の AMI の所有者は自分になります。コピー元の AMI の所有者には、Amazon EBS または Amazon S3 の標準転送料金が課金され、コピー先の AMI の所有者には、コピー先リージョンのストレージ料金が課金されます。

リソースのアクセス許可

AMI を別のアカウントから共有した場合、この AMI をコピーするには、ソース AMI の所有者がこの AMI をバックアップするストレージの読み取り許可を付与する必要があります。ストレージは、関連 EBS スナップショット (Amazon EBS-backed AMI の場合) か、関連 S3 バケット (instance store-backed AMI の場合) のどちらかです。共有 AMI に暗号化されたスナップショットがある場合、所有者はキーも共有する必要があります。リソースのアクセス許可の付与についての詳細は、EBS スナップショットの場合は、「Amazon EBS スナップショットの共有」を、S3 バケットの場合は、「Amazon Simple Storage Service ユーザーガイド」の「Amazon S3 での Identity and Access Management」を参照してください。

注記

AMI をタグ付きでコピーするには、ソース AMI の起動許可が必要です。

暗号化とコピー

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

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

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

デフォルト (暗号化パラメータを指定しない) では、AMI をバックアップするスナップショットは元の暗号化ステータスとともにコピーされます。暗号化されていないスナップショットにバックアップされた AMI をコピーすると、やはり暗号化されていない同一のターゲットスナップショットになります。暗号化されたスナップショットにバックアップされている AMI をコピーすると、コピー先でもスナップショットが同じ AWS KMS キーで暗号化されます。複数のスナップショットにバックアップされた AMI をコピーした場合、デフォルトでは、元の暗号化ステータスが各ターゲットスナップショットで維持されます。

AMI をコピー中に暗号化パラメータを指定した場合、バックアップスナップショットを暗号化または再暗号化できます。以下の例は、ターゲット AMI の暗号化状態を変更するために CopyImage アクションに暗号化パラメータを提供する、デフォルトではないケースを示しています。

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

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

注記

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


		AMI をコピーし、スナップショットをオンザフライで暗号化

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

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