如何在字符串中间的状态机中使用输入?
例如,我想使用像这样的输入参数来制作一个命令
["python test.py", "--name=$.name", "--age=$.age"]
但根据AWS的文档,我不能像上面那样通过考试。我只能像一样通过
{"Command.$": "$.age"}
为什么需要这种奇怪的结构。为什么我需要在密钥中使用.$
。为什么我不能在任何地方自由使用$.age
?
我想要实现的是这样的目标。
{
"Comment": "A description of my state machine",
"StartAt": "Pipeline",
"States": {
"Run Pipeline": {
"Type": "Task",
"Resource": "arn:aws:states:::ecs:runTask.sync",
"Parameters": {
"LaunchType": "FARGATE",
"Cluster": "aaaaaaaaaaaaaa",
"TaskDefinition": "aaaaaaaaaaaaaa",
"Overrides": {
"ContainerOverrides": [{
"Name": "my_container",
"Command": [
"python test.py",
"--name=$.name",
"--age=$.age"
]
}]
}
},
"End": true
}
}
}
我的阶跃函数输入是
{"name": "Rahul", "age": 25}
.$
告诉stepfunctions,您传递的是路径,而不是文本字符串值。
输入/输出路径参数文档
如果你想从输入中构造一个字符串,你应该能够使用内在的字符串格式:
States.Format('python test.py --name={} --age={}', $.name, $.age)
内部功能文档
{
"Comment": "A description of my state machine",
"StartAt": "Run Pipeline",
"States": {
"Run Pipeline": {
"Type": "Task",
"Resource": "arn:aws:states:::ecs:runTask.sync",
"Parameters": {
"LaunchType": "FARGATE",
"Cluster": "aaaaaaaaaaaaaa",
"TaskDefinition": "aaaaaaaaaaaaaa",
"Overrides": {
"ContainerOverrides": [{
"Name": "my_container",
"Command.$": "States.Array(States.Format('python test.py --name={} --age={}', $.name, $.age))"
}]
}
},
"End": true
}
}
}
CCD_ 5从输入列表中生成一个数组。
States.Format
允许您使用文字和插值(变量(输入来构造字符串。