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

AWS Step function use input value to make complete command

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

例如,我想使用这样的输入参数创建一个命令

["python test.py", "--name=$.name", "--age=$.age"]

但是根据 AWS 文档,我不能像上面那样通过。我只能通过like

{"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}

.$ 告诉 step-functions 您传递的是路径而不是文字字符串值。

Input/Ouput Path Params Doc

如果您想从输入构造一个字符串,您应该能够使用固有的字符串格式:

States.Format('python test.py --name={} --age={}', $.name, $.age)

Intrinsic Function Doc

{
    "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
        }
    }
}

States.Array 从输入列表中创建一个数组。

States.Format 允许您使用文字和内插(变量)输入构造字符串。