Atualizar solicitação de recursos personalizados para o CloudFormation
Quando o desenvolvedor de modelos faz alterações nas propriedades de uma pilha que contém um recurso personalizado e atualiza a pilha, o CloudFormation envia uma solicitação ao provedor de recursos personalizados com RequestType
definido como Update
. Isso significa que o código do recurso personalizado não precisa detectar as alterações nos recursos, pois sabe que as propriedades foram alteradas quando o tipo de solicitação é Update
.
Para obter uma introdução aos recursos personalizados e como eles funcionam, consulte Crie uma lógica de provisionamento personalizada com recursos personalizados.
Solicitação
Atualize solicitações que contenham os seguintes campos:
RequestType
-
Update
. RequestId
-
Um ID exclusivo para a solicitação.
ResponseURL
-
O URL de resposta identifica um bucket do S3 pré-assinado que recebe respostas do provedor de recursos personalizados para o AWS CloudFormation.
ResourceType
-
O tipo de recurso escolhido pelo desenvolvedor do modelo do recurso personalizado no modelo do CloudFormation. Os nomes de tipos de recursos personalizados podem incluir até 60 caracteres, incluindo alfanuméricos e os seguintes caracteres:
_@-
. Não é possível alterar o tipo durante uma atualização. LogicalResourceId
-
O nome do modelo escolhido pelo desenvolvedor (ID lógico) do recurso personalizado no modelo AWS CloudFormation.
StackId
-
O nome do recurso da Amazon (ARN) que identifica a pilha que contém o recurso personalizado.
PhysicalResourceId
-
Uma ID física definida por custom resource provider exclusiva para esse provedor.
O valor retornado para um
PhysicalResourceId
pode alterar as operações de atualização de recursos personalizados. Se o valor retornado for o mesmo, a atualização é considerada normal. Se o valor retornado for diferente, o AWS CloudFormation reconhece a atualização como uma substituição e envia uma solicitação de exclusão ao recurso antigo. Para ter mais informações, consulteAWS::CloudFormation::CustomResource
. ResourceProperties
-
Os novos valores da propriedade do recurso que são declarados pelo desenvolvedor do modelo no modelo atualizado do CloudFormation.
OldResourceProperties
-
Os valores da propriedade do recurso que foram declarados anteriormente pelo desenvolvedor do modelo no modelo do CloudFormation.
Exemplo
{
"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" }
}
}
Respostas
Bem-sucedida
Se o provedor de recursos personalizados conseguir atualizar o recurso com êxito, o CloudFormation vai supor que o status esteja definido como SUCCESS
na resposta.
Status
-
Deve ser
SUCCESS
. RequestId
-
Um ID exclusivo para a solicitação. Esse valor de resposta deve ser copiado literalmente com base na solicitação.
LogicalResourceId
-
O nome do modelo escolhido pelo desenvolvedor (ID lógico) do recurso personalizado no modelo AWS CloudFormation. Esse valor de resposta deve ser copiado literalmente com base na solicitação.
StackId
-
O nome do recurso da Amazon (ARN) que identifica a pilha que contém o recurso personalizado. Esse valor de resposta deve ser copiado literalmente com base na solicitação.
PhysicalResourceId
-
Esse valor deve ser um identificador exclusivo do fornecedor de recursos personalizados e pode ter até 1 KB de tamanho. O valor deve ser uma string não vazia e deve ser idêntico para todas as respostas do mesmo recurso.
O valor retornado para um
PhysicalResourceId
pode alterar as operações de atualização de recursos personalizados. Se o valor retornado for o mesmo, a atualização é considerada normal. Se o valor retornado for diferente, o AWS CloudFormation reconhece a atualização como uma substituição e envia uma solicitação de exclusão ao recurso antigo. Para ter mais informações, consulteAWS::CloudFormation::CustomResource
. NoEcho
-
Opcional. Indica se é necessário mascarar a saída do recurso personalizado quando ela for recuperada usando a função
Fn::GetAtt
. Se definido comotrue
, todos os valores retornados serão mascarados com asteriscos (*****), exceto aqueles armazenados na seçãoMetadata
do modelo. O AWS CloudFormation não transforma, modifica nem edita nenhuma informação incluída na seçãoMetadata
. O valor padrão éfalse
.Para obter mais informações sobre como usar
NoEcho
para mascarar informações confidenciais, consulte a prática recomendada Não incorporar credenciais em seus modelos. Data
-
Opcional. Os pares de nome/valor definidos pelo provedor de recursos personalizados a serem enviados com a resposta. É possível acessar os valores fornecidos aqui pelo nome no modelo com
Fn::GetAtt
.Importante
Se os pares de nome/valor contiverem informações confidenciais, você deverá utilizar o campo
NoEcho
para mascarar a saída do recurso personalizado. Caso contrário, os valores estarão visíveis por meio de APIs que exibem valores de propriedades (comoDescribeStackEvents
).
Exemplo
{
"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"
}
}
Falha
Se não for possível atualizar o recurso com um novo conjunto de propriedades, o CloudFormation vai supor que o status esteja definido como FAILED
, junto com um motivo para a falha, na resposta.
Status
-
Deve ser
FAILED
. Reason
-
Descreve o motivo de uma resposta de falha.
RequestId
-
Um ID exclusivo para a solicitação. Esse valor de resposta deve ser copiado literalmente com base na solicitação.
LogicalResourceId
-
O nome do modelo escolhido pelo desenvolvedor (ID lógico) do recurso personalizado no modelo AWS CloudFormation. Esse valor de resposta deve ser copiado literalmente com base na solicitação.
StackId
-
O nome do recurso da Amazon (ARN) que identifica a pilha que contém o recurso personalizado. Esse valor de resposta deve ser copiado literalmente com base na solicitação.
PhysicalResourceId
-
Esse valor deve ser um identificador exclusivo do fornecedor de recursos personalizados e pode ter até 1 KB de tamanho. O valor deve ser uma string não vazia e deve ser idêntico para todas as respostas do mesmo recurso.
O valor retornado para um
PhysicalResourceId
pode alterar as operações de atualização de recursos personalizados. Se o valor retornado for o mesmo, a atualização é considerada normal. Se o valor retornado for diferente, o AWS CloudFormation reconhece a atualização como uma substituição e envia uma solicitação de exclusão ao recurso antigo. Para ter mais informações, consulteAWS::CloudFormation::CustomResource
.
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" : "arn:aws:cloudformation:us-west-2:123456789012:stack/mystack/5b918d10-cd98-11ea-90d5-0a9cd3354c10 (copied from request)",
"PhysicalResourceId" : "custom resource provider-defined physical id"
}