Amazon EC2 で使用するために AMI を公開する - Amazon Elastic Compute Cloud

Amazon EC2 で使用するために AMI を公開する

AMI をすべての AWS アカウント と共有することで公開できます。

AMI がパブリックに共有されないようにしたい場合は、AMI のパブリックアクセスをブロックできます。これにより、AMI を公開しようとするあらゆる試みがブロックされ、不正アクセスや AMI データの悪用を防ぐのに役立ちます。パブリックアクセスのブロックを有効にしても、既に公開されている AMI には影響しないことに注意してください。AMI は引き続き公開されています。詳細については、「AMI のパブリックアクセスのブロックについて」を参照してください。

特定のアカウントのみが AMI を使用してインスタンスを起動可能にする方法については、「特定の AWS アカウントとの AMI の共有」を参照してください。

考慮事項

AMI を公開する前に、以下の点を検討してください。

  • 所有権 — AMI を公開するには、お客様の AWS アカウント がその AMI を所有している必要があります。

  • リージョン – AMI はリージョンのリソースです。共有した AMI は、共有したリージョンでのみ使用できます。AMI を他のリージョンで利用できるようにするには、AMI をそのリージョンにコピーし、共有します。詳細については、「Amazon EC2 AMI のコピー」を参照してください。

  • パブリックアクセスをブロック – AMI をパブリックに共有するには、AMI をパブリックに共有する各リージョンで AMI のパブリックアクセスのブロックを無効にする必要があります。AMI をパブリックに共有した後で、AMI のパブリックアクセスのブロックを再度有効にして、AMI がそれ以上パブリックに共有されないようにできます。

  • 公開できない AMI - 次のコンポーネントが含まれる AMI は公開できません (ただし、AMI を特定の AWS アカウント と共有することはできます)。

    • 暗号化されたボリューム

    • 暗号化されたボリュームのスナップショット

    • 製品コード

  • 機密データが公開されないようにする - AMI を共有するときに機密データが公開されないようにするには、「共有 Linux AMI の作成に関する推奨事項」のセキュリティ考慮事項を読み、推奨アクションに従います。

  • 使用 — AMI を共有する場合、ユーザーは AMI からのインスタンスのみを起動できます。AMI はそれを削除、共有、または変更することはできません。ただし、AMI を使用してインスタンスを起動した後は、起動したインスタンスから AMI を作成できます。

  • 自動非推奨 – すべてのパブリック AMI を非推奨にする日はデフォルトで AMI 作成日の 2 年後になっています。非推奨にする日は 2 年より前の日付に設定できます。非推奨にする日を取り消す場合や、非推奨にする日をもっと先の日付に変える場合は、AMI を特定の AWS アカウント とのみ共有するようにして、AMI を非公開にする必要があります。

  • 旧型の AMI の削除 — パブリック AMI の廃止日が過ぎ、その AMI で新しいインスタンスが 6 か月以上起動されなかった場合、AWS はそのパブリック共有プロパティを削除し、古くなった AMI がパブリック AMI リストに表示されないようにします。

  • 請求 — 他の AWS アカウント がお客様の AMI を使用してインスタンスを起動しても、お客様には請求されません。AMI を使用してインスタンスを起動するアカウントには、起動するインスタンスに対して請求されます。

すべての AWS アカウントで AMI を共有 (パブリックに共有)

AMI を公開すると、コンソールの [コミュニティ AMI] で使用できるようになります。これには、EC2 コンソールの左側のナビゲーターにある [AMI カタログ] から、またはコンソールを使用してインスタンスを起動するときにアクセスできます。AMI は、公開してから [Community AMIs] に表示されるまでに、しばらく時間がかかることもあります。

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

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

  3. リストから AMI を選択し、[Actions] (アクション) から [Edit AMI permissions] (AMI 権限の編集) を選択します。

  4. [AMI の可用性] で、[パブリック] を選択します。

  5. [Save changes] (変更の保存) をクリックします。

AWS CLI

各 AMI には、所有者以外でその AMI を使用してインスタンスを起動できる AWS アカウント を制御する launchPermission プロパティがあります。AMI の launchPermission プロパティを変更することで、AMI を公開したり (この場合、すべての AWS アカウント に起動許可が与えられます) 、指定した AWS アカウント とのみ AMI を共有したりすることができます。

AMI の起動許可を持っているアカウントの一覧に対してアカウント ID の追加または削除ができます。AMI を公開するには、all グループを指定します。パブリック起動許可と明示的起動許可の両方を指定できます。

[To make an AMI public]
  1. 次のように、modify-image-attribute コマンドを使用して、指定した AMI の launchPermission リストに all グループを追加します。

    aws ec2 modify-image-attribute \ --image-id ami-0abcdef1234567890 \ --launch-permission "Add=[{Group=all}]"
  2. AMI の起動許可を確認するには、describe-image-attribute コマンドを使用します。

    aws ec2 describe-image-attribute \ --image-id ami-0abcdef1234567890 \ --attribute launchPermission
  3. (オプション) AMI をプライベートに戻すには、その起動許可から all グループを削除します。AMI の所有者には常に起動許可が与えられるため、このコマンドの影響を受けないことにご注意ください。

    aws ec2 modify-image-attribute \ --image-id ami-0abcdef1234567890 \ --launch-permission "Remove=[{Group=all}]"
PowerShell

各 AMI には、所有者以外でその AMI を使用してインスタンスを起動できる AWS アカウント を制御する launchPermission プロパティがあります。AMI の launchPermission プロパティを変更することで、AMI を公開したり (この場合、すべての AWS アカウント に起動許可が与えられます) 、指定した AWS アカウント とのみ AMI を共有したりすることができます。

AMI の起動許可を持っているアカウントの一覧に対してアカウント ID の追加または削除ができます。AMI を公開するには、all グループを指定します。パブリック起動許可と明示的起動許可の両方を指定できます。

[To make an AMI public]
  1. 次のように、Edit-EC2ImageAttribute コマンドを使用して、指定した AMI の launchPermission リストに all グループを追加します。

    PS C:\> Edit-EC2ImageAttribute -ImageId ami-0abcdef1234567890 -Attribute launchPermission -OperationType add -UserGroup all
  2. AMI の起動許可を確認するには、次の Get-EC2ImageAttribute コマンドを使用します。

    PS C:\> Get-EC2ImageAttribute -ImageId ami-0abcdef1234567890 -Attribute launchPermission
  3. (オプション) AMI をプライベートに戻すには、その起動許可から all グループを削除します。AMI の所有者には常に起動許可が与えられるため、このコマンドの影響を受けないことにご注意ください。

    PS C:\> Edit-EC2ImageAttribute -ImageId ami-0abcdef1234567890 -Attribute launchPermission -OperationType remove -UserGroup all