CloudFormation demande de ressource personnalisée et référence de réponse - AWS CloudFormation

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

CloudFormation demande de ressource personnalisée et référence de réponse

CloudFormation gère les ressources personnalisées via un protocole de demande-réponse qui communique avec votre fournisseur de ressources personnalisées. Chaque demande inclut un type de demande (CreateUpdate, ouDelete) et suit ce flux de travail de haut niveau :

  1. Un développeur de modèles définit une ressource personnalisée avec un ServiceToken et ServiceTimeout dans le modèle et lance une opération de pile.

  2. CloudFormation envoie une demande JSON au fournisseur de ressources personnalisées via SNS ou Lambda.

  3. Le fournisseur de ressources personnalisées traite la demande et renvoie une réponse JSON à une URL de compartiment Amazon S3 présignée avant l'expiration du délai d'expiration.

  4. CloudFormation lit la réponse et poursuit l'opération de pile. Si aucune réponse n'est reçue avant la fin du délai imparti, la demande est considérée comme infructueuse et l'opération de pile échoue.

Pour de plus amples informations, veuillez consulter Fonctionnement des ressources personnalisées.

Cette section décrit la structure, les paramètres et les réponses attendues pour chaque type de demande.

Note

La taille totale du corps de la réponse ne peut pas dépasser 4 096 octets.

Configuration du modèle

Lors de la définition d'une ressource personnalisée dans un modèle, le développeur du modèle utilise AWS::CloudFormation::CustomResourceles propriétés suivantes :

ServiceToken

Un ARN de rubrique Amazon SNS ou un ARN de fonction Lambda provenant de la même région que la pile.

Obligatoire : oui

Type : chaîne

ServiceTimeout

Durée maximale, en secondes, avant l'expiration d'une opération sur une ressource personnalisée. Il doit s'agir d'une valeur comprise entre 1 et 3 600. Par défaut : 3 600 secondes (1 heure).

Obligatoire : non

Type : chaîne

Des propriétés de ressources supplémentaires sont prises en charge. Les propriétés des ressources seront incluses comme ResourceProperties dans la demande. Le fournisseur de ressources personnalisées doit déterminer quelles propriétés sont valides et quelles sont leurs valeurs acceptables.

Objet Requête

Create

Lorsque le développeur du modèle crée une pile contenant une ressource personnalisée, il CloudFormation envoie une demande avec RequestType set toCreate.

Les requêtes de création contiennent les champs suivants :

RequestType

Create.

Obligatoire : oui

Type : chaîne

RequestId

Un ID unique pour la demande.

La combinaison de StackId avec RequestId forme une valeur que vous pouvez utiliser pour identifier de manière unique une demande sur une ressource personnalisée spécifique.

Obligatoire : oui

Type : chaîne

StackId

L'Amazon Resource Name (ARN) qui identifie la pile contenant la ressource personnalisée.

La combinaison de StackId avec RequestId forme une valeur que vous pouvez utiliser pour identifier de manière unique une demande sur une ressource personnalisée spécifique.

Obligatoire : oui

Type : chaîne

ResponseURL

L'URL de réponse identifie un compartiment S3 présigné qui reçoit les réponses du fournisseur de ressources personnalisées à CloudFormation.

Obligatoire : oui

Type : chaîne

ResourceType

Type de ressource personnalisée choisi par le développeur de modèle dans le modèle CloudFormation . Le nom des types de ressources personnalisées ne doit pas dépasser 60 caractères. Il peut inclure des caractères alphanumériques, ainsi que les caractères suivants : _@-.

Obligatoire : oui

Type : chaîne

LogicalResourceId

Le nom, choisi par le développeur du modèle, (ID logique) de la ressource personnalisée dans le modèle CloudFormation .

Obligatoire : oui

Type : chaîne

ResourceProperties

Ce champ contient le contenu de l'objet Properties envoyé par le développeur du modèle. Son contenu est défini par le custom resource provider.

Obligatoire : non

Type : objet JSON

Exemple

{ "RequestType" : "Create", "RequestId" : "unique-request-id", "StackId" : "arn:aws:cloudformation:us-west-2:123456789012:stack/mystack/id", "ResponseURL" : "pre-signed-url-for-create-response", "ResourceType" : "Custom::MyCustomResourceType", "LogicalResourceId" : "resource-logical-id", "ResourceProperties" : { "key1" : "string", "key2" : [ "list" ], "key3" : { "key4" : "map" } } }
Update

Lorsque le développeur du modèle modifie les propriétés d'une ressource personnalisée dans le modèle et met à jour la pile, CloudFormation envoie une demande au fournisseur de ressources personnalisées avec la valeur RequestType définie surUpdate. Cela signifie que le code de votre ressource personnalisée n’a pas besoin de détecter les modifications dans les propriétés, puisqu’il sait que celles-ci ont été modifiées lorsque le type de requête est Update.

