更新資源 - 雲端控制 API

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

更新資源

使用update-resource命令可對現有資源進行更新。這包括原本不是使用雲端控制 API 佈建的資源。

重要

我們強烈建議您不要使用 Cloud Control API 來更新由其他服務主動管理的資源。這樣做會導致未預期的結果。例如,請勿使用雲端控制 API 來更新目前屬於AWS CloudFormation堆疊。

若要更新現有資源,您必須指定資源的識別碼。如需如何決定資源識別符的詳細資訊,請參閱識別資源

更新資源需要變更資源屬性值。資源的屬性在其資源類型結構描述中定義。這包括是否需要性質、有效值以及其他性質約束。如需檢視資源屬性定義的詳細資訊,請參閱檢視資源類型結構描述

構成修補文件

若要更新資源,請先將更新定義為清單修補操作包含在 JSON 修補程式文件中。此修補文件必須符合中定義的標準RFC- JavaScript 物件標記法 (JSON) 修補程式

每個修補程式作業都會定義特定資源屬性的單一更新。必要的屬性如下:

  • op:操作類型。雲端控制 API 支援 RFC 6902 中定義的所有作業:addremovereplacemovecopy,以及test

  • path:資源屬性的路徑,相對於properties資源結構描述的區段。

視作業而定,可能需要其他屬性。如需詳細資訊,請參閱 RFC 6902。

當您使用update-resource命令時,您可以將修補文件內嵌指定為字串,或指定一個檔案位置。

下列範例會更新AWS::Logs::LogGroup名為的資源CloudControlApiLogGroup到 90 天。

aws cloudcontrol update-resource --type-name AWS::Logs::LogGroup --identifier CloudControlApiLogGroup --patch-document "[{"op":"test","path":"RetentionInDays","value":90}]"

雲端控制 API 如何更新資源

若要更新資源,Cloud Control API 會先擷取資源的目前狀態,然後以兩個步驟的程序更新資源:

  • Cloud Control API 會將更新要求中指定的修補程式作業與資源的目前狀態結合在一起,以便在資源更新後產生所需的狀態。作業會依照修補程式文件中顯示的順序循序套用。序列中的每個作業都會套用至資源的目前狀態;產生的資源狀態會變成下一個作業的目標。

    此時您的整個更新請求失敗,如果:

    • 包含在要求中的修補操作無效。

    • 的修補程式作業op類型test失敗。

    在這種情況下,整個更新要求都會失敗,且 Cloud Control API 不會對資源進行任何更新。

  • 然後,Cloud Control API 會呼叫資源類型的更新處理常式,以更新資源。

    如果更新處理常式在任何時候失敗,雲端控制 API 不會將資源還原到之前的狀態。

例如,請考慮下列定義為更新AWS::Logs::LogGroup資源。此文件包含兩個修補程式作業。第一個操作是類型test並檢查資源的保留政策是否設定為 3653 天。如果是這種情況,資源會通過測試,Cloud Control API 會繼續進行下一個作業。此作業會將目前的保留原則值取代為 180 天。如果資源的保留政策設定為 3653 天以外的值,則為第一個test操作失敗,雲控制 API 永遠不會運行第二個replaceoperation.

[ { "op": "test", "path": "/RetentionInDays", "value":3653 }, { "op": "replace", "path": "/RetentionInDays", "value":180 } ]

追蹤更新資源請求的進度

所以此update-resource命令會傳回 aProgressEvent物件,您可以使用來追蹤資源操作請求的目前狀態。如需詳細資訊,請參閱「」追蹤資源請求的進度