如何运行AWS ECS任务重写环境variables

要通过CLI覆盖环境variables,我们可以根据AWS ECS命令行参考使用--overrides (structure)

如何在命令行中传递名称值对(结构或JSON)?

 [ { "name" : "NAME", "value" : "123" }, { "name" : "DATE", "value" : "1234-12-12" }, { "name" : "SCRIPT", "value" : "123456" } ] 

我正在寻找一种方法来使用AWS ECS CLI覆盖以上环境variables。 就像是:

 aws ecs run-task --overrides <<just environment vars here>> --task-definition ... 

文档不清楚。 我GOOGLE了,但忍不住。

您必须提供一个JSON文档,如--overrides选项中所述 。

 { "containerOverrides": [ { "name": "string", "command": ["string", ...], "environment": [ { "name": "string", "value": "string" } ... ] } ... ], "taskRoleArn": "string" } 

您必须指定容器的name以获取环境重写,并指定environment键值对的列表。

您可以指定与您的参数串联的JSON文档或将文件pathparameter passing给任务。 我将展示两种方式。

在线传递JSON

你的命令看起来像这样(填入值CONTAINER_NAME_FROM_TASK )。

 aws ecs run-task --overrides '{ "containerOverrides": [ { "name": "CONTAINER_NAME_FROM_TASK", "environment": [ { "name": "NAME", "value": "123" }, { "name": "DATE", "value": "1234-12-12" }, { "name": "SCRIPT", "value": "123456" } ] } ] }' --task-definition (...) 

这看起来相当丑陋,而且会让人讨厌编辑。 它也只适用于Unix-y系统,并需要在Windows中引用转义。

或者,您可以将文件path传递给AWS CLI,并从文件加载您的重写JSON。

传递一个文件path参数

创build一个文件,我们把它叫做overrides.json ,并把相同的JSON放进去:

 { "containerOverrides": [{ "name": "CONTAINER_NAME_FROM_TASK", "environment": [{ "name": "NAME", "value": "123" }, { "name": "DATE", "value": "1234-12-12" }, { "name": "SCRIPT", "value": "123456" }] }] } 

然后,假设你的文件在当前目录中

 aws ecs run-task --overrides file://overrides.json --task-definition (..) 

如果您的文件位于文件系统的其他位置,并且位于Linux / Unix-y系统上

 aws ecs run-task --overrides file:///path/to/overrides.json --task-definition (..) 

如果你的文件是在文件系统中的其他地方,而你在Windows中这样做:

 aws ecs run-task --overrides file://DRIVE_LETTER:\path\to\overrides.json --task-definition (..)