Les demandes de mise à jour contiennent les champs suivants :

RequestType

Update.

Obligatoire : oui

Type : chaîne

RequestId

Un ID unique pour la demande.

La combinaison de StackId avec RequestId forme une valeur que vous pouvez utiliser pour identifier de manière unique une demande sur une ressource personnalisée spécifique.

Obligatoire : oui

Type : chaîne

StackId

L'Amazon Resource Name (ARN) qui identifie la pile contenant la ressource personnalisée.

La combinaison de StackId avec RequestId forme une valeur que vous pouvez utiliser pour identifier de manière unique une demande sur une ressource personnalisée spécifique.

Obligatoire : oui

Type : chaîne

ResponseURL

L'URL de réponse identifie un compartiment S3 présigné qui reçoit les réponses du fournisseur de ressources personnalisées à CloudFormation.

Obligatoire : oui

Type : chaîne

ResourceType

Type de ressource personnalisée choisi par le développeur de modèle dans le modèle CloudFormation . Le nom des types de ressources personnalisées ne doit pas dépasser 60 caractères. Il peut inclure des caractères alphanumériques, ainsi que les caractères suivants : _@-. Vous ne pouvez pas modifier le type pendant une mise à jour.

Obligatoire : oui

Type : chaîne

LogicalResourceId

Le nom, choisi par le développeur du modèle, (ID logique) de la ressource personnalisée dans le modèle CloudFormation .

Obligatoire : oui

Type : chaîne

PhysicalResourceId

Un identifiant physique personnalisé défini par le fournisseur de ressources qui est unique pour ce fournisseur.

Obligatoire : oui

Type : chaîne

ResourceProperties

Ce champ contient le contenu de l'objet Properties envoyé par le développeur du modèle. Son contenu est défini par le custom resource provider.

Obligatoire : non

Type : objet JSON

OldResourceProperties

Utilisé uniquement pour les demandes Update. Valeurs des propriétés de ressource qui ont été déclarées précédemment par le template developer dans le modèle CloudFormation .

Obligatoire : oui

Type : objet JSON

Exemple

{ "RequestType" : "Update", "RequestId" : "unique-request-id", "StackId" : "arn:aws:cloudformation:us-west-2:123456789012:stack/mystack/id", "ResponseURL" : "pre-signed-url-for-update-response", "ResourceType" : "Custom::MyCustomResourceType", "LogicalResourceId" : "resource-logical-id", "PhysicalResourceId" : "provider-defined-physical-id", "ResourceProperties" : { "key1" : "new-string", "key2" : [ "new-list" ], "key3" : { "key4" : "new-map" } }, "OldResourceProperties" : { "key1" : "string", "key2" : [ "list" ], "key3" : { "key4" : "map" } } }
Delete

Lorsque le développeur du modèle supprime la pile ou supprime la ressource personnalisée du modèle, puis met à jour la pile, CloudFormation envoie une demande avec RequestType set toDelete.

Les requêtes de suppression contiennent les champs suivants :

RequestType

Delete.

Obligatoire : oui

Type : chaîne

RequestId

Un ID unique pour la demande.

Obligatoire : oui

Type : chaîne

StackId

L'Amazon Resource Name (ARN) qui identifie la pile contenant la ressource personnalisée.

Obligatoire : oui

Type : chaîne

ResponseURL

L'URL de réponse identifie un compartiment S3 présigné qui reçoit les réponses du fournisseur de ressources personnalisées à CloudFormation.

Obligatoire : oui

Type : chaîne

ResourceType

Type de ressource personnalisée choisi par le développeur de modèle dans le modèle CloudFormation . Le nom des types de ressources personnalisées ne doit pas dépasser 60 caractères. Il peut inclure des caractères alphanumériques, ainsi que les caractères suivants : _@-.

Obligatoire : oui

Type : chaîne

LogicalResourceId

Le nom, choisi par le développeur du modèle, (ID logique) de la ressource personnalisée dans le modèle CloudFormation .

Obligatoire : oui

Type : chaîne

PhysicalResourceId

Un identifiant physique personnalisé défini par le fournisseur de ressources qui est unique pour ce fournisseur.

Obligatoire : oui

Type : chaîne

ResourceProperties

Ce champ contient le contenu de l'objet Properties envoyé par le développeur du modèle. Son contenu est défini par le custom resource provider.

Obligatoire : non

Type : objet JSON

Exemple

