

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

# AMI \$1 建立
<a name="deployment-advanced-ami-create"></a>

根據 AMS 帳戶中現有的獨立 EC2 執行個體建立 Amazon Machine Image (AMI)。在執行此變更類型之前，執行個體必須處於停止狀態。

**完整分類：**部署 \$1 進階堆疊元件 \$1 AMI \$1 建立

## 變更類型詳細資訊
<a name="ct-3rqqu43krekby-DAAc-table"></a>


****  

|  |  | 
| --- |--- |
| 變更類型 ID | ct-3rqqu43krekby | 
| 目前版本 | 2.0 | 
| 預期的執行持續時間 | 360 分鐘 | 
| AWS 核准 | 必要 | 
| 客戶核准 | 非必要 | 
| 執行模式 | 自動化 | 

## 其他資訊
<a name="deployment-advanced-ami-create-info"></a>

### 建立 AMI
<a name="ex-ami-create-col"></a>

#### 使用主控台建立 AMI
<a name="ami-create-con"></a>

以下顯示 AMS 主控台中的此變更類型。

![\[變更 type details for creating an Amazon Machine Image (AMI) from an EC2 instance.\]](http://docs.aws.amazon.com/zh_tw/managedservices/latest/ctref/images/guiAmiCreateCT.png)


**重要**  
開始之前，請準備用於建立 AMI 的 EC2 執行個體。如果沒有適當的準備，建立 AMI RFC 可能會被拒絕或失敗。如需有關準備執行個體以成功建立 AMI 的資訊，請參閱本教學課程中包含的指示。

運作方式：

1. 導覽至**建立 RFC** 頁面：在 AMS 主控台的左側導覽窗格中，按一下 **RFCs**以開啟 RFCs清單頁面，然後按一下**建立 RFC**。

1. 在預設的**瀏覽變更類型檢視中選擇熱門的變更類型** (CT)，或在**依類別**選擇檢視中選擇 CT。
   + **依變更類型瀏覽**：您可以在**快速建立**區域中按一下熱門的 CT，以立即開啟**執行 RFC** 頁面。請注意，您無法透過快速建立選擇較舊的 CT 版本。

     若要排序 CTs，請使用**卡片**或**資料表**檢視中的所有**變更類型**區域。在任一檢視中，選取 CT，然後按一下**建立 RFC** 以開啟**執行 RFC** 頁面。如果適用，**建立舊版**選項會顯示在**建立 RFC** 按鈕旁。
   + **依類別選擇**：選取類別、子類別、項目和操作，如果適用，CT 詳細資訊方塊會開啟，其中包含**使用較舊版本建立**的選項。按一下**建立 RFC** 以開啟**執行 RFC** 頁面。

1. 在**執行 RFC** 頁面上，開啟 CT 名稱區域以查看 CT 詳細資訊方塊。需要**主旨** （如果您在**瀏覽變更類型**檢視中選擇 CT，則會為您填寫）。開啟**其他組態**區域以新增 RFC 的相關資訊。

   在**執行組態**區域中，使用可用的下拉式清單或輸入必要參數的值。若要設定選用的執行參數，請開啟**其他組態**區域。

1. 完成後，請按一下**執行**。如果沒有錯誤，**RFC 成功建立**的頁面會顯示已提交的 RFC 詳細資訊，以及初始的**執行輸出**。

1. 開啟**執行參數**區域以查看您提交的組態。重新整理頁面以更新 RFC 執行狀態。或者，取消 RFC 或使用頁面頂端的選項建立 RFC 的副本。

#### 使用 CLI 建立 AMI
<a name="ami-create-cli"></a>

運作方式：

1. 使用內嵌建立 （您發出包含所有 RFC 和執行參數的`create-rfc`命令） 或範本建立 （您建立兩個 JSON 檔案，一個用於 RFC 參數，另一個用於執行參數），並使用兩個檔案作為輸入發出`create-rfc`命令。此處說明這兩種方法。

1. 使用傳回的 RFC ID 提交 RFC： `aws amscm submit-rfc --rfc-id ID`命令。

   監控 RFC： `aws amscm get-rfc --rfc-id ID`命令。

若要檢查變更類型版本，請使用下列命令：

```
aws amscm list-change-type-version-summaries --filter Attribute=ChangeTypeId,Value=CT_ID
```
**注意**  
您可以將任何`CreateRfc`參數與任何 RFC 搭配使用，無論它們是否為變更類型結構描述的一部分。例如，若要在 RFC 狀態變更時取得通知，請將此行新增至請求的 `--notification "{\"Email\": {\"EmailRecipients\" : [\"email@example.com\"]}}"` RFC 參數部分 （而非執行參數）。如需所有 CreateRfc 參數的清單，請參閱 [AMS 變更管理 API 參考](https://docs.aws.amazon.com/managedservices/latest/ApiReference-cm/API_CreateRfc.html)。

*內嵌建立*：

使用內嵌提供的執行參數發出建立 RFC 命令 （在內嵌提供執行參數時逸出引號），然後提交傳回的 RFC ID。例如，您可以將內容取代為如下內容：

```
aws --profile saml --region us-east-1 amscm create-rfc --change-type-id "ct-3rqqu43krekby" --change-type-version "2.0" --title "AMI-Create-IC" --execution-parameters "{\"AMIName\":\"MyAmi\",\"VpcId\":\"VPC_ID\",\"EC2InstanceId\":\"INSTANCE_ID\"}"
```

*範本建立*：

1. 將此變更類型的執行參數 JSON 結構描述輸出至檔案；此範例會將其命名為 CreateAmiParams.json:

   ```
   aws amscm get-change-type-version --change-type-id "ct-3rqqu43krekby" --query "ChangeTypeVersion.ExecutionInputSchema" --output text > CreateAmiParams.json
   ```

1. 修改並儲存執行參數 CreateAmiParams.json 檔案。例如，您可以將內容取代為如下內容：

   ```
   {
   "AMIName":          "My-AMI",
   "InstanceId":    "EC2_INSTANCE_ID"
   }
   ```

1. 將 RFC 範本 JSON 檔案輸出到目前資料夾中的檔案；此範例將其命名為 CreateAmiRfc.json:

   ```
   aws amscm create-rfc --generate-cli-skeleton > CreateAmiRfc.json
   ```

1. 修改並儲存 CreateAmiRfc.json 檔案。例如，您可以將內容取代為如下內容：

   ```
   {
   "ChangeTypeId":         "ct-3rqqu43krekby",
   "ChangeTypeVersion":    "2.0",
   "Title":                "AMI-Create-RFC"
   }
   ```

1. 建立 RFC，指定 CreateAmiRfc 檔案和 CreateAmiParams 檔案：

   ```
   aws amscm create-rfc --cli-input-json file://CreateAmiRfc.json  --execution-parameters file://CreateAmiParams.json
   ```

   您會在回應中收到新 RFC 的 ID，並使用它來提交和監控 RFC。在您提交之前，RFC 會保持在編輯狀態，不會啟動。

#### 提示
<a name="ex-ami-create-tip"></a>

**注意**  
建立自訂 AMI 之後，您可以向 AMS 提交服務請求，讓現有的 EC2 Auto Scaling 群組使用新的 AMI。如需建立服務請求的資訊，請參閱[服務請求範例](https://docs.aws.amazon.com/managedservices/latest/userguide/serv-req-mgmt-examples.html)。

**重要**  
開始之前，請準備用於建立 AMI 的 EC2 執行個體。如果沒有適當的準備，建立 AMI RFC 可能會被拒絕或失敗。  
若要避免從新 AMI 建立的執行個體發生身分驗證問題，請在套用自訂變更之後，以及在呼叫建立 AMI CT 之前，在執行個體上執行這些系統命令。

**重要**  
如果指定的執行個體未停止並與目前的網域分開，AMI 建立 RFC 會失敗。依照說明準備執行個體。  
如需詳細資訊，請參閱[使用 Sysprep 建立標準 Amazon Machine Image](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/Creating_EBSbacked_WinAMI.html#23ami-create-standard)。

您可以訂閱 AMS SNS AMI 通知主題，以便在部署感興趣的新 AMS AMIs 時收到提醒。如需詳細資訊，請參閱 [AMS AMI Notification Service](https://docs.aws.amazon.com/managedservices/latest/userguide/ams-ami-notify.html)。

##### AMI Create 的 Linux 準備
<a name="ami-create-linux-prep"></a>

下載並執行下列指令碼，以準備建立 AMI 的執行個體。您必須以根使用者身分執行此指令碼。

```
curl https://amazon-ams-us-east-1.s3.amazonaws.com/latest/linux/prepare_instance_for_ami_and_shutdown.sh -o ./prepare_instance_for_ami_and_shutdown.sh
chmod 744 prepare_instance_for_ami_and_shutdown.sh
./prepare_instance_for_ami_and_shutdown.sh
```

注意：上述指令碼會在執行個體上執行關機，連線的使用者會從工作階段登出。

##### AMI Create 的 Windows 準備
<a name="ami-create-win-prep"></a>

Windows Powershell （以管理員身分執行）：

```
Invoke-AMSSysprep
```

執行個體會停止，且任何連線的使用者都會從目前的 Windows RDP 工作階段登出。

如需建立 AWS Windows AMIs的詳細資訊，請參閱[建立自訂 Windows AMI](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/Creating_EBSbacked_WinAMI.html#23ami-create-standard)。

##### 建立 AMI 的 UserData
<a name="ami-create-user-data"></a>

如果您需要在 AMI 的下一次開機時執行使用者資料，請確定下列事項：
+ `HKEY_LOCAL_MACHINE\SOFTWARE\Amazon\ManagedServices\RunUserDataViaAMSBootModule` 存在登錄機碼；如果該機碼不存在，則下次不會執行使用者資料。
+ 若要在下一次開機時執行使用者資料：

  1. 在管理員權限下啟動 Windows PowerShell （以管理員身分執行）

  1. 執行以下命令：

     ```
     Install-AMSDependencies
     ```

如需失敗 AMI 建立 RFCs的相關資訊，請參閱 [RFC 失敗疑難排解](https://docs.aws.amazon.com/managedservices/latest/userguide/rfc-failures.html)。

## 執行輸入參數
<a name="deployment-advanced-ami-create-input"></a>

如需執行輸入參數的詳細資訊，請參閱 [變更類型 ct-3rqqu43krekby 的結構描述](schemas.md#ct-3rqqu43krekby-schema-section)。

## 範例：必要參數
<a name="deployment-advanced-ami-create-ex-min"></a>

```
{
  "InstanceId": "i-01234567890abcdef",
  "AmiName": "MyAMI"
}
```

## 範例：所有參數
<a name="deployment-advanced-ami-create-ex-max"></a>

```
{
  "InstanceId": "i-12345678",
  "AmiName": "MyAMI",
  "AmiTags": [
    {
      "Key": "foo",
      "Value": "bar"
    },
    {
      "Key": "testkey",
      "Value": "testvalue"
    }
  ]
}
```