

# Amazon EC2 で使用するために AMI を公開する
<a name="sharingamis-intro"></a>

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

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

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

**Topics**
+ [考慮事項](#considerations-for-sharing-public-AMIs)
+ [すべての AWS アカウントで AMI を共有 (パブリックに共有)](#share-an-ami-publicly)

## 考慮事項
<a name="considerations-for-sharing-public-AMIs"></a>

AMI を公開する前に、以下の点を検討してください。
+ **所有権** — AMI を公開するには、お客様の AWS アカウント がその AMI を所有している必要があります。
+ **リージョン** – AMI はリージョンのリソースです。共有した AMI は、共有したリージョンでのみ使用できます。AMI を他のリージョンで利用できるようにするには、AMI をそのリージョンにコピーし、共有します。詳細については「[Amazon EC2 AMI のコピー](CopyingAMIs.md)」を参照してください。
+ **パブリックアクセスをブロック** – AMI をパブリックに共有するには、AMI をパブリックに共有する各リージョンで [AMI のパブリックアクセスのブロック](block-public-access-to-amis.md)を無効にする必要があります。AMI をパブリックに共有した後で、AMI のパブリックアクセスのブロックを再度有効にして、AMI がそれ以上パブリックに共有されないようにできます。
+ **公開できない AMI** - 次のコンポーネントが含まれる AMI は公開できません (ただし、[AMI を特定の AWS アカウント と共有する](sharingamis-explicit.md)ことはできます)。
  + 暗号化されたボリューム
  + 暗号化されたボリュームのスナップショット
  + 製品コード
+ **機密データが公開されないようにする** - AMI を共有するときに機密データが公開されないようにするには、「[共有 Linux AMI の作成に関する推奨事項](building-shared-amis.md)」のセキュリティ考慮事項を読み、推奨アクションに従います。
+ **使用** — AMI を共有する場合、ユーザーは AMI からのインスタンスのみを起動できます。AMI はそれを削除、共有、または変更することはできません。ただし、AMI を使用してインスタンスを起動した後は、起動したインスタンスから AMI を作成できます。
+ **自動非推奨** – すべてのパブリック AMI を非推奨にする日はデフォルトで AMI 作成日の 2 年後になっています。非推奨にする日は 2 年より前の日付に設定できます。非推奨にする日を取り消す場合や、非推奨にする日をもっと先の日付に変える場合は、AMI を[特定の AWS アカウント とのみ共有する](sharingamis-explicit.md)ようにして、AMI を非公開にする必要があります。
+ **旧型の AMI の削除** — パブリック AMI の廃止日が過ぎ、その AMI で新しいインスタンスが 6 か月以上起動されなかった場合、AWS はそのパブリック共有プロパティを削除し、古くなった AMI がパブリック AMI リストに表示されないようにします。
+ **請求** — 他の AWS アカウント がお客様の AMI を使用してインスタンスを起動しても、お客様には請求されません。AMI を使用してインスタンスを起動するアカウントには、起動するインスタンスに対して請求されます。

## すべての AWS アカウントで AMI を共有 (パブリックに共有)
<a name="share-an-ami-publicly"></a>

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

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

**[To make an AMI public]**

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

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

1. リストから AMI を選択し、**[アクション]** から **[AMI 権限の編集]** を選択してください。

1. **[AMI の可用性]** で、**[パブリック]** を選択してください。

1. [**変更の保存**] をクリックしてください。

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

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

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

**[To make an AMI public]**

1. 次のように、[https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-image-attribute.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-image-attribute.html) コマンドを使用して、指定した AMI の `launchPermission` リストに `all` グループを追加します。

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

1. AMI の起動許可を確認するには、[https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-image-attribute.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-image-attribute.html) コマンドを使用します。

   ```
   aws ec2 describe-image-attribute \
       --image-id ami-0abcdef1234567890 \
       --attribute launchPermission
   ```

1. (オプション) 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. 次のように、[https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2ImageAttribute.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2ImageAttribute.html) コマンドを使用して、指定した AMI の `launchPermission` リストに `all` グループを追加します。

   ```
   Edit-EC2ImageAttribute `
       -ImageId ami-0abcdef1234567890 `
       -Attribute launchPermission `
       -OperationType add `
       -UserGroup all
   ```

1. AMI の起動許可を確認するには、次の [https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2ImageAttribute.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2ImageAttribute.html) コマンドを使用します。

   ```
   Get-EC2ImageAttribute `
       -ImageId ami-0abcdef1234567890 `
       -Attribute launchPermission
   ```

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

   ```
   Edit-EC2ImageAttribute `
       -ImageId ami-0abcdef1234567890 `
       -Attribute launchPermission `
       -OperationType remove `
       -UserGroup all
   ```

------