

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

# 建立 CloudFormation 堆疊的變更集
<a name="using-cfn-updating-stacks-changesets-create"></a>

若要建立執行中堆疊的變更集，則可以提供修改後的範本、新的輸入參數值，或同時提供兩者，藉此提交要進行的變更。CloudFormation 會比較堆疊與提交的變更，進而產生變更集。

您可以在建立變更集之前或在建立變更集期間修改範本。

------
#### [ Create a change set (console) ]

**建立變更集**

1. 在 https：//[https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/) 開啟 CloudFormation 主控台。

1. 在畫面上方的導覽列上，選擇 AWS 區域。

1. 在**堆疊**頁面上，選擇您要建立變更集的執行中堆疊。

1. 在「堆疊詳細資訊」窗格中，選擇**堆疊動作**，然後選擇**建立變更集**。

1. 在 **Create change set for {{stack-name}}** (建立堆疊名稱的變更集) 頁面上，執行以下其中一項操作，修改輸入參數值、指定更新範本的位置或修改範本：    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_tw/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-changesets-create.html)

1. 在**指定堆疊詳細資訊**頁面，在**概觀**區段指定變更集名稱以及選擇性指定變更集描述，以識別其用途。如果您的範本包含參數，請在 **Specify stack details (指定堆疊詳細資訊)** 頁面上，輸入或修改合適的輸入參數值，然後選擇 **Next (下一步)**。

   若重複使用堆疊的範本，CloudFormation 會將堆疊中目前的值填入各參數 (不包含 `NoEcho` 屬性所宣告的參數)。選取 **Use existing value (使用現有的值)**，即可使用現有的參數值。

   如需使用 `NoEcho` 遮罩敏感資訊，以及使用動態參數管理密碼的詳細資訊，請參閱 [請勿在您的範本中內嵌憑證](security-best-practices.md#creds) 最佳實務。

1. 在**設定堆疊選項**頁面上，更新堆疊標籤、IAM 服務角色、堆疊原則、復原組態、Amazon SNS 通知主題 (如果適用) 或變更集。
**注意**  
巢狀堆疊的變更集預設為 **Enabled (啟用)**，這將會為範本中指定的所有巢狀堆疊建立變更集。若要僅為目前堆疊建立變更集，請選擇 **Disabled (停用)**。若要取得有關巢狀堆疊變更集的更多資訊，請參閱 [巢狀堆疊變更集](change-sets-for-nested-stacks.md)。

1. 如果範本包括 IAM 資源，請在**功能**中選擇**我確認 CloudFormation 可能會建立 IAM 資源**。IAM 資源可修改 AWS 帳戶中的許可；請檢閱這些資源，確保系統僅能執行所需的動作。如需詳細資訊，請參閱[認可 CloudFormation 範本中的 IAM 資源](control-access-with-iam.md#using-iam-capabilities)。

1. 選擇 **Next** (下一步) 繼續。

1. 在 **Review {{stack-name}}** (檢閱堆疊名稱) 頁面上，檢閱此變更集的變更。

1. 選擇**提交**。

   您會被重新導向到變更集詳細資訊頁面的 **Changes (變更)** 標籤。CloudFormation 產生變更集時，該變更集會顯示 `CREATE_PENDING` 狀態。變更集建立完成後，CloudFormation 即會將狀態設為 `CREATE_COMPLETE`。在 **Changes (變更)** 區段中，CloudFormation 會列出將對堆疊進行的所有變更。如需詳細資訊，請參閱[檢視 CloudFormation 堆疊的變更集](using-cfn-updating-stacks-changesets-view.md)。

   選擇**屬性層級變更**欄中的**檢視詳細資訊**，以檢視在屬性層級所做的變更。

   若 CloudFormation 無法建立變更集 (回報 `FAILED` 狀態)，請修復 **Status (狀態)** 欄位中顯示的錯誤，接著重新建立變更集。

1. 確認變更看起來正確後，選擇**執行變更集**

------
#### [ Create a change set for nested stacks (console) ]

**建立巢狀堆疊的變更集**

1. 在 https：//[https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/) 開啟 CloudFormation 主控台。

1. 在畫面上方的導覽列上，選擇 AWS 區域。

1. 在**堆疊**頁面上，選取您要建立變更集的執行中堆疊。

1. 在「堆疊詳細資訊」窗格中，選擇**堆疊動作**，然後選擇**建立變更集**。

1. 在 **Create change set for {{stack-name}}** (建立堆疊名稱的變更集) 頁面上，執行以下其中一項操作，修改輸入參數值、指定更新範本的位置或修改範本：    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_tw/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-changesets-create.html)

1. 在**指定堆疊詳細資訊**頁面，在**概觀**區段指定變更集名稱以及選擇性指定變更集描述，以識別其用途。如果您的範本包含參數，請在 **Specify stack details (指定堆疊詳細資訊)** 頁面上，輸入或修改合適的輸入參數值，然後選擇 **Next (下一步)**。

   若重複使用堆疊的範本，CloudFormation 會將堆疊中目前的值填入各參數 (不包含 `NoEcho` 屬性所宣告的參數)。選取 **Use existing value (使用現有的值)**，即可使用現有的參數值。

   如需使用 `NoEcho` 遮罩敏感資訊，以及使用動態參數管理密碼的詳細資訊，請參閱 [請勿在您的範本中內嵌憑證](security-best-practices.md#creds) 最佳實務。

1. 在**設定堆疊選項**頁面上，更新堆疊標籤、IAM 服務角色、堆疊原則、復原組態、Amazon SNS 通知主題 (如果適用) 或變更集。如需詳細資訊，請參閱[設定堆疊選項](cfn-console-create-stack.md#configure-stack-options)。
**注意**  
巢狀堆疊的變更集預設為 **Enabled (啟用)**，這將會為範本中指定的所有巢狀堆疊建立變更集。若要取得有關巢狀堆疊變更集的更多資訊，請參閱 [巢狀堆疊變更集](change-sets-for-nested-stacks.md)。

1. 如果範本包括 IAM 資源，請在**功能**中選擇**我確認 CloudFormation 可能會建立 IAM 資源**。IAM 資源可修改 AWS 帳戶中的許可；請檢閱這些資源，確保系統僅能執行所需的動作。如需詳細資訊，請參閱[認可 CloudFormation 範本中的 IAM 資源](control-access-with-iam.md#using-iam-capabilities)。

1. 選擇 **Next** (下一步) 繼續。

1. 在 **Review {{stack-name}}** (檢閱堆疊名稱) 頁面上，檢閱此變更集的變更。

1. 選擇**提交**。
**注意**  
當您為巢狀堆疊建立變更集時，CloudFormation 屬性層級變更集不會解析跨堆疊參考。若變更集參考父堆疊的輸出，且父堆疊已修改，則變更集可以標記子堆疊中的資源以進行條件式取代

   您會被重新導向到變更集詳細資訊頁面的 **Changes (變更)** 標籤。CloudFormation 產生變更集時，該變更集會顯示 `CREATE_PENDING` 狀態。變更集建立完成後，CloudFormation 即會將狀態設為 `CREATE_COMPLETE`。在 **Changes (變更)** 區段中，CloudFormation 會列出將對堆疊進行的所有變更。如需詳細資訊，請參閱[檢視 CloudFormation 堆疊的變更集](using-cfn-updating-stacks-changesets-view.md)。

   若 CloudFormation 無法建立變更集 (回報 `FAILED` 狀態)，請修復 **Status (狀態)** 欄位中顯示的錯誤，接著重新建立變更集。

1. 確認變更看起來正確後，選擇**執行變更集**

------

**建立變更集 (AWS CLI)**
+ 使用 [https://docs.aws.amazon.com/cli/latest/reference/cloudformation/create-change-set.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/create-change-set.html) 命令。

  您能夠以命令選項的形式來提交變更，亦能指定新的參數值、修改後的範本，或同時指定兩者。例如，以下命令將為 `SampleChangeSet` 堆疊建立 `MyStack` 變更集。該變更集會使用目前的堆疊範本，但 `Purpose` 參數將具備不同值：

  ```
  aws cloudformation create-change-set --stack-name {{MyStack}} \
      --change-set-name {{SampleChangeSet}} --use-previous-template \
      --parameters \
        {{ParameterKey="InstanceType",UsePreviousValue=true ParameterKey="KeyPairName",UsePreviousValue=true ParameterKey="Purpose",ParameterValue="production"}}
  ```