我有一个步骤函数状态机,它创建SageMaker批量转换作业,定义是用Terraform编写的,我想将步骤函数执行id添加到批量转换作业名称中:
在stepfunction地形文件中:
definition = templatefile("stepfuntion.json",
{
xxxx
)
在";stepfuntion.json":
{...
"TransformJobName": "jobname-$$.Execution.Id",
}
},
"End": true
}
}
}
但在terraform应用后,它没有生成实际的id,它给了我jobname-$$.Execution.Id
,有人能帮我吗?
资源:https://docs.aws.amazon.com/step-functions/latest/dg/input-output-contextobject.html"要访问上下文对象,首先通过追加指定参数名称。$直到最后,就像您在选择带有路径的状态输入时所做的那样。然后,要访问上下文对象数据而不是输入,请在路径前面加上$$。。此命令告知AWS Step Functions使用路径来选择上下文对象中的节点">
有人能告诉我我缺了什么吗?
您试图使用terraform的var不知道它
作业名称-$$.Execution.Id.
这是Step函数特有的东西,在状态机中可用,而不适用于地形。
如果我读对了wawawa,我们就快到了。Terraform创建函数,而不是它的执行实例。Stepfunction只有在执行时才会分配执行ID,而且每次都会更改!因此,让Terraform使用Step Function在执行时解析的变量创建代码。
因此TransformJobName正在获取字符串文字";jobname--$$Execution.Id";。右侧看起来不错,但OP引用的指令试图说我们需要添加一个"$"到您的参数名称(左侧(以激活该替换。说明书写得很差,但他们的例子是正确的。
所以你的鞋应该是这样的:
"TransformJobName.$": "jobname-$$.Execution.Id",
我发现我的作业几乎总是说x.$=$.y来进入输入或输出,或者x.$=$$.y(如果是上下文对象(。
额外提示:这就是我向Glue任务发送参数的方式。上下文不是输入路径的一部分,所以你必须做一些事情来包括你想要的上下文(在我的例子中是execution.id(作为参数。
"Arguments": {
"--inputbucket.$": "$.detail.bucket.name",
"--inputobject.$": "$.detail.object.key",
"--executionid.$": "$$.Execution.Id"
}