

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

# Amazon EC2 AMI 生命週期
<a name="ami-lifecycle"></a>

Amazon Machine Image (AMI) 是一種映像，包含設定並啟動執行個體所需的軟體組態。在您啟動執行個體時，必須指定 AMI。您可使用 Amazon 提供的 AMI，亦可建立自己的 AMI。AMI 必須位於您要啟動執行個體 AWS 區域 的 中。

AMI 的生命週期包括建立、複製、棄用、停用，以及刪除 (取消註冊) AMI。

**建立 AMI。**Amazon 提供 AMI，您可用來啟動執行個體，也可根據您的需求量身建立自訂 AMI。如需建立自訂 AMI，可透過現有的 AMI 來啟動執行個體、自訂執行個體 (例如，安裝軟體及設定作業系統設定)，然後透過執行個體建立 AMI。所有執行個體自訂內容都會儲存至新 AMI，因此透過新 AMI 啟動的執行個體會包括這些自訂內容。

**可驗證的 AMI。**如需建立支援 EC2 執行個體驗證的 AMI，請參閱 [可驗證的 AMI](attestable-ami.md)。

**複製 AMI。**您只能在 AMI 所在的 中，使用 AWS 區域 AMI 啟動執行個體。若您需要在多個區域啟動包含相同組態的執行個體，則複製 AMI 到其他區域。

**棄用 AMI。**如需將 AMI 標記為已取代或過時，可設定立即或未來的棄用日期。AMI 清單會隱藏棄用的 AMI，但若使用者及服務知道 AMI ID，可繼續使用棄用的 AMI。

**停用 AMI。**如需暫時阻止 AMI 使用執行個體，可停用 AMI。停用 AMI 後，無法將其用於啟動新的執行個體。然而，若重新啟用 AMI，可再次將其用於啟動執行個體。請注意，停用 AMI 不影響已經從中啟動的現有執行個體。

**取消註冊 (刪除) AMI。**若不再需要 AMI，可取消註冊，以免將其用於啟動新的執行個體。若 AMI 與保留規則相符，則會將其移至資源回收筒，其保留期到期之前可將其還原，在此之後會將其永久刪除。若與保留規則不相符，則會立即將其永久刪除。請注意，當您取消註冊 AMI 時，不會影響到任何透過該 AMI 啟動的現有執行個體。

