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 :
-
Un développeur de modèles définit une ressource personnalisée avec un
ServiceTokenetServiceTimeoutdans le modèle et lance une opération de pile. -
CloudFormation envoie une demande JSON au fournisseur de ressources personnalisées via SNS ou Lambda.
-
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.
-
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
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
SUCCESSouFAILED.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
PhysicalResourceIddé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
Statusa pour valeurFAILED. 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 surtrue, toutes les valeurs renvoyées sont masquées par des astérisques (*****), à l'exception de celles stockées dans la sectionMetadatadu modèle. CloudFormation ne transforme pas, ne modifie pas et ne censure aucune information que vous incluez dans la sectionMetadata. La valeur par défaut estfalse.Pour plus d’informations sur l’utilisation de
NoEchopour masquer les informations sensibles, consultez la bonne pratique N'incorporez pas d'informations d'identification dans vos modèles.Disponible uniquement pour
Createet pourUpdateles réponses. Non pris en charge pourDeleteles 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
Createet pourUpdateles réponses. Non pris en charge pourDeleteles réponses.Important
Si les paires nom-valeur contiennent des informations sensibles, vous devez utiliser le champ
NoEchopour 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"
}