更新資源 - 雲端控制 API

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

更新資源

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

重要

我們強烈建議您不要使用 Cloud Control API 來更新由其他服務主動管理的資源。這樣做可能會導致意想不到的結果。例如,請勿使用 Cloud Control API 來更新目前屬於 AWS CloudFormation 堆疊一部分的資源。

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

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

構成修補文件

若要更新資源,請先將更新定義為 JSON 修補程式文件中包含的修補程式作業清單。此修補程式文件必須遵守 RFC 6902- 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 會呼叫資源類型的更新處理常式,以更新資源。

    如果更新處理常式在任何時候失敗,Cloud Control API 就不會將資源回復到先前的狀態。

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

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

追蹤更新資源要求的進度

update-resource令會傳回一個ProgressEvent物件,您可以用來追蹤資源作業要求的目前狀態。如需詳細資訊,請參閱 追蹤資源作業要求的進度