{ "RequestType" : "Delete", "RequestId" : "unique-request-id", "StackId" : "arn:aws:cloudformation:us-west-2:123456789012:stack/mystack/id", "ResponseURL" : "pre-signed-url-for-delete-response", "ResourceType" : "Custom::MyCustomResourceType", "LogicalResourceId" : "resource-logical-id", "PhysicalResourceId" : "provider-defined-physical-id", "ResourceProperties" : { "key1" : "string", "key2" : [ "list" ], "key3" : { "key4" : "map" } } }

Objet Réponse

Le fournisseur de ressources personnalisées envoie une réponse à l'URL pré-signée pour tous les types de demandes. Si le fournisseur de ressources personnalisées n'envoie pas de réponse, CloudFormation attend la fin de l'opération.

La réponse doit être un objet JSON avec les champs suivants :

Status

Doit être SUCCESS ou FAILED.

Obligatoire : oui

Type : chaîne

RequestId

Un ID unique pour la demande. Copiez cette valeur exactement telle qu'elle apparaît dans la demande.

Obligatoire : oui

Type : chaîne

StackId

L'Amazon Resource Name (ARN) qui identifie la pile contenant la ressource personnalisée. Copiez cette valeur exactement telle qu'elle apparaît dans la demande.

Obligatoire : oui

Type : chaîne

LogicalResourceId

Le nom, choisi par le développeur du modèle, (ID logique) de la ressource personnalisée dans le modèle CloudFormation . Copiez cette valeur exactement telle qu'elle apparaît dans la demande.

Obligatoire : oui

Type : chaîne

PhysicalResourceId

Cette valeur doit être un identifiant unique pour le fournisseur de ressources personnalisées et sa taille ne peut pas dépasser 1 Ko. La valeur doit être une chaîne non vide et doit être identique pour toutes les réponses pour la même ressource.

Lors de la mise à jour de ressources personnalisées, la valeur renvoyée pour PhysicalResourceId détermine le comportement de mise à jour. Si la valeur reste la même, CloudFormation considère qu'il s'agit d'une mise à jour normale. Si la valeur change, CloudFormation interprète la mise à jour comme un remplacement et envoie une demande de suppression à l'ancienne ressource. Pour de plus amples informations, veuillez consulter AWS::CloudFormation::CustomResource.

Obligatoire : oui

Type : chaîne

Reason

Décrit le motif d'une réponse à un échec.

Obligatoire si Status a pour valeur FAILED. Sinon, c'est facultatif.

Obligatoire : Conditionnelle

Type : chaîne

NoEcho

Indique s'il faut masquer la sortie de la ressource personnalisée lorsque celle-ci est récupérée à l'aide de la fonction Fn::GetAtt. Si la valeur est définie sur true, toutes les valeurs renvoyées sont masquées par des astérisques (*****), à l'exception de celles stockées dans la section Metadata du modèle. CloudFormation ne transforme pas, ne modifie pas et ne censure aucune information que vous incluez dans la section Metadata. La valeur par défaut est false.

Pour plus d’informations sur l’utilisation de NoEcho pour masquer les informations sensibles, consultez la bonne pratique N'incorporez pas d'informations d'identification dans vos modèles.

Disponible uniquement pour Create et pour Update les réponses. Non pris en charge pour Delete les réponses.

Obligatoire : non

Type : valeur booléenne

Data

Les paires nom-valeur définies par le custom resource provider à envoyer avec la réponse. Vous pouvez accéder aux valeurs fournies ici par nom dans le modèle avec Fn::GetAtt.

Disponible uniquement pour Create et pour Update les réponses. Non pris en charge pour Delete les réponses.

Important

Si les paires nom-valeur contiennent des informations sensibles, vous devez utiliser le champ NoEcho pour masquer la sortie de la ressource personnalisée. Dans le cas contraire, les valeurs sont visibles à travers APIs les valeurs des propriétés de cette surface (telles queDescribeStackEvents).

Obligatoire : non

Type : objet JSON

Exemples de réponses réussies

Createet Update réponse

{ "Status": "SUCCESS", "RequestId": "unique-request-id", "StackId": "arn:aws:cloudformation:us-west-2:123456789012:stack/name/id", "LogicalResourceId": "resource-logical-id", "PhysicalResourceId": "provider-defined-physical-id", "NoEcho": true, "Data": { "key1": "value1", "key2": "value2" } }

Réponse d'Delete

{ "Status": "SUCCESS", "RequestId": "unique-request-id", "StackId": "arn:aws:cloudformation:us-west-2:123456789012:stack/name/id", "LogicalResourceId": "resource-logical-id", "PhysicalResourceId": "provider-defined-physical-id" }

Exemple de réponse échouée

{ "Status": "FAILED", "RequestId": "unique-request-id", "StackId": "arn:aws:cloudformation:us-west-2:123456789012:stack/name/id", "LogicalResourceId": "resource-logical-id", "PhysicalResourceId": "provider-defined-physical-id", "Reason": "Required failure reason string" }