本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
更新
當範本開發人員變更範本中自訂資源的屬性並更新堆疊時, CloudFormation 會將請求傳送至RequestType
設定為 的自訂資源提供者Update
。這表示您的自訂資源程式碼不需要偵測資源的變更,因為它知道其屬性在請求類型為 時已變更Update
。
如需自訂資源及其運作方式的簡介,請參閱 使用自訂資源建立自訂佈建邏輯。
請求
更新包含以下欄位的請求:
RequestType
-
Update
. RequestId
-
請求的唯一 ID。
ResponseURL
-
回應URL會識別預先簽章的 S3 儲存貯體,該儲存貯體會從自訂資源提供者接收對 的回應 AWS CloudFormation。
ResourceType
-
範本中自訂資源的範本開發人員選擇資源類型 CloudFormation 。自訂資源類型名稱的長度上限為 60 個字元,且可包含英數字元及以下字元:
_@-
。您無法於更新期間變更類型。 LogicalResourceId
-
AWS CloudFormation 範本內由範本開發人員選擇之自訂資源的名稱 (邏輯 ID)。
StackId
-
Amazon Resource Name (ARN),用於識別包含自訂資源的堆疊。
PhysicalResourceId
-
提供者專屬的 custom resource provider 定義之必要的實體 ID。
傳回的
PhysicalResourceId
值可以變更自訂資源更新操作。如果傳回的值相同,則視為正常更新。如果傳回的值不同, 會將更新 AWS CloudFormation 識別為取代,並將刪除請求傳送至舊資源。如需詳細資訊,請參閱AWS::CloudFormation::CustomResource
。 ResourceProperties
-
範本開發人員在更新範本中宣告的新資源屬性值 CloudFormation 。
OldResourceProperties
-
範本開發人員先前在 CloudFormation 範本中宣告的資源屬性值。
範例
{
"RequestType" : "Update",
"RequestId" : "unique id for this update request",
"ResponseURL" : "pre-signed-url-for-update-response",
"ResourceType" : "Custom::MyCustomResourceType",
"LogicalResourceId" : "name of resource in template",
"StackId" : "arn:aws:cloudformation:us-west-2:123456789012:stack/mystack/5b918d10-cd98-11ea-90d5-0a9cd3354c10",
"PhysicalResourceId" : "custom resource provider-defined physical id",
"ResourceProperties" : {
"key1" : "new-string",
"key2" : [ "new-list" ],
"key3" : { "key4" : "new-map" }
},
"OldResourceProperties" : {
"key1" : "string",
"key2" : [ "list" ],
"key3" : { "key4" : "map" }
}
}
回應
Success (成功)
如果自訂資源提供者能夠成功更新資源, CloudFormation 會預期回應SUCCESS
中要設為 的狀態。
Status
-
必須為
SUCCESS
。 RequestId
-
請求的唯一 ID。此回應值應從請求中逐字複製。
LogicalResourceId
-
AWS CloudFormation 範本內由範本開發人員選擇之自訂資源的名稱 (邏輯 ID)。此回應值應從請求中逐字複製。
StackId
-
Amazon Resource Name (ARN),用於識別包含自訂資源的堆疊。此回應值應從請求中逐字複製。
PhysicalResourceId
-
此值應為自訂資源廠商的唯一識別碼,且大小上限為 1 KB。此值必須是非空白字串,並且對於相同資源的所有回應必須完全相同。
傳回的
PhysicalResourceId
值可以變更自訂資源更新操作。如果傳回的值相同,則視為正常更新。如果傳回的值不同, 會將更新 AWS CloudFormation 識別為取代,並將刪除請求傳送至舊資源。如需詳細資訊,請參閱AWS::CloudFormation::CustomResource
。 NoEcho
-
選用。指示使用
Fn::GetAtt
函數擷取自訂資源時是否要遮罩其輸出。如果設為true
,則所有傳回的值都會以星號 (*****) 遮罩,但儲存在範本Metadata
一節中的值除外。 AWS CloudFormation 不會轉換、修改或編輯您在Metadata
章節中包含的任何資訊。預設值為false
。如需使用
NoEcho
遮蔽敏感資訊的詳細資訊,請參閱請勿在您的範本中內嵌憑證最佳實務。 Data
-
選用。要與回應一起傳送的自訂資源提供者定義之名稱值對。您可以在模板中透過
Fn::GetAtt
依名稱存取此處提供的值。重要
如果名稱值對包含敏感資訊,您應該使用
NoEcho
欄位來遮罩自訂資源的輸出。否則,這些值會透過APIs該表面屬性值 (例如DescribeStackEvents
) 顯示。
範例
{
"Status" : "SUCCESS",
"RequestId" : "unique id for this update request (copied from request)",
"LogicalResourceId" : "name of resource in template (copied from request)",
"StackId" : "arn:aws:cloudformation:us-west-2:123456789012:stack/mystack/5b918d10-cd98-11ea-90d5-0a9cd3354c10 (copied from request)",
"PhysicalResourceId" : "custom resource provider-defined physical id",
"Data" : {
"keyThatCanBeUsedInGetAtt1" : "data for key 1",
"keyThatCanBeUsedInGetAtt2" : "data for key 2"
}
}
失敗
如果資源無法使用新的屬性集更新, CloudFormation 預期狀態會設為 FAILED
,並在回應中包含失敗原因。
Status
-
必須為
FAILED
。 Reason
-
描述失敗回應的原因。
RequestId
-
請求的唯一 ID。此回應值應從請求中逐字複製。
LogicalResourceId
-
AWS CloudFormation 範本內由範本開發人員選擇之自訂資源的名稱 (邏輯 ID)。此回應值應從請求中逐字複製。
StackId
-
Amazon Resource Name (ARN),用於識別包含自訂資源的堆疊。此回應值應從請求中逐字複製。
PhysicalResourceId
-
此值應為自訂資源廠商的唯一識別碼,且大小上限為 1 KB。此值必須是非空白字串,並且對於相同資源的所有回應必須完全相同。
傳回的
PhysicalResourceId
值可以變更自訂資源更新操作。如果傳回的值相同,則視為正常更新。如果傳回的值不同, 會將更新 AWS CloudFormation 識別為取代,並將刪除請求傳送至舊資源。如需詳細資訊,請參閱AWS::CloudFormation::CustomResource
。
範例
{
"Status" : "FAILED",
"Reason" : "Required failure reason string",
"RequestId" : "unique id for this update request (copied from request)",
"LogicalResourceId" : "name of resource in template (copied from request)",
"StackId" : "arn:aws:cloudformation:us-west-2:123456789012:stack/mystack/5b918d10-cd98-11ea-90d5-0a9cd3354c10 (copied from request)",
"PhysicalResourceId" : "custom resource provider-defined physical id"
}