直接更新堆疊 - AWS CloudFormation

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

直接更新堆疊

想要快速部署以更新堆疊時,請您執行直接更新。透過直接更新,您可以提交範本或輸入參數,以指定堆疊中資源的更新,並 AWS CloudFormation 立即部署它們。如果您想要使用範本進行更新,您可以修改目前的範本,並將其儲存在本機或 Amazon S3 值區中。

如果是不支援更新的資源屬性,您必須保留目前的值。若要在更新堆疊之前預覽堆疊所做的變更,請使用變更集。 AWS CloudFormation 如需詳細資訊,請參閱 透過變更集更新堆疊

注意

更新堆疊時,視您更新的屬性而定, AWS CloudFormation 可能會中斷資源或取代更新的資源。如需資源更新行為的詳細資訊,請參閱 更新堆疊資源的行為

若要更新 AWS CloudFormation 堆疊 (主控台)
  1. 請登入 AWS Management Console 並開啟 AWS CloudFormation 主控台,網址為 https://console.aws.amazon.com/cloudformation

  2. AWS CloudFormation 主控台,由堆疊清單選取您要更新的執行中堆疊。

  3. 在 stack details (堆疊詳細資訊) 窗格中,選擇 Update (更新)

  4. 尚未修改堆疊範本,請選取 Use current template (使用目前的範本),然後選擇 Next (下一步)

    如已修改範本,請選取 Replace current template (取代目前的範本),然後在 Specify template (指定範本) 區段中指定更新的範本位置:

    • 如果是存放在本機電腦上的範本,請選取 Upload a template file (上傳範本檔案)。選擇 Choose File (選擇檔案) 導覽至該檔案並選取它,然後選擇 Next (下一步)

      注意

      如果您上傳本機範本檔案,請將其上 AWS CloudFormation 傳到 AWS 帳戶中的 Amazon Simple Storage Service (Amazon S3) 儲存貯體。如果您尚未擁有 AWS CloudFormation建立的 S3 儲存貯體,&CFN; 會針對您已上傳範本檔案至其中的每個區域建立唯一儲存貯體。如果您的 AWS 帳戶 AWS CloudFormation 中已有由建立的 S3 儲存貯體,請將範本 AWS CloudFormation 新增至該儲存貯體。

      請記住由建立的 S3 儲存貯體的注意事項 AWS CloudFormation

      • AWS 帳戶中擁有 Amazon S3 許可的任何人皆可存取這些儲存貯體。

      • AWS CloudFormation 建立預設為啟用伺服器端加密的值區,進而加密儲存在值區中的所有物件。

        您可以直接管理 AWS CloudFormation 已建立儲存貯體的加密選項;例如,使用 Amazon S3 主控台,網址為 https://console.aws.amazon.com/s3/ 或 AWS CLI. 如需詳細資訊,請參閱《Amazon Simple Storage Service 使用者指南》中的 S3 儲存貯體的 Amazon S3 預設加密

      • 您可以使用自己的儲存貯體,並手動上傳範本至 Amazon S3 以管理其許可。當您建立或更新堆疊時,請指定範本檔的 Amazon S3 URL。

    • 如需存放在 Amazon S3 儲存貯體的範本,請選擇 Amazon S3 URL。輸入或貼上該範本的 URL,然後選擇 Next (下一步)

      如果您的範本位於已啟用版本控制的儲存貯體中,則您可以指定範本的特定版本,例如 https://s3.amazonaws.com/templates/myTemplate.template?versionId=123ab1cdeKdOW5IH4GAcYbEngcpTJTDW。如需詳細資訊,請參閱《Amazon Simple Storage Service 使用者指南》中的管理已啟用版本控制之儲存貯體中的物件

  5. 如果您的範本包含參數,請在 Specify stack details (指定堆疊詳細資訊) 頁面上輸入或修改參數值,然後選擇 Next (下一步)

    AWS CloudFormation 除了使用NoEcho屬性聲明的參數外,將當前在堆棧中設置的值填充每個參數;但是,您仍然可以通過選中使用現有值來使用當前值。

    如需使用 NoEcho 遮罩敏感資訊,以及使用動態參數管理密碼的詳細資訊,請參閱請勿在您的範本中內嵌憑證最佳實務。

    
          已勾選 Use existing value (使用現有的值) 選項的參數欄位。
  6. Configure stack options (設定堆疊選項) 頁面上,您可以更新套用到堆疊的標籤和許可,以及修改進階選項,例如堆疊政策、復原組態,或更新 Amazon SNS 通知主題。

    如需關於這些選項的詳細資訊,請參閱 設定 AWS CloudFormation 堆疊選項

    選取下一步

  7. 檢閱堆疊資訊和您提交的變更。

    檢查是否提交了正確的資訊,例如正確的參數值或範本 URL。如果您的範本包含 IAM 資源,請選取 I acknowledge that this template may create IAM resources (我知道此範本可能會建立 IAM 資源),以指定您要使用此範本中的 IAM 資源。如需有關使用範本中 IAM 資源的詳細資訊,請參閱控制存取 AWS Identity and Access Management

    在 [變更集預覽] 區段中,勾選是否 AWS CloudFormation 會進行您預期的所有變更。例如,您可以檢查是否新 AWS CloudFormation 增、移除和修改要新增、移除或修改的資源。 AWS CloudFormation 透過為堆疊建立變更集來產生此預覽。如需詳細資訊,請參閱 透過變更集更新堆疊

  8. 當您完成變更後,請選擇 Update stack (更新堆疊)。

    注意

    此時,您也可以選擇檢視變更集,更仔細地檢閱您提出的更新。若要這麼做,請選擇 [檢視變更集] 而不是 [更新堆疊]。 CloudFormation 顯示根據您的更新產生的變更集。當您準備好執行堆疊更新時,請選擇 Execute (執行)

    CloudFormation 顯示堆疊的堆疊詳細資料頁面,並選取「事件」窗格。您的堆疊狀態現為 UPDATE_IN_PROGRESS (正在更新)。成功完 CloudFormation 成堆疊更新之後,它會將堆疊狀態設定為「更新 _ 完成」。

    如果堆疊更新失敗, CloudFormation則會自動復原變更,並將堆疊狀態設定為 UPDATE_ROLLBACK_CO MPLETE。

    注意

    您可以在處於 UPDATE_IN_PROGRESS 狀態時取消更新。如需詳細資訊,請參閱 取消堆疊更新

