Configurer les entrées et les sorties pour vos actions - AWS Systems Manager

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.

Configurer les entrées et les sorties pour vos actions

Chaque action d’automatisation répond en fonction des entrées qu’elle reçoit. Dans la plupart des cas, vous transmettez ensuite le résultat aux actions suivantes. Dans l’expérience de conception visuelle, vous pouvez configurer les données d’entrée et de sortie d’une action dans les onglets Entrées et Sorties du panneau Formulaire.

Pour obtenir des informations détaillées sur la définition et l’utilisation de la sortie pour les actions d’automatisation, consultez Utilisation des sorties d'action comme entrées.

Fournir des données d’entrée pour une action

Chaque action d’automatisation comporte une ou plusieurs entrées pour lesquelles vous devez fournir une valeur. La valeur que vous fournissez pour la saisie d’une action est déterminée par le type de données et le format acceptés par l’action. Par exemple, les actions aws:sleep nécessitent une valeur de chaîne au format ISO 8601 pour l’entrée Duration.

Généralement, vous utilisez des actions dans le flux de travail de votre runbook qui renvoient des résultats que vous souhaitez utiliser dans les actions suivantes. Il est important de vous assurer que les valeurs d’entrée sont correctes afin d’éviter des erreurs dans le flux de travail de votre runbook. Les valeurs d’entrée sont également importantes car elles déterminent si l’action renvoie le résultat attendu. Par exemple, lorsque vous utilisez l’action aws:executeAwsApi, vous devez vous assurer que vous fournissez la bonne valeur pour l’opération d’API.

Définir les données de sortie pour une action

Certaines actions d’automatisation renvoient un résultat après avoir effectué les opérations définies. Les actions qui renvoient une sortie ont des sorties prédéfinies ou vous permettent de définir vous-même les sorties. Par exemple, l’action aws:createImage possède des sorties prédéfinies qui renvoient ImageId et ImageState. En comparaison, avec l’action aws:executeAwsApi, vous pouvez définir les sorties que vous souhaitez obtenir de l’opération d’API spécifiée. Par conséquent, vous pouvez renvoyer une ou plusieurs valeurs issues d’une seule opération d’API à utiliser dans les actions suivantes.

Pour définir vos propres sorties pour une action d’automatisation, vous devez spécifier le nom de la sortie, le type de données et la valeur de sortie. Pour continuer à utiliser l’action aws:executeAwsApi comme exemple, supposons que vous appelez l’opération d’API deDescribeInstances depuis Amazon EC2. Dans cet exemple, vous souhaitez renvoyer, ou générer, le State d’une instance Amazon EC2 et diviser le flux de travail de votre runbook en fonction de la sortie. Vous choisissez de nommer la sortie InstanceState et d’utiliser le type de données String.

Le processus de définition de la valeur réelle de la sortie varie en fonction de l’action. Par exemple, si vous utilisez l’action aws:executeScript, vous devez utiliser des déclarations return dans vos fonctions pour fournir des données à vos sorties. Avec d’autres actions telles que aws:executeAwsApi, aws:waitForAwsResourceProperty et aws:assertAwsResourceProperty, un Selector est requis. Le Selector, ou PropertySelector comme l’appellent certaines actions, est une chaîne JSONPath utilisée pour traiter la réponse JSON d’une opération d’API. Il est important de comprendre comment l’objet de réponse JSON issu d’une opération d’API est structuré afin de pouvoir sélectionner la valeur correcte pour votre sortie. À l’aide de l’opération d’API DescribeInstances mentionnée précédemment, consultez l’exemple de réponse JSON suivant :

