AMI の公開 - Amazon Elastic Compute Cloud

AMI の公開

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

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

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

考慮事項

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

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

  • リージョン – AMI はリージョンのリソースです。共有した AMI は、共有したリージョンでのみ使用できます。AMI を他のリージョンで利用できるようにするには、AMI をそのリージョンにコピーし、共有します。詳細については、「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}]"

AMI へのパブリックアクセスをブロックする

AMI がパブリックに共有されないようにするために、AMI のパブリックアクセスをブロックできます。この設定はアカウントレベルで有効になっていますが、AMI がパブリックに共有されないようにする AWS リージョン ごとに有効にする必要があります。

パブリックアクセスのブロックを有効にすると、AMI を公開しようとする試みは自動的にブロックされます。ただし、既にパブリック AMI がある場合は、引き続き公開されます。

AMI をパブリックに共有したい場合は、パブリックアクセスのブロックを無効にする必要があります。共有が完了したら、AMI が意図せずパブリックに共有されないように、パブリックアクセスのブロックを再度有効にするのがベストプラクティスです。

管理者ユーザーのみが AMI のパブリックアクセスのブロックを有効または無効にできるように、IAM アクセス許可を管理者ユーザーに制限できます。

デフォルト設定

[AMI のパブリックアクセスをブロック] 設定は、アカウントが新規か既存か、およびパブリック AMI の有無に応じて、デフォルトで有効または無効になります。次のテーブルは、デフォルト設定の一覧です。

AWS アカウント AMI のデフォルト設定ではパブリックアクセスをブロックします。
新しいアカウント 有効

パブリック AMI のない既存のアカウント ¹

有効

1 つ以上のパブリック AMI がある既存のアカウント

無効

¹ 2023 年 7 月 15 日以降のアカウントに 1 つ以上のパブリック AMI があった場合、その後すべての AMI を非公開にしたとしても、[AMI のパブリックアクセスをブロック] はデフォルトで無効になっています。

必要な IAM 許可

AMI のパブリックアクセスのブロックを使用するには、以下の IAM アクセス許可が必要です。

  • EnableImageBlockPublicAccess

  • DisableImageBlockPublicAccess

  • GetImageBlockPublicAccessState

AMI のパブリックアクセスのブロックを有効にする

AMI がパブリックに共有されないようにするには、AMI のパブリックアクセスのブロックを有効にします。AMI がパブリックに共有されないようにする AWS リージョン ごとに、AMI のパブリックアクセスのブロックを有効にする必要があります。既にパブリック AMI がある場合は、引き続き公開されます。

Console
指定したリージョンで AMI のパブリックアクセスのブロックを有効にするには
  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. 画面上部のナビゲーションバーで、AMI のパブリックアクセスをブロックするリージョンを選択します。

  3. ダッシュボードが表示されていない場合は、ナビゲーションペインで [EC2 ダッシュボード] を選択します。

  4. [アカウントの属性][データ保護とセキュリティ] を選択します。

  5. [AMI のパブリックアクセスをブロック][管理] を選択します。

  6. [新しいパブリック共有をブロック] のチェックボックスを選択してから、[更新] を選択します。

    注記

    API がこの設定を行うには、最大 10 分かかる場合があります。この間、値は [新しいパブリック共有が可能] になります。API が設定を完了すると、値は自動的に [新しいパブリック共有をブロック中] に変更されます。

AWS CLI
指定したリージョンで AMI のパブリックアクセスのブロックを有効にするには

enable-image-block-public-access コマンドを使用して、AMI のパブリックアクセスのブロックを有効にするリージョンを指定します。--image-block-public-access-state パラメータでは、block-new-sharing を指定します。

aws ec2 enable-image-block-public-access \ --region us-east-1 \ --image-block-public-access-state block-new-sharing

正常な出力

{ "ImageBlockPublicAccessState": "block-new-sharing" }
注記

API がこの設定を行うには、最大 10 分かかる場合があります。この間に get-image-block-public-access-state コマンドを実行すると、レスポンスは unblocked になります。API が設定を完了すると、レスポンスは block-new-sharing になります。

AMI のパブリックアクセスのブロックを無効にする

アカウント内のユーザーが AMI をパブリックに共有できるようにするには、アカウントレベルでパブリックアクセスのブロックを無効にします。AMI がパブリックに共有できるようにする AWS リージョン ごとに、AMI のパブリックアクセスのブロックを無効にする必要があります。

Console
指定したリージョンで AMI のパブリックアクセスのブロックを無効にするには
  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. 画面上部のナビゲーションバーで、AMI のパブリックアクセスのブロックを無効にするリージョンを選択します。

  3. ダッシュボードが表示されていない場合は、ナビゲーションペインで [EC2 ダッシュボード] を選択します。

  4. [アカウントの属性][データ保護とセキュリティ] を選択します。

  5. [AMI のパブリックアクセスをブロック][管理] を選択します。

  6. [新しいパブリック共有のブロック] のチェックボックスの選択を解除してから、[更新] を選択します。

  7. 確認を求められたら、「confirm」と入力してから、[パブリック共有の許可] を選択します。

    注記

    API がこの設定を行うには、最大 10 分かかる場合があります。この間、値は [新しいパブリック共有をブロック中] になります。API が設定を完了すると、値は自動的に [新しいパブリック共有が可能] に変更されます。

AWS CLI
指定したリージョンで AMI のパブリックアクセスのブロックを無効にするには

disable-image-block-public-access コマンドを使用して、AMI のパブリックアクセスのブロックを無効にするリージョンを指定します。

aws ec2 disable-image-block-public-access --region us-east-1

正常な出力

{ "ImageBlockPublicAccessState": "unblocked" }
注記

API がこの設定を行うには、最大 10 分かかる場合があります。この間に get-image-block-public-access-state コマンドを実行すると、レスポンスは block-new-sharing になります。API が設定を完了すると、レスポンスは unblocked になります。

AMI のパブリックアクセスのブロック状態を表示する

AMI のパブリックアクセスのブロック状態を表示すると、AMI のパブリック共有がアカウントでブロックされているかどうかを確認できます。AMI のパブリック共有がブロックされているかどうかを確認するには、それぞれの AWS リージョン で状態を確認する必要があります。

Console
指定したリージョンで AMI のパブリックアクセスのブロック状態を表示するには
  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. 画面上部のナビゲーションバーで、AMI のパブリックアクセスのブロック状態を表示するリージョンを選択します。

  3. ダッシュボードが表示されていない場合は、ナビゲーションペインで [EC2 ダッシュボード] を選択します。

  4. [アカウントの属性][データ保護とセキュリティ] を選択します。

  5. [AMI のパブリックアクセスをブロック][パブリックアクセス] フィールドを確認します。値は [新しいパブリック共有をブロック中] または [新しいパブリック共有が可能] です。

AWS CLI
指定したリージョンで AMI のパブリックアクセスのブロック状態を取得するには

get-image-block-public-access-state コマンドを使用して、AMI のパブリックアクセスのブロック状態を取得するリージョンを指定します。

aws ec2 get-image-block-public-access-state --region us-east-1

期待される出力 – 値は block-new-sharing または unblocked です。

{ "ImageBlockPublicAccessState": "block-new-sharing" }