Configurazione di input e output per le tue operazioni - AWS Systems Manager

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Configurazione di input e output per le tue operazioni

Ogni azione di automazione risponde in base all'input che riceve. Nella maggior parte dei casi, si passa quindi l'output alle operazioni successive. Nell'esperienza di progettazione visiva, puoi configurare i dati di input e output di un'azione nelle schede Input e Output del pannello Modulo.

Per informazioni dettagliate su come definire e usare l'output per le azioni di automazione, consulta Utilizzo degli output delle operazioni come input.

Specifica dei dati di input per un'operazione

Ogni azione di automazione ha uno o più input per i quali è necessario fornire un valore. Il valore fornito per l'input di un'azione è determinato dal tipo e dal formato di dati accettati dall'azione. Ad esempio, le operazioni aws:sleep richiedono un valore di stringa in formato ISO 8601 per l'input Duration.

In genere, si utilizzano azioni nel flusso di lavoro del runbook che restituiscono l'output che si desidera utilizzare nelle azioni successive. È importante assicurarsi che i valori di input siano corretti per evitare errori nel flusso di lavoro del runbook. I valori di input sono importanti anche perché determinano se l'azione restituisce l'output previsto. Ad esempio, quando si utilizza l'operazione aws:executeAwsApi, è necessario assicurarsi di fornire il valore giusto per il funzionamento dell'API.

Definizione dei dati di output per un'azione

Alcune azioni di automazione restituiscono l'output dopo aver eseguito le operazioni definite. Le azioni che restituiscono un output hanno output predefiniti o consentono di definire gli output autonomamente. Ad esempio, l'operazione aws:createImage ha output predefiniti che restituiscono un ImageId e ImageState. Comparativamente, con l'operazione aws:executeAwsApi è possibile definire gli output desiderati dall'operazione API specificata. Di conseguenza, è possibile restituire uno o più valori da una singola operazione API da utilizzare nelle azioni successive.

Per definire i propri output per un'azione di automazione è necessario specificare un nome dell'output, il tipo di dati e il valore dell'output. Per continuare a utilizzare l'operazione aws:executeAwsApi come esempio, supponiamo che tu stia chiamando l'operazione API DescribeInstances da Amazon EC2. In questo esempio, vuoi restituire, o emettere, lo State di un'istanza Amazon EC2 e ramificare il flusso di lavoro del runbook in base all'output. Scegli di assegnare un nome all'output InstanceState e utilizza il tipo di dati String.

Il processo per definire il valore effettivo dell'output varia a seconda dell'azione. Ad esempio, se si utilizza l'operazione aws:executeScript, è necessario utilizzare le istruzioni return nelle funzioni per fornire i dati agli output. Con altre azioni come aws:executeAwsApi, aws:waitForAwsResourceProperty e aws:assertAwsResourceProperty, è necessario un Selector. Il Selector, o PropertySelector come la chiamano alcune azioni, è una stringa JSONPath utilizzata per elaborare la risposta JSON da un'operazione API. È importante capire come è strutturato l'oggetto di risposta JSON di un'operazione API in modo da poter selezionare il valore corretto per l'output. Utilizzando l'operazione API DescribeInstances menzionata in precedenza, vedi il seguente esempio di risposta 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 } } } } } }

Nell'oggetto di risposta JSON, l'istanza State è nidificata in un oggetto Instances, che è nidificato nell'oggetto Reservations. Per restituire il valore dell'istanza State, usa la seguente stringa per il Selector in modo che il valore possa essere utilizzato nel nostro output: $.Reservations[0].Instances[0].State.Name.

Per fare riferimento a un valore di output nelle azioni successive del flusso di lavoro del runbook, viene utilizzato il seguente formato: {{ StepName.NameOfOutput }}. Ad esempio, {{ GetInstanceState.InstanceState }}. Nell'esperienza di progettazione visiva, puoi scegliere i valori di output da utilizzare nelle azioni successive utilizzando il menu a discesa per l'input. Quando si utilizzano gli output in azioni successive, il tipo di dati dell'output deve corrispondere al tipo di dati per l'input. In questo esempio, l'output InstanceState è una String. Pertanto, per utilizzare il valore nell'input di un'azione successiva, l'input deve accettare un String.