本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
更新資源
使用update-resource
命令可對現有資源進行更新。這包括原本不是使用雲端控制 API 佈建的資源。
我們強烈建議您不要使用 Cloud Control API 來更新由其他服務主動管理的資源。這樣做會導致未預期的結果。例如,請勿使用雲端控制 API 來更新目前屬於AWS CloudFormation堆疊。
若要更新現有資源,您必須指定資源的識別碼。如需如何決定資源識別符的詳細資訊,請參閱識別資源。
更新資源需要變更資源屬性值。資源的屬性在其資源類型結構描述中定義。這包括是否需要性質、有效值以及其他性質約束。如需檢視資源屬性定義的詳細資訊,請參閱檢視資源類型結構描述。
構成修補文件
若要更新資源,請先將更新定義為清單修補操作包含在 JSON 修補程式文件中。此修補文件必須符合中定義的標準RFC- JavaScript 物件標記法 (JSON) 修補程式
每個修補程式作業都會定義特定資源屬性的單一更新。必要的屬性如下:
-
op
:操作類型。雲端控制 API 支援 RFC 6902 中定義的所有作業:add
、remove
、replace
、move
、copy
,以及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 永遠不會運行第二個replace
operation.
[ { "op": "test", "path": "/RetentionInDays", "value":3653 }, { "op": "replace", "path": "/RetentionInDays", "value":180 } ]
追蹤更新資源請求的進度
所以此update-resource
命令會傳回 aProgressEvent
物件,您可以使用來追蹤資源操作請求的目前狀態。如需詳細資訊,請參閱「」追蹤資源請求的進度。