

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 在 Amazon EC2 中公開提供您的 AMI
<a name="sharingamis-intro"></a>

您可以與所有人共用 AMI，使其可公開使用 AWS 帳戶。

如果您希望阻止公開共用您的 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。若要讓 AMI 在其他區域可用，請將 AMI 複製到該區域，然後共用。如需詳細資訊，請參閱[複製 Amazon EC2 AMI](CopyingAMIs.md)。
+ **封鎖公開存取** – 若要公開共用 AMI，必須在將公開共用 AMI 的每個區域中停用[封鎖 AMI 的公有存取權](block-public-access-to-amis.md)。公開共用 AMI 後，您可以重新啟用「封鎖 AMI 的公有存取權」，以防止進一步公開共用您的 AMI。
+ **部分 AMI 無法設定為公有** - 如果您的 AMI 有下列任一情況，則無法將其設定為公有 (但您可以[與指定的 AWS 帳戶共用 AMI](sharingamis-explicit.md))：
  + 加密磁碟區
  + 加密磁碟區的快照
  + 產品代碼
+ **避免敏感資料外洩** - 若要避免共享 AMI 時洩漏敏感資料，請詳讀 [建立共用 Linux AMI 的建議](building-shared-amis.md) 中的安全性考量，並遵照推薦的動作進行。
+ **使用** - 共享 AMI 後，使用者只能從 AMI 啟動執行個體。他們無法刪除、共用或修改它。不過，他們在使用您的 AMI 啟動了執行個體之後，就可以從其啟動的執行個體建立 AMI。
+ **自動棄用** - 在預設情況下，所有公用 AMI 的棄用日期都設定為自 AMI 建立日期起兩年。您可將棄用日期設定為早於兩年。若要取消棄用日期，或將棄用移至稍後日期，您必須僅[與特定 共用 AMI，使其 AWS 帳戶](sharingamis-explicit.md)成為私有。
+ **移除過時的 AMIs** – 在公有 AMI 到達其棄用日期後，如果六個月或更長時間沒有從 AMI 啟動新的執行個體， AWS 則 會移除公有共用屬性，讓過時的 AMIs 不會出現在公有 AMI 清單中。
+ **帳單** – 當其他 使用 AMI AWS 帳戶 啟動執行個體時，您不需要付費。使用 AMI 啟動執行個體的帳戶會根據它們啟動的執行個體計費。

## 與所有 AWS 帳戶共用 AMI （公開共用）
<a name="share-an-ami-publicly"></a>

將 AMI 公有化之後，可以在主控台的**社群 AMI** 中使用，您可以從 EC2 主控台左側導覽器中的 **AMI 目錄**存取，也可在使用主控台啟動執行個體時進行存取。請注意，AMI 公有化後要經過一段時間才會出現在 **Community AMI** (社群 AMI) 內。

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

**使 AMI 公有化**

1. 前往 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 開啟 Amazon EC2 主控台。

1. 在導覽窗格中，選擇 **AMI**。

1. 從清單中選取您的 AMI，然後選取 **Actions** (動作)、**Edit AMI permissions** (編輯 AMI 許可)。

1. 在 **AMI 可用性**下，選擇**公有**。

1. 選擇**儲存變更**。

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

每個 AMI 都有一個`launchPermission`屬性，可控制除了擁有者的 AWS 帳戶之外，還允許使用該 AMI 來啟動執行個體。透過修改 AMI 的 `launchPermission` 屬性，您可以將 AMI 設為公有 （授予所有 的啟動許可 AWS 帳戶)，或僅與您指定的 AWS 帳戶 共用。

您可在具有 AMI 啟動許可的帳戶清單中新增或移除帳戶 ID。若要將 AMI 設定為公有，請指定 `all` 群組。您可同時指定公有和明確啟動許可。

**使 AMI 公有化**

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) 命令，新增 `all` 群組至指定 AMI 的 `launchPermission` 清單。

   ```
   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 都有一個`launchPermission`屬性，可控制除了擁有者的 AWS 帳戶之外，還允許使用該 AMI 來啟動執行個體。透過修改 AMI 的 `launchPermission` 屬性，您可以將 AMI 設為公有 （授予所有 的啟動許可 AWS 帳戶)，或僅與您指定的 AWS 帳戶 共用。

您可在具有 AMI 啟動許可的帳戶清單中新增或移除帳戶 ID。若要將 AMI 設定為公有，請指定 `all` 群組。您可同時指定公有和明確啟動許可。

**使 AMI 公有化**

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) 命令，新增 `all` 群組至指定 AMI 的 `launchPermission` 清單。

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

------