Ao alterar as propriedades de um recurso personalizado em um modelo, o Resource Orchestration Service (ROS) envia uma solicitação de recurso personalizado com RequestType definido como Update. O código do recurso personalizado não precisa detectar a alteração, pois a chamada Update já indica que as propriedades foram modificadas.
Solicitação
Uma solicitação de atualização contém os seguintes campos:
-
RequestType
Defina como
Update. -
ResponseURL
URL de rede pública pré-assinada usada pelo provedor de recursos personalizados para enviar respostas ao ROS.
-
IntranetResponseURL
URL de rede interna pré-assinada para uso no ECS. O provedor de recursos personalizados usa essa URL para enviar respostas ao ROS.
-
StackId
ID da pilha que contém o recurso personalizado.
-
StackName
Nome da pilha que contém o recurso personalizado.
-
ResourceOwnerId
ID da conta Alibaba Cloud proprietária da pilha que contém o recurso personalizado.
-
CallerId
ID da conta que executa a operação na pilha. Pode ser uma conta Alibaba Cloud ou um usuário do Resource Access Management (RAM).
-
RegionId
Região da pilha que contém o recurso personalizado.
-
RequestId
ID exclusivo da solicitação.
-
ResourceType
Tipo do recurso personalizado, conforme especificado pelo desenvolvedor no modelo ROS. O nome do tipo de recurso pode ter até 68 caracteres e conter letras, dígitos, sublinhados (_), arrobas (@) e hifens (-).
-
LogicalResourceId
Nome (ID lógico) do recurso personalizado, conforme especificado pelo desenvolvedor no modelo ROS.
-
PhysicalResourceId
ID físico definido pelo provedor de recursos personalizados. Esse ID é exclusivo para o provedor.
-
ResourceProperties
Conteúdo do objeto
Parametersdentro deProperties, conforme especificado pelo desenvolvedor do modelo. A estrutura é definida pelo provedor de recursos personalizados. -
OldResourceProperties
Conteúdo do objeto
Parametersdentro dePropertiesda configuração anterior do recurso.
Exemplo
{
"RequestType" : "Update",
"RequestId" : "unique id for this update request",
"ResponseURL" : "pre-signed-url-for-update-response",
"IntranetResponseURL" : "pre-signed-intranet-url-for-create-response",
"ResourceType" : "Custom::MyCustomResourceType",
"LogicalResourceId" : "name of resource in template",
"PhysicalResourceId" : "custom resource provider-defined physical id",
"StackId" : "stack id",
"StackName" : "stack name",
"ResourceOwnerId": "resource owner id",
"CallerId": "caller id",
"RegionId": "region id",
"ResourceProperties" : {
"key1" : "new-string",
"key2" : [ "new-list" ],
"key3" : { "key4" : "new-map" }
},
"OldResourceProperties" : {
"key1" : "string",
"key2" : [ "list" ],
"key3" : { "key4" : "map" }
}
}
Resposta
Sucesso
Quando uma solicitação de atualização tem êxito, o provedor de recursos personalizados deve enviar uma resposta ao ROS com os seguintes campos:
-
Status
Deve ser
SUCCESS. -
RequestId
ID exclusivo da solicitação. Copie este valor da solicitação.
-
LogicalResourceId
Nome (ID lógico) do recurso personalizado, conforme especificado pelo desenvolvedor no modelo ROS. Copie este valor da solicitação.
-
StackId
ID da pilha que contém o recurso personalizado. Copie este valor da solicitação.
-
PhysicalResourceId
Este valor é imutável. Copie-o da solicitação.
-
Data
Opcional. Pares nome-valor definidos pelo provedor de recursos personalizados e retornados na resposta. Use a função
Fn::GetAttno modelo para acessar esses valores pelo nome.
Exemplo
{
"Status" : "SUCCESS",
"RequestId" : "unique id for this update request (copied from request)",
"LogicalResourceId" : "name of resource in template (copied from request)",
"StackId" : "stack id (copied from request)",
"PhysicalResourceId" : "custom resource provider-defined physical id",
"Data" : {
"keyThatCanBeUsedInGetAtt1" : "data for key 1",
"keyThatCanBeUsedInGetAtt2" : "data for key 2"
}
}
Falha
Se uma solicitação de atualização falhar, envie uma resposta ao ROS com os seguintes campos:
-
Status
Deve ser
FAILED. -
Reason
Descrição do motivo da falha.
-
RequestId
ID exclusivo da solicitação. Copie este valor da solicitação.
-
LogicalResourceId
Nome (ID lógico) do recurso personalizado, conforme especificado pelo desenvolvedor no modelo ROS. Copie este valor da solicitação.
-
StackId
ID da pilha que contém o recurso personalizado. Copie este valor da solicitação.
Exemplo
{
"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" : "stack id (copied from request)"
}