若要更新 AWS CloudFormation 堆疊 (AWS CLI)
  • 使用 aws cloudformation update-stack 命令直接更新堆疊。您可以指定要更新的堆疊、參數值和功能;如果您希望使用已更新的範本,也可以指定範本的名稱。

    以下範例會更新 mystack 堆疊的範本和輸入參數:

    $ aws cloudformation update-stack --stack-name mystack \ --template-url https://s3.amazonaws.com/sample/updated.template \ --parameters ParameterKey=VPCID,ParameterValue=SampleVPCID ParameterKey=SubnetIDs,ParameterValue=SampleSubnetID1\\,SampleSubnetID2

    以下範例僅會更新 SubnetIDs 堆疊的 mystack 參數值:

    $ aws cloudformation update-stack --stack-name mystack \ --use-previous-template \ --parameters ParameterKey=VPCID,UsePreviousValue=true ParameterKey=SubnetIDs,ParameterValue=SampleSubnetID1\\,UpdatedSampleSubnetID2

    以下範例會將兩個堆疊通知主題新增至 mystack 堆疊:

    $ aws cloudformation update-stack --stack-name mystack \ --use-previous-template --notification-arns \ "arn:aws:sns:us-east-1:12345678912:mytopic" "arn:aws:sns:us-east-1:12345678912:mytopic2"

    以下範例會從 mystack 堆疊中移除所有堆疊通知主題:

    $ aws cloudformation update-stack --stack-name mystack \ --use-previous-template --notification-arns []