Sam*_*eff 6 amazon-web-services amazon-ecs aws-step-functions
我正在使用 AWS Step Function 来调用 Fargate 容器。ECS 任务定义定义了多个环境变量,其中一些具有固定值,一些来自 Systems Manager Parameter Store。状态机使用 . 添加一个额外的环境变量ContainerOverrides
。
不幸的是,这似乎替换了而不是添加了任务定义中指定的环境变量。
如果我在步骤定义中未定义任何环境变量,则任务定义中的环境变量将在运行时存在。如果我在步骤定义中定义了一个变量,那么运行时只有步骤定义中的变量存在。
如何让 Fargate/ECS/Step Functions 合并环境变量而不是全部替换?
状态机
{
"Comment": "Sample State Machine",
"StartAt": "Prerequisites",
"States": {
"Prerequisites": {
"Type": "Task",
"Resource": "arn:aws:states:::ecs:runTask.sync",
"Parameters": {
"Cluster": "arn:aws:ecs:us-west-2:1232123123:cluster/step-function-executor",
"TaskDefinition": "step-function-generic-script-executor",
"LaunchType":"FARGATE",
"NetworkConfiguration": {
"AwsvpcConfiguration" : {
"AssignPublicIp" : "DISABLED",
"SecurityGroups" : [
"sg-123",
"sg-456"
],
"Subnets" : [
"subnet-123" ,
"subnet-456"
]
}
},
"Overrides": {
"ContainerOverrides": [
{
"Name": "step-function-generic-script-container",
"Environment": [
{
"Name": "STEP_SCRIPT_NAME",
"Value": "db-daily-backup-01-prereq"
}
]
}
]
}
},
"End": true
}
}
}
Run Code Online (Sandbox Code Playgroud)
任务定义
这就是 ContainerOverrides 的工作方式,与它应该的工作方式相反。您有两种选择来解决此问题:
创建启动状态机的 Lambda 函数。
describe_task_definition
ECS SDK 函数来获取任务定义的完整详细信息,并在调用start_execution
步骤函数的函数时,传递所有内容以及Parameters
新的/更新的环境变量。列出状态机中的所有环境变量。
第一个选项需要一些自定义实现,但可以让您免于手动配置。
归档时间: |
|
查看次数: |
5315 次 |
最近记录: |