AWS Step函数使用输入值来完成命令



如何在字符串中间的状态机中使用输入?

例如,我想使用像这样的输入参数来制作一个命令

["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允许您使用文字和插值(变量(输入来构造字符串。

最新更新