如何将
$$.Task.Token
从 AWS Step Functions 传递到 EC2 run-instances
调用?
我应该在 json 请求中使用“user-data”键传递它吗?
由于用户数据密钥仅接受 base64 编码的字符串,因此变得更加困难。字符串
$$.Task.Token
按原样传递,而不是其值。
或者是否有其他方法将任务令牌传递到 aws EC2 实例?
对于此类任务总是有大量的内在函数。
States.Base64Encode
就是你的情况。
以下是传递 TaskToken 和 waitingForCallback 的步骤函数的完整代码。任务令牌与 base64 字符串一起传递,并将被初始化为环境变量 TASK_TOKEN。
不过不要忘记清理实例。
{
"Comment": "State Machine that launches EC2 with TASK_TOKEN as an environment variable",
"StartAt": "PrepareAndLaunchEC2",
"States": {
"PrepareAndLaunchEC2": {
"Type": "Task",
"Resource": "arn:aws:states:::aws-sdk:ec2:runInstances.waitForTaskToken",
"Parameters": {
"ImageId": "ami-0cdd6d7420844683b",
"InstanceType": "t2.micro",
"MinCount": 1,
"MaxCount": 1,
"UserData.$": "States.Base64Encode(States.Format('#!/bin/bash\n export TASK_TOKEN=\"{}\"\n# More commands here', $$.Task.Token))"
},
"End": true
}
}
}