Ao criar uma stack com um recurso personalizado, o Resource Orchestration Service (ROS) envia uma solicitação de recurso personalizado com RequestType definido como Create.
Solicitação
Uma solicitação de criação contém os seguintes campos:
-
RequestType
Este campo tem o valor Create.
-
ResponseURL
URL pré-assinada de rede pública. O provedor do recurso personalizado usa essa URL para enviar uma resposta ao ROS.
-
IntranetResponseURL
URL pré-assinada de rede interna para uso em uma instância ECS. O provedor do recurso personalizado usa essa URL para enviar uma resposta ao ROS.
-
StackId
ID da stack que contém o recurso personalizado.
-
StackName
Nome da stack que contém o recurso personalizado.
-
ResourceOwnerId
ID da conta Alibaba Cloud proprietária da stack.
-
CallerId
ID da conta que executa a operação na stack. Essa conta pode ser uma conta Alibaba Cloud ou um usuário RAM.
-
RegionId
Região da stack que contém o recurso personalizado.
-
RequestId
ID exclusivo da solicitação.
-
ResourceType
Tipo do recurso personalizado especificado pelo desenvolvedor no modelo ROS. O 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 especificado pelo desenvolvedor no modelo ROS.
-
ResourceProperties
Propriedades do recurso personalizado definidas pelo desenvolvedor do modelo. O provedor do recurso personalizado define a estrutura desse objeto.
Exemplo:
{
"RequestType" : "Create",
"RequestId" : "unique id for this create request",
"ResponseURL" : "pre-signed-url-for-create-response",
"IntranetResponseURL" : "pre-signed-intranet-url-for-create-response",
"ResourceType" : "Custom::MyCustomResourceType",
"LogicalResourceId" : "name of resource in template",
"StackId" : "stack id",
"StackName" : "stack name",
"ResourceOwnerId": "resource owner id",
"CallerId": "caller id",
"RegionId": "region id",
"ResourceProperties" : {
"key1" : "string",
"key2" : [ "list" ],
"key3" : { "key4" : "map" }
}
}
Resposta
Sucesso
Se a solicitação de criação for bem-sucedida, o provedor do recurso personalizado deverá enviar uma resposta ao ROS com os seguintes campos:
-
Status
Defina este campo como SUCCESS.
-
RequestId
ID exclusivo da solicitação. Copie esse valor da solicitação original.
-
LogicalResourceId
Nome (ID lógico) do recurso personalizado especificado pelo desenvolvedor no modelo ROS. Copie esse valor da solicitação original.
-
StackId
ID da stack que contém o recurso personalizado. Copie esse valor da solicitação original.
-
PhysicalResourceId
Identificador exclusivo do recurso fornecido pelo provedor do recurso personalizado. O valor pode ter até 255 bytes, deve ser uma string não vazia e permanecer consistente em todas as respostas para o recurso.
-
Data
Opcional. Conjunto de pares nome-valor definidos pelo provedor do recurso personalizado. Use a função intrínseca
Fn::GetAttpara acessar esses valores por nome no modelo.
Exemplo:
{
"Status" : "SUCCESS",
"RequestId" : "unique id for this create request (copied from request)",
"LogicalResourceId" : "name of resource in template (copied from request)",
"StackId" : "stack id (copied from request)",
"PhysicalResourceId" : "required vendor-defined physical id that is unique for that vendor",
"Data" : {
"keyThatCanBeUsedInGetAtt1" : "data for key 1",
"keyThatCanBeUsedInGetAtt2" : "data for key 2"
}
}
Falha
Se a solicitação de criação falhar, o provedor do recurso personalizado deverá enviar uma resposta ao ROS com os seguintes campos:
-
Status
Defina este campo como FAILED.
-
Reason
Descrição do motivo da falha na solicitação.
-
RequestId
ID exclusivo da solicitação. Copie esse valor da solicitação original.
-
LogicalResourceId
Nome (ID lógico) do recurso personalizado especificado pelo desenvolvedor no modelo ROS. Copie esse valor da solicitação original.
-
StackId
ID da stack que contém o recurso personalizado. Copie esse valor da solicitação original.
Exemplo:
{
"Status" : "FAILED",
"Reason" : "Required failure reason string",
"RequestId" : "unique id for this create request (copied from request)",
"LogicalResourceId" : "name of resource in template (copied from request)",
"StackId" : "stack id (copied from request)"
}