aws-cdk - 具有动态环境变量的 AWS CDK StateMachine BatchSubmitJob
问题描述
我正在尝试在 AWS CDK 中创建一个带有 BatchSubmitJob 的状态机,并在 BatchContainerOverrides 中使用动态环境变量。我在想这样的事情:
container_overrides = sfn_tasks.BatchContainerOverrides(
environment={
"TEST.$": "$.dynamic_from_payload"
}
)
return sfn_tasks.BatchSubmitJob(self.scope,
id="id",
job_name="name",
job_definition_arn="arn",
job_queue_arn="arn",
container_overrides=container_overrides,
payload=sfn.TaskInput.from_object({
"dynamic_from_payload.$": "$.input.some_variable"
}))
但是,在部署时,CDK 会在状态机定义中添加“名称”和“值”,但值现在是静态的。这是控制台中看到的状态机定义的一部分:
"Environment": [
{
"Name": "TEST.$",
"Value": "$.dynamic_from_payload"
}
]
但我需要这样:
"Environment": [
{
"Name": "TEST",
"Value.$": "$.dynamic_from_payload"
}
]
我还尝试使用“Ref::”,就像这里对命令参数所做的那样:AWS Step and Batch Dynamic Command。但这也不起作用。
我还研究了逃生舱口,覆盖了 CloudFormation 模板。但我认为这不适用于这里,因为生成的状态机定义字符串基本上是一个大字符串。
我可以想到两种解决方案,这两种方法都不让我高兴:使用转义阴影覆盖状态机定义字符串,并使用副本在某些条件下替换“值”(可能使用正则表达式)或在状态机中放置一个 lambda这将创建并触发批处理作业和一个将在作业完成时进行轮询的 lambda。
长话短说:有没有人知道如何在 CDK 中将动态环境变量与 BatchSubmitJob 一起使用?
解决方案
您可以使用aws_cdk.aws_stepfunctions.JsonPath类:
container_overrides = sfn_tasks.BatchContainerOverrides(
environment={
"TEST": sfn.JsonPath.string_at("$.dynamic_from_payload")
}
)
推荐阅读
- css - 使用 CSS 的 PrimeNg 自定义验证
- node.js - 无法连接到 MongoDB 服务器
- ktor - 在 http 异常的情况下,responsePipeline 在 requestPipeline 中捕获该异常后无异常执行
- javascript - 您好,在理解 TypeERROR 时遇到了一点问题:“无法读取未定义的属性 'map'”
- python - 如何编写正则表达式以接受以字符串结尾的字符串
- mutability - Zig 中的全局“comptime var”
- javascript - 使php脚本等到ajax请求完成
- sql-server - 似乎 BULK INSERT 的默认值是制表符分隔的输入数据?
- java - 如何使用 Java 查找主题中存在的消息数、主题中存在的分区数?
- android - 获取手机中正在运行的应用程序列表