**自動化 AMI 生命週期。**您可以使用 Amazon Data Lifecycle Manager 來自動建立、保留、複製、取代和取消註冊 Amazon EBS 後端 AMI 及其備份快照。您亦可使用 EC2 Image Builder 來自動建立、管理、部署自訂 AMI。若要了解詳細資訊，請參閱 *Amazon EBS 使用者指南*和 [EC2 Image Builder 使用者指南](https://docs.aws.amazon.com/imagebuilder/latest/userguide/what-is-image-builder.html)中的[藉助 Amazon Data Lifecycle Manager 來自動化備份](https://docs.aws.amazon.com/ebs/latest/userguide/snapshot-lifecycle.html)

**Topics**
+ [建立 AMI](creating-an-ami-ebs.md)
+ [建立 Amazon S3 支援的 AMI](creating-an-ami-instance-store.md)
+ [使用 Windows Sysprep 建立 AMI](ami-create-win-sysprep.md)
+ [複製 AMI](CopyingAMIs.md)
+ [存放和還原 AMI](ami-store-restore.md)
+ [AMI 原始伺服器](ami-ancestry.md)
+ [AMI 用量](ec2-ami-usage.md)
+ [棄用 AMI](ami-deprecate.md)
+ [停用 AMI](disable-an-ami.md)
+ [取消註冊 AMI](deregister-ami.md)

# 建立 Amazon EBS 支援的 AMI
<a name="creating-an-ami-ebs"></a>

您可從 Amazon EC2 執行個體或從 Amazon EC2 執行個體的根磁碟區快照建立自己的 Amazon EBS 支援的 AMI。

若要從執行個體建立 Amazon EBS 支援的 AMI，請從使用現有 Amazon EBS 支援的 AMI 啟動執行個體開始。此 AMI 可以是您從 取得 AWS Marketplace、使用 [VM Import/Export](https://docs.aws.amazon.com/vm-import/latest/userguide/what-is-vmimport.html) 建立，或您可以存取的任何其他 AMI。在自訂執行個體以滿足您的特定需求後，請建立並註冊新 AMI。然後，您可使用新 AMI 並運用您的自訂內容來啟動全新執行個體。

**注意**  
如需建立支援 EC2 執行個體驗證的 AMI，請參閱 [可驗證的 AMI](attestable-ami.md)。

下列說明的程序同時適用於加密 Amazon Elastic Block Store (Amazon EBS) 磁碟區 (包含根磁碟區) 及未加密磁碟區後端 Amazon EC2 執行個體。

AMI 建立程序與 Amazon S3 支援的 AMI 不同。如需詳細資訊，請參閱[建立 Amazon S3 支援的 AMI](creating-an-ami-instance-store.md)。

**Topics**
+ [從執行個體建立 AMI 概覽](#process-creating-an-ami-ebs)
+ [從執行個體建立 AMI](#how-to-create-ebs-ami)
+ [從快照建立 AMI](#creating-launching-ami-from-snapshot)

## 從執行個體建立 AMI 概覽
<a name="process-creating-an-ami-ebs"></a>

下列圖表總結了從正在執行的 EC2 執行個體建立 Amazon EBS 後端 AMI 的過程：從現有 AMI 開始，啟動執行個體，自訂執行個體，根據其建立新的 AMI，以及最終啟動您的新 AMI 執行個體。該圖表中的數字與隨後描述中的數字相符。

![\[從執行個體建立 AMI 的工作流程\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/images/running-instance.png)


**1 – AMI \$11：從現有 AMI 開始**  
查找與要建立的 AMI 相似的現有 AMI。這可以是您從 取得的 AMI AWS Marketplace、您使用 [VM Import/Export](https://docs.aws.amazon.com/vm-import/latest/userguide/what-is-vmimport.html) 建立的 AMI，或是您可以存取的任何其他 AMI。您將根據需要自訂此 AMI。  
在圖表中,**EBS 根磁碟區快照 \$11** 指示 AMI 是 Amazon EBS 後端 AMI，並且有關根磁碟區的資訊存放在此快照中。

**2 – 從現有 AMI 啟動執行個體**  
設定 AMI 的方法是從您希望作為新 AMI 基礎的 AMI 啟動執行個體，然後自訂執行個體 (由圖表中的 **3** 指示)。然後，您將建立新的 AMI，其中包含自訂執行個體 (由圖表中的 **4** 指示)。

**3 – EC2 執行個體 \$11：自訂執行個體**  
連線到您的執行個體並根據需要自訂。您的新 AMI 將包含這些自訂執行個體。  
您可以在執行個體上執行下列任一個動作以自訂：  
+ 安裝軟體和應用程式
+ 複製資料
+ 刪除暫存檔案並重組您的硬碟，來減少啟動時間。
+ 連接額外的 EBS 磁碟區

**4 – 建立映像**  
從執行個體建立 AMI 時，Amazon EC2 會在建立 AMI 前關閉執行個體，確認執行個體上的一切在建立程序中都維持在停止且一致的狀態。若您相信您的執行個體處於一致且可用來建立 AMI 的狀態，您可以告知 Amazon EC2 不要關閉及重新開機執行個體。有些檔案系統 (例如 XFS) 可能會凍結及取消凍結活動，使其足夠安全，可用來建立映像，而無須重新開機執行個體。  
在 AMI 建立程序期間，Amazon EC2 會建立您執行個體根磁碟區及任何連接到您執行個體之其他 EBS 磁碟區的快照。您必須為快照支付費用，直到您[取消註冊 AMI](deregister-ami.md) 及刪除快照為止。若任何連接到執行個體的磁碟區經過加密，則新的 AMI 只能在支援 Amazon EBS 加密的執行個體上成功啟動。  
AMI 建立程序可能需要數分鐘的時間完成 (有些可能會花上 24 小時)，具體取決於磁碟區的大小。您可能會發現在建立您的 AMI 前先建立您磁碟區的快照會更有效率。透過此方式，建立 AMI 時便只需要建立小型的增量快照，且程序將能更快完成 (建立快照的總時間維持不變)。

**5 – AMI \$12：新 AMI**  
在程序完成後，您便會擁有新的 AMI 及從執行個體根磁碟區建立的快照 (**快照 \$12**) 。若除了根磁碟區之外，您還為您的執行個體新增執行個體儲存體磁碟區或 EBS 磁碟區，則新 AMI 的區塊型儲存設備映射便會包含這些磁碟區的資訊。  
Amazon EC2 會自動為您註冊 AMI。

**6 –從新的 AMI 啟動執行個體**  
您可以使用新 AMI 啟動執行個體。

**7 – EC2 執行個體 \$12：新執行個體**  
當您使用新的 AMI 啟動執行個體時，Amazon EC2 會使用快照，建立此執行個體的根磁碟區的新 EBS 磁碟區。如果您在自訂執行個體時為新增執行個體儲存體磁碟區或 EBS 磁碟區，則新 AMI 的區塊型儲存設備映射便會包含這些磁碟區的資訊，並且您從新的 AMI 啟動之執行個體的區塊型儲存設備映射也會自動包含這些磁碟區的資訊。新執行個體之區塊型儲存設備映射中指定的執行個體儲存體磁碟區都是全新的，不會包含您用來建立 AMI 之執行個體的執行個體儲存體磁碟區中的任何資料。EBS 磁碟區上的資料會持續。如需詳細資訊，請參閱[Amazon EC2 執行個體上磁碟區的區塊型儲存設備映射](block-device-mapping-concepts.md)。  
當您從 EBS 後端 AMI 建立新的執行個體時，建議您在將其用於生產環境前初始化其根磁碟區和任何額外的 EBS 儲存體。如需詳細資訊，請參閱「Amazon EBS 使用者指南」**中的[初始化 Amazon EBS 磁碟區](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-initialize.html)。

## 從執行個體建立 AMI
<a name="how-to-create-ebs-ami"></a>

如果您有現有執行個體，您可從此執行個體建立 AMI。

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

**若要建立 AMI**

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

1. 在導覽窗格中，選擇**執行個體**。

1. 選取要從中建立 AMI 的執行個體，然後依序選擇 **Actions** (動作)、**Image and templates** (映像和範本)，**Create image** (建立映像)。
**提示**  
若此選項已停用，表示您的執行個體並非 Amazon EBS 後端執行個體。

1. 在 **Create image** (建立映像) 頁面上，指定下列資訊：

   1. 對於 **Image name** (映像名稱)，輸入映像的唯一名稱，最多 127 個字元。

   1. 對於 **Image description** (映像描述)，輸入映像的選擇性描述，最多 255 個字元。

   1. 對於**重新啟動執行個體**，請保持選取核取方塊 (預設值)，或加以清除。
      + 若選取**重新啟動執行個體**，Amazon EC2 建立新 AMI 時，會重新啟動執行個體，以便在資料處於靜態時可以拍攝連接磁碟區的快照，以確保狀態一致。
      + 若清除**重新啟動執行個體**，Amazon EC2 建立新 AMI 時，不會關閉及重新啟動執行個體。
**警告**  
若您清除**重新啟動執行個體**，我們無法保證建立映像的檔案系統完整性。

   1. **Instance volumes** (執行個體磁碟區) – 您可以修改根磁碟區，以及新增額外的 Amazon EBS 及執行個體儲存體磁碟區，如下所示：

      1. 根磁碟區在第一列中定義。
         + 若要變更根磁碟區的大小，請在 **Size ( 大小)** 中輸入所需的值。
         + 若您選取 **Delete on termination (終止時刪除)**，則當您終止從此 AMI 建立的執行個體時，便會刪除 EBS 磁碟區。若您清除 **Delete on termination (終止時刪除)**，則當您終止執行個體時，便不會刪除 EBS 磁碟區。如需詳細資訊，請參閱[在執行個體終止時保留資料](preserving-volumes-on-termination.md)。

      1. 若要新增 EBS 磁碟區，請選擇 **Add volume (新增磁碟區)** (這會新增一個新的資料列)。針對**儲存體類型**，選擇 **EBS**，然後填入資料列中的欄位。當您從您新的 AMI 啟動執行個體時，額外的磁碟區會自動連接到執行個體。空白磁碟區必須進行格式化及掛載。以快照為基礎的磁碟區必須掛載。

      1. 若要新增執行個體儲存體磁碟區，請參閱[將執行個體儲存體磁碟區新增至 Amazon EC2 AMI](adding-instance-storage-ami.md)。當您從您新的 AMI 啟動執行個體時，額外的磁碟區會自動初始化並掛載。這些磁碟區不會包含做為您 AMI 基礎之執行中執行個體的執行個體儲存體磁碟區中的任何資料。

   1. **快照目的地** – 若執行個體磁碟區位於支援 EBS 本機快照的本機區域，則選擇建立 AMI 快照的位置：
      + **AWS 區域**：在磁碟區的本機區域父區域建立快照。
      + **AWS Local Zone**：在與磁碟區相同的 Local Zone 中建立快照。
**注意**  
此選項僅在支援 EBS 本機快照的本機區域顯示，且僅當執行個體在本機區域建立時才會顯示。若磁碟區位於區域，則不會顯示此選項，且自動在與磁碟區相同的區域建立快照。若要了解詳細資訊，請參閱 *Amazon EBS 使用者指南*中的[本機區域中的本機快照](https://docs.aws.amazon.com/ebs/latest/userguide/snapshots-localzones.html)。
**重要**  
執行個體磁碟區的全部快照必須位於同一位置。請確認現有快照的位置。若任何現有的快照與選取的目的地位於不同位置，AMI 建立會失敗。

   1. **Tags** (標籤) - 當您建立 AMI 時，可以使用相同的標籤來標記 AMI 和快照，或者可以使用不同的標籤來進行標記。
      + 若要使用*相同的* 標籤來標記 AMI 和快照，請選擇 **Tag image and snapshots together (共同標記映像和快照)**。相同的標籤即套用至 AMI 和每個建立的快照。
      + 若要使用*不同的* 標籤來標記 AMI 和快照，請選擇 **Tag image and snapshots separately (個別標記映像和快照)**。不同的標籤即套用至 AMI 和建立的快照。但是所有快照都會取得相同的標籤；您無法使用不同的標籤標記每個快照。

      若要新增標籤，請選擇 **Add tag (新增標籤)**，然後輸入標籤的鍵和值。針對每個標籤，重複執行上述動作。

   1. 當您準備好建立 AMI 時，請選擇 **Create image** (建立映像)。

1. 若要在建立您 AMI 的過程中檢視狀態：

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

   1. 將篩選條件設為 **Owned by me** (由我擁有)，然後在清單中尋找您的 AMI。

      一開始，狀態為 `pending`，但在幾分鐘後應該會變更為 `available`。

1. (選用) 若要檢視為新 AMI 建立的快照：

   1. 記下您在先前步驟中找到的 AMI ID。

   1. 在導覽窗格中，選擇 **Snapshots** (快照)。

   1. 將篩選條件設定為 **Owned by me** (由我擁有)，然後在 **Description** (說明) 欄中尋找含有新 AMI ID 的快照。

      當您從此 AMI 啟動執行個體時，Amazon EC2 會使用此快照建立執行個體的根磁碟區。

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

**若要建立 AMI**  
請使用 [create-image](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-image.html) 命令。

```
aws ec2 create-image \
    --instance-id i-1234567890abcdef0 \
    --name "my-web-server" \
    --description "My web server image" \
    --no-reboot
```

------
#### [ PowerShell ]

**若要建立 AMI**  
使用 [New-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2Image.html) cmdlet。

```
New-EC2Image `
    -InstanceId i-1234567890abcdef0 ` 
    -Name "my-web-server" `
    -Description "My web server image" `
    -NoReboot $true
```

------

## 從快照建立 AMI
<a name="creating-launching-ami-from-snapshot"></a>

若您有執行個體根磁碟區的快照，您可以從此快照建立 AMI。

**注意**  
在多數情況，適用於 Windows、Red Hat、SUSE 和 SQL Server 的 AMI 需要 AMI 具正確授權資訊。如需詳細資訊，請參閱[了解 AMI 帳單資訊](ami-billing-info.md)。當從快照建立 AMI 時，`RegisterImage` 操作會從快照的中繼資料衍生出正確帳單資訊，但這需要有適當的中繼資料。若要驗證是否已套用正確帳單資訊，請參閱新 AMI 的**平台詳細資料**欄位。如果欄位為空或與預期的作業系統程式碼不相符 (例如， Windows、Red Hat、SUSE 或 SQL)，則 AMI 建立失敗，您應該捨棄 AMI 並遵循 [從執行個體建立 AMI](#how-to-create-ebs-ami) 的說明。

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

**從快照建立 AMI**

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

1. 在導覽窗格中，選擇 **Snapshots (快照)**。

1. 選取要從中建立 AMI 的快照，然後選取 **Actions** (動作)、**Create image from snapshot** (從快照建立映像)。

1. 在**從快照建立映像**頁面上，指定下列資訊：

   1. 對於 **Image name** (映像名稱)，輸入映像的描述性名稱。

   1. 對於 **Description** (描述)，輸入映像的簡短描述。

   1. 對於 **Architecture** (架構)，選擇映像架構。選擇 **i386** (若為 32 位元)、**x86\$164** (若為 64 位元)、**arm64** (若為 64 位元 ARM)，或 **x86\$164** (若為 64 位元 macOS)。

   1. 針對**根裝置名稱**，輸入要用於根磁碟區的設備名稱。如需詳細資訊，請參閱[Amazon EC2 執行個體上磁碟區的裝置名稱](device_naming.md)。

   1. 對於 **Virtualization type** (虛擬化類型)，選擇從這個 AMI 啟動之執行個體要使用的虛擬化類型。如需詳細資訊，請參閱 [虛擬化類型](ComponentsAMIs.md#virtualization_types)。

   1. (僅適用於半虛擬化) 對於 **Kernel ID** (核心 ID)，選取映像的作業系統核心。如果您是使用執行個體的根磁碟區快照，請選取與原始執行個體相同的核心 ID。如果不確定，請使用預設核心。

   1. (僅適用於半虛擬化) 對於 **RAM disk ID** (RAM 磁碟 ID)，選取映像的 RAM 磁碟。如果選取特定核心，則可能需要選取具有可支援之驅動程式的特定 RAM 磁碟。

   1. 對於**開機模式**，請選擇映像的開機模式，或選擇**使用預設值**，以便在使用此 AMI 啟動執行個體時，以執行個體類型支援的開機模式開機。如需詳細資訊，請參閱[設定 Amazon EC2 AMI 的開機模式](set-ami-boot-mode.md)。

   1. (選用) 在**區塊型儲存設備映射**，自訂根磁碟區並新增其他資料磁碟區。

      針對每個磁碟區，您可以指定大小、類型、效能特性、終止時的刪除行為，以及加密狀態。若為根磁碟區，大小不可小於快照的大小。磁碟區類型的預設選項是「一般用途 SSD `gp3`」。

   1. (選用) 在**標籤**下，您可以新增一個或多個標籤至新 AMI。若要新增標籤，請選擇 **Add tag (新增標籤)**，然後輸入標籤的鍵和值。針對每個標籤，重複執行上述動作。

   1. 當您準備好建立 AMI 時，請選擇 **Create image** (建立映像)。

1. (僅限 Windows、Red Hat、SUSE 和 SQL Server) 若要驗證是否已套用正確帳單資訊，請檢查新 AMI 的**平台詳細資料**欄位。如果欄位為空或與預期的作業系統程式碼不相符 (例如，**Windows** 或 **Red Hat**)，則 AMI 建立失敗，您應該捨棄 AMI 並遵循 [從執行個體建立 AMI](#how-to-create-ebs-ami) 的說明。

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

**使用 從快照建立 AMI AWS CLI**  
使用 [register-image](https://docs.aws.amazon.com/cli/latest/reference/ec2/register-image.html) 命令。

```
aws ec2 register-image \
    --name my-image \
    --root-device-name /dev/xvda \
    --block-device-mappings DeviceName=/dev/xvda,Ebs={SnapshotId=snap-0db2cf683925d191f}
```

------
#### [ PowerShell ]

**如需使用 PowerShell 透過快照建立 AMI**  
使用 [Register-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Register-EC2Image.html) cmdlet。

```
$block = @{SnapshotId=snap-0db2cf683925d191f}
Register-EC2Image `
    -Name my-image `
    -RootDeviceName /dev/xvda `
    -BlockDeviceMapping @{DeviceName="/dev/xvda";Ebs=$block}
```

------

# 建立 Amazon S3 支援的 AMI
<a name="creating-an-ami-instance-store"></a>

您啟動執行個體時指定的 AMI，會判定根磁碟區的類型。

若要建立 Amazon S3 支援的 Linux AMI，請從您已從現有 Amazon S3 支援的 Linux AMI 啟動的執行個體開始。在您將執行個體自訂到符合您的需求後，建立磁碟區並註冊新的 AMI。您可以搭配這些自訂項目，使用這個新的 AMI 啟動新的執行個體。

您無法建立 Amazon S3 支援的 Windows AMI，因為 Windows AMI 不支援根磁碟區的執行個體儲存體。

**重要**  
只有下列執行個體類型支援執行個體儲存體磁碟區做為根磁碟區，且需要 Amazon S3 支援的 AMI：C1、C3、D2、I2、M1、M2、M3、R3 和 X1。

AMI 建立程序與 Amazon EBS 後端 AMI 不同。如需詳細資訊，請參閱[建立 Amazon EBS 支援的 AMI](creating-an-ami-ebs.md)。

**Topics**
+ [AMI 建立概觀](#process-creating-an-ami-instance-store)
+ [先決條件](#bundle-ami-prerequisites)
+ [從 Amazon Linux 執行個體建立 AMI](#amazon_linux_instructions)
+ [設定 Amazon EC2 AMI 工具](set-up-ami-tools.md)
+ [Amazon EC2 AMI 工具參考](ami-tools-commands.md)
+ [將 Amazon S3 支援的 AMI 轉換為 EBS 支援的 AMI](Using_ConvertingS3toEBS.md)

## AMI 建立概觀
<a name="process-creating-an-ami-instance-store"></a>

以下圖表顯示透過具有執行個體儲存體根磁碟區的執行個體建立 AMI 之程序的摘要。

![\[建立 Amazon S3 支援的 AMI\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/images/ami_create_instance_store.png)


首先，請先從與您要建立的 AMI 相似的 AMI 啟動執行個體。您可以連線到您的執行個體並自訂。設定好所要的執行個體後，您可以組合執行個體。完成綁定程序需要幾分鐘。程序完成後，您將擁有 bundle，其中包含映像工作資訊清單檔案 (`image.manifest.xml`) 和含有根磁碟區範本的檔案 (`image.part.`*xx*)。接著您上傳 bundle 至 Amazon S3 儲存貯體，然後登錄您的 AMI。

**注意**  
若要為您的 Amazon S3 支援的 Linux AMI 將物件上傳到 S3 儲存貯體，必須為儲存貯體啟用 ACL。否則，Amazon EC2 將無法在要上傳的物件上設定 ACL。如果您的目的地儲存貯體將儲存貯體擁有者強制設定用於 S3 物件擁有權，這將無法運作，因為 ACL 已停用。如需詳細資訊，請參閱[控制物件的擁有權並停用儲存貯體的 ACL](https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html)。

當您使用新的 AMI 啟動執行個體時，我們會使用上傳至 Amazon S3 的 bundle 建立執行個體的根磁碟區。Amazon S3 中 bundle 所用的儲存空間會使您的帳戶產生費用，直到刪除為止。如需詳細資訊，請參閱[取消註冊 Amazon EC2 AMI](deregister-ami.md)。

若除了根磁碟區之外，您還為您的執行個體新增執行個體儲存體磁碟區，則新 AMI 的區塊型儲存設備映射便會包含這些磁碟區的資訊，並且您從新的 AMI 啟動之執行個體的區塊型儲存設備映射也會自動包含這些磁碟區的資訊。如需詳細資訊，請參閱[Amazon EC2 執行個體上磁碟區的區塊型儲存設備映射](block-device-mapping-concepts.md)。

## 先決條件
<a name="bundle-ami-prerequisites"></a>

在您可以開始建立 AMI 之前，務必完成以下工作：
+ 安裝 AMI 工具。如需詳細資訊，請參閱[設定 Amazon EC2 AMI 工具](set-up-ami-tools.md)。
+ 安裝 AWS CLI。如需詳細資訊，請參閱 [AWS CLI入門](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html)。
+ 請確定您具有套件組合的 S3 儲存貯體，並確定您的儲存貯體已啟用 ACL。如需有關設定 ACL 的詳細資訊，請參閱[設定 ACL](https://docs.aws.amazon.com/AmazonS3/latest/userguide/managing-acls.html)。
  + 若要使用 建立 S3 儲存貯體 AWS 管理主控台，請在 https：//[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) 開啟 Amazon S3 主控台，然後選擇**建立儲存貯體**。
  + 若要使用 建立 S3 儲存貯體 AWS CLI，您可以使用 [mb](https://docs.aws.amazon.com/cli/latest/reference/s3/mb.html) 命令。如果安裝的 AMI 工具版本為 1.5.18 或更新版本，也可以使用 `ec2-upload-bundle` 命令建立 S3 儲存貯體。如需詳細資訊，請參閱[ec2-upload-bundle](ami-tools-commands.md#ami-upload-bundle)。
+ 確保綁定的檔案未在 S3 儲存貯體加密。如果您需要對 AMI 進行加密，則可以改用 EBS 支援的 AMI。如需詳細資訊，請參閱[對 EBS 後端 AMI 使用加密](AMIEncryption.md)。
+ 請確定您擁有 AWS 帳戶 ID。如需詳細資訊，請參閱《*AWS 帳戶管理參考指南*》中的[檢視 AWS 帳戶 識別符](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-identifiers.html)。
+ 請確定您擁有可使用 AWS CLI的憑證。如需詳細資訊，請參閱 *AWS Command Line Interface 使用者指南*中的 [AWS CLI的身分驗證與存取憑證](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-authentication.html)。
+ 請確定您擁有 X.509 憑證和對應的私有金鑰。
  + 如果需要建立 X.509 憑證，請參閱[管理簽署憑證](set-up-ami-tools.md#ami-tools-managing-certs)。X.509 憑證和私有金鑰用於加密和解密 AMI。
  + [中國 (北京)] 使用 `$EC2_AMITOOL_HOME/etc/ec2/amitools/cert-ec2-cn-north-1.pem` 憑證。
  + 【AWS GovCloud （美國西部）】 使用`$EC2_AMITOOL_HOME/etc/ec2/amitools/cert-ec2-gov.pem`憑證。
+ 連線到您的執行個體並加以自訂。例如，您可以安裝軟體和應用程式、複製資料、刪除暫存檔，以及修改 Linux 組態。

## 從 Amazon Linux 執行個體建立 AMI
<a name="amazon_linux_instructions"></a>

以下程序介紹如何從執行 Amazon Linux 1 的具有執行個體儲存體根磁碟區的執行個體建立 AMI。它們可能不適用於執行其他 Linux 發行版的執行個體。

**準備使用 AMI 工具 (僅適用於 HVM 執行個體)**

1. AMI 工具需要 GRUB 舊版才能正常開機。請使用下列命令安裝 GRUB：

   ```
   [ec2-user ~]$ sudo yum install -y grub
   ```

1. 使用下列命令安裝分割區管理套件：

   ```
   [ec2-user ~]$ sudo yum install -y gdisk kpartx parted
   ```

**如需從具有執行個體儲存體根磁碟區的 Amazon Linux 執行個體建立 AMI**

此程序假設您已滿足 [先決條件](#bundle-ami-prerequisites) 中的先決條件。

在下列命令中，將每個*使用者輸入預留位置*替換為您自己的資訊。

1. 將您的登入資料上傳到執行個體。這些登入資料是用來確定只有您與 Amazon EC2 可存取您的 AMI。

   1. 在執行個體上為登入資料建立如下的暫時目錄：

      ```
      [ec2-user ~]$ mkdir /tmp/cert
      ```

      如此您就能將登入資料從建立的映像中排除。

   1. 使用 [scp](linux-file-transfer-scp.md) 等安全複製工具從電腦上將 X.509 憑證和對應的私有金鑰複製到執行個體上的 `/tmp/cert` 目錄內。以下 `-i my-private-key.pem` 命令中的 **scp** 選項為用來透過 SSH 連接執行個體的私有金鑰，而非 X.509 私有金鑰。例如：

      ```
      you@your_computer:~ $ scp -i my-private-key.pem /path/to/pk-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem /path/to/cert-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem ec2-user@ec2-203-0-113-25.compute-1.amazonaws.com:/tmp/cert/
      pk-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem  100%  717     0.7KB/s   00:00
      cert-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem  100%  685     0.7KB/s   00:00
      ```

   或者，由於這些檔案為純文字檔案，因此您可用文字編輯器開啟憑證和金鑰，然後將內容複製到 `/tmp/cert` 中的新檔案內。

1. <a name="step_with_bundle_path_amazon_linux"></a>從執行個體內執行 [ec2-bundle-vol](ami-tools-commands.md#ami-bundle-vol) 命令，準備要上傳至 Amazon S3 的 bundle。務必指定 `-e` 選項，以排除憑證存放位置的目錄。根據預設，bundle 程序不包含可能帶有敏感資訊的檔案。這些檔案包含 `*.sw`、`*.swo`、`*.swp`、`*.pem`、`*.priv`、`*id_rsa*`、`*id_dsa*` `*.gpg`、`*.jks`、`*/.ssh/authorized_keys` 和 `*/.bash_history`。若要包含所有這些檔案，請使用 `--no-filter` 選項。若要包含這些檔案中的一部分，請使用 `--include` 選項。
**重要**  
根據預設，AMI 綁定程序會在代表根磁碟區的 `/tmp` 目錄內建立經過壓縮加密的檔案集合。如果 `/tmp` 內沒有足夠的可用磁碟空間可存放 bundle，您需要用 `-d /path/to/bundle/storage` 選項指定其他的 bundle 存放位置。部分執行個體會有暫時性儲存區掛載於 `/mnt` 或 `/media/ephemeral0` 以供您使用，或者您也可以建立、連接及掛載新的 Amazon EBS 磁碟區，以存放 bundle。如需詳細資訊，請參閱「Amazon EBS 使用者指南」**中的[建立 Amazon EBS 磁碟區](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-creating-volume.html)。

   1. 您必須以 root 執行 **ec2-bundle-vol** 命令。針對多數命令，您皆能用 **sudo** 來取得更高級的許可，但在此情況下您應執行 **sudo -E su** 以保持環境變數。

      ```
      [ec2-user ~]$ sudo -E su
      ```

      請注意，bash 提示現在將您識別為根使用者，且貨幣符號已換成雜湊標籤，表示您正在根 shell 下：

      ```
      [root ec2-user]#
      ```

   1. 若要建立 AMI bundle，請照下列所示執行 [ec2-bundle-vol](ami-tools-commands.md#ami-bundle-vol) 命令：

      ```
      [root ec2-user]# ec2-bundle-vol -k /tmp/cert/pk-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem -c /tmp/cert/cert-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem -u 123456789012 -r x86_64 -e /tmp/cert --partition gpt
      ```
**注意**  
對於中國 （北京） 和 AWS GovCloud （美國西部） 區域，請使用 `--ec2cert` 參數，並根據[先決條件](#bundle-ami-prerequisites)指定憑證。

      建立映像可能需要幾分鐘。完成此命令後，您的 `/tmp` (或非預設的) 目錄將包含 bundle (`image.manifest.xml`，加上多個 `image.part.`*xx* 檔案)。

   1. 退出根 shell。

      ```
      [root ec2-user]# exit
      ```

1. (選用) 若要新增更多執行個體儲存體磁碟區，請在 AMI 的 `image.manifest.xml` 檔案中編輯區塊型裝置映射。如需詳細資訊，請參閱[Amazon EC2 執行個體上磁碟區的區塊型儲存設備映射](block-device-mapping-concepts.md)。

   1. 為您的 `image.manifest.xml` 檔案建立備份。

      ```
      [ec2-user ~]$ sudo cp /tmp/image.manifest.xml /tmp/image.manifest.xml.bak
      ```

   1. 重新格式化 `image.manifest.xml` 檔案，以方便讀取和編輯。

      ```
      [ec2-user ~]$ sudo xmllint --format /tmp/image.manifest.xml.bak > /tmp/image.manifest.xml
      ```

   1. 使用文字編輯器編輯 `image.manifest.xml` 中的區塊型裝置映射。下列範例顯示 `ephemeral1` 執行個體存放磁碟區的新項目。
**注意**  
如需排除檔案清單，請參閱 [ec2-bundle-vol](ami-tools-commands.md#ami-bundle-vol)。

      ```
          <block_device_mapping>
            <mapping>
              <virtual>ami</virtual>
              <device>sda</device>
            </mapping>
            <mapping>
              <virtual>ephemeral0</virtual>
              <device>sdb</device>
            </mapping>
            <mapping>
              <virtual>ephemeral1</virtual>
              <device>sdc</device>
            </mapping>
            <mapping>
              <virtual>root</virtual>
              <device>/dev/sda1</device>
            </mapping>
          </block_device_mapping>
      ```

   1. 儲存 `image.manifest.xml` 檔案並結束文字編輯器。

1. 若要上傳 bundle 至 Amazon S3，請照下列所示執行 [ec2-upload-bundle](ami-tools-commands.md#ami-upload-bundle) 命令。

   ```
   [ec2-user ~]$ ec2-upload-bundle -b amzn-s3-demo-bucket/bundle_folder/bundle_name -m /tmp/image.manifest.xml -a your_access_key_id -s your_secret_access_key
   ```
**重要**  
若要在US East (N. Virginia) 以外的區域登錄 AMI，您必須使用 `--region` 選項指定兩個目標區域，和目標區域中已存在的儲存貯體路徑，或可在目標區域中建立的唯一儲存貯體路徑。

1. (選用) bundle 上傳至 Amazon S3 之後，您可使用下列 `/tmp` 命令將 bundle 從執行個體的 **rm** 目錄中移除：

   ```
   [ec2-user ~]$ sudo rm /tmp/image.manifest.xml /tmp/image.part.* /tmp/image
   ```
**重要**  
如果用 `-d /path/to/bundle/storage` 選項指定 [Step 2](#step_with_bundle_path_amazon_linux) 中的路徑，請使用該路徑，而非 `/tmp`。

1. 若要登錄 AMI，請照下列所示執行 [register-image](https://docs.aws.amazon.com/cli/latest/reference/ec2/register-image.html) 命令。

   ```
   [ec2-user ~]$ aws ec2 register-image --image-location amzn-s3-demo-bucket/bundle_folder/bundle_name/image.manifest.xml --name AMI_name --virtualization-type hvm
   ```
**重要**  
如果您先前已指定 [ec2-upload-bundle](ami-tools-commands.md#ami-upload-bundle) 命令的區域，請在此命令中再次指定該區域。

# 設定 Amazon EC2 AMI 工具
<a name="set-up-ami-tools"></a>

您可使用 AMI 工具來建立及管理 Amazon S3 支援的 Linux AMI。若要使用工具，您必須在 Linux 執行個體上安裝工具。AMI 工具在不支援 RPM 的 Linux 發行版本上會同時以 RPM 和 .zip 檔案的方式提供。

**使用 RPM 設定 AMI 工具**

1. 使用 Linux 發行版本的套件管理工具 (例如 yum) 來安裝 Ruby。例如：

   ```
   [ec2-user ~]$ sudo yum install -y ruby
   ```

1. 使用 wget 或 curl 等工具下載 RPM 檔案。例如：

   ```
   [ec2-user ~]$ wget https://s3.amazonaws.com/ec2-downloads/ec2-ami-tools.noarch.rpm
   ```

1. 使用下列命令驗證 RPM 檔案的簽章：

   ```
   [ec2-user ~]$ rpm -K ec2-ami-tools.noarch.rpm
   ```

   上述命令應該會顯示檔案的 SHA1 和 MD5 雜湊為 `OK.` 如果命令顯示雜湊為 `NOT OK`，請用下列命令檢視檔案的 Header SHA1 和 MD5 雜湊：

   ```
   [ec2-user ~]$ rpm -Kv ec2-ami-tools.noarch.rpm
   ```

   接著比較檔案的 Header SHA1 和 MD5 雜湊與下列已驗證的 AMI 工具雜湊，以確認檔案的真偽：
   + Header SHA1：a1f662d6f25f69871104e6a62187fa4df508f880
   + MD5：9faff05258064e2f7909b66142de6782

   如果檔案的 Header SHA1 和 MD5 雜湊符合已驗證的 AMI 工具雜湊，請繼續下一步。

1. 使用以下命令安裝 RPM：

   ```
   [ec2-user ~]$ sudo yum install ec2-ami-tools.noarch.rpm
   ```

1. 使用 [ec2-ami-tools-version](ami-tools-commands.md#ami-tools-version) 命令確認 AMI 工具的安裝。

   ```
   [ec2-user ~]$ ec2-ami-tools-version
   ```
**注意**  
如果出現「cannot load such file -- ec2/amitools/version (LoadError)」之類的載入錯誤，請完成下一個步驟，將 AMI 工具的安裝位置加入到 `RUBYLIB` 路徑。

1. (選用) 如果您在上一步驟中發生錯誤，請將 AMI 工具的安裝位置加入到 `RUBYLIB` 路徑。

   1. 執行下列命令來判斷要加入的路徑。

      ```
      [ec2-user ~]$ rpm -qil ec2-ami-tools | grep ec2/amitools/version
      /usr/lib/ruby/site_ruby/ec2/amitools/version.rb
      /usr/lib64/ruby/site_ruby/ec2/amitools/version.rb
      ```

      在上例中，先前載入錯誤所缺少的檔案位在 `/usr/lib/ruby/site_ruby` 和 `/usr/lib64/ruby/site_ruby`。

   1. 在先前的步驟中將位置加入到 `RUBYLIB` 路徑。

      ```
      [ec2-user ~]$ export RUBYLIB=$RUBYLIB:/usr/lib/ruby/site_ruby:/usr/lib64/ruby/site_ruby
      ```

   1. 使用 [ec2-ami-tools-version](ami-tools-commands.md#ami-tools-version) 命令確認 AMI 工具的安裝。

      ```
      [ec2-user ~]$ ec2-ami-tools-version
      ```

**使用 .zip 檔案設定 AMI 工具**

1. 使用 Linux 發行版本的套件管理工具 (例如 **apt-get**) 來安裝 Ruby 及解壓縮。例如：

   ```
   [ec2-user ~]$ sudo apt-get update -y && sudo apt-get install -y ruby unzip
   ```

1. 使用 wget 或 curl 等工具下載 .zip 檔案。例如：

   ```
   [ec2-user ~]$ wget https://s3.amazonaws.com/ec2-downloads/ec2-ami-tools.zip
   ```

1. 將檔案解壓縮到適當的安裝目錄，例如 `/usr/local/ec2`。

   ```
   [ec2-user ~]$ sudo mkdir -p /usr/local/ec2
   $ sudo unzip ec2-ami-tools.zip -d /usr/local/ec2
   ```

   請注意，.zip 檔案包含資料夾 ec2-ami-tools-*x*.*x*.*x*，其中 *x*.*x*.*x* 是工具的版本號碼 (例如，`ec2-ami-tools-1.5.7`)。

1. 將 `EC2_AMITOOL_HOME` 環境變數設定為工具的安裝目錄。例如：

   ```
   [ec2-user ~]$ export EC2_AMITOOL_HOME=/usr/local/ec2/ec2-ami-tools-x.x.x
   ```

1. 將工具加入到 `PATH` 環境變數。例如：

   ```
   [ec2-user ~]$ export PATH=$EC2_AMITOOL_HOME/bin:$PATH
   ```

1. 使用 [ec2-ami-tools-version](ami-tools-commands.md#ami-tools-version) 命令確認 AMI 工具的安裝。

   ```
   [ec2-user ~]$ ec2-ami-tools-version
   ```

## 管理簽署憑證
<a name="ami-tools-managing-certs"></a>

AMI 工具中的部分命令需要簽署憑證 (亦稱為 X.509 憑證)。您必須建立憑證，然後將其上傳至 AWS。例如，您可用 OpenSSL 等第三方工具來建立憑證。

**建立簽署憑證**

1. 安裝及設定 OpenSSL。

1. 使用 `openssl genrsa` 命令建立私有金鑰，並將輸出儲存至 `.pem` 檔案。建議新建一個 2048 或 4096 位元 RSA 金鑰。

   ```
   openssl genrsa 2048 > private-key.pem
   ```

1. 使用 `openssl req` 命令產生憑證。

   ```
   openssl req -new -x509 -nodes -sha256 -days 365 -key private-key.pem -outform PEM -out certificate.pem
   ```

若要將憑證上傳至其中 AWS，請使用 [upload-signing-certificate](https://docs.aws.amazon.com/cli/latest/reference/iam/upload-signing-certificate.html) 命令。

```
aws iam upload-signing-certificate --user-name user-name --certificate-body file://path/to/certificate.pem
```

若要列出使用者的憑證，請用 [list-signing-certificates](https://docs.aws.amazon.com/cli/latest/reference/iam/list-signing-certificates.html) 命令：

```
aws iam list-signing-certificates --user-name user-name
```

若要停用或重新啟用簽署憑證，請用 [update-signing-certificate](https://docs.aws.amazon.com/cli/latest/reference/iam/update-signing-certificate.html) 命令。下列命令可停用憑證：

```
aws iam update-signing-certificate --certificate-id OFHPLP4ZULTHYPMSYEX7O4BEXAMPLE --status Inactive --user-name user-name
```

若要刪除憑證，請用 [delete-signing-certificate](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-signing-certificate.html) 命令：

```
aws iam delete-signing-certificate --user-name user-name --certificate-id OFHPLP4ZULTHYPMSYEX7O4BEXAMPLE
```

# Amazon EC2 AMI 工具參考
<a name="ami-tools-commands"></a>

您可使用 AMI 工具命令來建立及管理 Amazon S3 支援的 Linux AMI。欲設定這些工具，請參閱[設定 Amazon EC2 AMI 工具](set-up-ami-tools.md)。

如需有關存取金鑰的詳細資訊，請參閱「IAM 使用者指南」**中的[管理 IAM 使用者的存取金鑰](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html)。

**Topics**
+ [ec2-ami-tools-version](#ami-tools-version)
+ [ec2-bundle-image](#ami-bundle-image)
+ [ec2-bundle-vol](#ami-bundle-vol)
+ [ec2-delete-bundle](#ami-delete-bundle)
+ [ec2-download-bundle](#ami-download-bundle)
+ [ec2-migrate-manifest](#ami-migrate-manifest)
+ [ec2-unbundle](#ami-unbundle)
+ [ec2-upload-bundle](#ami-upload-bundle)
+ [AMI 工具常用選項](#common-args-ami)

## ec2-ami-tools-version
<a name="ami-tools-version"></a>

### Description
<a name="ami-tools-version-description"></a>

描述 AMI 工具的版本。

### 語法
<a name="ami-tools-version-request"></a>

**ec2-ami-tools-version**

### Output
<a name="ami-tools-version-output"></a>

版本資訊。

### 範例
<a name="ami-tools-version-response"></a>

此範例命令會顯示您正使用之 AMI 工具的版本資訊。

```
[ec2-user ~]$ ec2-ami-tools-version
1.5.2 20071010
```

## ec2-bundle-image
<a name="ami-bundle-image"></a>

### Description
<a name="bundle-image-description"></a>

透過迴路檔案中建立的作業系統映像，來建立 Amazon S3 支援的 Linux AMI。

### 語法
<a name="bundle-image-request"></a>

****ec2-bundle-image** -c *path* -k *path* -u *account* -i *path* [-d *path*] [--ec2cert *path*] [-r *architecture*] [--productcodes *code1*,*code2*,...] [-B *mapping*] [-p *prefix*]** 

### 選項
<a name="bundle-image-parameters"></a>

`-c, --cert` *path*  
使用者以 PEM 編碼的 RSA 公有金鑰憑證檔案。  
必要：是

`-k, --privatekey` *path*  
指向以 PEM 編碼的 RSA 金鑰檔案路徑。您必須指定此金鑰來解開此 bundle，因此請將其置於安全位置。請注意，金鑰不需要註冊到您的 AWS 帳戶。  
必要：是

`-u, --user ` *account*  
使用者 AWS 的帳戶 ID，不含破折號。  
必要：是

`-i, --image` *path*  
欲綁定的映像路徑。  
必要：是

`-d, --destination` *path*  
欲建立 bundle 的目錄。  
預設：`/tmp`  
必要：否

`--ec2cert` *path*  
用於加密映像資訊清單的 Amazon EC2 X.509 公有金鑰憑證路徑。  
`us-gov-west-1` 和 `cn-north-1` 區域使用非預設的公有金鑰憑證，而該憑證的路徑必須以此選項加以指定。憑證的路徑視 AMI 工具的安裝方法而異。以 Amazon Linux 而言，此憑證位於 `/opt/aws/amitools/ec2/etc/ec2/amitools/`。若您從 RPM 或 ZIP 檔案將 AMI 工具安裝進 [設定 Amazon EC2 AMI 工具](set-up-ami-tools.md)，則憑證位於 `$EC2_AMITOOL_HOME/etc/ec2/amitools/`。  
必要：僅適用於 `us-gov-west-1` 和 `cn-north-1` 區域。

`-r, --arch` *architecture*  
映像架構。若您未於命令列提供架構，則會在綁定開始時提示您輸入架構。  
有效值：`i386` \$1 `x86_64`  
必要：否

`--productcodes` *code1,code2,...*  
欲在註冊時連接至映像的產品代碼，以逗號分隔。  
必要：否

`-B, --block-device-mapping` *mapping*  
定義區塊型儲存設備向此 AMI 的執行個體公開的方式 (若其執行個體類型支援所指定的設備)。  
指定以逗號分隔的索引鍵/值組清單，其中索引鍵為虛擬名稱，而值為相對應的設備名稱。虛擬名稱包括下列：  
+ `ami` - 執行個體所看見的根檔案系統設備
+ `root` - 核心所看見的根檔案系統設備
+ `swap` - 執行個體所看見的置換裝置
+ `ephemeralN` - 第 N 個執行個體存放磁碟區
必要：否

`-p, --prefix` *prefix*  
綁定的 AMI 檔案之檔案名稱字首。  
預設：映像檔案名稱。舉例來說，若映像路徑為 `/var/spool/my-image/version-2/debian.img`，則預設字首為 `debian.img`。  
必要：否

`--kernel` *kernel\$1id*  
已廢除. 使用 [register-image](https://docs.aws.amazon.com/cli/latest/reference/ec2/register-image.html) 來設定核心。  
必要：否

`--ramdisk` *ramdisk\$1id*  
已廢除. 使用 [register-image](https://docs.aws.amazon.com/cli/latest/reference/ec2/register-image.html) 來視需要設定 RAM 磁碟。  
必要：否

### Output
<a name="bundle-image-output"></a>

描述綁定程序階段與狀態的狀態訊息。

### 範例
<a name="bundle-image-response"></a>

此範例會從迴路檔案中建立的作業系統映像，建立綁定 AMI。

```
[ec2-user ~]$ ec2-bundle-image -k pk-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem -c cert-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem -u 111122223333 -i image.img -d bundled/ -r x86_64
Please specify a value for arch [i386]: 
Bundling image file...
Splitting bundled/image.gz.crypt...
Created image.part.00
Created image.part.01
Created image.part.02
Created image.part.03
Created image.part.04
Created image.part.05
Created image.part.06
Created image.part.07
Created image.part.08
Created image.part.09
Created image.part.10
Created image.part.11
Created image.part.12
Created image.part.13
Created image.part.14
Generating digests for each part...
Digests generated.
Creating bundle manifest...
ec2-bundle-image complete.
```

## ec2-bundle-vol
<a name="ami-bundle-vol"></a>

### Description
<a name="bundle-vol-description"></a>

針對執行個體的根磁碟區，透過壓縮、加密並簽署其複本，建立 Amazon S3 支援的 Linux AMI。

Amazon EC2 會嘗試從執行個體繼承產品代碼、核心設定、RAM 磁碟設定和區塊型儲存設備映射。

根據預設，bundle 程序不包含可能帶有敏感資訊的檔案。這些檔案包含 `*.sw`、`*.swo`、`*.swp`、`*.pem`、`*.priv`、`*id_rsa*`、`*id_dsa*` `*.gpg`、`*.jks`、`*/.ssh/authorized_keys` 和 `*/.bash_history`。若要包含所有這些檔案，請使用 `--no-filter` 選項。若要包含這些檔案中的一部分，請使用 `--include` 選項。

如需詳細資訊，請參閱 [建立 Amazon S3 支援的 AMI](creating-an-ami-instance-store.md)。

### 語法
<a name="bundle-vol-request"></a>

****ec2-bundle-vol** -c *path* -k *path* -u *account* [-d *path*] [--ec2cert *path*] [-r *architecture*] [--productcodes *code1*,*code2*,...] [-B *mapping*] [--all] [-e *directory1*,*directory2*,...] [-i *file1*,*file2*,...] [--no-filter] [-p *prefix*] [-s *size*] [--[no-]inherit] [-v *volume*] [-P *type*] [-S *script*] [--fstab *path*] [--generate-fstab] [--grub-config *path*]** 

### 選項
<a name="bundle-vol-parameters"></a>

`-c, --cert` *path*  
使用者以 PEM 編碼的 RSA 公有金鑰憑證檔案。  
必要：是

`-k, --privatekey ` *path*   
使用者以 PEM 編碼的 RSA 金鑰檔案路徑。  
必要：是

`-u, --user` *account*  
使用者 AWS 的帳戶 ID，不含破折號。  
必要：是

`-d, --destination` *destination*  
欲建立 bundle 的目錄。  
預設：`/tmp`  
必要：否

`--ec2cert` *path*  
用於加密映像資訊清單的 Amazon EC2 X.509 公有金鑰憑證路徑。  
`us-gov-west-1` 和 `cn-north-1` 區域使用非預設的公有金鑰憑證，而該憑證的路徑必須以此選項加以指定。憑證的路徑視 AMI 工具的安裝方法而異。以 Amazon Linux 而言，此憑證位於 `/opt/aws/amitools/ec2/etc/ec2/amitools/`。若您從 RPM 或 ZIP 檔案將 AMI 工具安裝進 [設定 Amazon EC2 AMI 工具](set-up-ami-tools.md)，則憑證位於 `$EC2_AMITOOL_HOME/etc/ec2/amitools/`。  
必要：僅適用於 `us-gov-west-1` 和 `cn-north-1` 區域。

`-r, --arch ` *architecture*  
映像架構。若您未於命令列提供架構，則會在綁定開始時提示您提供架構。  
有效值：`i386` \$1 `x86_64`  
必要：否

`--productcodes` *code1,code2,...*  
欲在註冊時連接至映像的產品代碼，以逗號分隔。  
必要：否

`-B, --block-device-mapping` *mapping*  
定義區塊型儲存設備向此 AMI 的執行個體公開的方式 (若其執行個體類型支援所指定的設備)。  
指定以逗號分隔的索引鍵/值組清單，其中索引鍵為虛擬名稱，而值為相對應的設備名稱。虛擬名稱包括下列：  
+ `ami` - 執行個體所看見的根檔案系統設備
+ `root` - 核心所看見的根檔案系統設備
+ `swap` - 執行個體所看見的置換裝置
+ `ephemeralN` - 第 N 個執行個體存放磁碟區
必要：否

`-a, --all`  
綁定所有目錄，包括遠端掛載之檔案系統上的目錄。  
必要：否

`-e, --exclude ` *directory1,directory2,...*  
欲從 bundle 操作排除的絕對目錄路徑和檔案清單。此參數會覆寫 `--all` 選項。指定排除項目時，隨參數列出的目錄和子目錄將不會與磁碟區一同綁定。  
必要：否

`-i, --include ` *file1,file2,...*  
欲納入 bundle 操作的檔案清單。因為指定的檔案可能具備敏感資訊，若未指定則會從 AMI 排除。  
必要：否

`--no-filter`  
若已指定，我們不會因其可能具備敏感資訊而將其從 AMI 排除。  
必要：否

`-p, --prefix ` *prefix*  
綁定的 AMI 檔案之檔案名稱字首。  
預設：`image`  
必要：否

`-s, --size` *size*  
欲建立的映像檔案大小，以 MB (1024 \$1 1024 位元) 表示。大小上限為 10240 MB。  
預設：10240  
必要：否

`--[no-]inherit`  
指示映像是否繼承執行個體的中繼資料 (預設為繼承)。若啟用 `--inherit` 但無法存取執行個體中繼資料，則綁定會失敗。  
必要：否

`-v, --volume ` *volume*  
欲從中建立 bundle 的掛載磁碟區絕對路徑。  
預設：根目錄 (/)  
必要：否

`-P, --partition` *type*  
指示磁碟映像是否使用分割區表格。若未指定分割區表格類型，預設為用於磁碟區父區塊型儲存設備的類型 (若適用)，否則預設為 `gpt`。  
有效值：`mbr` \$1 `gpt` \$1 `none`  
必要：否

`-S, --script` *script*  
欲在綁定前執行的自訂指令碼。此指令碼必須具備單一引數，亦即磁碟區的掛載點。  
必要：否

`--fstab` *path*  
欲綁定至映像的 fstab 路徑。若未指定，Amazon EC2 會綁定 /etc/fstab。  
必要：否

`--generate-fstab`  
使用 Amazon EC2 提供的 fstab 綁定磁碟區。  
必要：否

`--grub-config`  
欲綁定至映像的替代 grub 組態檔案路徑。根據預設，`ec2-bundle-vol` 預期所複製映像上應存在 `/boot/grub/menu.lst` 或 `/boot/grub/grub.conf`。此選項可讓您指定替代 grub 組態檔案路徑，並將其複製以覆蓋預設值 (如有)。  
必要：否

`--kernel` *kernel\$1id*  
已廢除. 使用 [register-image](https://docs.aws.amazon.com/cli/latest/reference/ec2/register-image.html) 來設定核心。  
必要：否

`--ramdisk`*ramdisk\$1id*  
已廢除. 使用 [register-image](https://docs.aws.amazon.com/cli/latest/reference/ec2/register-image.html) 來視需要設定 RAM 磁碟。  
必要：否

### Output
<a name="bundle-vol-output"></a>

描述綁定階段與狀態的狀態訊息。

### 範例
<a name="bundle-vol-response"></a>

此範例會壓縮、加密並簽署本機機器根檔案系統的快照，藉此建立綁定的 AMI。

```
[ec2-user ~]$ ec2-bundle-vol -d /mnt -k pk-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem -c cert-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem -u 111122223333 -r x86_64
  Copying / into the image file /mnt/image...
  Excluding:
       sys
       dev/shm
       proc
       dev/pts
       proc/sys/fs/binfmt_misc
       dev
       media
       mnt
       proc
       sys
       tmp/image
       mnt/img-mnt
  1+0 records in
  1+0 records out
  mke2fs 1.38 (30-Jun-2005)
  warning: 256 blocks unused.

  Splitting /mnt/image.gz.crypt...
  Created image.part.00
  Created image.part.01
  Created image.part.02
  Created image.part.03
  ...
  Created image.part.22
  Created image.part.23
  Generating digests for each part...
  Digests generated.
  Creating bundle manifest...
  Bundle Volume complete.
```

## ec2-delete-bundle
<a name="ami-delete-bundle"></a>

### Description
<a name="delete-bundle-description"></a>

從 Amazon S3 儲存空間刪除指定 bundle。刪除 bundle 之後，即無法從相對應 AMI 啟動執行個體。

### 語法
<a name="delete-bundle-request"></a>

****ec2-delete-bundle** -b *bucket* -a *access\$1key\$1id* -s *secret\$1access\$1key* [-t *token*] [--url *url*] [--region *region*] [--sigv *version*] [-m *path*] [-p *prefix*] [--clear] [--retry] [-y]** 

### 選項
<a name="delete-bundle-parameters"></a>

`-b, --bucket `*bucket*  
內含綁定 AMI 的 Amazon S3 儲存貯體名稱，其後為選用「/」以分隔路徑字首  
必要：是

`-a, --access-key` *access\$1key\$1id*  
 AWS 存取金鑰 ID。  
必要：是

`-s, --secret-key` *secret\$1access\$1key*  
 AWS 私密存取金鑰。  
必要：是

`-t, --delegation-token` *token*  
要傳遞給 AWS 請求的委派字符。如需詳細資訊，請參閱 *IAM 使用者指南*中的[臨時安全憑證](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html)。  
必要：僅適用您使用暫時安全登入資料時。  
預設：`AWS_DELEGATION_TOKEN` 環境變數的值 (如已設定)。

`--region`*region*  
於請求簽章內使用的區域。  
預設：`us-east-1`  
必要：若使用簽章第 4 版則為必要

`--sigv`*version*  
簽署請求時使用的簽章版本。  
有效值：`2` \$1 `4`  
預設：`4`  
必要：否

`-m, --manifest`*path*  
指向資訊清單檔案的路徑。  
必要：您必須指定 `--prefix` 或 `--manifest`。

`-p, --prefix` *prefix*  
綁定的 AMI 檔案名稱字首。請提供完整字首。舉例來說，若字首為 image.img，則使用 `-p image.img` 而非 `-p image`。  
必要：您必須指定 `--prefix` 或 `--manifest`。

`--clear`  
若 Amazon S3 儲存貯體在刪除指定 bundle 後為空白，則加以刪除。  
必要：否

`--retry`  
在所有 Amazon S3 錯誤後自動重試，每次操作至多五次。  
必要：否

`-y, --yes`  
自動假設所有提示的答案為 Yes (是)。  
必要：否

### Output
<a name="delete-bundle-output"></a>

Amazon EC2 顯示的狀態訊息，會指出刪除程序的階段與狀態。

### 範例
<a name="delete-bundle-response"></a>

此範例會自 Amazon S3 刪除一個 bundle。

```
[ec2-user ~]$ ec2-delete-bundle -b amzn-s3-demo-bucket -a your_access_key_id -s your_secret_access_key
Deleting files:
amzn-s3-demo-bucket/image.manifest.xml
amzn-s3-demo-bucket/image.part.00
amzn-s3-demo-bucket/image.part.01
amzn-s3-demo-bucket/image.part.02
amzn-s3-demo-bucket/image.part.03
amzn-s3-demo-bucket/image.part.04
amzn-s3-demo-bucket/image.part.05
amzn-s3-demo-bucket/image.part.06
Continue? [y/n]
y
Deleted amzn-s3-demo-bucket/image.manifest.xml
Deleted amzn-s3-demo-bucket/image.part.00
Deleted amzn-s3-demo-bucket/image.part.01
Deleted amzn-s3-demo-bucket/image.part.02
Deleted amzn-s3-demo-bucket/image.part.03
Deleted amzn-s3-demo-bucket/image.part.04
Deleted amzn-s3-demo-bucket/image.part.05
Deleted amzn-s3-demo-bucket/image.part.06
ec2-delete-bundle complete.
```

## ec2-download-bundle
<a name="ami-download-bundle"></a>

### Description
<a name="download-bundle-description"></a>

從 Amazon S3 儲存體下載指定的 Amazon S3 支援的 Linux AMI。

### 語法
<a name="download-bundle-request"></a>

****ec2-download-bundle** -b *bucket* -a *access\$1key\$1id* -s *secret\$1access\$1key* -k *path* [--url *url*] [--region *region*] [--sigv *version*] [-m *file*] [-p *prefix*] [-d *directory*] [--retry]** 

### 選項
<a name="download-bundle-parameters"></a>

`-b, --bucket` *bucket*  
bundle 所在的 Amazon S3 儲存貯體名稱，其後為選用「/」以分隔路徑字首。  
必要：是

`-a, --access-key` *access\$1key\$1id*  
 AWS 存取金鑰 ID。  
必要：是

`-s, --secret-key` *secret\$1access\$1key*  
 AWS 私密存取金鑰。  
必要：是

`-k, --privatekey` *path*  
用於解密資訊清單的私有金鑰。  
必要：是

`--url` *url*  
Amazon S3 服務的 URL。  
預設：`https://s3.amazonaws.com/`  
必要：否

`--region` *region*  
於請求簽章內使用的區域。  
預設：`us-east-1`  
必要：若使用簽章第 4 版則為必要

`--sigv` *version*  
簽署請求時使用的簽章版本。  
有效值：`2` \$1 `4`  
預設：`4`  
必要：否

`-m, --manifest` *file*  
不含路徑的資訊清單檔案名稱。建議您指定資訊清單 (`-m`) 或字首 (`-p`)。  
必要：否

`-p, --prefix ` *prefix*  
綁定的 AMI 檔案之檔案名稱字首。  
預設：`image`  
必要：否

`-d, --directory ` *directory*  
所下載 bundle 的儲存目錄。此目錄必須存在。  
預設：目前使用中的目錄。  
必要：否

 `--retry`   
在所有 Amazon S3 錯誤後自動重試，每次操作至多五次。  
必要：否

### Output
<a name="download-bundle-output"></a>

會顯示指出下載程序各個階段的狀態訊息。

### 範例
<a name="download-bundle-response"></a>

此範例會建立 `bundled` 目錄 (使用 Linux **mkdir** 命令) 並從 `amzn-s3-demo-bucket` Amazon S3 儲存貯體下載 bundle。

```
[ec2-user ~]$ mkdir bundled
[ec2-user ~]$ ec2-download-bundle -b amzn-s3-demo-bucket/bundles/bundle_name -m image.manifest.xml -a your_access_key_id -s your_secret_access_key -k pk-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem -d mybundle
Downloading manifest image.manifest.xml from amzn-s3-demo-bucket to mybundle/image.manifest.xml ...
Downloading part image.part.00 from amzn-s3-demo-bucket/bundles/bundle_name to mybundle/image.part.00 ...
Downloaded image.part.00 from amzn-s3-demo-bucket
Downloading part image.part.01 from amzn-s3-demo-bucket/bundles/bundle_name to mybundle/image.part.01 ...
Downloaded image.part.01 from amzn-s3-demo-bucket
Downloading part image.part.02 from amzn-s3-demo-bucket/bundles/bundle_name to mybundle/image.part.02 ...
Downloaded image.part.02 from amzn-s3-demo-bucket
Downloading part image.part.03 from amzn-s3-demo-bucket/bundles/bundle_name to mybundle/image.part.03 ...
Downloaded image.part.03 from amzn-s3-demo-bucket
Downloading part image.part.04 from amzn-s3-demo-bucket/bundles/bundle_name to mybundle/image.part.04 ...
Downloaded image.part.04 from amzn-s3-demo-bucket
Downloading part image.part.05 from amzn-s3-demo-bucket/bundles/bundle_name to mybundle/image.part.05 ...
Downloaded image.part.05 from amzn-s3-demo-bucket
Downloading part image.part.06 from amzn-s3-demo-bucket/bundles/bundle_name to mybundle/image.part.06 ...
Downloaded image.part.06 from amzn-s3-demo-bucket
```

## ec2-migrate-manifest
<a name="ami-migrate-manifest"></a>

### Description
<a name="migrate-manifest-description"></a>

修改 Amazon S3 支援的 Linux AMI (如其憑證、核心和 RAM 磁碟)，以支援不同區域。

### 語法
<a name="migrate-manifest-request"></a>

****ec2-migrate-manifest** -c *path* -k *path* -m *path* \$1(-a *access\$1key\$1id* -s *secret\$1access\$1key* --region *region*) \$1 (--no-mapping)\$1 [--ec2cert *ec2\$1cert\$1path*] [--kernel *kernel-id*] [--ramdisk *ramdisk\$1id*]** 

### 選項
<a name="migrate-manifest-parameters"></a>

`-c, --cert` *path*  
使用者以 PEM 編碼的 RSA 公有金鑰憑證檔案。  
必要：是

`-k, --privatekey` *path*  
使用者以 PEM 編碼的 RSA 金鑰檔案路徑。  
必要：是

`--manifest` *path*  
指向資訊清單檔案的路徑。  
必要：是

`-a, --access-key` *access\$1key\$1id*  
 AWS 存取金鑰 ID。  
必要：若使用自動映射則為必要。

`-s, --secret-key ` *secret\$1access\$1key*  
 AWS 私密存取金鑰。  
必要：若使用自動映射則為必要。

`--region` *region*  
欲在映射檔案內查詢的區域。  
必要：若使用自動映射則為必要。

`--no-mapping`  
停用核心和 RAM 磁碟的自動映射。  
 在遷移過程中，Amazon EC2 會將資訊清單檔案內的核心和 RAM 磁碟，取代為專為目的地區域設計的核心與 RAM 磁碟。除非提供 `--no-mapping` 參數，否則 `ec2-migrate-bundle` 可能會使用 `DescribeRegions` 和 `DescribeImages` 操作來執行自動映射。  
必要：若您未提供用於自動映射的 `-a`、`-s` 和 `--region` 選項則為必要。

`--ec2cert` *path*  
用於加密映像資訊清單的 Amazon EC2 X.509 公有金鑰憑證路徑。  
`us-gov-west-1` 和 `cn-north-1` 區域使用非預設的公有金鑰憑證，而該憑證的路徑必須以此選項加以指定。憑證的路徑視 AMI 工具的安裝方法而異。以 Amazon Linux 而言，此憑證位於 `/opt/aws/amitools/ec2/etc/ec2/amitools/`。若您從 ZIP 檔案將 AMI 工具安裝進 [設定 Amazon EC2 AMI 工具](set-up-ami-tools.md)，則憑證位於 `$EC2_AMITOOL_HOME/etc/ec2/amitools/`。  
必要：僅適用於 `us-gov-west-1` 和 `cn-north-1` 區域。

`--kernel` *kernel\$1id*  
欲選取的核心 ID。  
建議您使用 PV-GRUB，而不要使用核心與 RAM 磁碟。如需詳細資訊，請參閱「Amazon Linux 2 使用者指南」**中的[使用者提供的核心](https://docs.aws.amazon.com/linux/al2/ug/UserProvidedKernels.html)。
必要：否

`--ramdisk` *ramdisk\$1id*  
欲選取的 RAM 磁碟 ID。  
建議您使用 PV-GRUB，而不要使用核心與 RAM 磁碟。如需詳細資訊，請參閱「Amazon Linux 2 使用者指南」**中的[使用者提供的核心](https://docs.aws.amazon.com/linux/al2/ug/UserProvidedKernels.html)。
必要：否

### Output
<a name="migrate-manifest-output"></a>

描述綁定程序階段與狀態的狀態訊息。

### 範例
<a name="migrate-manifest-response"></a>

此範例會將 `my-ami.manifest.xml` 資訊清單中指定的 AMI，從美國複製至歐洲。

```
[ec2-user ~]$ ec2-migrate-manifest --manifest my-ami.manifest.xml --cert cert-HKZYKTAIG2ECMXYIBH3HXV4ZBZQ55CLO.pem --privatekey pk-HKZYKTAIG2ECMXYIBH3HXV4ZBZQ55CLO.pem --region eu-west-1 

Backing up manifest...
Successfully migrated my-ami.manifest.xml It is now suitable for use in eu-west-1.
```

## ec2-unbundle
<a name="ami-unbundle"></a>

### Description
<a name="unbundle-description"></a>

透過 Amazon S3 支援的 Linux AMI 重新建立 bundle。

### 語法
<a name="unbundle-request"></a>

****ec2-unbundle** -k *path* -m *path* [-s *source\$1directory*] [-d *destination\$1directory*]** 

### 選項
<a name="unbundle-parameters"></a>

`-k, --privatekey` *path*  
指向您以 PEM 編碼的 RSA 金鑰檔案路徑。  
必要：是

`-m, --manifest` *path*  
指向資訊清單檔案的路徑。  
必要：是

`-s, --source` *source\$1directory*  
內含 bundle 的目錄。  
預設：目前的目錄。  
必要：否

`-d, --destination` *destination\$1directory*  
欲從中解開 AMI 的目錄。此目的地目錄必須存在。  
預設：目前的目錄。  
必要：否

### 範例
<a name="unbundle-response"></a>

此 Linux 和 UNIX 範例會解開 `image.manifest.xml` 檔案內指定的 AMI。

```
[ec2-user ~]$ mkdir unbundled
$ ec2-unbundle -m mybundle/image.manifest.xml -k pk-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem -s mybundle -d unbundled
$ ls -l unbundled
total 1025008
-rw-r--r-- 1 root root 1048578048 Aug 25 23:46 image.img
```

### Output
<a name="unbundle-output"></a>

會顯示指出解開程序各個階段的狀態訊息。

## ec2-upload-bundle
<a name="ami-upload-bundle"></a>

### Description
<a name="upload-bundle-description"></a>

將 Amazon S3 支援的 Linux AMI 的套件組合上傳至 Amazon S3，並在所上傳的物件上設定適當的存取控制清單 (ACL)。如需詳細資訊，請參閱[建立 Amazon S3 支援的 AMI](creating-an-ami-instance-store.md)。

**注意**  
若要為您的 Amazon S3 支援的 Linux AMI 將物件上傳到 S3 儲存貯體，必須為儲存貯體啟用 ACL。否則，Amazon EC2 將無法在要上傳的物件上設定 ACL。如果您的目的地儲存貯體將儲存貯體擁有者強制設定用於 S3 物件擁有權，這將無法運作，因為 ACL 已停用。如需詳細資訊，請參閱[控制物件的擁有權並停用儲存貯體的 ACL](https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html)。

### 語法
<a name="upload-bundle-request"></a>

****ec2-upload-bundle** -b *bucket* -a *access\$1key\$1id* -s *secret\$1access\$1key* [-t *token*] -m *path* [--url *url*] [--region *region*] [--sigv *version*] [--acl *acl*] [-d *directory*] [--part *part*] [--retry] [--skipmanifest]** 

### 選項
<a name="upload-bundle-parameters"></a>

`-b, --bucket` *bucket*  
存放 bundle 的 Amazon S3 儲存貯體名稱，其後為選用「/」以分隔路徑字首。若該儲存貯體不存在，則會加以建立 (如該儲存貯體名稱為可用)。此外，如果儲存貯體不存在且 AMI 工具版本為 1.5.18 或更新版本，則此命令會設定儲存貯體的 ACL。  
必要：是

`-a, --access-key` *access\$1key\$1id*  
您的 AWS 存取金鑰 ID。  
必要：是

`-s, --secret-key` *secret\$1access\$1key*  
您的 AWS 私密存取金鑰。  
必要：是

`-t, --delegation-token` *token*  
要傳遞給 AWS 請求的委派字符。如需詳細資訊，請參閱 *IAM 使用者指南*中的[臨時安全憑證](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html)。  
必要：僅適用您使用暫時安全登入資料時。  
預設：`AWS_DELEGATION_TOKEN` 環境變數的值 (如已設定)。

`-m, --manifest` *path*  
指向資訊清單檔案的路徑。資訊清單檔案會於綁定程序期間建立，位於內含 bundle 的目錄。  
必要：是

`--url` *url*  
已廢除. 改用 `--region` 選項，除非您的儲存貯體被限制在 `EU` 位置 (而非 `eu-west-1`)。`--location` 旗標是確定該特定位置限制的唯一方法。  
Amazon S3 端點服務 URL。  
預設：`https://s3.amazonaws.com/`  
必要：否

`--region` *region*  
要在請求簽章內針對目的地 S3 儲存貯體使用的區域。  
+ 若該儲存貯體不存在且您未指定區域，此工具會建立不具位置限制的儲存貯體 (位於`us-east-1`)。
+ 若該儲存貯體不存在且您已指定區域，此工具會在該區域建立儲存貯體。
+ 若該儲存貯體存在但您未指定區域，此工具會使用該儲存貯體的位置。
+ 若該儲存貯體存在且您指定 `us-east-1` 為區域，此工具會使用該儲存貯體的實際位置，不會出現錯誤訊息，而且會覆寫所有現有的相符檔案。
+ 若該儲存貯體存在且您指定的區域 (`us-east-1` 之外) 與儲存貯體的實際位置不相符，此工具會退出並顯示錯誤。
若您的儲存貯體被限制在 `EU` 位置 (而非 `eu-west-1`)，請改用 `--location` 旗標。`--location` 旗標是確定該特定位置限制的唯一方法。  
預設：`us-east-1`  
必要：若使用簽章第 4 版則為必要

`--sigv` *version*  
簽署請求時使用的簽章版本。  
有效值：`2` \$1 `4`  
預設：`4`  
必要：否

`--acl` *acl*  
綁定映像的存取控制清單政策。  
有效值：`public-read` \$1 `aws-exec-read`  
預設：`aws-exec-read`  
必要：否

`-d, --directory` *directory*  
內含綁定 AMI 組件的目錄。  
預設：內含資訊清單檔案的目錄 (請參閱 `-m` 選項)。  
必要：否

`--part` *part*  
開始上傳指定組件及所有後續組件。例如 `--part 04`。  
必要：否

`--retry`  
在所有 Amazon S3 錯誤後自動重試，每次操作至多五次。  
必要：否

`--skipmanifest`  
不會上傳資訊清單。  
必要：否

`--location` *location*  
已廢除. 改用 `--region` 選項，除非您的儲存貯體被限制在 `EU` 位置 (而非 `eu-west-1`)。`--location` 旗標是確定該特定位置限制的唯一方法。  
目的地 Amazon S3儲存貯體的位置限制。若該儲存貯體存在且您指定的位置與儲存貯體的實際位置不相符，此工具會退出並顯示錯誤。若該儲存貯體存在但您未指定位置，此工具會使用該儲存貯體的位置。若該儲存貯體不存在且您已指定位置，此工具會在該位置建立儲存貯體。若該儲存貯體不存在且您未指定位置，此工具會建立不具位置限制的儲存貯體 (位於 `us-east-1`)。  
預設：若已指定 `--region`，則位置會設定為該指定區域。若未指定 `--region`，則位置預設為 `us-east-1`。  
必要：否

### Output
<a name="upload-bundle-output"></a>

Amazon EC2 顯示的狀態訊息，會指出上傳程序的階段與狀態。

### 範例
<a name="upload-bundle-response"></a>

此範例會上傳 `image.manifest.xml` 資訊清單指定的 bundle。

```
[ec2-user ~]$ ec2-upload-bundle -b amzn-s3-demo-bucket/bundles/bundle_name -m image.manifest.xml -a your_access_key_id -s your_secret_access_key
Creating bucket...
Uploading bundled image parts to the S3 bucket amzn-s3-demo-bucket ...
Uploaded image.part.00
Uploaded image.part.01
Uploaded image.part.02
Uploaded image.part.03
Uploaded image.part.04
Uploaded image.part.05
Uploaded image.part.06
Uploaded image.part.07
Uploaded image.part.08
Uploaded image.part.09
Uploaded image.part.10
Uploaded image.part.11
Uploaded image.part.12
Uploaded image.part.13
Uploaded image.part.14
Uploading manifest ...
Uploaded manifest.
Bundle upload completed.
```

## AMI 工具常用選項
<a name="common-args-ami"></a>

多數 AMI 工具接受下列選用參數。

`--help, -h`  
顯示協助訊息。

`--version`  
顯示版本及著作權聲明。

`--manual`  
顯示手動輸入。

`--batch`  
以批次模式執行，不使用互動式提示。

`--debug`  
顯示可用於故障排除問題的資訊。

# 將 Amazon S3 支援的 AMI 轉換為 EBS 支援的 AMI
<a name="Using_ConvertingS3toEBS"></a>

您可將擁有的 Amazon S3 支援的 Linux AMI 轉換為 Amazon EBS 支援的 Linux AMI。

**重要**  
您無法轉換不屬於您的 AMI。

**如需將 Amazon S3 支援的 AMI 轉換為 Amazon EBS 支援的 AMI**

1. 從 Amazon EBS 後端 AMI 啟動 Amazon Linux 執行個體。如需詳細資訊，請參閱[使用主控台中的啟動執行個體精靈，啟動 EC2 執行個體](ec2-launch-instance-wizard.md)。Amazon Linux 執行個體已預先安裝 AWS CLI 和 AMI 工具。

1. 請將您用來組合 Amazon S3 支援的 AMI 的 X.509 私有金鑰上傳至您的執行個體。此金鑰是用來確定只有您與 Amazon EC2 可存取您的 AMI。

   1. 在執行個體上為 X.509 私有金鑰建立如下的暫時目錄：

      ```
      [ec2-user ~]$ mkdir /tmp/cert
      ```

   1. 使用 [scp](linux-file-transfer-scp.md) 等安全複製工具從電腦上將 X.509 私有金鑰複製到執行個體上的 `/tmp/cert` 目錄內。以下命令中的 *my-private-key* 參數為用來透過 SSH 連接執行個體的私有金鑰。例如：

      ```
      you@your_computer:~ $ scp -i my-private-key.pem /path/to/pk-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem ec2-user@ec2-203-0-113-25.compute-1.amazonaws.com:/tmp/cert/
      pk-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem  100%  717     0.7KB/s   00:00
      ```

1. 設定環境變數以使用 AWS CLI。如需詳細資訊，請參閱[環境變數](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-envvars.html)。

   1. （建議） 為您的 AWS 存取金鑰、私密金鑰和工作階段字符設定環境變數。

      ```
      [ec2-user ~]$ export AWS_ACCESS_KEY_ID=your_access_key_id
      [ec2-user ~]$ export AWS_SECRET_ACCESS_KEY=your_secret_access_key
      [ec2-user ~]$ export AWS_SESSION_TOKEN=your_session_token
      ```

   1. 為您的 AWS 存取金鑰和私密金鑰設定環境變數。

      ```
      [ec2-user ~]$ export AWS_ACCESS_KEY_ID=your_access_key_id
      [ec2-user ~]$ export AWS_SECRET_ACCESS_KEY=your_secret_access_key
      ```

1. 為新的 AMI 準備 Amazon Elastic Block Store (Amazon EBS) 磁碟區。

   1. 使用 [create-volume](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-volume.html) 命令在與您執行個體相同的可用區域中建立空的 EBS 磁碟區。記下命令輸出中的磁碟區 ID。
**重要**  
 此 EBS 磁碟區的大小必須等於或大於原本的執行個體儲存體根磁碟區。

      ```
      aws ec2 create-volume \
          --size 10 \
          --region us-west-2 \
          --availability-zone us-west-2b
      ```

   1. 使用 [attach-volume](https://docs.aws.amazon.com/cli/latest/reference/ec2/attach-volume.html) 命令將磁碟區連接到您的 Amazon EBS 後端執行個體。

      ```
      aws ec2 attach-volume \
          --volume-id vol-01234567890abcdef \
          --instance-id i-1234567890abcdef0 \
          --region us-west-2
      ```

1. 建立您的 bundle 資料夾。

   ```
   [ec2-user ~]$ mkdir /tmp/bundle
   ```

1. 使用 `/tmp/bundle` 命令將執行個體後端 AMI 的 bundle 下載至 [ec2-download-bundle](ami-tools-commands.md#ami-download-bundle)。

   ```
   [ec2-user ~]$ ec2-download-bundle -b amzn-s3-demo-bucket/bundle_folder/bundle_name -m image.manifest.xml -a $AWS_ACCESS_KEY_ID -s $AWS_SECRET_ACCESS_KEY --privatekey /path/to/pk-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem -d /tmp/bundle
   ```

1. 使用 [ec2-unbundle](ami-tools-commands.md#ami-unbundle) 命令從 bundle 重新建構映像檔。

   1. 將目錄變更為 bundle 資料夾。

      ```
      [ec2-user ~]$ cd /tmp/bundle/
      ```

   1. 執行 [ec2-unbundle](ami-tools-commands.md#ami-unbundle) 命令。

      ```
      [ec2-user bundle]$ ec2-unbundle -m image.manifest.xml --privatekey /path/to/pk-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem
      ```

1. 從解開映像將檔案複製到新的 EBS 磁碟區。

   ```
   [ec2-user bundle]$ sudo dd if=/tmp/bundle/image of=/dev/sdb bs=1M
   ```

1. 探測磁碟區中是否有任何解開的新分割區。

   ```
   [ec2-user bundle]$ sudo partprobe /dev/sdb1
   ```

1. 列出區塊型儲存設備，以找出要掛載的設備名稱。

   ```
   [ec2-user bundle]$ lsblk
   NAME         MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
   /dev/sda    202:0    0   8G  0 disk
   └─/dev/sda1 202:1    0   8G  0 part /
   /dev/sdb    202:80   0  10G  0 disk
   └─/dev/sdb1 202:81   0  10G  0 part
   ```

   在此範例中，要掛載的分割區為 `/dev/sdb1`，但您的設備名稱可能不同。如果磁碟區尚未分割，要掛載的設備會類似 `/dev/sdb` (沒有設備分割區尾碼)。

1. 為新的 EBS 磁碟區建立掛載點，然後掛載磁碟區。

   ```
   [ec2-user bundle]$ sudo mkdir /mnt/ebs
   [ec2-user bundle]$ sudo mount /dev/sdb1 /mnt/ebs
   ```

1. 用您偏好的文字編輯器 (例如 `/etc/fstab` 或 **vim**) 在 EBS 磁碟區上開啟 **nano** 檔案，並移除執行個體 (暫時性) 存放磁碟區的任何項目。EBS 磁碟區掛載於 `/mnt/ebs`，因此 `fstab` 檔案位於 `/mnt/ebs/etc/fstab`。

   ```
   [ec2-user bundle]$ sudo nano /mnt/ebs/etc/fstab
   #
   LABEL=/     /           ext4    defaults,noatime  1   1
   tmpfs       /dev/shm    tmpfs   defaults        0   0
   devpts      /dev/pts    devpts  gid=5,mode=620  0   0
   sysfs       /sys        sysfs   defaults        0   0
   proc        /proc       proc    defaults        0   0
   /dev/sdb        /media/ephemeral0       auto    defaults,comment=cloudconfig    0       2
   ```

   在此範例中，應該移除最後一行。

1. 卸載磁碟區，並從執行個體分離。

   ```
   [ec2-user bundle]$ sudo umount /mnt/ebs
   [ec2-user bundle]$ aws ec2 detach-volume --volume-id vol-01234567890abcdef --region us-west-2
   ```

1. 從新的 EBS 磁碟區建立 AMI，如下所示。

   1. 建立新 EBS 磁碟區的快照。

      ```
      [ec2-user bundle]$ aws ec2 create-snapshot --region us-west-2 --description "your_snapshot_description" --volume-id vol-01234567890abcdef
      ```

   1. 檢查快照是否完整。

      ```
      [ec2-user bundle]$ aws ec2 describe-snapshots --region us-west-2 --snapshot-id snap-0abcdef1234567890
      ```

   1. 使用 **describe-images** 命令找出原始 AMI 的處理器架構、虛擬化類型與核心映像 (`aki`)。在此步驟中，您需要擁有原始 Amazon S3 支援的 AMI 的 AMI ID。

      ```
      [ec2-user bundle]$ aws ec2 describe-images --region us-west-2 --image-id ami-0abcdef1234567890 --output text
      IMAGES	x86_64	amazon/amzn-ami-pv-2013.09.2.x86_64-s3	ami-8ef297be	amazon	available	public	machine	aki-fc8f11cc	instance-store	paravirtual	xen
      ```

      在此範例中，其架構為 `x86_64`，核心映像 ID 為 `aki-fc8f11cc`。請將這些數值使用在下列步驟。如果上述命令的輸出也列出 `ari` ID，請將其記下。

   1. 使用新 EBS 磁碟區的快照 ID 和先前步驟中的數值登錄您的新 AMI。如果先前的命令輸出列出 `ari` ID，請用 `--ramdisk-id ari_id` 將其加入到下列命令。

      ```
      [ec2-user bundle]$ aws ec2 register-image --region us-west-2 --name your_new_ami_name --block-device-mappings DeviceName=device-name,Ebs={SnapshotId=snap-0abcdef1234567890} --virtualization-type paravirtual --architecture x86_64 --kernel-id aki-fc8f11cc --root-device-name device-name
      ```

1. (選用) 確認可以從新 AMI 啟動執行個體後，您便能刪除為此程序建立的 EBS 磁碟區。

   ```
   aws ec2 delete-volume --volume-id vol-01234567890abcdef
   ```

# 使用 Windows Sysprep 建立 Amazon EC2 AMI
<a name="ami-create-win-sysprep"></a>

Microsoft 系統準備 (Windows Sysprep) 工具建立作業系統的通用版本，並在擷取新影像之前刪除特定於執行個體的系統組態。

我們建議您使用 [EC2 Image Builder](https://docs.aws.amazon.com/imagebuilder/latest/userguide/what-is-image-builder.html) 來自動建立、管理和部署自訂、安全且最新的「最佳」伺服器映像，這些映像會預先安裝並預先設定為軟體和設定。

您也可以使用 Windows Sysprep 透過 Windows 啟動代理程式來建立標準化 AMI：EC2Launch v2、EC2Launch 和 EC2Config。

**重要**  
請不要使用 Windows Sysprep 來建立執行個體備份。Windows Sysprep 會移除系統特定資訊；移除此資訊可能會在執行個體備份時發生意料之外的結果。

若要疑難排解 Windows Sysprep，請參閱 [針對 Amazon EC2 Windows 執行個體的 Sysprep 問題進行疑難排解](sysprep-troubleshoot.md)。

**Topics**
+ [Windows Sysprep 階段](#sysprep-phases)
+ [開始之前](#sysprep-begin)
+ [使用 Windows Sysprep 搭配 EC2Launch v2](sysprep-using-ec2launchv2.md)
+ [使用 Windows Sysprep 搭配 EC2Launch](ec2launch-sysprep.md)
+ [使用 Windows Sysprep 搭配 EC2Config](sysprep-using.md)

## Windows Sysprep 階段
<a name="sysprep-phases"></a>

Windows Sysprep 會執行下列階段：
+ **一般化**：此 Sysprep 工具會移除映像特定資訊和組態。例如，Windows Sysprep 會移除安全識別符 (SID)、電腦名稱、事件日誌和特定驅動程式等。完成本階段之後，作業系統 (OS) 即準備好建立 AMI。
**注意**  
當您使用 Windows 啟動代理程式執行 Windows Sysprep 時，系統會防止驅動程式被移除，因為 `PersistAllDeviceInstalls` 設定預設為 true。
+ **特製化**：隨插即用會掃描電腦，並為任何偵測到的裝置安裝驅動程式。此 Sysprep 工具會產生電腦名稱和 SID 等 OS 要求。或者，您可以在此階段執行命令。
+ **立即可用體驗 (OOBE)**：系統執行縮簡版的 Windows 安裝程式，並要求您輸入系統語言、時區和已註冊的組織這類資訊。當您使用 Windows 啟動代理程式執行 Windows Sysprep 時，回應檔案會自動執行此階段。

## 開始之前
<a name="sysprep-begin"></a>
+ 執行 Windows Sysprep 之前，除了用於執行 Windows Sysprep 的單一管理員帳戶外，建議您移除其他所有本機使用者帳戶和所有帳戶描述檔。如果您以其他帳戶和描述檔執行 Windows Sysprep，可能會發生非預期的行為，包括遺失描述檔資料或無法完成 Windows Sysprep。
+ 了解有關 [Sysprep 概觀](https://learn.microsoft.com/en-us/windows-hardware/manufacture/desktop/sysprep--system-preparation--overview)的更多資訊。
+ 了解 [Sysprep 支援的伺服器角色](https://learn.microsoft.com/en-us/windows-hardware/manufacture/desktop/sysprep-support-for-server-roles)。

# 使用 Windows Sysprep 搭配 EC2Launch v2 來建立 AMI
<a name="sysprep-using-ec2launchv2"></a>

若透過已安裝 EC2Launch v2 代理程式的執行個體建立映像，EC2Launch v2 會在映像就緒時執行特定任務。這包括搭配使用 Windows Sysprep。如需詳細資訊，請參閱[Windows Sysprep 階段](ami-create-win-sysprep.md#sysprep-phases)。

**Topics**
+ [Windows Sysprep 操作](#sysprep-actions-ec2launchv2)
+ [Sysprep 後續階段](#sysprep-post-ec2launchv2)
+ [使用 EC2Launch v2 執行 Windows Sysprep](#sysprep-gui-procedure-ec2launchv2)

## Windows Sysprep 操作
<a name="sysprep-actions-ec2launchv2"></a>

Windows Sysprep 和 EC2Launch v2 會在準備映像時執行下列動作。

1. 當您在 **EC2Launch settings (EC2Launch 設定)** 對話方塊中選擇 **Shutdown with Sysprep (使用 Sysprep 關機)** 時，系統會執行 `ec2launch sysprep` 命令。

1. EC2Launch v2 透過讀取位於 `unattend.xml` 的登錄值來編輯 `HKEY_USERS\.DEFAULT\Control Panel\International\LocaleName` 檔案的內容。檔案位於以下目錄：`C:\ProgramData\Amazon\EC2Launch\sysprep`。

1. 系統會執行 `BeforeSysprep.cmd`。此命令會建立一個登錄機碼，如下所示：

   **reg add "HKEY\$1LOCAL\$1MACHINE\$1SYSTEM\$1CurrentControlSet\$1Control\$1Terminal Server" /v fDenyTSConnections /t REG\$1DWORD /d 1 /f**

   除非重新啟用 RDP 連接，否則此登錄機碼會停用連線。停用 RDP 連線是必要的安全措施，因為在執行 Windows Sysprep 之後的第一個開機工作階段期間，RDP 會有一小段時間允許連接，而且管理員密碼會空白。

1. EC2Launch v2 服務會執行下列命令來呼叫 Windows Sysprep：

   **sysprep.exe /oobe /generalize /shutdown /unattend: "C:\$1ProgramData\$1Amazon\$1EC2Launch\$1sysprep\$1unattend.xml"**

### 一般化階段
<a name="sysprep-generalize-ec2launchv2"></a>
+ EC2Launch v2 會移除映像特定資訊和組態 (例如電腦名稱和 SID)。如果執行個體是網域成員，即會從網域中移除。`unattend.xml` 回應檔案包括下列可影響此階段的設定：
  + **PersistAllDeviceInstalls**：此設定可防止 Windows 安裝程式移除和重新設定裝置，以加速映像準備程序，因為 Amazon AMI 需要執行特定驅動程式，而且重新偵測這些驅動程式需要一些時間。
  + **DoNotCleanUpNonPresentDevices**：此設定會保留目前不存在之裝置的隨插即用資訊。
+ Windows Sysprep 會在準備建立 AMI 時關閉 OS。系統會啟動新的執行個體，或啟動原始執行個體。

### 特製化階段
<a name="sysprep-specialize-ec2launchv2"></a>

系統會產生電腦名稱和 SID 這類 OS 特定要求。系統也會根據您在 `unattend.xml` 回應檔案中指定的組態，來執行下列動作。
+ **CopyProfile**：Windows Sysprep 可以設定為刪除所有使用者描述檔 (包括內建管理員描述檔)。此設定會保留內建管理員帳戶，因此您對該帳戶進行的任何自訂都會帶到新的映像。預設值為 `True`。

  **CopyProfile** 會以現有的本機管理員描述檔取代預設描述檔。執行 Windows Sysprep 之後登入的所有帳戶，將於第一次登入時收到該描述檔的複本及其內容。

  如果您沒有特定的使用者描述檔自訂要帶到新映像，請將此設定變更為 `False`。Windows Sysprep 將移除所有使用者描述檔 (這樣可節省時間和磁碟空間)。
+ **TimeZone**：時區會預設為國際標準時間 (UTC)。
+ **順序為 1 的同步命令**：系統會執行下列命令，以啟用管理員帳戶並指定密碼要求。

  ```
  net user Administrator /ACTIVE:YES /LOGONPASSWORDCHG:NO /EXPIRES:NEVER /PASSWORDREQ:YES
  ```
+ **順序為 2 的同步命令**：系統會將管理員密碼變碼。此安全措施的用途在於您未設定 `setAdminAccount` 任務時，可防止在 Windows Sysprep 完成之後存取執行個體。

  系統從本機啟動代理程式目錄執行以下命令 (`C:\Program Files\Amazon\EC2Launch\`)。

  ```
  EC2Launch.exe internal randomize-password --username Administrator
  ```
+ 若要啟用遠端桌面連接，系統將終端伺服器 `fDenyTSConnections` 登錄機碼設定為 false。

### OOBE 階段
<a name="sysprep-oobe-ec2launchv2"></a>

1. 系統使用 EC2Launch v2 回應檔案指定下列組態：
   + `<InputLocale>en-US</InputLocale>`
   + `<SystemLocale>en-US</SystemLocale>`
   + `<UILanguage>en-US</UILanguage>`
   + `<UserLocale>en-US</UserLocale>`
   + `<HideEULAPage>true</HideEULAPage>`
   + `<HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE>`
   + `<ProtectYourPC>3</ProtectYourPC>`
   + `<BluetoothTaskbarIconEnabled>false</BluetoothTaskbarIconEnabled>`
   + `<TimeZone>UTC</TimeZone>`
   + `<RegisteredOrganization>Amazon.com</RegisteredOrganization>`
   + `<RegisteredOwner>EC2</RegisteredOwner>`
**注意**  
在一般化和特製化階段期間，EC2Launch v2 會監控 OS 的狀態。如果 EC2Launch v2 偵測到 OS 處於 Sysprep 階段，即會將下列訊息發佈至系統日誌：  
Windows is being configured. SysprepState=IMAGE\$1STATE\$1UNDEPLOYABLE

1. 系統會執行 EC2Launch v2。

## Sysprep 後續階段
<a name="sysprep-post-ec2launchv2"></a>

Windows Sysprep 完成之後，EC2Launch v2 會將下列訊息傳送至主控台輸出：

```
Windows sysprep configuration complete.
```

EC2Launch v2 接著會執行下列動作：

1. 讀取 `agent-config.yml` 檔案的內容並執行已設定的任務。

1. 執行 `preReady` 階段中的所有任務。

1. 完成後，會將 `Windows is ready` 訊息傳送至執行個體系統日誌。

1. 執行 `PostReady` 階段中的所有任務。

如需 EC2Launch v2 的詳細資訊，請參閱[在 EC2 Windows 執行個體啟動期間，使用 EC2Launch v2 代理程式執行任務](ec2launch-v2.md)。

## 使用 EC2Launch v2 執行 Windows Sysprep
<a name="sysprep-gui-procedure-ec2launchv2"></a>

請使用下列程序，使用 Windows Sysprep 搭配 EC2Launch v2 來建立標準化 AMI。

1. 在 Amazon EC2 主控台中，找出您要複製的 AMI。

1. 啟動和連線至 Windows 執行個體。

1. 自訂設定

   1. 在 Windows 的**開始**功能表中，搜尋並選擇 **Amazon EC2Launch 設定**。如需有關 Amazon **EC2Launch 設定**對話方塊中選項和設定的詳細資訊，請參閱[設定 Windows 執行個體的 EC2Launch v2 設定](ec2launch-v2-settings.md)。

   1. 若已做出變更，選擇**儲存**後再關閉。

1. 選擇**透過 Sysprep 關閉**或**不透過 Sysprep 關閉**。

系統會要求您確認要執行 Windows Sysprep 並將執行個體關機，請按一下**是**。EC2Launch v2 執行 Windows Sysprep。接著，系統會將您登出執行個體，然後執行個體會關機。如果您檢查 Amazon EC2 主控台中的 **Instances (執行個體)** 頁面，執行個體狀態會從 `Running` 變更為 `Stopping`，再變更為 `Stopped`。這時便能放心地從此執行個體建立 AMI。

您可以從命令列使用下列命令手動調用 Windows Sysprep 工具：

```
"%programfiles%\amazon\ec2launch\ec2launch.exe" sysprep --shutdown=true
```

# 使用 Windows Sysprep 搭配 EC2Launch 建立 AMI
<a name="ec2launch-sysprep"></a>

若透過已安裝 EC2Launch 代理程式的執行個體建立映像，EC2Launch 會在映像就緒時執行特定任務。這包括搭配使用 Windows Sysprep。如需詳細資訊，請參閱[Windows Sysprep 階段](ami-create-win-sysprep.md#sysprep-phases)。

EC2Launch 會為 Windows Sysprep 提供預設回應檔案和批次檔案，這可自動化和保護您 AMI 上的映像準備程序。您可選擇性修改這些檔案。這些檔案預設位於下列目錄：`C:\ProgramData\Amazon\EC2-Windows\Launch\Sysprep`。

**重要**  
請不要使用 Windows Sysprep 來建立執行個體備份。Windows Sysprep 會移除系統專屬資訊。如果您移除此資訊，執行個體備份可能產生意外結果。

**Topics**
+ [Windows Sysprep 的 EC2Launch 回應和批次檔案](#ec2launch-sysprep-answer-batch)
+ [使用 EC2Launch 執行 Windows Sysprep](#ec2launch-sysprep-running)
+ [啟動自訂 AMI 時更新 Server 2016 和更新版本的中繼資料/KMS 路由](#update-metadata-KMS)

## Windows Sysprep 的 EC2Launch 回應和批次檔案
<a name="ec2launch-sysprep-answer-batch"></a>

Windows Sysprep 的 EC2Launch 回應檔案和批次檔案包含下列內容：

`Unattend.xml`  
這是預設回應檔案。如果您執行 `SysprepInstance.ps1`，或在使用者介面中選擇 **ShutdownWithSysprep**，系統會從這個檔案讀取設定。

`BeforeSysprep.cmd`  
自訂此批次檔案可在 EC2Launch 執行 Windows Sysprep 前執行命令。

`SysprepSpecialize.cmd`  
自訂此批次檔案可在 Windows Sysprep 特製化階段期間執行命令。

## 使用 EC2Launch 執行 Windows Sysprep
<a name="ec2launch-sysprep-running"></a>

完整安裝 Windows Server 2016 和更新版本 (包含桌面體驗) 後，您可以使用 EC2Launch 手動執行 Windows Sysprep，或使用 **EC2 Launch 設定**應用程式執行 Sysprep。

**使用 EC2Launch 設定應用程式執行 Windows Sysprep**

1. 在 Amazon EC2 主控台中，尋找或建立 Windows Server 2016 或更新版本 AMI。

1. 從 AMI 啟動 Windows 執行個體。

1. 連線到您的 Windows 執行個體並加以自訂。

1. 搜尋並執行 **EC2LaunchSettings** 應用程式。根據預設，其位於下列目錄：`C:\ProgramData\Amazon\EC2-Windows\Launch\Settings`。  
![\[EC2 Launch Settings application (EC2 Launch 設定應用程式)\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/images/ec2launch-sysprep.png)

1. 視需要選取或清除選項。這些設定存放在 `LaunchConfig.json` 檔案中。

1. 針對 **Administrator Password (管理員密碼)**，請執行下列其中一項作業：
   + 選擇 **Random (隨機)**。EC2Launch 會產生密碼並以使用者金鑰將其加密。系統會在執行個體啟動後停用此設定，以便執行個體重新開機或停止再啟動時，能持續使用這個密碼。
   + 選擇 **Specify (指定)** 並輸入符合系統要求的密碼。系統會將該密碼以純文字存放於 `LaunchConfig.json`，並在 Windows Sysprep 設定管理員密碼後予以刪除。如果您立即關機，即會立即設定密碼。EC2Launch 會以使用者金鑰加密該密碼。
   + 選擇 **DoNothing (不執行動作)**，並在 `unattend.xml` 檔案中指定密碼。如果您未在 `unattend.xml` 中指定密碼，會停用管理員帳戶。

1. 選擇 **Shutdown with Sysprep (使用 Sysprep 關機)**。

**使用 EC2Launch 手動執行 Windows Sysprep**

1. 在 Amazon EC2 主控台中尋找或建立您想要複製的 Windows Server 2016 或更新版本 Datacenter 版 AMI。

1. 啟動和連線至 Windows 執行個體。

1. 自訂執行個體。

1. 在 `LaunchConfig.json` 檔案中指定設定。根據預設，此檔案位於 `C:\ProgramData\Amazon\EC2-Windows\Launch\Config` 目錄。

   針對 `adminPasswordType`，請指定下列其中一個值：  
`Random`  
EC2Launch 會產生密碼並以使用者金鑰將其加密。系統會在執行個體啟動後停用此設定，以便執行個體重新開機或停止再啟動時，能持續使用這個密碼。  
`Specify`  
EC2Launch 會使用您在 `adminPassword` 中指定的密碼。如果該密碼不符合系統要求，EC2Launch 會改為產生隨機密碼。系統會將該密碼以純文字存放於 `LaunchConfig.json`，並在 Windows Sysprep 設定管理員密碼後予以刪除。EC2Launch 會以使用者金鑰加密該密碼。  
`DoNothing`  
EC2Launch 會使用您在 `unattend.xml` 檔案中指定的密碼。如果您未在 `unattend.xml` 中指定密碼，會停用管理員帳戶。

1. (選用) 請在 `unattend.xml` 和其他組態檔案中指定設定。如果您計畫安裝，就不需要變更這些檔案。根據預設，檔案位於下列目錄：`C:\ProgramData\Amazon\EC2-Windows\Launch\Sysprep`。

1. 在 Windows PowerShell 中，執行 `./InitializeInstance.ps1 -Schedule`。根據預設，指令碼位於下列目錄：`C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts`。此指令碼會排程執行個體在下一次開機期間初始化。您必須在執行下一步的 `SysprepInstance.ps1` 指令碼前，執行此指令碼。

1. 在 Windows PowerShell 中，執行 `./SysprepInstance.ps1`。根據預設，指令碼位於下列目錄：`C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts`。

系統會將您登出執行個體，然後執行個體會關機。如果您檢查 Amazon EC2 主控台中的 **Instances (執行個體)** 頁面，執行個體狀態會從 `Running` 變更為 `Stopping`，然後變更為 `Stopped`。這時便能放心地從這個執行個體建立 AMI。

## 啟動自訂 AMI 時更新 Server 2016 和更新版本的中繼資料/KMS 路由
<a name="update-metadata-KMS"></a>

若要在啟動自訂 AMI 時更新 Server 2016 和更新版本的中繼資料/KMS 路由，請執行下列其中一項動作：
+ 執行 EC2LaunchSettings GUI (C:\$1ProgramData\$1Amazon\$1EC2-Windows\$1Launch\$1Settings\$1Ec2LaunchSettings.exe)，然後選取選項以搭配 Windows Sysprep 來關機。
+ 在建立 AMI 之前，請執行 EC2LaunchSettings，且不搭配 Windows Sysprep 來關機。這樣會將 EC2 啟動初始化任務設為在下一次開機時執行，如此將會根據執行個體的子網來設定路由。
+ 在從 [PowerShell](ec2launch-config.md#ec2launch-inittasks) 建立 AMI 之前，手動重新排程 EC2 啟動初始化任務。
**重要**  
在重新排定任務之前，請記下預設密碼重設行為。
+ 若要在發生 Windows 啟用失敗或與執行個體中繼資料通訊失敗的執行中的執行個體上更新路由，請參閱[「無法啟用 Windows」](common-messages.md#activate-windows)。

# 使用 Windows Sysprep 搭配 EC2Config 建立 AMI
<a name="sysprep-using"></a>

若透過已安裝 EC2Config 服務的執行個體建立映像，EC2Config 會在映像就緒時執行特定任務。這包括搭配使用 Windows Sysprep。如需詳細資訊，請參閱[Windows Sysprep 階段](ami-create-win-sysprep.md#sysprep-phases)。

**Topics**
+ [Windows Sysprep 操作](#sysprep-actions)
+ [Sysprep 後續階段](#sysprep-post)
+ [搭配 EC2Config 服務執行 Windows Sysprep](#sysprep-gui-procedure)

## Windows Sysprep 操作
<a name="sysprep-actions"></a>

Windows Sysprep 和 EC2Config 服務會在準備映像時執行下列動作。

1. 當您在 **EC2 服務屬性**對話方塊中選擇**使用 Sysprep 關機**時，系統會執行 **ec2config.exe -sysprep** 命令。

1. EC2Config 服務會讀取 `BundleConfig.xml` 檔案的內容。此檔案預設位在下列目錄：`C:\Program Files\Amazon\Ec2ConfigService\Settings`。

    `BundleConfig.xml` 檔案包括下列設定。您可以變更這些設定：
   + **AutoSysprep**：指出是否自動使用 Windows Sysprep。如果您要從 EC2 服務屬性對話方塊中執行 Windows Sysprep，則不需要變更此值。預設值為 `No`。
   + **SetRDPCertificate**：設定遠端桌面伺服器的自簽憑證。這可讓您安全地使用遠端桌面通訊協定 (RDP) 連線至執行個體。如果新的執行個體應該使用憑證，請將值變更為 `Yes`。此設定不適用於 Windows Server 2012 執行個體，因為這些作業系統可以產生自己的憑證。預設值為 `No`。
   + **SetPasswordAfterSysprep**：在新啟動的執行個體上設定隨機密碼，並以使用者啟動金鑰加密，然後將加密的密碼輸出到主控台。如果新執行個體不應該設定為隨機加密密碼，請將值變更為 `No`。預設值為 `Yes`。
   +  **PreSysprepRunCmd**：要執行之命令的位置。根據預設，命令位於下列目錄：`C:\Program Files\Amazon\Ec2ConfigService\Scripts\BeforeSysprep.cmd`。

1. 系統會執行 `BeforeSysprep.cmd`。此命令會建立一個登錄機碼，如下所示：

   ```
   reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 1 /f
   ```

   除非重新啟用 RDP 連接，否則此登錄機碼會停用連線。停用 RDP 連線是必要的安全措施，因為在執行 Windows Sysprep 之後的第一個開機工作階段期間，RDP 會有一小段時間允許連接，而且管理員密碼會空白。

1. EC2Config 服務會執行下列命令來呼叫 Windows Sysprep：

   ```
   sysprep.exe /unattend: "C:\Program Files\Amazon\Ec2ConfigService\sysprep2008.xml" /oobe /generalize /shutdown
   ```

### 一般化階段
<a name="sysprep-generalize"></a>
+ 此工具會移除映像特定資訊和組態 (例如電腦名稱和 SID)。如果執行個體是網域成員，即會從網域中移除。`sysprep2008.xml` 回應檔案包括下列可影響此階段的設定：
  + **PersistAllDeviceInstalls**：此設定可防止 Windows 安裝程式移除和重新設定裝置，以加速映像準備程序，因為 Amazon AMI 需要執行特定驅動程式，而且重新偵測這些驅動程式需要一些時間。
  + **DoNotCleanUpNonPresentDevices**：此設定會保留目前不存在之裝置的隨插即用資訊。
+ Windows Sysprep 會在準備建立 AMI 時關閉 OS。系統會啟動新的執行個體，或啟動原始執行個體。

### 特製化階段
<a name="sysprep-specialize"></a>

系統會產生電腦名稱和 SID 這類 OS 特定要求。系統也會根據您在 sysprep2008.xml 回應檔案中指定的組態，來執行下列動作。
+ **CopyProfile**：Windows Sysprep 可以設定為刪除所有使用者描述檔 (包括內建管理員描述檔)。此設定會保留內建管理員帳戶，因此您對該帳戶進行的任何自訂都會帶到新的映像。預設值為 True。

  **CopyProfile** 會以現有的本機管理員描述檔取代預設描述檔。執行 Windows Sysprep 之後登入的所有帳戶，將於第一次登入時收到該描述檔的複本及其內容。

  如果您沒有特定的使用者描述檔自訂要帶到新映像，請將此設定變更為 False。Windows Sysprep 將移除所有使用者描述檔；這樣可節省時間和磁碟空間。
+ **TimeZone**：時區會預設為國際標準時間 (UTC)。
+ **順序為 1 的同步命令**：系統會執行下列命令，以啟用管理員帳戶並指定密碼要求。

  **net user Administrator /ACTIVE:YES /LOGONPASSWORDCHG:NO /EXPIRES:NEVER /PASSWORDREQ:YES**
+ **順序為 2 的同步命令**：系統會將管理員密碼變碼。此安全措施的用途在於您未啟用 ec2setpassword 設定時，可防止在 Windows Sysprep 完成之後存取執行個體。

  C:\$1Program Files\$1Amazon\$1Ec2ConfigService\$1ScramblePassword.exe" -u Administrator
+ **順序為 3 的同步命令**：系統會執行下列命令：

  C:\$1Program Files\$1Amazon\$1Ec2ConfigService\$1Scripts\$1SysprepSpecializePhase.cmd

   此命令會新增下列登錄機碼，以重新啟用 RDP：

  reg add "HKEY\$1LOCAL\$1MACHINE\$1SYSTEM\$1CurrentControlSet\$1Control\$1Terminal Server" /v fDenyTSConnections /t REG\$1DWORD /d 0 /f

### OOBE 階段
<a name="sysprep-oobe"></a>

1. 使用 EC2Config 服務回應檔案，系統可以指定下列組態：
   + <InputLocale>en-US</InputLocale>
   + <SystemLocale>en-US</SystemLocale>
   + <UILanguage>en-US</UILanguage>
   + <UserLocale>en-US</UserLocale>
   + <HideEULAPage>true</HideEULAPage>
   + <HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE>
   + <NetworkLocation>Other</NetworkLocation>
   + <ProtectYourPC>3</ProtectYourPC>
   + <BluetoothTaskbarIconEnabled>false</BluetoothTaskbarIconEnabled>
   + <TimeZone>UTC</TimeZone>
   + <RegisteredOrganization>Amazon.com</RegisteredOrganization>
   + <RegisteredOwner>Amazon</RegisteredOwner>
**注意**  
在一般化和特製化階段期間，EC2Config 服務會監控 OS 狀態。如果 EC2Config 偵測到 OS 處於 Sysprep 階段，即會將下列訊息發佈至系統日誌：  
EC2ConfigMonitorState: 0 Windows is being configured. SysprepState=IMAGE\$1STATE\$1UNDEPLOYABLE

1. OOBE 階段完成後，系統會從下列位置執行 `SetupComplete.cmd`：`C:\Windows\Setup\Scripts\SetupComplete.cmd`。在 2015 年 4 月之前的 Amazon 公有 AMI 中，此檔案為空白，而且不會對映像執行任何操作。在 2015 年 4 月之後的公有 AMI 中，此檔案包含以下數值：**call "C:\$1Program Files\$1Amazon\$1Ec2ConfigService\$1Scripts\$1PostSysprep.cmd"**。

1. 系統會執行 `PostSysprep.cmd`，執行下列操作：
   + 將本機管理員密碼設定為不過期。如果密碼過期，管理員可能會無法登入。
   + 設定 MSSQLServer 機器名稱 (如果已安裝)，讓名稱與 AMI 同步。

## Sysprep 後續階段
<a name="sysprep-post"></a>

Windows Sysprep 完成之後，EC2Config 服務會將下列訊息傳送至主控台輸出：

```
Windows sysprep configuration complete.
			Message: Sysprep Start
			Message: Sysprep End
```

EC2Config 接著會執行下列動作：

1. 讀取 config.xml 檔案的內容，並列出所有已啟用的外掛程式。

1. 同時執行所有「Windows 就緒之前」(“Before Windows is ready”) 外掛程式。
   + Ec2SetPassword
   + Ec2SetComputerName
   + Ec2InitializeDrives
   + Ec2EventLog
   + Ec2ConfigureRDP
   + Ec2OutputRDPCert
   + Ec2SetDriveLetter
   + Ec2WindowsActivate
   + Ec2DynamicBootVolumeSize

1. 完成之後，會將「Windows 就緒」(“Windows is ready”) 訊息傳送至執行個體系統日誌。

1. 同時執行所有「Windows 就緒之後」(“After Windows is ready”) 外掛程式。
   + Amazon CloudWatch Logs 
   + UserData
   + AWS Systems Manager (Systems Manager) 

如需 Windows 外掛程式的詳細資訊，請參閱[在 EC2 舊版 Windows 作業系統執行個體啟動期間，使用 EC2Config 服務執行任務](ec2config-service.md)。

## 搭配 EC2Config 服務執行 Windows Sysprep
<a name="sysprep-gui-procedure"></a>

使用下列程序，使用 Windows Sysprep 和 EC2Config 服務來建立標準化 AMI。

1. 在 Amazon EC2 主控台中，找出或[建立](creating-an-ami-ebs.md)您要複製的 AMI。

1. 啟動和連線至 Windows 執行個體。

1. 自訂執行個體。

1. 在 EC2Config 服務回應檔案中指定組態設定：

   `C:\Program Files\Amazon\Ec2ConfigService\sysprep2008.xml`

1. 從 Windows **開始**選單中，選擇**所有程式**，然後選擇 **EC2ConfigService Settings (EC2ConfigService 設定)**。

1. 選擇 **Ec2 Service Properties (Ec2 服務屬性)** 對話方塊中的 **Image (映像)** 標籤。如需 Ec2 Service Properties (Ec2 服務屬性) 對話方塊中之選項和設定的詳細資訊，請參閱 [Ec2 服務屬性](ec2config-service.md)。

1. 選取管理員密碼的選項，然後選取 **Shutdown with Sysprep (使用 Sysprep 關機)** 或 **Shutdown without Sysprep (不使用 Sysprep 關機)**。EC2Config 會根據您選取的密碼選項來編輯設定檔案。
   + **Random (隨機)**：EC2Config 會產生密碼，並以使用者金鑰加密，然後將已加密的密碼輸出到主控台。我們會在第一次啟動後停用此設定，以便執行個體重新開機或是停止後再啟動時，能持續使用這個密碼。
   + **指定**：密碼會以未加密形式 (純文字) 存放於 Windows Sysprep 回應檔案。Windows Sysprep 接著執行時，會設定管理員密碼。如果您立即關機，即會立即設定密碼。在服務重新啟動時，會移除管理員密碼。請務必記住此密碼，之後即無法再擷取此密碼。
   + **保留現有項目**：執行 Windows Sysprep 或重新啟動 EC2Config 時，管理員帳戶的現有密碼不會變更。請務必記住此密碼，之後即無法再擷取此密碼。

1. 選擇 **OK** (確定)。

系統會要求您確認要執行 Windows Sysprep 並將執行個體關機，請按一下**是**。您會注意到 EC2Config 執行 Windows Sysprep。接著，系統會將您登出執行個體，然後執行個體會關機。如果您查看 Amazon EC2 主控台的 **Instances (執行個體)** 頁面，執行個體狀態會從 `Running` 變更為 `Stopping`，最後再變更為 `Stopped`。這時便能放心地從此執行個體建立 AMI。

您可以從命令列使用下列命令手動調用 Windows Sysprep 工具：

```
"%programfiles%\amazon\ec2configservice\"ec2config.exe -sysprep"" 
```

**注意**  
如果 CMD shell 已在 C:\$1Program Files\$1Amazon\$1EC2ConfigService\$1 目錄中，則不需要命令中的雙引號標記。

不過，您必須審慎確認 `Ec2ConfigService\Settings` 資料夾中指定的 XML 檔案選項正確；否則，您可能無法連線至該執行個體。如需設定檔案的詳細資訊，請參閱 [EC2Config 設定檔](ec2config-service.md#UsingConfigXML_WinAMI)。如需從命令列設定 Windows Sysprep 並執行的範例，請參閱 `Ec2ConfigService\Scripts\InstallUpdates.ps1`。

# 複製 Amazon EC2 AMI
<a name="CopyingAMIs"></a>

若需要跨多個區域採用一致的 Amazon EC2 執行個體組態，您可將單一 Amazon Machine Image (AMI) 用做範本來啟動所有執行個體。不過，AMIs是區域特定的資源，若要在特定 中啟動執行個體 AWS 區域，AMI 必須位於該區域。因此，如需在多個區域採用同一個 AMI，必須從來源區域複製該 AMI 到每個目標區域。

您用於複製 AMI 的方法，視乎您是要跨*同一[分區](https://docs.aws.amazon.com/glossary/latest/reference/glos-chap.html#partition)內的*區域，還是*跨不同分區*進行複製而定：
+ **跨區域複製** – 跨*同一分區內的*區域複製 AMI，舉例來說，跨商業分區內的區域。本主題介紹了此複製方法。
+ **跨分割區複製** – 將 AMIs *從一個分割區複製到另一個分割區*，例如從商業分割區複製到 AWS GovCloud (US) 分割區。若要了解此方法的相關詳細資訊，請參閱 [存放和還原 AMI允許 AMI](ami-store-restore.md)。
+ **跨帳戶複製** – 建立另一個 AWS 帳戶 [與您的 共用 AWS 帳戶](sharingamis-explicit.md)的 AMI 複本。本主題介紹了此複製方法。

跨區域與跨帳戶 AMI 複製的複製操作完成所花時間為盡力而為。若需要控制完成時間，您可指定從 15 分鐘至 48 小時的完成時段，並確保在所需時間範圍內複製 AMI。基於時間的 AMI 複製操作適用額外費用。若要了解詳細資訊，請參閱 *Amazon EBS 使用者指南*中的[基於時間的複製](https://docs.aws.amazon.com/ebs/latest/userguide/time-based-copies.html)。

**Topics**
+ [考量事項](#copy-ami-considerations)
+ [成本](#copy-ami-costs)
+ [授予 Amazon EC2 AMI 複製許可](copy-ami-permissions.md)
+ [複製 AMI](#ami-copy-steps)
+ [停用待定的 AMI 複製作業](#ami-copy-stop)
+ [Amazon EC2 AMI 複製的運作方式](how-ami-copy-works.md)

## 考量事項
<a name="copy-ami-considerations"></a>
+ **複製 AMI 的許可** - 您可以使用 IAM 政策來授予或拒絕使用者複製 AMI 的許可。自 2024 年 10 月 28 日起，您可在來源 AMI 指定 `CopyImage` 動作的資源層級許可。新 AMI 的資源層級許可與以前一樣可用。
+ **啟動許可和 Amazon S3 儲存貯體許可** – AWS 不會將啟動許可或 Amazon S3 儲存貯體許可從來源 AMI 複製到新的 AMI。複製操作完成後，您可將啟動許可和 Amazon S3 儲存貯體許可套用至新的 AMI。
+ **標籤** - 您只能複製連接至來源 AMI 的使用者定義之 AMI 標籤。將不會複製連接至其他 AWS 帳戶 的系統標籤 (字首為 `aws:`) 和使用者定義的標籤。當複製 AMI 時，您可以連接新標籤至新 AMI 及其備份快照。
+ **基於時間的 AMI 複製配額** – 在達到*累積快照複製輸送量配額*之後，後續基於時間的 AMI 複製請求會失敗。若要了解詳細資訊，請參閱 *Amazon EBS 使用者指南*中的[基於時間的複製配額](https://docs.aws.amazon.com/ebs/latest/userguide/time-based-copies.html#time-based-copies-quota)。
+ **受支援的來源目的地複製** – 來源 AMI 的位置會決定您是否可以複製，及新的 AMI 允許的目的地：
  + 若來源 AMI 位於一個區域，您可在該區域內對其進行複製、複製到另一個區域、複製到與該區域關聯的 Outpost，或者複製到該區域中的本機區域。
  + 如果來源 AMI 位於本機區域，您可以在該本機區域內進行複製、將其複製到該本機區域的父區域，或複製到具有相同父區域的某些其他本機區域。
  + 若來源 AMI 位於 Outpost，則您無法將其複製。
+ **來源和目的地的 CLI 參數** – 若使用 CLI，會支援以下參數，以便指定待複製 AMI 的來源位置及新 AMI 的目的地。請注意，複製操作必須在目的地區域中啟動；如果您省略 `--region` 參數，則目的地會假設 AWS CLI 設定中設定的預設區域。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/CopyingAMIs.html)

## 成本
<a name="copy-ami-costs"></a>

若未指定完成時間，複製 AMI 無須費用。然而，額外費用適用於基於時間的 AMI 複製操作。若要了解詳細資訊，請參閱 *Amazon EBS 使用者指南*中的[基於時間的複製](https://docs.aws.amazon.com/ebs/latest/userguide/time-based-copies.html#time-based-copies-pricing)。

標準儲存與資料傳輸費用適用。如果您複製 EBS 後端 AMI，任何其他 EBS 快照的儲存則都會產生費用。

# 授予 Amazon EC2 AMI 複製許可
<a name="copy-ami-permissions"></a>

若要複製 EBS 支援的 AMI 或 Amazon S3 支援的 AMI，您需要下列 IAM 許可：
+ `ec2:CopyImage` - 複製 AMI。對於 EBS 支援的 AMI，其還針對 AMI 備份快照授予複製許可。
+ `ec2:CreateTags` - 標記目標 AMI。對於 EBS 支援的 AMI，其還針對目標 AMI 備份快照授予標記許可。

如果您要複製執行個體儲存體支援的 AMI，則需要下列*額外* IAM 許可：
+ `s3:CreateBucket` - 在新 AMI 的目標區域建立 S3 儲存貯體
+ `s3:PutBucketOwnershipControls` – 為新建立的 S3 儲存貯體啟用 ACLs，以便使用`aws-exec-read`[標準 ACL](https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html#canned-acl) 寫入物件
+ `s3:GetBucketAcl` – 讀取來源儲存貯體ACLs 
+ `s3:ListAllMyBuckets` - 為目標區域的 AMI 尋找現有 S3 儲存貯體
+ `s3:GetObject` - 讀取來源儲存貯體物件
+ `s3:PutObject` - 將物件寫入目標儲存貯體
+ `s3:PutObjectAcl` - 將新物件的許可寫入目標儲存貯體

**注意**  
自 2024 年 10 月 28 日起，您可在來源 AMI 指定 `CopyImage` 動作的資源層級許可。目標 AMI 的資源層級許可與以前一樣可用。如需詳細資訊，請參閱「服務授權參考」**中 [Amazon EC2 定義的操作](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonec2.html#amazonec2-actions-as-permissions)下表中的 **CopyImage**。

## 範例 IAM 政策，用於複製 EBS 支援的 AMI 並標記目標 AMI 和快照
<a name="permissions-to-copy-ebs-backed-ami"></a>

以下範例政策授予您許可，以複製任何 EBS 支援的 AMI 並標記目標 AMI 及其備份快照。

**注意**  
自 2024 年 10 月 28 日起，您可在 `Resource` 元素中指定快照。如需詳細資訊，請參閱「服務授權參考」**中 [Amazon EC2 定義的操作](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonec2.html#amazonec2-actions-as-permissions)下表中的 **CopyImage**。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
        "Sid": "PermissionToCopyAllImages",
        "Effect": "Allow",
        "Action": [
            "ec2:CopyImage",
            "ec2:CreateTags"
        ],
        "Resource": [
            "arn:aws:ec2:*::image/*",
            "arn:aws:ec2:*::snapshot/*"
        ]
    }]
}
```

------

## 範例 IAM 政策，用於複製 EBS 支援的 AMI，但禁止標記新快照
<a name="permissions-to-copy-ebs-backed-ami-but-deny-tagging-new-snapshots"></a>

當您獲得 `ec2:CopySnapshot` 許可時，系統會自動授予 `ec2:CopyImage` 許可。可明確拒絕授予標記新備份快照的許可，以覆蓋 `ec2:CreateTags` 動作的 `Allow` 效果。

以下範例政策授予您許可，以複製任何 EBS 支援的 AMI，但禁止您標記目標 AMI 的新備份快照。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
            "Effect": "Allow",
            "Action": [
                "ec2:CopyImage",
                "ec2:CreateTags"
            ],
            "Resource": [
                "arn:aws:ec2:*::image/*",
                "arn:aws:ec2:*::snapshot/*"
            ]
        },
        {
            "Effect": "Deny",
            "Action": "ec2:CreateTags",
            "Resource": "arn:aws:ec2:::snapshot/*"
        }
    ]
}
```

------

## 範例 IAM 政策，用於複製 Amazon S3 支援的 AMI 並標記目標 AMI
<a name="permissions-to-copy-instance-store-backed-ami"></a>

以下範例政策授予您許可，可將指定來源儲存貯體的任何 Amazon S3 支援的 AMI 複製到指定區域，並標記目標 AMI。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
            "Sid": "PermissionToCopyAllImages",
            "Effect": "Allow",
            "Action": [
                "ec2:CopyImage",
                "ec2:CreateTags"
            ],
            "Resource": "arn:aws:ec2:*::image/*"
        },
        {
            "Effect": "Allow",
            "Action": "s3:ListAllMyBuckets",
            "Resource": [
                "arn:aws:s3:::*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": "s3:GetObject",
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-source-bucket/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:CreateBucket",
                "s3:GetBucketAcl",
                "s3:PutObjectAcl",
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::amis-for-111122223333-in-us-east-2-hash"
            ]
        }
    ]
}
```

------

若要尋找 AMI 來源儲存貯體的 Amazon Resource Name (ARN)，請透過 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 開啟 Amazon EC2 主控台，在導覽窗格中選擇 **AMI**，然後在**來源**欄中找到該儲存貯體名稱。

**注意**  
只有在您第一次將 Amazon S3 支援的 AMI 複製到個別區域時，才需要 `s3:CreateBucket` 許可。之後，已在區域中建立的 Amazon S3 儲存貯體用來儲存您複製到該區域的所有未來 AMIs。

## 複製 AMI
<a name="ami-copy-steps"></a>

您可複製您擁有的 AMI，或者由另一個帳戶共享給您的 AMI。若要了解受支援的來源與目的地組合，請參閱 [考量事項](#copy-ami-considerations)。

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

**複製 AMI**

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

1. 從主控台導覽列選取內含該 AMI 的區域。

1. 在導覽窗格中選擇 **AMI**，以顯示您區域可用的 AMI 清單。

1. 如果您未看到要複製的 AMI，請選擇其他篩選條件。您可按以下方式篩選 AMI：**由我擁有**、**私有映像**、**公有映像**與**已停用映像**。

1. 選取欲複製的 AMI，然後選擇**動作**、**複製 AMI**。

1. 在**複製 Amazon Machine Image (AMI)** 頁面，指定以下資訊：

   1. **AMI copy name** (AMI 複本名稱)：新 AMI 的名稱。名稱中可納入作業系統資訊，因為 Amazon EC2 在顯示有關 AMI 的詳細資訊時不提供此資訊。

   1. **AMI copy description** (AMI 複本描述)：根據預設，描述包括來源 AMI 的資訊，讓您能夠辨識原始和複本內容。您可視需要變更此描述。

   1. **Destination region** (目的地區域)：AMI 複製到的區域。如需詳細資訊，請參閱[跨區域複製](how-ami-copy-works.md#copy-amis-across-regions)及[跨帳戶複製](how-ami-copy-works.md#copy-ami-across-accounts)。

   1. **複製標籤**：選取此核取方塊可在複製 AMI 時包含使用者定義的 AMI 標籤。將不會複製連接至其他 AWS 帳戶 的系統標籤 (字首為 `aws:`) 和使用者定義的標籤。

   1. **基於時間的複製**：您可如下所示指定複製操作是在特定時間範圍內完成，還是盡力完成：
      + 如需在特定時間範圍內完成複製：
        + 選取**啟用基於時間的複製**。
        + 對於**完成持續時間**，請輸入複製操作允許的分鐘數 (增量為 15 分鐘)。完成持續時間適用於與 AMI 關聯的全部快照。

          若要了解詳細資訊，請參閱 *Amazon EBS 使用者指南*中的[基於時間的複製](https://docs.aws.amazon.com/ebs/latest/userguide/time-based-copies.html)。
      + 盡力完成複製：
        + 將**啟用基於時間的複製**保持不選。

   1. (EBS 支援的 AMI) **加密 AMI 複本的 EBS 快照**：選取此核取方塊來加密目標快照或使用不同金鑰重新加密它們。如果您已啟用預設加密，**加密 AMI 複本的 EBS 快照**核取方塊已選取且無法清除。如需詳細資訊，請參閱[加密和複製](how-ami-copy-works.md#ami-copy-encryption)。

   1. (EBS 支援的 AMI) **KMS 金鑰**：用於加密目標快照的 KMS 金鑰。

   1. **標籤**：您可以使用相同標籤來標記新 AMI 和新快照，或者可以使用不同標籤來進行標記。
      + 若要使用*相同*標籤來標記新 AMI 和新快照，請選擇**共同標記映像和快照**。相同標籤即套用至新 AMI 和每個建立的快照。
      + 若要使用*不同*標籤來標記新 AMI 和新快照，請選擇**個別標記映像和快照**。不同標籤即套用至新 AMI 和建立的快照。但是，請注意，建立的所有新快照都會取得相同標籤；您無法使用不同的標籤標記每個新快照。

      若要新增標籤，請選擇 **Add tag (新增標籤)**，然後輸入標籤的鍵和值。針對每個標籤，重複執行上述動作。

   1. 當您準備好建立 AMI 時，請選擇**複製 AMI**。

      新 AMI 的初始狀態為 `Pending`。當狀態為 `Available` 時，表示 AMI 複製作業完成。

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

**如需將 AMI 從一個區域複製到另一個區域**  
使用 [copy-image](https://docs.aws.amazon.com/cli/latest/reference/ec2/copy-image.html) 指令。您必須同時指定來源和目的地區域。請使用 `--source-region` 參數指定來源區域。您可使用 `--region` 參數來指定目的地區域 (或省略此參數，假設為您的 AWS CLI 設定中設定的預設區域)。

```
aws ec2 copy-image \
    --source-image-id ami-0abcdef1234567890 \
    --source-region us-west-2 \
    --name my-ami \
    --region us-east-1
```

在 AMI 複製期間加密目標快照時，務必指定其他這些參數：`--encrypted` 和 `--kms-key-id`。

**如需從一個區域複製 AMI 到本機區域**  
使用 [copy-image](https://docs.aws.amazon.com/cli/latest/reference/ec2/copy-image.html) 指令。您必須同時指定來源與目的地。請使用 `--source-region` 參數指定來源區域。您可使用 `--destination-availability-zone` 參數來指定目的地本機區域 (您可改為使用 `--destination-availability-zone-id`)。請注意，您僅可從一個區域複製 AMI 到同一區域內的本機區域。

```
aws ec2 copy-image \
    --source-image-id ami-0abcdef1234567890 \
    --source-region cn-north-1 \
    --destination-availability-zone cn-north-1-pkx-1a \
    --name my-ami \
    --region cn-north-1
```

**如需從本機區域複製 AMI 到一個區域**  
使用 [copy-image](https://docs.aws.amazon.com/cli/latest/reference/ec2/copy-image.html) 指令。您必須同時指定來源與目的地。請使用 `--source-region` 參數指定來源區域。您可使用 `--region` 參數來指定目的地區域 (或者省略此參數，假設為您的 AWS CLI 設定中設定的預設區域)。來源本機區域係由指定之來源 AMI ID 的位置推定。請注意，您僅可從本機區域複製 AMI 到其父區域。

```
aws ec2 copy-image \
    --source-image-id ami-0abcdef1234567890 \
    --source-region cn-north-1 \
    --name my-ami \
    --region cn-north-1
```

**如需從一個本機區域複製 AMI 到另一個本機區域**  
使用 [copy-image](https://docs.aws.amazon.com/cli/latest/reference/ec2/copy-image.html) 指令。您必須同時指定來源與目的地。請使用 `--source-region` 參數來指定本機區域的來源區域。您可使用 `--destination-availability-zone` 參數來指定目的地本機區域 (您可改為使用 `--destination-availability-zone-id`)。來源本機區域係由指定之來源 AMI ID 的位置推定。您可以使用 `--region` 參數指定目的地 Local Zone 的父區域 （或省略此參數，以假設 AWS CLI 設定中設定的預設區域）。

```
aws ec2 copy-image \
    --source-image-id ami-0abcdef1234567890 \
    --source-region cn-north-1 \
    --destination-availability-zone cn-north-1-pkx-1a \
    --name my-ami \
    --region cn-north-1
```

------
#### [ PowerShell ]

**如需將 AMI 從一個區域複製到另一個區域**  
使用 [Copy-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Copy-EC2Image.html) cmdlet。您必須同時指定來源和目的地區域。請使用 `-SourceRegion` 參數指定來源區域。您可使用 `-Region` 參數或者 [Set-AWSDefaultRegion](https://docs.aws.amazon.com/powershell/latest/userguide/pstools-installing-specifying-region.html) cmdlet，來指定目的地區域。

```
Copy-EC2Image `
    -SourceImageId ami-0abcdef1234567890 `
    -SourceRegion us-west-2 `
    -Name my-ami `
    -Region us-east-1
```

在 AMI 複製期間加密目標快照時，務必指定其他這些參數：`-Encrypted` 和 `-KmsKeyId`。

**如需從一個區域複製 AMI 到本機區域**  
使用 [Copy-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Copy-EC2Image.html) cmdlet。您必須同時指定來源與目的地。請使用 `-SourceRegion` 參數指定來源區域。您可使用 `-DestinationAvailabilityZone` 參數來指定目的地本機區域 (您可改為使用 `-DestinationAvailabilityZoneId`)。請注意，您僅可從一個區域複製 AMI 到同一區域內的本機區域。

```
Copy-EC2Image `
    -SourceImageId ami-0abcdef1234567890 `
    -SourceRegion cn-north-1 `
    -DestinationAvailabilityZone cn-north-1-pkx-1a `
    -Name my-ami `
    -Region cn-north-1
```

**如需從本機區域複製 AMI 到一個區域**  
使用 [Copy-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Copy-EC2Image.html) cmdlet。您必須同時指定來源與目的地。請使用 `-SourceRegion` 參數指定來源區域。您可使用 `-Region` 參數或者 [Set-AWSDefaultRegion](https://docs.aws.amazon.com/powershell/latest/userguide/pstools-installing-specifying-region.html) cmdlet，來指定目的地區域。來源本機區域係由指定之來源 AMI ID 的位置推定。請注意，您僅可從本機區域複製 AMI 到其父區域。

```
Copy-EC2Image `
    -SourceImageId ami-0abcdef1234567890 `
    -SourceRegion cn-north-1 `
    -Name my-ami `
    -Region cn-north-1
```

**如需從一個本機區域複製 AMI 到另一個本機區域**  
使用 [Copy-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Copy-EC2Image.html) cmdlet。您必須同時指定來源與目的地。請使用 `-SourceRegion` 參數來指定本機區域的來源區域。您可使用 `-DestinationAvailabilityZone` 參數來指定目的地本機區域 (您可改為使用 `-DestinationAvailabilityZoneId`)。來源本機區域係由指定之來源 AMI ID 的位置推定。您可使用 `-Region` 參數或者 [Set-AWSDefaultRegion](https://docs.aws.amazon.com/powershell/latest/userguide/pstools-installing-specifying-region.html) cmdlet，來指定目的地本機區域的父區域。

```
Copy-EC2Image `
    -SourceImageId ami-0abcdef1234567890 `
    -SourceRegion cn-north-1 `
    -DestinationAvailabilityZone cn-north-1-pkx-1a `
    -Name my-ami `
    -Region cn-north-1
```

------

## 停用待定的 AMI 複製作業
<a name="ami-copy-stop"></a>

您可使用下列程序來停止待定的 AMI 複製。

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

**如需停止 AMI 複製操作**

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

1. 從導覽列中的區域選取器，選取目的地區域。

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

1. 選取要停止複製的 AMI，然後選擇**動作**、**取消註冊 AMI**。

1. 要求確認時，請選擇 **Deregister AMI** (取消註冊 AMI)。

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

**如需停止 AMI 複製操作**  
請使用 [deregister-image](https://docs.aws.amazon.com/cli/latest/reference/ec2/deregister-image.html) 命令。

```
aws ec2 deregister-image --image-id ami-0abcdef1234567890
```

------
#### [ PowerShell ]

**如需停止 AMI 複製操作**  
使用 [Unregister-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Unregister-EC2Image.html) cmdlet。

```
Unregister-EC2Image -ImageId ami-0abcdef1234567890
```

------

# Amazon EC2 AMI 複製的運作方式
<a name="how-ami-copy-works"></a>

複製來源 AMI 會產生相同但獨立的新 AMI，我們也稱之為*目標* AMI。目標 AMI 有其唯一 AMI ID。您可變更來源 AMI 或取消註冊，不會影響目標 AMI。反之亦然。

藉由 EBS 支援的 AMI，每個備份快照會複製成相同但完全獨立的目標快照。如果您複製 AMI 到新區域，則快照為完整 (非增量) 複本。如果您加密未加密的備份快照，或將其加密為新的 KMS 金鑰，則快照為完整 (非增量) 複本。AMI 的後續複製作業會產生備份快照的增量複本。

**Topics**
+ [跨區域複製](#copy-amis-across-regions)
+ [跨帳戶複製](#copy-ami-across-accounts)
+ [基於時間的 AMI 複製操作](#ami-time-based)
+ [加密和複製](#ami-copy-encryption)

## 跨區域複製
<a name="copy-amis-across-regions"></a>

跨越地理區域複製 AMI，具有下列優點：
+ 一致的全球部署：將 AMI 從一個區域複製到另一個區域，可讓您以相同 AMI 在不同區域啟動一致的執行個體。
+ 擴展能力：無論使用者的位置，設計並建置滿足全球使用者需求的應用程式將變得更輕鬆。
+ 效能：您可分散應用程式，並將應用程式的重要元件放置於靠近使用者的位置，藉此增加效能。您亦可運用區域特定的功能，例如執行個體類型或其他 AWS 服務。
+ 高可用性：您可跨 AWS 區域設計並部署應用程式，增加可用性。

下圖顯示來源 AMI 和兩個位於不同區域之複製 AMI 之間的關係，以及從每個 AMI 啟動的 EC2 執行個體。從 AMI 啟動執行個體時，其所處位置與該 AMI 的區域相同。若您變更來源 AMI 並希望在目標區域的 AMIs 反映這些變更，您必須將來源 AMI 重新複製到目標區域。

![\[複製到不同區域的 AMI\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/images/ami_copy.png)


首次將 Amazon S3 支援的 AMI 複製到某個區域時，我們會為複製到該區域的 Amazon S3 建立 AMIs 儲存貯體。所有複製到該區域的 Amazon S3 支援的 AMI，都會存放於此儲存貯體。儲存貯體名稱為下列格式：amis-for-*account*-in-*region*-*hash*。例如：`amis-for-123456789012-in-us-east-2-yhjmxvp6`。

**先決條件**  
複製 AMI 前，您必須確認來源 AMI 的內容已更新為可支援在不同區域運作。例如，您應更新資料庫連線字串或類似的應用程式組態資料，以指向適當的資源。否則，目的地區域內新 AMI 所啟動的執行個體，仍可能會使用來源區域的資源，影響效能和成本。

**限制**
+ 目的地區域限制為 300 個並行 AMI 複製操作。這亦適用於基於時間的 AMI 複製操作。
+ 您無法將全虛擬化 (PV) AMI 複製到不支援 PV AMI 的區域。如需詳細資訊，請參閱[虛擬化類型](ComponentsAMIs.md#virtualization_types)。

## 跨帳戶複製
<a name="copy-ami-across-accounts"></a>

如果來自另一個 的 AMI AWS 帳戶 [與您的 共用 AWS 帳戶](sharingamis-explicit.md)，您可以複製共用的 AMI。這稱為跨帳戶複製。與您共用的 AMI 是來源 AMI。當您複製來源 AMI 時，您將建立新 AMI。新 AMI 通常稱為目標 AMI。

**AMI 費用**
+ 對於共用 AMI，會向共用 AMI 的帳戶收取該區域的儲存費用。
+ 若您複製與您的帳戶共享的 AMI，則您是您帳戶內目標 AMI 的擁有者。
  + 來源 AMI 的擁有者需支付標準 Amazon EBS 或 Amazon S3 傳輸費用。
  + 我們會向您收取目的地區域的目標 AMI 儲存費用。

**資源許可**  
若要從另一個帳戶複製已與您共享的 AMI，來源 AMI 的擁有者必須授予您支援 AMI 的儲存體的讀取許可，而非 AMI 本身。該儲存體為相關聯的 EBS 快照 (Amazon EBS 支援的 AMI) 或相關聯的 S3 儲存貯體 (Amazon S3 支援的 AMI)。如果共用 AMI 具有加密的快照，則擁有者必須與您共用金鑰。如需有關授予資源許可的詳細資訊，對於 EBS 快照，請參閱 *Amazon EBS 使用者指南*中的[與其他 AWS 帳戶共享 Amazon EBS 快照](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-modifying-snapshot-permissions.html)，對於 S3 儲存貯體，請參閱 *Amazon S3 使用者指南*中的 [Amazon S3 的身分與存取管理](https://docs.aws.amazon.com/AmazonS3/latest/userguide/security-iam.html)。

**注意**  
連接到來源 AMI 的標籤不會跨帳戶複製到目標 AMI。

## 基於時間的 AMI 複製操作
<a name="ami-time-based"></a>

若針對包含單一關聯快照的 EBS 支援的 AMI 來起始基於時間的 AMI 複製操作，則其行為方式與**個別基於時間的快照複製操作**相同，且相同的輸送量限制適用。

若針對包含多個關聯快照的 EBS 支援的 AMI 來起始基於時間的 AMI 複製操作，則其行為方式與**並行的基於時間的快照複製操作**相同，且相同的輸送量限制適用。每個關聯快照皆會產生單獨的快照複製請求，每個請求都會計入您的累積快照複製輸送量配額。您指定的完成持續時間會套用於每個關聯快照。

若要了解詳細資訊，請參閱 *Amazon EBS 使用者指南*中的[基於時間的複製](https://docs.aws.amazon.com/ebs/latest/userguide/time-based-copies.html)。

## 加密和複製
<a name="ami-copy-encryption"></a>

下表說明各種 AMI 複製案例支援的加密。雖然您可將未加密快照複製為加密快照，但是無法將加密快照複製為未加密快照。


| 案例 | 描述 | 支援 | 
| --- | --- | --- | 
| 1 | 未加密到未加密 | 是 | 
| 2 | 加密到加密 | 是 | 
| 3 | 未加密到加密 | 是 | 
| 4 | 加密到未加密 | 否 | 

**注意**  
在 `CopyImage` 動作期間的加密僅適用於 Amazon EBS 後端 AMIs。因為 Amazon S3 支援的 AMI 不使用快照，所以您無法透過複製來變更其加密狀態。

當您在不指定加密參數的情況下複製 AMI 時，預設會以其原始加密狀態複製後備快照。因此，如果來源 AMI 由未加密的快照支援，則產生的目標快照也將未加密。同樣地，如果來源 AMI 的快照已加密，則產生的目標快照也會由相同的 AWS KMS 金鑰加密。對於由多個快照支援的 AMI，每個目標快照都會保留其對應來源快照的加密狀態。

若要在 AMI 複製期間變更目標備份快照的加密狀態，您可指定加密參數。下列範例顯示非預設情況，其中指定了加密參數並執行 `CopyImage` 動作以變更目標 AMI 的加密狀態。

**將未加密來源 AMI 複製到加密目標 AMI**

在此案例中，未加密根快照所支援的 AMI 將複製到具有加密根快照的 AMI。透過兩個加密參數叫用 `CopyImage` 動作，包括客戶受管金鑰。因此，根快照的加密狀態會變更，目標 AMI 會受到包含與來源快照相同資料的根快照支援，但使用指定的金鑰進行加密。您需要為兩個 AMI 中的快照支付儲存成本，以及從任一 AMI 啟動的任何執行個體的費用。

**注意**  
啟用預設加密，這與在 AMI 中針對所有快照將 `Encrypted` 參數設定為 `true` 具有相同效果。

![\[快速複製 AMI 並加密快照\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/images/ami-to-ami-convert.png)


設定 `Encrypted` 參數會加密此執行個體的單一快照。若您未指定 `KmsKeyId` 參數，則會使用預設的客戶受管金鑰來加密快照複本。

如需複製具有加密快照的 AMIs 的詳細資訊，請參閱[對 EBS 後端 AMI 使用加密](AMIEncryption.md)。

# 使用 S3 存放和還原 AMI
<a name="ami-store-restore"></a>

您可以將 Amazon Machine Image (AMI) 存放在 Amazon S3 儲存貯體中，將 AMI 複製到另一個 S3 儲存貯體，然後從 S3 儲存貯體中還原。透過使用 S3 儲存貯體存放和還原 AMI，您可以將 AMIs 從一個 AWS 分割區複製到另一個分割區，例如從主要商業分割區複製到 AWS GovCloud (US) 分割區。您也可以透過將其存放在 S3 儲存貯體中，來建立 AMI 的封存複本。

支援使用 S3 存放和還原 AMI 的 API 包括 `CreateStoreImageTask`、`DescribeStoreImageTasks` 和 `CreateRestoreImageTask`。

`CopyImage` 是建議用於複製 AWS 分割區*內* AMIs API。但是，`CopyImage` 無法將 AMI 複製到*另一個*分割區。

如需 AWS 分割區的相關資訊，請參閱《*IAM 使用者指南*》中的 [Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html) 頁面上的*分割區*。

**警告**  
在 AWS 分割區或 AWS 區域之間移動資料時，請務必遵循所有適用的法律和業務需求，包括但不限於任何適用的政府法規和資料駐留要求。

**Topics**
+ [使用案例](#use-cases)
+ [限制](#ami-store-restore-limitations)
+ [成本](#store-restore-costs)
+ [AMI 存放和還原如何運作](store-restore-how-it-works.md)
+ [建立存放映像任務](work-with-ami-store-restore.md)

## 使用案例
<a name="use-cases"></a>

**Topics**
+ [在 AWS 分割區之間複製 AMI](#copy-to-partition)
+ [製作 AMI 的封存複本](#archival-copies)

### 在 AWS 分割區之間複製 AMI
<a name="copy-to-partition"></a>

透過使用 S3 儲存貯體存放和還原 AMI，您可以將 AMI 從一個 AWS 分割區複製到另一個分割區，或從一個 AWS 區域複製到另一個區域。在下列範例中，您將 AMI 從主要商業分割區複製到 AWS GovCloud (US) 分割區，特別是從 `us-east-2`區域複製到 `us-gov-east-1`區域。

如果要將 AMI 從一個分割區複製到另一個分割區，請依照下列步驟執行：
+ 透過使用 `CreateStoreImageTask` 將 AMI 存放在當前區域的 S3 儲存貯體中。在此範例中，S3 儲存貯體位於 `us-east-2`。
+ 使用 `DescribeStoreImageTasks` 監控存放任務的進度。當任務完成時，該物件在 S3 儲存貯體中變得可見。
+ 使用您選擇的程序，將存放的 AMI 物件複製到目標分割區中的 S3 儲存貯體。在此範例中，S3 儲存貯體位於 `us-gov-east-1`。
**注意**  
由於每個分割區都需要不同的 AWS 登入資料，因此您無法將 S3 物件直接從一個分割區複製到另一個分割區。跨分割區複製 S3 物件的程序超出本文件的範圍。我們提供下列複製程序作為範例，但您必須使用符合安全性需求的複製程序。  
若要跨分割區複製一個 AMI，複製程序非常簡單明瞭，具體如下：從來源儲存貯體[下載物件](https://docs.aws.amazon.com/AmazonS3/latest/userguide/download-objects.html)至中繼主機 (例如 EC2 執行個體或筆記型電腦)，然後從中繼主機[上傳物件](https://docs.aws.amazon.com/AmazonS3/latest/userguide/upload-objects.html)至目標儲存貯體。對於程序的每個階段，請使用分割區的 AWS 登入資料。
為了更能夠持續使用，請考慮開發一個能管理複製的應用程式，最好可使用 S3 [分段下載和上傳](https://docs.aws.amazon.com/AmazonS3/latest/userguide/mpuoverview.html)。
+ 使用 `CreateRestoreImageTask` 從目標分割區中的 S3 儲存貯體還原 AMI。在此範例中，S3 儲存貯體位於 `us-gov-east-1`。
+ 透過描述 AMI 來監控還原任務的進度，以查看其狀態何時變為可用。您也可以透過描述快照來監控組成還原 AMI 的快照進度百分比。

### 製作 AMI 的封存複本
<a name="archival-copies"></a>

您可以透過將其存放在 S3 儲存貯體中，來建立 AMI 的封存複本。AMI 被打包為 S3 中的單一物件，並且所有 AMI 中繼資料 (不包括共享資訊) 作為存放之 AMI 的一部分保留。AMI 資料被壓縮為儲存程序的一部分。包含可輕鬆壓縮之資料的 AMI 會在 S3 中產生較小的物件。為了降低成本，您可以使用較低成本的 S3 儲存層。如需詳細資訊，請參閱 [Amazon S3 儲存類別](https://aws.amazon.com/s3/storage-classes/)和 [Amazon S3 定價](https://aws.amazon.com/s3/pricing/)

## 限制
<a name="ami-store-restore-limitations"></a>
+ 若要存放 AMI，您的 AWS 帳戶 必須擁有 AMI 及其快照，或者 AMI 及其快照必須[直接與您的帳戶共用](sharingamis-explicit.md)。如果 AMI 僅[公開共用](sharingamis-intro.md)，則無法儲存 AMI。
+ 使用這些 API 僅能存放 EBS 後端 AMI。
+ 不支援半虛擬 (PV) AMI。
+ 可存放的 AMI (壓縮之前) 大小限制為 5,000 GB。
+ 儲存映像請求配額：正在進行 1，200 GB 的儲存工作 （快照資料）。
+ 還原映像請求的配額：進行中 600 GB 的還原工作 （快照資料）。
+ 在存放任務期間，不得刪除快照，且執行存放的 IAM 主體必須具有快照的存取權，否則存放程序將會失敗。
+ 您無法在同一個 S3 儲存貯體中建立 AMI 的多個複本。
+ 存放在 S3 儲存貯體中的 AMI 無法使用其原始 AMI ID 還原。您可以透過使用 [AMI 別名](https://docs.aws.amazon.com/systems-manager/latest/userguide/parameter-store-ec2-aliases.html)來減輕這種情況。
+ 目前，只有使用 AWS 、 AWS Command Line Interface SDKs APIs 和 Amazon EC2 API 才能支援存放區和還原 API。您無法使用 Amazon EC2 主控台存放和還原 AMI。

## 成本
<a name="store-restore-costs"></a>

當您使用 S3 存放和還原 AMI 時，需支付存放和還原 API 所使用之服務的費用，以及資料傳輸的費用。這些 API 使用 S3 和 EBS 直接 API (由這些 API 內部使用以存取快照資料)。如需詳細資訊，請參閱 [Amazon S3 定價](https://aws.amazon.com/s3/pricing/)和 [Amazon EBS 定價](https://aws.amazon.com/ebs/pricing/)。

# AMI 存放和還原如何運作
<a name="store-restore-how-it-works"></a>

要使用 S3 存放和還原 AMI，請使用以下 API：
+ `CreateStoreImageTask` – 將 AMI 存放在 S3 儲存貯體中
+ `DescribeStoreImageTasks` – 提供 AMI 存放任務的進度
+ `CreateRestoreImageTask` – 從 S3 儲存貯體還原 AMI

**Topics**
+ [CreateStoreImageTask](#CreateStoreImageTask)
+ [DescribeStoreImageTasks](#DescribeStoreImageTasks)
+ [CreateRestoreImageTask](#CreateRestoreImageTask)
+ [檔案路徑](#file-paths-in-s3)

## CreateStoreImageTask
<a name="CreateStoreImageTask"></a>

`CreateStoreImageTask` API 將 AMI 做為單一物件存放在 S3 儲存貯體。

API 建立一個從 AMI 及其快照中讀取所有資料的任務，然後使用 [S3 分段上傳](https://docs.aws.amazon.com/AmazonS3/latest/userguide/mpuoverview.html)將資料存放在 S3 物件中。API 採用 AMI 的所有元件，包括大多數非特定區域的 AMI 中繼資料以及 AMI 中包含的所有 EBS 快照，並將其打包為 S3 中的單一物件。資料會在上傳過程中進行壓縮，以減少 S3 中使用的空間量，因此 S3 中的物件可能會小於 AMI 中快照大小的總和。

如果呼叫此 API 的帳戶可見 AMI 和快照標籤，則會將其保留。

S3 中的物件與 AMI 具有相同的 ID，但有 `.bin` 副檔名。下列資料也會作為 S3 中繼資料標籤存放於 S3 物件：AMI 名稱、AMI 描述、AMI 註冊日期、AMI 擁有者帳戶，以及存放操作的時間戳記。

完成任務所需的時間取決於 AMI 的大小。這也取決於有多少其他任務正在進行中，因為任務已排入佇列。您可以呼叫 `DescribeStoreImageTasks` API 追蹤任務進度。

所有進行中 AMIs 的大小總和限制為每個帳戶 1，200 GB 的 EBS 快照資料。系統會拒絕更多的任務建立，除非進行中的任務數量小於限制數量。例如，如果目前存放了一個具有 200 GB 快照資料的 AMI，以及另一個具有 400 GB 快照資料的 AMI，則會接受另一個請求，因為進行中的總量為小於限制的 600 GB。但是，如果目前正在存放具有 1，200 GB 快照資料的單一 AMI，則會拒絕進一步的任務，直到任務完成為止。

## DescribeStoreImageTasks
<a name="DescribeStoreImageTasks"></a>

`DescribeStoreImageTasks` API 描述了 AMI 存放任務的進度。您可以描述指定 AMI 的任務。如果未指定 AMI，您會取得過去 31 天內處理的所有存放映像任務的分頁清單。

對於每個 AMI 任務，回應會指示任務為 `InProgress`、`Completed` 或 `Failed`。對於任務 `InProgress`，回應會以百分比顯示預估進度。

任務會以相反的時間順序列出。

目前，只能檢視上個月的任務。

## CreateRestoreImageTask
<a name="CreateRestoreImageTask"></a>

`CreateRestoreImageTask` API 啟動一個任務，從先前使用 `CreateStoreImageTask` 請求建立的 S3 物件還原為 AMI。

還原任務可以在執行存放任務的相同或不同區域中執行。

將從中還原 AMI 物件的 S3 儲存貯體必須位於請求還原任務的相同區域。AMI 將在此區域還原。

AMI 會還原其中繼資料，例如名稱、描述和對應於存放 AMI 之值的區塊型儲存設備映射。此帳戶的區域中，AMI 的名稱必須是唯一的。如果您沒有提供名稱，新的 AMI 將取得與原始 AMI 相同的名稱。AMI 取得在還原過程中產生的新 AMI ID。

完成 AMI 還原任務所需的時間取決於 AMI 的大小。這也取決於有多少其他任務正在進行中，因為任務已排入佇列。您可以透過描述 AMI ([describe-images](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html)) 或其 EBS 快照 ([describe-snapshots](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-snapshots.html)) 來查看任務的進度。如果任務失敗，AMI 和快照集會轉為失敗狀態。

所有進行中 AMIs 的大小總和限制為每個帳戶 EBS 快照資料的 600 GB （根據還原後的大小）。系統會拒絕更多的任務建立，除非進行中的任務數量小於限制數量。

## 檔案路徑
<a name="file-paths-in-s3"></a>

您可以透過下列方式在存放和還原 AMI 時使用檔案路徑：
+ 在 S3 中存放 AMI 時，可以將檔案路徑新增到儲存貯體名稱。在內部，系統會將路徑與儲存貯體名稱分隔開來，然後將路徑新增至產生用來存放 AMI 的物件金鑰。完整的物件路徑會顯示在 API 呼叫的回應中。
+ 還原 AMI 時，由於物件索引鍵參數可用，因此可以將路徑新增至物件索引鍵值的開頭。

**範例：使用附加檔案路徑的儲存貯體名稱**  
儲存 AMI 時，請在儲存貯體名稱後指定檔案路徑。

```
amzn-s3-demo-bucket/path1/path2
```

下列為產生的物件金鑰。

```
path1/path2/ami-0abcdef1234567890.bin
```

若要還原 AMI，您可指定儲存貯體名稱和物件金鑰。如需範例，請參閱 [建立存放映像任務](work-with-ami-store-restore.md#create-store-image-task)。

# 建立存放映像任務
<a name="work-with-ami-store-restore"></a>

當您將 AMI 存放在 S3 儲存貯體時，會建立存放映像任務。您可以使用存放映像任務來監控流程的進度與結果。

**Topics**
+ [保護您的 AMI](#securing-amis)
+ [使用 S3 存放和還原 AMI 的許可](#ami-s3-permissions)
+ [建立存放映像任務](#create-store-image-task)
+ [建立還原映像任務](#create-restore-image-task)

## 保護您的 AMI
<a name="securing-amis"></a>

請務必確保 S3 儲存貯體具有足夠的安全性來保護 AMI 的內容，而且只要 AMI 物件保留在儲存貯體中，安全性就必須要維護。如果無法完成，則不建議使用這些 API。確保不允許公開存取 S3 儲存貯體。我們建議針對存放 AMI 的 S3 儲存貯體啟用[伺服器端加密](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html)，儘管這不是必要的。

如需如何為 S3 儲存貯體設置適當安全性設定的相關資訊，請檢閱下列安全性主題：
+ [封鎖對 Amazon S3 儲存體的公開存取權](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-control-block-public-access.html)
+ [對 Amazon S3 儲存貯體設定預設伺服器端加密行為](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-encryption.html)
+ [我可以使用哪些 S3 儲存貯體政策來符合 AWS Config 規則 s3-bucket-ssl-requests-only？](https://repost.aws/knowledge-center/s3-bucket-policy-for-config-rule)
+ [啟用 Amazon S3 伺服器存取記錄日誌](https://docs.aws.amazon.com/AmazonS3/latest/userguide/enable-server-access-logging.html)

將 AMI 快照複製到 S3 物件時，資料會透過 TLS 連線複製。您可以將 AMI 與加密的快照一起存放，但快照會在存放程序中解密。

## 使用 S3 存放和還原 AMI 的許可
<a name="ami-s3-permissions"></a>

若您的 IAM 主體將使用 Amazon S3 存放或還原 AMI，則您需要授予其所需的許可。

下列範例政策包含允許 IAM 主體執行存放和還原任務所需的所有動作。

您還可建立僅授予委託人存取特定資源的 IAM 政策。如需更多範例政策，請參閱《*IAM 使用者指南*》中的[存取 AWS 資源的管理](https://docs.aws.amazon.com/IAM/latest/UserGuide/access.html)。

**注意**  
若組成 AMI 的快照已進行加密，或者您的帳戶依預設啟用了加密功能，則您的 IAM 主體必須具有使用 KMS 金鑰的許可權限。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:DeleteObject",
                "s3:GetObject",
                "s3:ListBucket",
                "s3:PutObject",
                "s3:PutObjectTagging",
                "s3:AbortMultipartUpload",
                "ebs:CompleteSnapshot",
                "ebs:GetSnapshotBlock",
                "ebs:ListChangedBlocks",
                "ebs:ListSnapshotBlocks",
                "ebs:PutSnapshotBlock",
                "ebs:StartSnapshot",
                "ec2:CreateStoreImageTask",
                "ec2:DescribeStoreImageTasks",
                "ec2:CreateRestoreImageTask",
                "ec2:GetEbsEncryptionByDefault",
                "ec2:DescribeTags",
                "ec2:CreateTags"
            ],
            "Resource": "*"
        }
    ]
}
```

------

## 建立存放映像任務
<a name="create-store-image-task"></a>

若要在 S3 儲存貯體存放 AMI，請先建立存放映像任務。完成任務所需的時間取決於 AMI 的大小。您可追蹤任務進度，直到任務成功或失敗為止。

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

**若要建立存放映像任務**  
使用 [create-store-image-task](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-store-image-task.html) 命令。

```
aws ec2 create-store-image-task \
    --image-id ami-0abcdef1234567890 \
    --bucket amzn-s3-demo-bucket
```

以下為範例輸出。

```
{
  "ObjectKey": "ami-0abcdef1234567890.bin"
}
```

**若要描述存放任務的進度**  
使用 [describe-store-image-tasks](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-store-image-tasks.html) 命令。

```
aws ec2 describe-store-image-tasks \
    --image-ids ami-0abcdef1234567890 \
    --query StoreImageTaskResults[].StoreTaskState \
    --output text
```

以下為範例輸出。

```
InProgress
```

------
#### [ PowerShell ]

**若要建立存放映像任務**  
使用 [New-EC2StoreImageTask](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2StoreImageTask.html) cmdlet。

```
New-EC2StoreImageTask `
    -ImageId ami-0abcdef1234567890 `
    -Bucket amzn-s3-demo-bucket
```

以下為範例輸出。

```
ObjectKey         : ami-0abcdef1234567890.bin
```

**若要描述存放任務的進度**  
使用 [Get-EC2StoreImageTask](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2StoreImageTask.html) cmdlet。

```
(Get-EC2StoreImageTask -ImageId ami-0abcdef1234567890).StoreTaskState
```

以下為範例輸出。

```
InProgress
```

------

## 建立還原映像任務
<a name="create-restore-image-task"></a>

您必須指定已還原 AMI 的名稱。此帳戶的區域中，AMI 的名稱必須是唯一的。還原的 AMI 會取得一個新的 AMI ID。

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

**若要建立還原映像任務**  
使用 [create-restore-image-task](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-restore-image-task.html) 命令。

```
aws ec2 create-restore-image-task \
    --object-key ami-0abcdef1234567890.bin \
    --bucket amzn-s3-demo-bucket \
    --name "my-restored-ami"
```

以下為範例輸出。

```
{
   "ImageId": "ami-1234567890abcdef0"
}
```

------
#### [ PowerShell ]

**若要建立還原映像任務**  
使用 [New-EC2RestoreImageTask](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2RestoreImageTask.html) cmdlet。

```
New-EC2RestoreImageTask `
    -ObjectKey ami-0abcdef1234567890.bin `
    -Bucket amzn-s3-demo-bucket `
    -Name "my-restored-ami"
```

以下為範例輸出。

```
ImageId         : ami-1234567890abcdef0
```

------

# 使用 AMI 原始伺服器追蹤 AMI 的原始伺服器
<a name="ami-ancestry"></a>

AMI 上階透過傳回其所有上階 AMI IDs 和區域，協助您追蹤 AMIs 的原始伺服器。當您建立或複製 AMI 時，新的 AMI 會保留其來源 （父） AMI 的 ID 和區域。這可讓您將 AMIs 鏈追蹤回根 AMI。

**主要優點**

使用 AMI 原始伺服器可協助您：
+ 追蹤 AMI 衍生產品以確保符合內部政策。
+ 在舊版 AMIs 中發現安全問題時，識別潛在易受攻擊的 AMI。
+ 維持跨多個區域的 AMI 原始伺服器可見性。

**Topics**
+ [AMI 原始伺服器的運作方式](#how-ami-ancestry-works)
+ [考量事項](#ami-ancestry-conditions)
+ [檢視 AMI 原始伺服器](#view-ami-ancestry)
+ [識別來源 AMI](#identify-source-ami-used-to-create-new-ami)

## AMI 原始伺服器的運作方式
<a name="how-ami-ancestry-works"></a>

AMI 原始伺服器會識別用來建立指定 AMI 的父系 AMI、父系的父系，以此類推，直到根 AMI。以下是其運作方式：
+ 每個 AMI 會顯示其來源 （父系） AMI 的 ID 和區域。
+ 從您選取的 AMI 開始，原始項目清單會依序顯示每個父系 AMI。
+ 原始項目清單會追蹤回 ，直到到達根 AMI。根 AMI 是下列其中一項：
  + 來自[已驗證供應商](sharing-amis.md#verified-ami-provider)的公有 AMI （由其擁有者別名識別，即 `amazon`或 `aws-marketplace`)。
  + 沒有記錄祖先的 AMI。例如，使用 [RegisterImage](creating-an-ami-ebs.md#creating-launching-ami-from-snapshot) 直接從一組快照建立 AMI 時，沒有要追蹤的來源 AMI，與從執行個體建立 AMI 時不同。
  + 來源 AMI 來自不同[分割區](https://docs.aws.amazon.com/glossary/latest/reference/glos-chap.html#partition)的 AMI。
  + 清單中的第 50 個 AMI。原始清單中AMIs 數目上限為 50。

## 考量事項
<a name="ami-ancestry-conditions"></a>
+ 來源 AMI 的 ID 和區域僅適用於使用 [CreateImage](creating-an-ami-ebs.md#how-to-create-ebs-ami)、[CopyImage](CopyingAMIs.md#ami-copy-steps) 或 [CreateRestoreImageTask](store-restore-how-it-works.md#CreateRestoreImageTask) 建立AMIs。
+ 對於使用 [CreateImage](creating-an-ami-ebs.md#how-to-create-ebs-ami) 建立AMIs （從執行個體建立 AMI)，來源 AMI ID 是用來啟動執行個體的 AMI ID。
+ 來源 AMI 資訊不適用於：
  + 使用 [RegisterImage](creating-an-ami-ebs.md#creating-launching-ami-from-snapshot) 建立AMIs，因為它們是從快照建立的。
  + 對於某些較舊AMIs。
+ 來源 AMI 資訊會在下列情況下保留：
  + AMIs會跨區域複製。
  + 已取消註冊 （刪除） 來源 AMIs。
  + 您無法存取來源 AMIs。
+ 每個前代清單限制為 50 AMIs。

## 檢視 AMI 原始伺服器
<a name="view-ami-ancestry"></a>

您可以使用下列方法檢視 AMI 的祖系。

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

**檢視 AMI 的原始伺服器**

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

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

1. 選取 AMI，然後選擇 **AMI 原始標籤**。

1. **AMI 祖系項目**表列出祖系清單中的所有 AMIs。
   + **AMI ID** – 原始清單中每個 AMI 的識別符。資料表中的第一個項目是選取的 AMI，後面接著其祖先。
   + **來源 AMI ID** – 建立 AMI ID 欄中 AMI 的 **AMI ID**。破折號 (**-**) 表示 AMI 原始清單的結尾。
   + **來源 AMI 區域** – AWS 區域 來源 AMI 所在的 。
   + **上階層級** – 上階清單中的位置，其中：
     + **0 （輸入 AMI)** 表示您想知道其前代的所選 AMI。
     + 增加數字會顯示較舊的祖先。
     + ***n* （原始 AMI)** 表示根 AMI，而數字表示前者清單過去的時間。
   + **建立日期** – 建立 AMI 時，採用 UTC 格式。
   + **擁有者別名** – AMI 擁有者的別名 （例如 `amazon`)。破折號 (**-**) 表示 AMI 沒有擁有者別名。

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

**檢視 AMI 的原始伺服器**  
使用 [get-image-ancestry](https://docs.aws.amazon.com/cli/latest/reference/ec2/get-image-ancestry.html) 命令並指定 AMI ID。

```
aws ec2 get-image-ancestry \
    --image-id ami-1111111111EXAMPLE \
    --region us-east-1
```

以下為範例輸出。輸出會依祖先順序列出 AMIs：第一個項目是指定的 （輸入） AMI，後面接著其父系、父系的父系等，並以根 AMI 結尾。

```
{
    "ImageAncestryEntries": [
        {
            "CreationDate": "2025-01-17T18:37:50.000Z",
            "ImageId": "ami-1111111111EXAMPLE", // Input AMI
            "SourceImageId": "ami-2222222222EXAMPLE",
            "SourceImageRegion": "us-east-1"

        },
        {
            "CreationDate": "2025-01-17T18:37:50.000Z",
            "ImageId": "ami-2222222222EXAMPLE", // Parent AMI
            "SourceImageId": "ami-3333333333EXAMPLE",
            "SourceImageRegion": "us-east-1"
        },
        ...
        {
            "CreationDate": "2025-01-17T18:37:50.000Z",
            "ImageId": "ami-8888888888EXAMPLE", // Root AMI
            "ImageOwnerAlias": "aws-marketplace",
            "SourceImageId": "ami-9999999999EXAMPLE",
            "SourceImageRegion": "us-east-2"
        }
    ]
}
```

------
#### [ PowerShell ]

**檢視 AMI 的原始伺服器**  
使用 [Get-EC2ImageAncestry](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2ImageAncestry.html) cmdlet。

```
Get-EC2ImageAncestry -ImageId ami-1111111111EXAMPLE
```

以下為範例輸出。輸出會依祖先順序列出 AMIs：第一個項目是指定的 （輸入） AMI，後面接著其父系、父系的父系等，並以根 AMI 結尾。

```
ImageAncestryEntries : {
    @{
        CreationDate = "2025-01-17T18:37:50.000Z"
        ImageId = "ami-1111111111EXAMPLE"    # Input AMI
        SourceImageId = "ami-2222222222EXAMPLE"
        SourceImageRegion = "us-east-1"
    },
    @{
        CreationDate = "2025-01-17T18:37:50.000Z"
        ImageId = "ami-2222222222EXAMPLE"    # Parent AMI
        SourceImageId = "ami-3333333333EXAMPLE"
        SourceImageRegion = "us-east-1"
    },
    ...
    @{
        CreationDate = "2025-01-17T18:37:50.000Z"
        ImageId = "ami-8888888888EXAMPLE"    # Root AMI
        ImageOwnerAlias = "aws-marketplace"
        SourceImageId = "ami-9999999999EXAMPLE"
        SourceImageRegion = "us-east-2"
    }
}
```

------

## 識別來源 AMI
<a name="identify-source-ami-used-to-create-new-ami"></a>

如果您只需要識別用來建立 AMI 的直接父系 （來源） AMI，您可以使用下列方法。

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

**識別用來建立所選 AMI 的來源 AMI**

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

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

1. 選取 AMI 以檢視詳細資訊。

   來源 AMI 資訊於下列欄位顯示：**來源 AMI ID** 和**來源 AMI 區域**

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

**識別用來建立指定 AMI 的來源 AMI**  
使用 [describe-images](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html) 命令。

```
aws ec2 describe-images \
    --region us-east-1 \
    --image-ids ami-0abcdef1234567890 \
    --query "Images[].{ID:SourceImageId,Region:SourceImageRegion}"
```

以下為範例輸出。

```
[
    {
        "ID": "ami-0abcdef1234567890",
        "Region": "us-west-2"
    }
}
```

------
#### [ PowerShell ]

**識別用來建立指定 AMI 的來源 AMI**  
使用 [Get-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Image.html) cmdlet。

```
Get-EC2Image -ImageId ami-0abcdef1234567890 | Select SourceImageId, SourceImageRegion
```

以下為範例輸出。

```
SourceImageId           SourceImageRegion
-------------           -----------------
ami-0abcdef1234567890 us-west-2
```

------

# 管理及監控 AMI 用量
<a name="ec2-ami-usage"></a>

AWS 提供多種功能，可協助您有效管理和監控 AMI 用量。您可以追蹤哪些帳戶正在使用您的共用 AMIs、識別您的 AMIs 上次使用的時間，以及探索您 中哪些資源 AWS 帳戶 參考特定 AMIs。

下表提供了管理及監控 AMI 用量的功能概觀：


| 功能 | 使用案例 | 主要優點 | 
| --- | --- | --- | 
| [AMI 用量報告](your-ec2-ami-usage.md) | 了解哪些 AWS 帳戶 正在使用您的 AMIs，以及每個 AMI 的使用量。 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/ec2-ami-usage.html)  | 
| [上次使用追蹤](ami-last-launched-time.md) | 檢查上次使用您的 AMI 的時間 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/ec2-ami-usage.html)  | 
| [AMI 參考檢查](ec2-ami-references.md) | 確保您的 AWS 資源使用最新的合規 AMIs。 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/ec2-ami-usage.html)  | 

**Topics**
+ [檢視您的 AMI 用量](your-ec2-ami-usage.md)
+ [檢查上次使用 Amazon EC2 AMI 的時間](ami-last-launched-time.md)
+ [確定參考指定 AMI 的資源](ec2-ami-references.md)

# 檢視您的 AMI 用量
<a name="your-ec2-ami-usage"></a>

如果您與其他 共用 Amazon Machine Image AMIs) AWS 帳戶，無論是與特定 AWS 帳戶、組織、組織單位 (OUs) 或公開 ，您都可以透過建立 AMIs用量報告來查看這些 AMI 的使用方式。報告提供對以下項目的深入解析：
+ 在 EC2 執行個體或啟動範本中 AWS 帳戶 使用您的 AMIs 
+ 參考每個 AMI 的 EC2 執行個體或啟動範本的數目

AMI 用量報告藉由提供以下協助可助您更高效地管理 AMI：
+ 識別參考 AMIs AWS 帳戶 和資源類型，以便您可以安全地取消註冊或停用 AMIs。
+ 確定未使用的 AMI 以取消註冊，進而降低儲存費用。
+ 確定您最常用的 AMI。

**Topics**
+ [AMI 用量報告運作方式](#how-ami-usage-reports-work)
+ [建立 AMI 用量報告](#create-ami-usage-reports)
+ [檢視 AMI 用量報告](#view-ami-usage-reports)
+ [刪除 AMI 用量報告](#delete-ami-usage-reports)
+ [匯入配額](#ami-usage-report-quotas)

## AMI 用量報告運作方式
<a name="how-ami-usage-reports-work"></a>

若建立 AMI 用量報告，您可指定：
+ 待報告的 AMI。
+  AWS 帳戶 要檢查的 （特定帳戶或所有帳戶）。
+ 待檢查的資源類型 (EC2 執行個體、啟動範本，或者兩者）。
+ 若是啟動範本，則為待檢查的版本數目 (預設為 20 個最新版本）。

Amazon EC2 可針對每個 AMI 建立一個單獨的請求。每份報告皆提供：
+  AWS 帳戶 使用 AMI 的 清單。
+ 根據每個帳戶的資源類型參考 AMI 的資源計數。請注意，針對啟動範本，若在啟動範本的多個版本中參考 AMI，則計數僅為 1。

**重要**  
若產生 AMI 用量報告，可能不會包含最新活動。過去 24 小時小時的執行個體活動，以及過去幾天的啟動範本活動，可能皆不會在報告中顯示。

Amazon EC2 在建立報告後 30 天會自動刪除報告。您可透過 EC2 主控台下載報告，以便在本機保留。

## 建立 AMI 用量報告
<a name="create-ami-usage-reports"></a>

如需檢視如何使用 AMI，必須先建立 AMI 用量報告，指定要報告的帳戶與資源類型。一旦建立報告，即可檢視報告內容。您可透過 EC2 主控台下載報告。

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

**如需建立 AMI 用量報告**

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

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

1. 選取 AMI，然後選擇**動作**、**AMI 用量**、**檢視我的 AMI 用量**。

1. 在**建立我的 AMI 用量報告**頁面，執行以下操作：

   1. 針對**資源類型**，選取要報告的一個或多個資源類型。

   1. 針對**帳戶**，執行下列其中一項操作：
      + 選擇**指定帳戶 ID**，然後針對要報告的每個帳戶，選擇**新增帳戶 ID**。
      + 選擇**包括所有帳戶**，以報告全部帳戶。

   1. 選擇**建立我的 AMI 用量報告**。

1. 在 AMI 頁面，選擇**我的 AMI 用量**索引標籤。

1. 選擇報告 ID 來檢視其詳細資訊。

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

**如需針對帳戶清單建立 AMI 用量報告**  
請使用以下必要參數並搭配 [create-image-usage-report](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-image-usage-report.html) 命令：
+ `--image-id` – 待報告 AMI 的 ID。
+ `--resource-types` – 待檢查資源的類型。在以下範例中，待檢查資源類型為 EC2 執行個體及啟動範本。另外還會指定待檢查啟動範本版本的數目 (`version-depth=100`)。

 如需報告特定帳戶，使用 `--account-ids` 參數來指定待報告的每個帳戶 ID。

```
aws ec2 create-image-usage-report \
    --image-id ami-0abcdef1234567890 \
    --account-ids 111122223333 444455556666 123456789012 \
    --resource-types ResourceType=ec2:Instance \
      'ResourceType=ec2:LaunchTemplate,ResourceTypeOptions=[{OptionName=version-depth,OptionValues=100}]'
```

**如需建立所有帳戶的 AMI 用量報告**  
如需使用指定 AMI 來報告所有帳戶，可使用同一命令但省略 `--account-ids` 參數。

```
aws ec2 create-image-usage-report \
    --image-id ami-0abcdef1234567890 \
    --resource-types ResourceType=ec2:Instance \
      'ResourceType=ec2:LaunchTemplate,ResourceTypeOptions=[{OptionName=version-depth,OptionValues=100}]'
```

以下為範例輸出。

```
{
    "ReportId": "amiur-00b877d192f6b02d0"
}
```

**如需監控報告建立狀態**  
請使用 [describe-image-usage-reports](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-image-usage-reports.html) 命令，然後指定報告 ID。

```
aws ec2 describe-image-usage-reports --report-ids amiur-00b877d192f6b02d0
```

以下為範例輸出。`State` 欄位的初始值為 `pending`。為了能夠檢視報告項目，狀態必須為 `available`。

```
{
    "ImageUsageReports": [
        {
            "ImageId": "ami-0e9ae3dc21c2b3a64",
            "ReportId": "amiur-abcae3dc21c2b3999",
            "ResourceTypes": [
                {"ResourceType": "ec2:Instance"}
            ],
            "State": "pending",
            "CreationTime": "2025-09-29T13:27:12.322000+00:00",
            "ExpirationTime": "2025-10-28T13:27:12.322000+00:00"
        }
    ]
}
```

------
#### [ PowerShell ]

**如需針對帳戶清單建立 AMI 用量報告**  
請使用以下必要參數並搭配 [New-EC2ImageUsageReport](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2ImageUsageReport.html) cmdlet：
+ `-ImageId` – 待報告 AMI 的 ID。
+ `-ResourceType` – 待檢查資源的類型。在以下範例中，待檢查資源類型為 EC2 執行個體及啟動範本。另外還會指定待檢查啟動範本版本的數目 (`'version-depth' = 100`)。

 如需報告特定帳戶，使用 `-AccountId` 參數來指定待報告的每個帳戶 ID。

```
New-EC2ImageUsageReport `
    -ImageId ami-0abcdef1234567890 `
    -AccountId 111122223333 444455556666 123456789012 `
    -ResourceType @(
        @{ResourceType = 'ec2:Instance'},
        @{ResourceType = 'ec2:LaunchTemplate'ResourceTypeOptions = @{'version-depth' = 100}
        })
```

**如需建立所有帳戶的 AMI 用量報告**  
如需使用指定 AMI 來報告所有帳戶，可使用同一命令但省略 `-AccountId` 參數。

```
New-EC2ImageUsageReport `
    -ImageId ami-0abcdef1234567890 `
    -ResourceType @(
        @{ResourceType = 'ec2:Instance'},
        @{ResourceType = 'ec2:LaunchTemplate'ResourceTypeOptions = @{'version-depth' = 100}
        })
```

以下為範例輸出。

```
ReportId
--------
amiur-00b877d192f6b02d0
```

**如需監控報告建立狀態**  
請使用 [Get-EC2ImageUsageReport](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2ImageUsageReport.html) 命令，然後指定報告 ID。

```
Get-EC2ImageUsageReport -ReportId amiur-00b877d192f6b02d0
```

以下為範例輸出。`State` 欄位的初始值為 `pending`。為了能夠檢視報告項目，狀態必須為 `available`。

```
ImageUsageReports
-----------------
{@{ImageId=ami-0e9ae3dc21c2b3a64; ReportId=amiur-abcae3dc21c2b3999; ResourceTypes=System.Object[]; State=pending; CreationTime=2025-09-29; ExpirationTime=2025-10-28}}
```

------

## 檢視 AMI 用量報告
<a name="view-ami-usage-reports"></a>

您可檢視在過去 30 天針對 AMI 建立的全部用量報告。Amazon EC2 在建立報告後 30 天會自動刪除報告。

針對每個報告，您可以看到使用 AMI AWS 帳戶 的 ，以及針對每個帳戶，依資源類型參考 AMI 的資源計數。您還可查看報告起始建立時間。只有在報告處於**完成** （主控台） 或 `available`(AWS CLI) 狀態時，才能使用此資訊。

**重要**  
若產生 AMI 用量報告，可能不會包含最新活動。過去 24 小時小時的執行個體活動，以及過去幾天的啟動範本活動，可能皆不會在報告中顯示。

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

**檢視 AMI 用量報告**

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

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

1. 選取 AMI。

1. 選擇**我的用量報告**索引標籤。

   報告清單會顯示：
   + 過去 30 天內為所選 AMI 產生的所有報告。
   + 對於每個報告，**報告起始時間**欄會顯示報告建立的日期。

1. 選擇報告的 ID，以便檢視其內容。

1. 如需返回 AMI 詳細資訊頁面的**我的用量報告**索引標籤，選擇**檢視此 AMI 的所有報告**。

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

**如需列出指定 AMI 的全部 AMI 用量報告**  
請使用 [describe-image-usage-reports](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-image-usage-reports.html) 命令，然後指定 AMI 的 ID，以便獲取其報告清單。

```
aws ec2 describe-image-usage-reports --image-ids ami-0abcdef1234567890
```

以下為範例輸出。每個報告 ID 會與掃描的資源類型，以及報告建立日期與到期日期一同列示。您可透過此資訊來確定您想要檢視其項目的報告。

```
{
  "ImageUsageReports": [
    {
      "ImageId": "ami-0abcdef1234567890",
      "ReportId": "amiur-1111111111111111",
      "ResourceTypes": [
        {
          "ResourceType": "ec2:Instance"
        }
      ],
      "State": "available",
      "CreationTime": "2025-09-29T13:27:12.322000+00:00",
      "ExpirationTime": "2025-10-28T13:27:12.322000+00:00",
      "Tags": []
    },
    {
      "ImageId": "ami-0abcdef1234567890",
      "ReportId": "amiur-22222222222222222",
      "ResourceTypes": [
        {
          "ResourceType": "ec2:Instance"
        },
        {
          "ResourceType": "ec2:LaunchTemplate"
        }
      ],
      "State": "available",
      "CreationTime": "2025-10-01T13:27:12.322000+00:00",
      "ExpirationTime": "2025-10-30T13:27:12.322000+00:00",
      "Tags": []
    }
  ],
  "NextToken": "opaque"
}
```

**如需檢視指定 AMI 的 AMI 用量報告內容**  
請使用 [describe-image-usage-report-entries](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-image-usage-report-entries.html) 命令，然後指定 AMI 的 ID。回應會傳回指定 AMI 的所有報告，並顯示已使用該 AMI 的帳戶及其資源計數。

```
aws ec2 describe-image-usage-report-entries --image-ids ami-0abcdef1234567890
```

以下為範例輸出。

```
{
  "ImageUsageReportEntries": [
    {
      "ImageId": "ami-0abcdef1234567890",
      "ResourceType": "ec2:Instance",
      "AccountId": "123412341234",
      "UsageCount": 15,
      "ReportCreationTime": "2025-09-29T13:27:12.322000+00:00",
      "ReportId": "amiur-1111111111111111"
    },
    {
      "ImageId": "ami-0abcdef1234567890",
      "ResourceType": "ec2:Instance",
      "AccountId": "123412341234",
      "UsageCount": 2,
      "ReportCreationTime": "2025-10-01T13:27:12.322000+00:00",
      "ReportId": "amiur-22222222222222222"
    },
    {
      "ImageId": "ami-0abcdef1234567890",
      "ResourceType": "ec2:Instance",
      "AccountId": "001100110011",
      "UsageCount": 39,
      "ReportCreationTime": "2025-10-01T13:27:12.322000+00:00",
      "ReportId": "amiur-22222222222222222"
    }
  ],
  "NextToken": "opaque"
}
```

**如需檢視指定報告的 AMI 用量報告內容**  
請使用 [describe-image-usage-report-entries](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-image-usage-report-entries.html) 命令，然後指定報告的 ID。針對指定報告，回應可傳回全部項目，並顯示已使用 AMI 的帳戶以及資源計數。

```
aws ec2 describe-image-usage-report-entries --report-ids amiur-11111111111111111
```

以下為範例輸出。

```
{
  "ImageUsageReportEntries": [
    {
      "ImageId": "ami-0abcdef1234567890",
      "ResourceType": "ec2:Instance",
      "AccountId": "123412341234",
      "UsageCount": 15,
      "ReportCreationTime": "2025-09-29T13:27:12.322000+00:00",
      "ReportId": "amiur-11111111111111111"
    },
    {
      "ImageId": "ami-0abcdef1234567890",
      "ResourceType": "ec2:LaunchTemplate",
      "AccountId": "123412341234",
      "UsageCount": 4,
      "ReportCreationTime": "2025-09-29T13:27:12.322000+00:00",
      "ReportId": "amiur-11111111111111111"
    },
    {
      "ImageId": "ami-0abcdef1234567890",
      "ResourceType": "ec2:LaunchTemplate",
      "AccountId": "001100110011",
      "UsageCount": 2,
      "ReportCreationTime": "2025-09-29T13:27:12.322000+00:00",
      "ReportId": "amiur-11111111111111111"
    }
  ],
  "NextToken": "opaque"
}
```

------
#### [ PowerShell ]

**如需列出指定 AMI 的全部 AMI 用量報告**  
請使用 [Get-EC2ImageUsageReport](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2ImageUsageReport.html) cmdlet，然後指定 AMI 的 ID，以便獲取其報告清單。

```
Get-EC2ImageUsageReport -ImageId ami-0abcdef1234567890
```

以下為範例輸出。每個報告 ID 會與掃描的資源類型，以及報告建立日期與到期日期一同列示。您可透過此資訊來確定您想要檢視其項目的報告。

```
@{
    ImageUsageReports = @(
        @{
            ImageId = "ami-0abcdef1234567890"
            ReportId = "amiur-1111111111111111"
            ResourceTypes = @(
                @{
                    ResourceType = "ec2:Instance"
                }
            )
            State = "available"
            CreationTime = "2025-09-29T13:27:12.322000+00:00"
            ExpirationTime = "2025-10-28T13:27:12.322000+00:00"
        },
        @{
            ImageId = "ami-0abcdef1234567890"
            ReportId = "amiur-22222222222222222"
            ResourceTypes = @(
                @{
                    ResourceType = "ec2:Instance"
                }
            )
            State = "available"
            CreationTime = "2025-09-30T13:27:12.322000+00:00"
            ExpirationTime = "2025-10-29T13:27:12.322000+00:00"
        },
        @{
            ImageId = "ami-0abcdef1234567890"
            ReportId = "amiur-33333333333333333"
            ResourceTypes = @(
                @{
                    ResourceType = "ec2:Instance"
                }
            )
            State = "available"
            CreationTime = "2025-10-01T13:27:12.322000+00:00"
            ExpirationTime = "2025-10-30T13:27:12.322000+00:00"
        }
    )
    NextToken = "opaque"
}
```

**如需檢視指定 AMI 的 AMI 用量報告內容**  
請使用 [Get-EC2ImageUsageReportEntry](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2ImageUsageReportEntry.html) cmdlet，然後指定 AMI 的 ID。回應會傳回指定 AMI 的所有報告，並顯示已使用該 AMI 的帳戶及其資源計數。

```
Get-EC2ImageUsageReportEntry -ImageId ami-0abcdef1234567890
```

以下為範例輸出。

```
ImageUsageReportEntries : {@{
    ImageId = "ami-0abcdef1234567890"
    ResourceType = "ec2:Instance"
    AccountId = "123412341234"
    UsageCount = 15
    ReportCreationTime = "2025-09-29T13:27:12.322000+00:00"
    ReportId = "amiur-1111111111111111"
    }, @{
    ImageId = "ami-0abcdef1234567890"
    ResourceType = "ec2:Instance"
    AccountId = "123412341234"
    UsageCount = 7
    ReportCreationTime = "2025-09-30T13:27:12.322000+00:00"
    ReportId = "amiur-22222222222222222"
    }...}
NextToken : opaque
```

**如需檢視指定報告的 AMI 用量報告內容**  
請使用 [Get-EC2ImageUsageReportEntry](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2ImageUsageReportEntry.html) cmdlet，然後指定報告的 ID。針對指定報告，回應可傳回全部項目，並顯示已使用 AMI 的帳戶以及資源計數。

```
Get-EC2ImageUsageReportEntry -ReportId amiur-11111111111111111
```

以下為範例輸出。

```
ImageUsageReportEntries : {@{
    ImageId = "ami-0abcdef1234567890"
    ResourceType = "ec2:Instance"
    AccountId = "123412341234"
    UsageCount = 15
    ReportCreationTime = "2025-09-29T13:27:12.322000+00:00"
    ReportId = "amiur-11111111111111111"
    }, @{
    ImageId = "ami-0abcdef1234567890"
    ResourceType = "ec2:LaunchTemplate"
    AccountId = "123412341234"
    UsageCount = 4
    ReportCreationTime = "2025-09-29T13:27:12.322000+00:00"
    ReportId = "amiur-11111111111111111"
    }, @{
    ImageId = "ami-0abcdef1234567890"
    ResourceType = "ec2:LaunchTemplate"
    AccountId = "************"
    UsageCount = 2
    ReportCreationTime = "2025-09-29T13:27:12.322000+00:00"
    ReportId = "amiur-11111111111111111"
    }}
NextToken : opaque
```

------

## 刪除 AMI 用量報告
<a name="delete-ami-usage-reports"></a>

Amazon EC2 會在報告建立之後 30 天內自動將其刪除。您可在該時間之前手動將其刪除。

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

**如需刪除 AMI 用量報告**

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

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

1. 選取 AMI。

1. 選擇**我的 AMI 用量**索引標籤。

1. 選擇待刪除報告旁邊的選項按鈕，然後選擇**刪除**。

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

**如需刪除 AMI 用量報告**  
請使用 [delete-image-usage-report](https://docs.aws.amazon.com/cli/latest/reference/ec2/delete-image-usage-report.html) 命令，然後指定報告的 ID。

```
aws ec2 delete-image-usage-report --report-id amiur-0123456789abcdefg
```

------
#### [ PowerShell ]

**如需刪除 AMI 用量報告**  
請使用 [Remove-EC2ImageUsageReport](https://docs.aws.amazon.com/powershell/latest/reference/items/Remove-EC2ImageUsageReport.html) cmdlet，並指定報告的 ID。

```
Remove-EC2ImageUsageReport -ReportId amiur-0123456789abcdefg
```

------

## 匯入配額
<a name="ami-usage-report-quotas"></a>

在建立 AMI 用量報告時，以下配額適用。這些配額適用於每個 AWS 區域。


| Description | 配額 | 
| --- | --- | 
| 每個 的進行中 (pending) AMI 用量報告 AWS 帳戶 | 2,000 | 
| 每個 AMI 的進行中 (pending) AMI 用量報告 | 1 | 

# 檢查上次使用 Amazon EC2 AMI 的時間
<a name="ami-last-launched-time"></a>

Amazon EC2 會自動追蹤上次使用 AMI 啟動執行個體的日期和時間。如果您有長時間未用於啟動執行個體的 AMI，請考慮該 AMI 是否適合[取消註冊](deregister-ami.md)或[棄用](ami-deprecate.md)。

**考量事項**
+ 使用 AMI 啟動執行個體時，在報告該使用情況之前會有 24 小時延遲。
+ 您必須是 AMI 的擁有者才能取得上次啟動時間。
+ AMI 用量資料自 2017 年 4 月開始提供。

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

**檢視 AMI 的上次啟動時間**

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

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

1. 從篩選條件列中，選擇 **Owned by me** (由我擁有)。

1. 選取 AMI 的核取方塊。

1. 在**詳細資訊**索引標籤上，找到**上次啟動的時間**。

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

**如需藉由描述 AMI 來檢視上次啟動的時間**  
使用 [describe-images](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html) 命令。若 `LastLaunchedTime` 在輸出中不存在，請確認您擁有該 AMI。

```
aws ec2 describe-images \
    --image-id ami-0abcdef1234567890 \
    --query Images[].LastLaunchedTime \
    --output text
```

以下為範例輸出。

```
2025-02-17T20:22:19Z
```

**如需檢視 AMI 的上次啟動的時間屬性**  
請使用 [describe-image-attribute](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-image-attribute.html) 命令。您必須為指定 AMI 的擁有者。

```
aws ec2 describe-image-attribute \
    --image-id ami-0abcdef1234567890 \
    --attribute lastLaunchedTime \
    --query LastLaunchedTime.Value \
    --output text
```

以下為範例輸出。

```
2025-02-17T20:22:19Z
```

------
#### [ PowerShell ]

**如需藉由描述 AMI 來檢視上次啟動的時間**  
使用 [Get-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Image.html) cmdlet。若 `LastLaunchedTime` 在輸出中不存在，請確認您擁有該 AMI。

```
(Get-EC2Image -ImageId ami-0abcdef1234567890).LastLaunchedTime
```

以下為範例輸出。

```
2025-02-17T20:22:19Z
```

**如需檢視 AMI 的上次啟動的時間屬性**  
使用 [Get-EC2ImageAttribute](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2ImageAttribute.html) cmdlet。您必須為指定 AMI 的擁有者。

```
(Get-EC2ImageAttribute `
    -ImageId ami-0abcdef1234567890 `
    -Attribute LastLaunchedTime).LastLaunchedTime
```

以下為範例輸出。

```
2025-02-17T20:22:19Z
```

------

# 確定參考指定 AMI 的資源
<a name="ec2-ami-references"></a>

您可以識別參考指定 Amazon Machine Image (AMIs) AWS 的資源，無論 AMIs 是公有還是私有，還是擁有者。此可見度有助您確認資源使用最新的合規 AMI。

**主要優點**

檢查 AMI 參考有助您：
+ 稽核帳戶中 AMI 的使用。
+ 檢查正在參考的特定 AMI 的位置。
+ 藉由更新資源來參考最新 AMI，以確保合規。

 

**Topics**
+ [支援的資源](#ec2-ami-references-supported-resources)
+ [AMI 參考檢查運作方式](#how-ami-references-works)
+ [所需的 IAM 許可](#ami-references-required-permissions)
+ [檢查 AMI 參考的步驟](#ami-reference-procedures)

## 支援的資源
<a name="ec2-ami-references-supported-resources"></a>

可簽入的 AMI 參考：
+ EC2 執行個體
+ 啟動範本
+ SSM 參數
+ Image Builder 映像配方
+ Image Builder 容器配方

## AMI 參考檢查運作方式
<a name="how-ami-references-works"></a>

**基本操作**

您在執行 AMI 參考檢查時可：
+ 指定待檢查的 AMI。
+ 選擇掃描哪些資源類型。
+ 接收可參考指定 AMI 的資源清單。

**資源類型選取**

在主控台中，您可選取待掃描的資源類型。

在 CLI 中，您可使用以下一個或兩個 CLI 參數，來指定待掃描的資源類型：
+ `IncludeAllResourceTypes`：掃描全部受支援的資源類型。
+ `ResourceTypes`：掃描您指定的資源類型。

**回應範圍**

您可使用 `ResourceTypes` 參數來自訂 `ResourceTypeOptions` 值，藉此限制 EC2 執行個體與啟動範本的回應範圍。主控台與 `IncludeAllResourceTypes` 參數皆使用預設選項值。若 `ResourceTypes` 與 `IncludeAllResourceTypes` 一起使用，`ResourceTypes` 選項值會優先於預設值。

下面為預設值：


| Resource Type (資源類型) | 範圍選項 (`OptionName`) | 用途 | `OptionValue` 與 主控台的預設值 | 
| --- | --- | --- | --- | 
| EC2 執行個體 | state-name | 依據執行個體狀態篩選 | pending、running、shutting-down、terminated、stopping、stopped (所有狀態) | 
| 啟動範本 | version-depth | 指定待檢查的啟動範本版本數目 (自最新版本開始) | 10 (最新版本) | 

## 所需的 IAM 許可
<a name="ami-references-required-permissions"></a>

如需使用 DescribeImageReferences API 來確定參考指定 AMI 的資源，需要下面的 IAM 許可來描述資源：
+ `ec2:DescribeInstances`
+ `ec2:DescribeLaunchTemplates`
+ `ec2:DescribeLaunchTemplateVersions`
+ `ssm:DescribeParameters`
+ `ssm:GetParameters`
+ `imagebuilder:ListImageRecipes`
+ `imagebuilder:ListContainerRecipes`
+ `imagebuilder:GetContainerRecipe`

**使用 DescribeImageReferences API 的 IAM 政策範例**  
下面的範例政策授予您使用 DescribeImageReferences API 的許可，其中包括描述 EC2 執行個體、啟動範本、Systems Manager 參數、Image Builder 映像配方，以及 Image Builder 容器配方的許可。

------
#### [ JSON ]

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": "ec2:DescribeImageReferences",
			"Resource": "*"
		},
		{
			"Effect": "Allow",
			"Action": [
				"ec2:DescribeInstances",
				"ec2:DescribeLaunchTemplates",
				"ec2:DescribeLaunchTemplateVersions",
				"ssm:DescribeParameters",
				"ssm:GetParameters",
				"imagebuilder:ListImageRecipes",
				"imagebuilder:ListContainerRecipes",
				"imagebuilder:GetContainerRecipe"
			],
			"Resource": "*",
			"Condition": {
				"ForAnyValue:StringEquals": {
					"aws:CalledVia": [
						"ec2-images.amazonaws.com"
					]
				}
			}
		}
	]
}
```

------

**重要**  
我們強烈建議使用 AWS 受管政策，[https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEC2ImageReferencesAccessPolicy.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEC2ImageReferencesAccessPolicy.html)而不是自行建立政策。建立僅提供必要許可的自訂 IAM 政策，需要時間與專業知識，並且在新的資源類型可用時，還需要更新。  
`AmazonEC2ImageReferencesAccessPolicy` 受管政策：  
授予使用 DescribeImageReferences API 所需的全部許可 (這些許可包括描述 EC2 執行個體、啟動範本、Systems Manager 參數，以及 Image Builder 容器配方與映像配方)。
在新資源類型變得可用時自動提供支援 (使用 `IncludeAllResourceTypes` 參數時尤其重要)。
您可將 `AmazonEC2ImageReferencesAccessPolicy` 政策連接至您的 IAM 身分 (使用者、群組或角色)。  
若要檢視此政策中包括的許可，請參閱 *AWS 受管政策參考*中的 [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEC2ImageReferencesAccessPolicy.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEC2ImageReferencesAccessPolicy.html)。

## 檢查 AMI 參考的步驟
<a name="ami-reference-procedures"></a>

使用下列程序來識別哪些 AWS 資源正在參考指定的 AMIs。

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

**確定參考指定 AMI 的資源**

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

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

1. 選取一個或多個要檢查參考的 AMI。

1. 請選擇**動作**、**AMI 用量**、**檢視參考的資源**。

1. 在**檢視參考所選 AMI 的資源**頁面：

   1. 對於**資源類型**，請選取一個或多個資源類型。

   1. 請選擇**檢視資源**。

1. **參考所選 AMI 的資源**區段即會顯示。清單顯示參考指定 AMI 的資源。每列可提供以下資訊：
   + **AMI ID** – 參考 AMI 的 ID。
   + **資源類型** – 參考 AMI 的資源的資源類型。
   + **資源 ID** – 參考 AMI 的資源的 ID。

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

**如需檢查特定資源類型的 AMI 參考**  
請使用 `--resource-types` 參數並搭配 [describe-image-references](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-image-references.html) 命令。下面的範例將檢查 EC2 執行個體 (依執行個體狀態確定範圍)、啟動範本 (範圍確定為 20 個最近的啟動範本版本)，以及其他特定資源類型。

```
aws ec2 describe-image-references \
    --image-ids ami-0abcdef1234567890 ami-1234567890abcdef0 \
    --resource-types \
        'ResourceType=ec2:Instance,ResourceTypeOptions=[{OptionName=state-name,OptionValues=[running,pending]}]' \
        'ResourceType=ec2:LaunchTemplate,ResourceTypeOptions=[{OptionName=version-depth,OptionValues=[20]}]' \
        'ResourceType=ssm:Parameter' \
        'ResourceType=imagebuilder:ImageRecipe' \
        'ResourceType=imagebuilder:ContainerRecipe'
```

以下為範例輸出。

```
{
    "ImageReferences": [
        {
            "ImageId": "ami-0abcdef1234567890",
            "ResourceType": "ec2:Instance",
            "Arn": "arn:aws:ec2:us-east-1:123456789012:instance/i-1234567890abcdef0"
        },
        {
            "ImageId": "ami-1234567890abcdef0",
            "ResourceType": "ec2:LaunchTemplate",
            "Arn": "arn:aws:ec2:us-east-1:123456789012:launch-template/lt-1234567890abcdef0"
        }
    ]
}
```

**如需檢查所有受支援資源類型的 AMI 參考**  
請使用 `--include-all-resource-types` 參數並搭配 [describe-image-references](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-image-references.html) 命令。

```
aws ec2 describe-image-references \
    --image-ids ami-0abcdef1234567890 ami-1234567890abcdef0 \
    --include-all-resource-types
```

**檢查所有受支援資源類型與特定選項的 AMI 參考**  
請使用 `--include-all-resource-types` 和 `--resource-types` 參數並搭配 [describe-image-references](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-image-references.html) 命令。此範例將檢查所有資源類型，同時將 EC2 執行個體的回應範圍限定為執行中或擱置中執行個體。

```
aws ec2 describe-image-references \
    --image-ids ami-0abcdef1234567890 ami-1234567890abcdef0 \
    --include-all-resource-types \
    --resource-types 'ResourceType=ec2:Instance,ResourceTypeOptions=[{OptionName=state-name,OptionValues=[running,pending]}]'
```

------
#### [ PowerShell ]

**如需檢查特定資源類型的 AMI 參考**  
請使用 `-ResourceType` 參數並搭配 [New-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2ImageReference.html) cmdlet。下面的範例將檢查 EC2 執行個體 (依執行個體狀態確定範圍)、啟動範本 (範圍確定為 20 個最近的啟動範本版本)，以及其他特定資源類型。

```
Get-EC2ImageReference `
    -ImageId 'ami-0abcdef1234567890', 'ami-1234567890abcdef0' `
    -ResourceType @(
        @{
            ResourceType = 'ec2:Instance'
            ResourceTypeOptions = @(
                @{
                    OptionName = 'state-name'
                    OptionValues = @('running', 'pending')
                }
            )
        },
        @{
            ResourceType = 'ec2:LaunchTemplate'
            ResourceTypeOptions = @(
                @{
                    OptionName = 'version-depth'
                    OptionValues = @('20')
                }
            )
        },
        @{
            ResourceType = 'ssm:Parameter'
        },
        @{
            ResourceType = 'imagebuilder:ImageRecipe'
        },
        @{
            ResourceType = 'imagebuilder:ContainerRecipe'
        }
    )
```

**如需檢查所有受支援資源類型的 AMI 參考**  
請使用 `-IncludeAllResourceTypes` 參數並搭配 [New-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2ImageReference.html) cmdlet。

```
Get-EC2ImageReference `
    -ImageId 'ami-0abcdef1234567890', 'ami-1234567890abcdef0' `
    -IncludeAllResourceTypes
```

**檢查所有受支援資源類型與特定選項的 AMI 參考**  
請使用 `-IncludeAllResourceTypes` 與 `-ResourceType` 參數並搭配 [Get-EC2ImageReference](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2ImageReference.html) cmdlet。此範例將檢查所有資源類型，同時將 EC2 執行個體的回應範圍限定為執行中或擱置中執行個體。

```
Get-EC2ImageReference `
    -ImageId 'ami-0abcdef1234567890', 'ami-1234567890abcdef0' `
    -IncludeAllResourceTypes `
    -ResourceType @(
        @{
            ResourceType = 'ec2:Instance'
            ResourceTypeOptions = @(
                @{
                    OptionName = 'state-name'
                    OptionValues = @('running', 'pending')
                }
            )
        }
    )
```

------

# 棄用 Amazon EC2 AMI
<a name="ami-deprecate"></a>

您可以取代 AMI 來指出它已過期且不應該使用。您也可以為 AMI 指定未來的取代日期，指出 AMI 何時過期。例如，您可能會取代不再主動維護的 AMI，或者您可能會取代已被較新版本替代的 AMI。依預設，已取代的 AMI 不會出現在 AMI 清單中，以防止新使用者使用過期的 AMI。但是，現有使用者和啟動服務 (例如啟動範本和 Auto Scaling 群組) 可以透過指定其 ID 來繼續使用已取代的 AMI。若要刪除 AMI，以便使用者和服務無法使用它，您必須[取消註冊](deregister-ami.md)它。

AMI 被取代後：
+ 對於 AMI 使用者，已取代的 AMI 不會出現在 [DescribeImages](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeImages.html) API 呼叫中，除非您指定其 ID 或指定已取代的 AMI 必須出現。AMI 擁有者繼續在 [DescribeImages](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeImages.html) API 呼叫中查看已取代的 AMI。
+ 對於 AMI 使用者，不能透過 EC2 主控台選取已取代的 AMI。例如，已取代的 AMI 不會出現在啟動執行個體精靈的 AMI 目錄中。AMI 擁有者繼續在 EC2 主控台中查看已取代的 AMI。
+ 對於 AMI 使用者，如果您知道已取代的 AMI 的 ID，則可以使用 API、CLI 或 SDK 透過已取代的 AMI 來啟動執行個體。
+ 啟動服務 (例如啟動範本和 Auto Scaling 群組) 可以繼續參考已取代的 AMI。
+ 使用隨後被取代的 AMI 來啟動的 EC2 執行個體不會受到影響，而且可以停止、啟動和重新啟動。

您可以同時取代私有和公有 AMI。

**Topics**
+ [成本](#ami-deprecate-costs)
+ [考量事項](#ami-deprecate-limitations)
+ [棄用 AMI](#deprecate-ami)
+ [描述已取代的 AMI](#describe-deprecate-ami)
+ [取消 AMI 棄用](#cancel-deprecate-ami)

## 成本
<a name="ami-deprecate-costs"></a>

當您取代 AMI 時，不會刪除 AMI。AMI 擁有者繼續為 AMI 的快照付費。要停止支付快照的費用，AMI 擁有者必須透過[取消註冊](deregister-ami.md) AMI 來刪除它。

## 考量事項
<a name="ami-deprecate-limitations"></a>
+ 若要取代 AMI，您必須是 AMI 的擁有者。
+ 最近未用於啟動執行個體的 AMI 可能就是待移除或取消註冊的項目。如需詳細資訊，請參閱[檢查上次使用 Amazon EC2 AMI 的時間](ami-last-launched-time.md)。
+ 您可建立 Amazon Data Lifecycle Manager EBS 支援的 AMI 政策，以自動化 EBS 後端 AMI 的取代。若要了解詳細資訊，請參閱[建立 AMI 生命週期政策](https://docs.aws.amazon.com/ebs/latest/userguide/ami-policy.html)。
+ 在預設情況下，所有公用 AMI 的棄用日期都設定為自 AMI 建立日期起兩年。您可將棄用日期設定為早於兩年。若要取消棄用日期或將棄用日期延後，您必須將[與指定的 AWS 帳戶共享 AMI](sharingamis-explicit.md)，使該 AMI 成為私有。

## 棄用 AMI
<a name="deprecate-ami"></a>

您可以在特定的日期和時間取代 AMI。您必須為 AMI 的擁有者。

棄用日期的上限是從現在起 10 年，但公用 AMI 除外，其上限是自建立日期起 2 年。您無法指定過去的日期。

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

**在特定日期取代 AMI**

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

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

1. 從篩選條件列中，選擇 **Owned by me** (由我擁有)。

1. 選取 AMI，然後依序選取 **Actions** (動作)、**Manage AMI Deprecation** (管理 AMI 取代)。您可以選取多個 AMI，一次設定多個 AMI 的相同取代日期。

1. 選取**啟用**核取方塊，然後輸入取代日期和時間。

1. 選擇**儲存**。

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

**在特定日期取代 AMI**  
使用 [enable-image-deprecation](https://docs.aws.amazon.com/cli/latest/reference/ec2/enable-image-deprecation.html) 命令。如果您指定秒數值，Amazon EC2 會將秒數四捨五入到最接近的分鐘。

```
aws ec2 enable-image-deprecation \
    --image-id ami-0abcdef1234567890 \
    --deprecate-at "2025-04-15T13:17:12.000Z"
```

------
#### [ PowerShell ]

**在特定日期取代 AMI**  
使用 [Enable-EC2ImageDeprecation](https://docs.aws.amazon.com/powershell/latest/reference/items/Enable-EC2ImageDeprecation.html) cmdlet。如果您指定秒數值，Amazon EC2 會將秒數四捨五入到最接近的分鐘。

```
Enable-EC2ImageDeprecation `
    -ImageId ami-0abcdef1234567890 `
    -DeprecateAt 2025-04-15T13:17:12.000Z
```

------

## 描述已取代的 AMI
<a name="describe-deprecate-ami"></a>

您可以檢視 AMI 的取代日期和時間，並依取代日期篩選 AMI。

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

**檢視 AMI 的取代日期**

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

1. 在左側導覽器中，選取 **AMI**，然後選取該 AMI。

1. 檢查**取代時間**欄位 (若您選取 AMI 旁的核取方塊，其位於**詳細資料**索引標籤)。該欄位顯示 AMI 的取代日期和時間。若欄位為空的，則 AMI 不會遭到取代。

**依取代日期篩選 AMI**

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

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

1. 從篩選條件列中，選擇 **Owned by me** (由我擁有) 或 **Private images** (私有映像) (私有映像包括與您共享以及您擁有的 AMI)。

1. 在搜尋列中，輸入 **Deprecation time** (當您輸入字母時，**Deprecation time** (取代時間) 篩選條件隨即顯示)，隨後選擇一個運算子及一個日期和時間。

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

若描述全部 AMI，結果取決於您是 AMI 使用者還是 AMI 擁有者。
+ **AMI 使用者** – 依預設，若描述全部 AMI，將會排除與您共享但並非您擁有的棄用 AMI。如需要在結果中包括已棄用的 AMI，您必須指定 `--include-deprecated` 參數。
+ **AMI 擁有者** – 若描述全部 AMI，您擁有的全部 AMI 將會包括在內，包括棄用的 AMI。使用 `--no-include-deprecated` 選項不能排除您擁有的棄用 AMI。

**如需在描述所有 AMI 時包括所有已棄用的 AMI**  
使用下面的 [describe-images](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html) 命令。

```
aws ec2 describe-images 
    --owners 123456789012 \   
    --include-deprecated
```

**描述帳戶中已棄用的 AMI**  
使用下面的 [describe-images](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html) 命令。

```
aws ec2 describe-images \
    --owners self \
    --query "Images[?DeprecationTime!=null].ImageId" \
    --output text
```

以下為範例輸出。

```
ami-0abcdef1234567890
```

**描述 AMI 的取代日期**  
使用下面的 [describe-images](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html) 命令。若輸出中不存在 `DeprecationTime`，不會棄用 AMI，或者將其設定為在未來日期棄用。

```
aws ec2 describe-images \
    --image-ids ami-0abcdef1234567890 \
    --query Images[].DeprecationTime \
    --output text
```

以下為範例輸出。

```
2025-05-01T00:00:00.000Z
```

------
#### [ PowerShell ]

**如需列出帳戶的棄用 AMI**  
使用 [Get-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Image.html) cmdlet。

```
(Get-EC2Image -Owner self | Where-Object {$_.DeprecationTime -ne $null}).ImageId
```

以下為範例輸出。

```
ami-0abcdef1234567890
```

**描述 AMI 的取代日期**  
使用 [Get-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Image.html) cmdlet。若輸出中不存在 `DeprecationTime`，不會棄用 AMI，或者將其設定為在未來日期棄用。

```
(Get-EC2Image -ImageId ami-0abcdef1234567890).DeprecationTime
```

以下為範例輸出。

```
2025-05-01T00:00:00.000Z
```

------

## 取消 AMI 棄用
<a name="cancel-deprecate-ami"></a>

您可取消棄用 AMI，此操作會移除棄用日期與時間。您必須是 AMI 擁有者才能執行此程序。

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

**取消取代 AMI**

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

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

1. 從篩選條件列中，選擇 **Owned by me** (由我擁有)。

1. 選取 AMI，然後依序選取 **Actions** (動作)、**Manage AMI Deprecation** (管理 AMI 取代)。您可以選取多個 AMI，一次取消多個 AMI 的取代。

1. 清除**啟用**核取方塊，然後選擇**儲存**。

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

**取消棄用 AMI**  
請使用下面的 [disable-image-deprecation](https://docs.aws.amazon.com/cli/latest/reference/ec2/disable-image-deprecation.html) 命令。

```
aws ec2 disable-image-deprecation --image-id ami-0abcdef1234567890
```

------
#### [ PowerShell ]

**取消棄用 AMI**  
使用 [Disable-EC2ImageDeprecation](https://docs.aws.amazon.com/powershell/latest/reference/items/Disable-EC2ImageDeprecation.html) cmdlet。

```
Disable-EC2ImageDeprecation -ImageId ami-0abcdef1234567890
```

------

# 停用 Amazon EC2 AMI
<a name="disable-an-ami"></a>

可以停用 AMI 以防止其用於執行個體啟動。無法從已停用的 AMI 中啟動新執行個體。可以重新啟用已停用的 AMI，以便在執行個體啟動時再次使用它。

可以同時停用私有和公有 AMI。

如需減少很少使用但需長期保留的停用 EBS 支援的 AMI 的儲存費用，您可封存其關聯的快照。如需詳細資訊，請參閱「Amazon EBS 使用者指南」**中的[檔案 Amazon EBS 快照](https://docs.aws.amazon.com/ebs/latest/userguide/snapshot-archive.html)。

**Topics**
+ [AMI 停用運作方式](#how-disable-ami-works)
+ [成本](#ami-disable-costs)
+ [先決條件](#ami-disable-prerequisites)
+ [所需的 IAM 許可](#ami-disable-iam-permissions)
+ [停用 AMI](#disable-ami)
+ [描述已停用的 AMI](#describe-disabled-ami)
+ [重新啟用已停用的 AMI](#re-enable-a-disabled-ami)

## AMI 停用運作方式
<a name="how-disable-ami-works"></a>

**警告**  
停用 AMI 會移除其所有啟動權限。

**停用 AMI 時：**
+ AMI 的狀態會變更為 `disabled`。
+ 無法共用已停用的 AMI。如果 AMI 為公有或先前被共用，則會將其設為私有。如果 AMI 與 AWS 帳戶、組織或組織單位共用，則會失去對已停用 AMI 的存取權。
+ 依預設，已停用的 AMI 不會出現在 [https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeImages.html](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeImages.html) API 呼叫中。
+ 已停用的 AMI 不會出現在**我所擁有**主控台篩選條件下。若要尋找已停用的 AMI，請使用**已停用的映像**主控台篩選條件。
+ 對於 EC2 主控台中的執行個體啟動，不可選擇已停用的 AMI。例如，在啟動執行個體精靈中或建立啟動範本時，已停用的 AMI 不會出現在 AMI 目錄中。
+ 啟動服務 (例如啟動範本和 Auto Scaling 群組) 可以繼續參考已停用的 AMI。從已停用的 AMI 中進行後續執行個體啟動將會失敗，因此建議您更新啟動範本和 Auto Scaling 群組以僅參考可用的 AMI。
+ 先前使用隨後被停用的 AMI 來啟動的 EC2 執行個體不會受到影響，而且可以停止、啟動和重新啟動。
+ 您無法刪除與已停用的 AMI 相關聯的快照。嘗試刪除關聯的快照會導致`snapshot is currently in use`錯誤。

**重新啟用 AMI 時：**
+ AMI 的狀態會變更為 `available`，而且可用來啟動執行個體。
+ 可以共用 AMI。
+ 由於停用 AMI 而無法對其進行存取的AWS 帳戶、組織和組織單位不會自動重新獲得存取權，但可以再次與他們共用 AMI。

## 成本
<a name="ami-disable-costs"></a>

當您停用 AMI 時，不會刪除 AMI。如果 AMI 是 EBS 後端 AMI，您會繼續支付 AMI 的 EBS 快照。如果想要保留 AMI，可以透過封存快照來降低儲存成本。如需詳細資訊，請參閱「Amazon EBS 使用者指南」**中的[檔案 Amazon EBS 快照](https://docs.aws.amazon.com/ebs/latest/userguide/snapshot-archive.html)。如果不想保留 AMI 及其快照，必須取消註冊 AMI 並刪除快照。如需詳細資訊，請參閱[取消註冊 AMI](deregister-ami.md)。

## 先決條件
<a name="ami-disable-prerequisites"></a>

若要停用或重新啟用 AMI，您必須是 AMI 的擁有者。

## 所需的 IAM 許可
<a name="ami-disable-iam-permissions"></a>

若要停用和重新啟用 AMI，您必須具有下列 IAM 許可：
+ `ec2:DisableImage`
+ `ec2:EnableImage`

## 停用 AMI
<a name="disable-ami"></a>

您可以使用 EC2 主控台或 AWS Command Line Interface () 停用 AMI AWS CLI。您必須是 AMI 擁有者才能執行此程序。

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

**停用 AMI**

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

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

1. 從篩選條件列中，選擇 **Owned by me** (由我擁有)。

1. 選取 AMI，然後選擇**動作**、**停用 AMI**。可以選取多個 AMI，以便一次停用。

1. 在**停用 AMI** 視窗中，選擇**停用 AMI**。

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

**停用 AMI**  
使用下列 [https://docs.aws.amazon.com/cli/latest/reference/ec2/disable-image.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/disable-image.html) 命令。

```
aws ec2 disable-image --image-id ami-0abcdef1234567890
```

------
#### [ PowerShell ]

**停用 AMI**  
使用 [Disable-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Disable-EC2Image.html) cmdlet。

```
Disable-EC2Image -ImageId ami-0abcdef1234567890
```

------

## 描述已停用的 AMI
<a name="describe-disabled-ami"></a>

可以使用 EC2 主控台或 AWS CLI來檢視已停用的 AMI。

您必須是 AMI 擁有者，才能檢視已停用的 AMI。因為已停用的 AMI 會設為私有，如果您不是擁有者，就無法檢視已停用的 AMI。

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

**若要檢視已停用的 AMI**

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

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

1. 從篩選列中，選擇**已停用的映像**。  
![\[已停用映像篩選條件。\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/images/ami-filter-by-disabled-images.png)

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

依預設，當您描述所有 AMI 時，停用的 AMI 不會包括在結果中。如需在結果中包括停用的 AMI，請指定 `--include-disabled` 選項。若已停用 AMI，AMI 的 `State` 欄位為 `disabled`。

**如需在為帳戶描述所有 AMI 時包括已停用的 AMI**  
使用下列 [https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html) 命令。

```
aws ec2 describe-images \
    --owners 123456789012 \
    --include-disabled
```

**如需列出帳戶的停用 AMI**  
使用下列 [https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html) 命令。

```
aws ec2 describe-images \
    --owners self \
    --include-disabled \
    --filters Name=state,Values=disabled \
    --query Images[].ImageId \
    --output text
```

以下為範例輸出。

```
ami-0abcdef1234567890
```

**如需描述 AMI 的狀態**  
使用下列 [https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html) 命令。若輸出中不存在 `DeprecationTime`，不會棄用 AMI，或者將其設定為在未來日期棄用。

```
aws ec2 describe-images \
    --image-ids ami-0abcdef1234567890 \
    --query Images[].State \
    --output text
```

以下為範例輸出。

```
disabled
```

------
#### [ PowerShell ]

依預設，當您描述所有 AMI 時，停用的 AMI 不會包括在結果中。若要在結果中包含已停用的 AMI，請指定 `-IncludeDisabled` 參數。若已停用 AMI，AMI 的 `State` 欄位為 `disabled`。

**如需列出帳戶的停用 AMI**  
使用 [Get-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Image.html) cmdlet。

```
(Get-EC2Image `
    -Owner self `
    -IncludeDisabled $true | Where-Object {$_.State -eq "disabled"}).ImageId
```

以下為範例輸出。

```
ami-0abcdef1234567890
```

**如需描述 AMI 的狀態**  
使用 [Get-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Image.html) cmdlet。

```
(Get-EC2Image -ImageId ami-0abcdef1234567890).State.Value
```

以下為範例輸出。

```
disabled
```

------

## 重新啟用已停用的 AMI
<a name="re-enable-a-disabled-ami"></a>

可以重新啟用已停用的 AMI。您必須是 AMI 擁有者才能執行此程序。

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

**重新啟用已停用的 AMI**

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

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

1. 從篩選列中，選擇**已停用的映像**。

1. 選取 AMI，然後選擇**動作**、**啟用 AMI**。可以選取多個 AMI，一次重新啟用多個 AMI。

1. 在**啟用 AMI** 視窗中，選擇**啟用**。

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

**重新啟用已停用的 AMI**  
使用下列 [https://docs.aws.amazon.com/cli/latest/reference/ec2/enable-image.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/enable-image.html) 命令。

```
aws ec2 enable-image --image-id ami-0abcdef1234567890
```

------
#### [ PowerShell ]

**重新啟用已停用的 AMI**  
使用 [Enable-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Enable-EC2Image.html) cmdlet。

```
Enable-EC2Image -ImageId ami-0abcdef1234567890
```

------

# 取消註冊 Amazon EC2 AMI
<a name="deregister-ami"></a>

當您取消註冊 AMI 時，Amazon EC2 會將其永久刪除。在您取消註冊 AMI 之後，您便無法用它來啟動新的執行個體。您可考慮在完成使用之後取消註冊 AMI。

為了防止意外或惡意取消註冊 AMI，您可以開啟[取消註冊保護](ami-deregistration-protection.md)。如果您意外登出 EBS 支援的 AMI，則只有在永久刪除之前的允許時間內復原，才可以使用[資源回收筒](https://docs.aws.amazon.com/ebs/latest/userguide/recycle-bin.html)來復原。

若取消註冊 AMI，您可選擇同時刪除其關聯的快照。然而，若快照與多個 AMI 關聯，儘管指定要將其刪除，亦不會刪除，但仍會取消註冊 AMI。任何未刪除快照皆會持續產生儲存費用。

取消註冊 AMI 不會影響從 AMI 啟動的任何執行個體。您可以繼續使用這些執行個體。依預設，取消註冊 AMI 亦不會影響 AMI 建立過程之中建立的任何快照。您將需要為這些執行個體繼續支付使用成本，以及快照的儲存成本。因此，為了避免產生不必要的成本，我們建議您終止所有執行個體並刪除不需要的快照。在取消註冊期間，您可自動刪除快照；或在取消註冊之後，手動刪除快照。如需詳細資訊，請參閱[避免因未使用的資源而產生成本](#delete-unneeded-resources-to-avoid-unnecessary-costs)。

對於從後續取消註冊的 AMI 啟動的執行個體，您仍然可以使用 `describe-instance-image-metadata` AWS CLI 命令檢視一些有關 AMI 的高階資訊。若要了解詳細資訊，請參閱 [describe-instance-image-metadata](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instance-image-metadata.html)。

**Topics**
+ [考量事項](#deregister-ami-considerations)
+ [取消註冊 AMI](#deregister-an-ami)
+ [避免因未使用的資源而產生成本](#delete-unneeded-resources-to-avoid-unnecessary-costs)
+ [保護 Amazon EC2 AMI 免遭註銷](ami-deregistration-protection.md)

## 考量事項
<a name="deregister-ami-considerations"></a>
+ 您無法取消註冊不是您帳戶擁有的 AMI。
+ 您無法使用 Amazon EC2 取消註冊由 AWS Backup 服務管理的 AMI。反之，請使用 AWS Backup 刪除備份文件庫中對應的復原點。若要了解詳細資訊，請參閱 *AWS Backup 開發人員指南中的*[刪除備份](https://docs.aws.amazon.com/aws-backup/latest/devguide/deleting-backups.html)。

## 取消註冊 AMI
<a name="deregister-an-ami"></a>

您可取消註冊 EBS 支援的 AMI 及 Amazon S3 支援的 AMI。若是 EBS 支援的 AMI，您可選擇同時刪除關聯的快照。然後，若快照與其他 AMI 關聯，儘管指定要將其刪除，亦不會刪除。

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

**取消註冊 AMI**

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

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

1. 在篩選列中，選擇**我擁有**以列出可用的 AMI，或選擇**已停用的影像**以列出已停用的 AMI。

1. 選取要取消註冊的 AMI。

1. 選擇 **Actions** (動作)、**Deregister AMI** (取消註冊 AMI)。

1. (選用) 如需在取消註冊期間刪除關聯的快照，勾選**刪除關聯快照**核取方塊。
**注意**  
若快照與其他 AMI 關聯，儘管勾選核取方塊，亦不會將其刪除。

1. 選擇**取消註冊 AMI**。

   主控台從清單移除 AMI 可能需要幾分鐘的時間。選擇 **Refresh (重新整理)** 以重新整理狀態。

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

**取消註冊 AMI**  
請使用下面的 [deregister-image](https://docs.aws.amazon.com/cli/latest/reference/ec2/deregister-image.html) 命令。

```
aws ec2 deregister-image --image-id ami-0abcdef1234567890
```

**取消註冊 AMI 及刪除其關聯的快照**  
請使用下面的 [deregister-image](https://docs.aws.amazon.com/cli/latest/reference/ec2/deregister-image.html) 命令及指定 `--delete-associated-snapshots` 參數。請注意，若快照與其他 AMI 關聯，儘管指定了此參數，亦不會將其刪除。

```
aws ec2 deregister-image \
    --image-id ami-0abcdef1234567890 \
    --delete-associated-snapshots
```

------
#### [ PowerShell ]

**取消註冊 AMI**  
使用 [Unregister-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Unregister-EC2Image.html) cmdlet。

```
Unregister-EC2Image -ImageId ami-0abcdef1234567890
```

**取消註冊 AMI 及刪除其關聯的快照**  
請使用 [Unregister-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Unregister-EC2Image.html) cmdlet 並指定 `-DeleteAssociatedSnapshots` 參數。請注意，若快照與其他 AMI 關聯，儘管指定了此參數，亦不會將其刪除。

```
Unregister-EC2Image `
    -ImageId ami-0abcdef1234567890 `
    -DeleteAssociatedSnapshots
```

------

## 避免因未使用的資源而產生成本
<a name="delete-unneeded-resources-to-avoid-unnecessary-costs"></a>

依預設，取消註冊 AMI 不會刪除與 AMI 關聯的全部資源。這些資源包括 EBS 支援的 AMI 快照以及 Amazon S3 中 Amazon S3 支援的檔案。當您取消註冊 AMI 時，您也不會終止或停止從 AMI 啟動的任何執行個體。

您將繼續產生儲存快照與檔案的成本，並且將產生任何執行個體的成本。

為了避免產生此類不必要的費用，我們建議刪除任何您不需要的資源。

**EBS 支援的 AMI**
+ 取消註冊 AMI 的同時刪除關聯的快照。如需詳細資訊，請參閱[取消註冊 AMI](#deregister-an-ami)。
+ 若取消註冊 AMI 但不刪除其關聯的快照，您可手動[刪除快照](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-deleting-snapshot.html#ebs-delete-snapshot)。在 AMI 建立期間，建立的執行個體根磁碟區快照具有以下說明格式：

  ```
  Created by CreateImage(i-1234567890abcdef0) for ami-0abcdef1234567890
  ```
+ 若您不再需要透過 AMI 啟動的執行個體，可[停止](Stop_Start.md#starting-stopping-instances)或[終止](terminating-instances.md#terminating-instances-console)這些執行個體。如需列出執行個體，依 AMI 的 ID 進行篩選。

**Amazon S3 支援的 AMI**
+ 使用 [ec2-delete-bundle](ami-tools-commands.md#ami-delete-bundle) (AMI 工具) 命令刪除 Amazon S3 中的套件。
+ 若刪除套件之後 Amazon S3 儲存貯體為空白，且您不再進一步使用該儲存貯體，可[刪除儲存貯體](https://docs.aws.amazon.com/AmazonS3/latest/userguide/delete-bucket.html)。
+ 若您不再需要透過 AMI 啟動的執行個體，可[終止](terminating-instances.md#terminating-instances-console)這些執行個體。如需列出執行個體，依 AMI 的 ID 進行篩選。

# 保護 Amazon EC2 AMI 免遭註銷
<a name="ami-deregistration-protection"></a>

您可以在 AMI 上開啟*註銷保護*以防止意外或惡意刪除。當您開啟註銷保護時，任何使用者都無法註銷 AMI，無論其 IAM 權限為何。如果您想要註銷 AMI，您必須先關閉其註銷保護。

當您在 AMI 上開啟註銷保護時，您可以選擇包含 24 小時冷卻時間。此冷卻時間是您關閉註銷保護之後，註銷保護仍然有效的時間。在此冷卻時間，無法註銷 AMI。當冷卻時間結束，便可以註銷 AMI。

預設情況下，所有現有與新 AMI 的註銷保護均處於關閉狀態。

## 開啟註銷保護
<a name="enable-deregistration-protection"></a>

使用下列程序來開啟註銷保護。

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

**如需開啟取消註冊保護**

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

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

1. 在篩選列中，選擇**我擁有**以列出可用的 AMI，或選擇**已停用的影像**以列出已停用的 AMI。

1. 選擇要開啟註銷保護的 AMI，然後選擇**執行**，**管理 AMI 註銷保護**。

1. 在**管理 AMI 註銷保護**對話方塊中，您可以開啟有或沒有冷卻時間的註銷保護。請選擇下列其中一個選項：
   + **啟用 24 小時冷卻時間** — 具有冷卻時間，當註銷保護關閉時，AMI 在 24 小時內無法註銷。
   + **無需冷卻即可啟用** — 無冷卻時間，當註銷保護關閉，AMI 可以立即註銷。

1. 選擇**儲存**。

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

**如需開啟取消註冊保護**  
請使用 [enable-image-deregistration-protection](https://docs.aws.amazon.com/cli/latest/reference/ec2/enable-image-deregistration-protection.html) 命令。如需啟用包括 `--with-cooldown` 選項在內的選用冷卻時間。

```
aws ec2 enable-image-deregistration-protection \
    --image-id ami-0abcdef1234567890 \
    --with-cooldown
```

------
#### [ PowerShell ]

**如需開啟取消註冊保護**  
使用 [Enable-EC2ImageDeregistrationProtection](https://docs.aws.amazon.com/powershell/latest/reference/items/Enable-EC2ImageDeregistrationProtection.html) cmdlet。如需啟用選用冷卻時間，請設定 `-WithCooldown` 參數為 `true`。

```
Enable-EC2ImageDeregistrationProtection `
    -ImageId ami-0abcdef1234567890 `
    -WithCooldown $true
```

------

## 關閉註銷保護
<a name="disable-deregistration-protection"></a>

使用下列程序來關閉註銷保護。

如果您在開啟 AMI 註銷保護時選擇包含 24 小時冷卻時間，那麼當您關閉註銷保護時，您將無法立即註銷 AMI。冷卻時間是 24 小時的時間段，在此期間註銷保護即使在關閉之後仍然有效。在此冷卻時間，無法註銷 AMI。當冷卻時間結束，便可註銷 AMI。

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

**如需關閉取消註冊保護**

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

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

1. 在篩選列中，選擇**我擁有**以列出可用的 AMI，或選擇**已停用的影像**以列出已停用的 AMI。

1. 選擇要關閉註銷保護的 AMI，然後選擇**執行**，**管理 AMI 註銷保護**。

1. 在**管理 AMI 註銷保護**對話方塊中，選擇**停用**。

1. 選擇**儲存**。

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

**如需關閉取消註冊保護**  
請使用 [disable-image-deregistration-protection](https://docs.aws.amazon.com/cli/latest/reference/ec2/disable-image-deregistration-protection.html) 命令。

```
aws ec2 disable-image-deregistration-protection --image-id ami-0abcdef1234567890
```

------
#### [ PowerShell ]

**如需關閉取消註冊保護**  
使用 [Disable-EC2ImageDeregistrationProtection](https://docs.aws.amazon.com/powershell/latest/reference/items/Disable-EC2ImageDeregistrationProtection.html) cmdlet。

```
Disable-EC2ImageDeregistrationProtection -ImageId ami-0abcdef1234567890
```

------