Cuando el desarrollador de la plantilla crea una pila que contiene un recurso personalizado, CloudFormation envía una solicitud al proveedor del recurso personalizado con RequestType
establecido en Create
. Esta solicitud se produce específicamente cuando se crea el recurso personalizado.
Para obtener una introducción a los recursos personalizados y a su funcionamiento, consulte Crear una lógica de aprovisionamiento personalizada con recursos personalizados.
Solicitud
Cree solicitudes que contengan los siguientes campos:
RequestType
-
Create
. RequestId
-
Un ID único para la solicitud.
ResponseURL
-
La URL de respuesta identifica un bucket de S3 prefirmado que recibe respuestas del proveedor de recursos personalizados para AWS CloudFormation.
ResourceType
-
El tipo de recurso elegido por el desarrollador de plantillas del recurso personalizado en la plantilla de CloudFormation. Los nombres de tipos de recursos personalizados pueden tener una longitud máxima de 60 caracteres y pueden incluir caracteres alfanuméricos y los siguientes caracteres:
_@-
. LogicalResourceId
-
El nombre elegido por el desarrollador de la plantilla (ID lógico) del recurso personalizado en la plantilla de AWS CloudFormation.
StackId
-
El nombre de recurso de Amazon (ARN) que identifica la pila que contiene el recurso personalizado.
ResourceProperties
-
Este campo contiene el contenido del objeto
Properties
enviado por el desarrollador de la plantilla. El proveedor de recursos personalizado define su contenido.
Ejemplo
{
"RequestType" : "Create",
"RequestId" : "unique id for this create request",
"ResponseURL" : "pre-signed-url-for-create-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",
"ResourceProperties" : {
"key1" : "string",
"key2" : [ "list" ],
"key3" : { "key4" : "map" }
}
}
Respuestas
Success
Cuando la solicitud de creación se lleva a cabo correctamente, se debe enviar una respuesta al bucket de Amazon S3 con los siguientes campos:
Status
-
Debe ser
SUCCESS
. RequestId
-
Un ID único para la solicitud. Este valor de respuesta debe copiarse literalmente de la solicitud.
LogicalResourceId
-
El nombre elegido por el desarrollador de la plantilla (ID lógico) del recurso personalizado en la plantilla de AWS CloudFormation. Este valor de respuesta debe copiarse literalmente de la solicitud.
StackId
-
El nombre de recurso de Amazon (ARN) que identifica la pila que contiene el recurso personalizado. Este valor de respuesta debe copiarse literalmente de la solicitud.
PhysicalResourceId
-
Este valor debe ser un identificador exclusivo del proveedor de recursos personalizados y puede tener un tamaño máximo de 1 KB. El valor debe ser una cadena que no esté vacía y debe ser idéntica para todas las respuestas del mismo recurso.
El valor devuelto para un
PhysicalResourceId
puede cambiar las operaciones de actualización de recursos personalizadas. Si el valor devuelto es el mismo, se considera una actualización normal. Si el valor es diferente, AWS CloudFormation reconoce la actualización como un reemplazo y envía una solicitud de eliminación al antiguo recurso. Para obtener más información, consulteAWS::CloudFormation::CustomResource
. NoEcho
-
Opcional. Indique si se enmascara la salida del recurso personalizado cuando se recupera con la función
Fn::GetAtt
. Si se establece entrue
, todos los valores devueltos se enmascaran con asteriscos (*****), excepto los que se almacenan en la secciónMetadata
de la plantilla. AWS CloudFormation no transforma, modifica ni redacta ninguna información que incluya en la secciónMetadata
. El valor predeterminado esfalse
.Para obtener más información sobre el uso de
NoEcho
para enmascarar información confidencial, consulte la práctica recomendada de No integre credenciales en sus plantillas. Data
-
Opcional. Los pares de nombre-valor definidos por el proveedor de recursos personalizados que se enviarán con la respuesta. Puede acceder a los valores proporcionados aquí por nombre en la plantilla con
Fn::GetAtt
.importante
Si los pares nombre-valor contienen información confidencial, debe usar el campo
NoEcho
para enmascarar la salida del recurso personalizado. De lo contrario, los valores son visibles a través de las API que muestran valores de propiedades (comoDescribeStackEvents
).
Ejemplo
{
"Status" : "SUCCESS",
"RequestId" : "unique id for this create 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" : "required vendor-defined physical id that is unique for that vendor",
"Data" : {
"keyThatCanBeUsedInGetAtt1" : "data for key 1",
"keyThatCanBeUsedInGetAtt2" : "data for key 2"
}
}
Con error
Cuando la solicitud de creación se realiza incorrectamente, se debe enviar una respuesta al bucket de S3 con los siguientes campos:
Status
-
Debe ser
FAILED
. Reason
-
Describe el motivo de una respuesta de error.
RequestId
-
Un ID único para la solicitud. Este valor de respuesta debe copiarse literalmente de la solicitud.
LogicalResourceId
-
El nombre elegido por el desarrollador de la plantilla (ID lógico) del recurso personalizado en la plantilla de AWS CloudFormation. Este valor de respuesta debe copiarse literalmente de la solicitud.
StackId
-
El nombre de recurso de Amazon (ARN) que identifica la pila que contiene el recurso personalizado. Este valor de respuesta debe copiarse literalmente de la solicitud.
PhysicalResourceId
-
Este valor debe ser un identificador exclusivo del proveedor de recursos personalizados y puede tener un tamaño máximo de 1 KB. El valor debe ser una cadena que no esté vacía y debe ser idéntica para todas las respuestas del mismo recurso.
El valor devuelto para un
PhysicalResourceId
puede cambiar las operaciones de actualización de recursos personalizadas. Si el valor devuelto es el mismo, se considera una actualización normal. Si el valor es diferente, AWS CloudFormation reconoce la actualización como un reemplazo y envía una solicitud de eliminación al antiguo recurso. Para obtener más información, consulteAWS::CloudFormation::CustomResource
.
Ejemplo
{
"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" : "arn:aws:cloudformation:us-west-2:123456789012:stack/mystack/5b918d10-cd98-11ea-90d5-0a9cd3354c10 (copied from request)",
"PhysicalResourceId" : "required vendor-defined physical id that is unique for that vendor"
}