{ "reservationSet": { "item": { "reservationId": "r-1234567890abcdef0", "ownerId": 123456789012, "groupSet": "", "instancesSet": { "item": { "instanceId": "i-1234567890abcdef0", "imageId": "ami-bff32ccc", "instanceState": { "code": 16, "name": "running" }, "privateDnsName": "ip-192-168-1-88.eu-west-1.compute.internal", "dnsName": "ec2-54-194-252-215.eu-west-1.compute.amazonaws.com", "reason": "", "keyName": "my_keypair", "amiLaunchIndex": 0, "productCodes": "", "instanceType": "t2.micro", "launchTime": "2018-05-08T16:46:19.000Z", "placement": { "availabilityZone": "eu-west-1c", "groupName": "", "tenancy": "default" }, "monitoring": { "state": "disabled" }, "subnetId": "subnet-56f5f000", "vpcId": "vpc-11112222", "privateIpAddress": "192.168.1.88", "ipAddress": "54.194.252.215", "sourceDestCheck": true, "groupSet": { "item": { "groupId": "sg-e4076000", "groupName": "SecurityGroup1" } }, "architecture": "x86_64", "rootDeviceType": "ebs", "rootDeviceName": "/dev/xvda", "blockDeviceMapping": { "item": { "deviceName": "/dev/xvda", "ebs": { "volumeId": "vol-1234567890abcdef0", "status": "attached", "attachTime": "2015-12-22T10:44:09.000Z", "deleteOnTermination": true } } }, "virtualizationType": "hvm", "clientToken": "xMcwG14507example", "tagSet": { "item": { "key": "Name", "value": "Server_1" } }, "hypervisor": "xen", "networkInterfaceSet": { "item": { "networkInterfaceId": "eni-551ba000", "subnetId": "subnet-56f5f000", "vpcId": "vpc-11112222", "description": "Primary network interface", "ownerId": 123456789012, "status": "in-use", "macAddress": "02:dd:2c:5e:01:69", "privateIpAddress": "192.168.1.88", "privateDnsName": "ip-192-168-1-88.eu-west-1.compute.internal", "sourceDestCheck": true, "groupSet": { "item": { "groupId": "sg-e4076000", "groupName": "SecurityGroup1" } }, "attachment": { "attachmentId": "eni-attach-39697adc", "deviceIndex": 0, "status": "attached", "attachTime": "2018-05-08T16:46:19.000Z", "deleteOnTermination": true }, "association": { "publicIp": "54.194.252.215", "publicDnsName": "ec2-54-194-252-215.eu-west-1.compute.amazonaws.com", "ipOwnerId": "amazon" }, "privateIpAddressesSet": { "item": { "privateIpAddress": "192.168.1.88", "privateDnsName": "ip-192-168-1-88.eu-west-1.compute.internal", "primary": true, "association": { "publicIp": "54.194.252.215", "publicDnsName": "ec2-54-194-252-215.eu-west-1.compute.amazonaws.com", "ipOwnerId": "amazon" } } }, "ipv6AddressesSet": { "item": { "ipv6Address": "2001:db8:1234:1a2b::123" } } } }, "iamInstanceProfile": { "arn": "arn:aws:iam::123456789012:instance-profile/AdminRole", "id": "ABCAJEDNCAA64SSD123AB" }, "ebsOptimized": false, "cpuOptions": { "coreCount": 1, "threadsPerCore": 1 } } } } } }

Dans l’objet de réponse JSON, l’instance State est imbriquée dans un objet Instances, qui est imbriqué dans l’objet Reservations. Pour renvoyer la valeur de l’instance State, utilisez la chaîne suivante pour le Selector de sorte que la valeur puisse être utilisée dans notre sortie : $.Reservations[0].Instances[0].State.Name.

Pour référencer une valeur de sortie dans les actions suivantes du flux de travail de votre runbook, le format suivant est utilisé : {{ StepName.NameOfOutput }}. Par exemple, {{ GetInstanceState.InstanceState }}. Dans l’expérience de conception visuelle, vous pouvez choisir les valeurs de sortie à utiliser dans les actions suivantes à l’aide de la liste déroulante des entrées. Lorsque vous utilisez des sorties dans des actions ultérieures, le type de données de la sortie doit correspondre au type de données de l’entrée. Dans cet exemple, la sortie InstanceState est un String. Par conséquent, pour utiliser la valeur dans l’entrée d’une action ultérieure, celle-ci doit accepter un String.