Configuración de entradas y salidas para sus acciones
Cada acción de automatización responde en función de las entradas que recibe. En la mayoría de los casos, se pasa el resultado a las acciones siguientes. En la experiencia de diseño visual, puede configurar los datos de entrada y salida de una acción en las pestañas de Entradas y Salidas del panel de Formulario.
Para obtener información detallada acerca de cómo definir y utilizar la salida para las acciones de automatización, consulte Uso de salidas de acción como entradas.
Proporcione datos de entrada para una acción
Cada acción de automatización tiene una o más entradas para las que debe proporcionar un valor. El valor que proporcione para la entrada de una acción viene determinado por el tipo de datos y el formato que acepte la acción. Por ejemplo, las acciones aws:sleep
requieren un valor de cadena con formato ISO 8601 para la entrada Duration
.
Por lo general, en el flujo de trabajo del manual de procedimientos se utilizan acciones que devuelven los resultados que se desean utilizar en acciones posteriores. Es importante que se asegure de que los valores de entrada son correctos para evitar errores en el flujo de trabajo del manual de procedimientos. Los valores de entrada también son importantes porque determinan si la acción devuelve el resultado esperado. Por ejemplo, al usar la acción aws:executeAwsApi
, debe asegurarse de que está proporcionando el valor correcto para la operación de la API.
Defina los datos de salida de una acción
Algunas acciones de automatización devuelven la salida después de realizar las operaciones definidas. Las acciones que devuelven salidas tienen resultados predefinidos o le permiten definir las salidas usted mismo. Por ejemplo, la acción aws:createImage
tiene salidas predefinidas que devuelven un ImageId
y ImageState
. Comparativamente, con la acción aws:executeAwsApi
, puede definir las salidas que desea obtener de la operación de API especificada. Como resultado, puede devolver uno o más valores de una sola operación de API para usarlos en acciones posteriores.
Para definir sus propios resultados para una acción de automatización, debe especificar el nombre del resultado, el tipo de datos y el valor del resultado. Para seguir utilizando la aws:executeAwsApi
acción como ejemplo, supongamos que llama a la operación de DescribeInstances
API desde Amazon EC2. En este ejemplo, desea devolver o generar el State
de una instancia de Amazon EC2 y ramificar el flujo de trabajo de su manual de procedimientos en función del resultado. Puede elegir un nombre para la salida InstanceState
y usar el tipo de datos String
.
El proceso para definir el valor real de la salida varía según la acción. Por ejemplo, si utiliza la acción aws:executeScript
, debe utilizar argumentos de return
en las funciones para proporcionar datos a las salidas. Con otras acciones como aws:executeAwsApi
aws:waitForAwsResourceProperty
, y aws:assertAwsResourceProperty
, se requiere un Selector
. El Selector
, o PropertySelector
como lo denominan algunas acciones, es una cadena JSONPath que se utiliza para procesar la respuesta JSON de una operación de API. Es importante entender cómo está estructurado el objeto de respuesta JSON de una operación de API para poder seleccionar el valor correcto para la salida. Con la operación DescribeInstances
de API mencionada anteriormente, consulte el siguiente ejemplo de respuesta JSON:
{ "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 } } } } } }
En el objeto de respuesta JSON, la instancia State
está anidada en un objeto Instances
, que está anidado en el objeto Reservations
. Para devolver el valor de la instancia State
, use la siguiente cadena para el Selector
para que el valor se pueda usar en nuestra salida: $.Reservations[0].Instances[0].State.Name
.
Para hacer referencia a un valor de salida en acciones posteriores del flujo de trabajo de su manual de procedimientos, se utiliza el siguiente formato: {{
. Por ejemplo, StepName
.NameOfOutput
}}{{ GetInstanceState.InstanceState }}
. En la experiencia de diseño visual, puede elegir valores de salida para usarlos en acciones posteriores utilizando el menú desplegable de entrada. Al utilizar salidas en acciones posteriores, el tipo de datos de la salida debe coincidir con el tipo de datos de la entrada. En este resultado de ejemplo, la InstanceState
salida es una String
. Por lo tanto, para usar el valor en la entrada de una acción posterior, la entrada debe aceptar una String
.