本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
設定動作的輸入和輸出
每個自動化動作都會根據其收到的輸入作出回應。在大多數情況下,您可將輸出傳遞給後續動作。在視覺化設計體驗中,您可以在表單面板的輸入和輸出索引標籤設定動作的輸入和輸出資料。
如需如何定義和使用自動化動作輸出的詳細資訊,請參閱 使用動作輸出作為輸入。
為動作提供輸入資料
每個自動化動作都有一或多個您必須為其提供值的輸入。您為動作的輸入提供的值取決於動作所接受的資料類型和格式。例如,aws:sleep
動作需要 Duration
輸入的 ISO 8601 格式字串值。
通常,您可以在執行手冊的工作流程中使用動作,該動作會傳回您要在後續動作中使用的輸出。請務必確保輸入值正確無誤,以避免執行手冊工作流程中發生錯誤。輸入值也很重要,因為會決定動作是否傳回預期的輸出。例如,使用 aws:executeAwsApi
動作時,您需要確保為 API 操作提供正確的值。
定義動作的輸出資料
某些自動化動作會在執行其定義的操作後傳回輸出。傳回輸出的動作具有預先定義的輸出,或能讓您自行定義輸出。例如,aws:createImage
動作具有傳回 ImageId
和 ImageState
的預先定義輸出。相比之下,使用 aws:executeAwsApi
動作,您可以從指定的 API 操作中定義所需的輸出。因此,您可以從單一 API 操作傳回一或多個值,以便在後續動作中使用。
您必須指定輸出的名稱、資料類型和輸出值,方能定義自己的自動化動作輸出。若要繼續使用 aws:executeAwsApi
動作作為範例,假設您正在從 Amazon EC2 呼叫 DescribeInstances
API 操作。在此範例中,您想要傳回或輸出 Amazon EC2 執行個體的 State
,並根據輸出對執行手冊的工作流程進行分支。您可以選擇將輸出命名為 InstanceState
,並使用 String
資料類型。
定義輸出實際值的程序根據動作會有所不同。例如,若您正在使用 aws:executeScript
動作,則必須在函數中使用 return
陳述式,為輸出提供資料。使用其他操作,如 aws:executeAwsApi
、aws:waitForAwsResourceProperty
和 aws:assertAwsResourceProperty
,Selector
是必需的。或正如某些動作所參考的,Selector
或 PropertySelector
是用來處理來自 API 操作的 JSON 回應的 JSONPath 字串。了解來自 API 操作的 JSON 回應物件的結構非常重要,以便您為輸出選擇正確的值。使用前面提到的 DescribeInstances
API 操作,請參閱下面的示例 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 } } } } } }
在 JSON 回應物件中,執行個體 State
在 Instances
物件中形成巢狀,該物件又在 Reservations
物件中形成巢狀。若要傳回執行個體 State
的值,請為 Selector
使用下列字串,以便在我們的輸出中使用該值:$.Reservations[0].Instances[0].State.Name
。
若要在執行手冊工作流程的後續動作中參照輸出值,請使用下列格式:{{
。例如:StepName
.NameOfOutput
}}{{ GetInstanceState.InstanceState }}
。在視覺化設計體驗中,您可以使用輸入的下拉式清單,選擇要在後續動作中使用的輸出值。在後續動作中使用輸出時,輸出的資料類型必須與輸入的資料類型相符。在此範例中,InstanceState
輸出為 String
。因此,若要在後續動作的輸入中使用該值,輸入必須接受 String
。