如何 运行 AWS ECS 任务覆盖环境变量
How to run AWS ECS Task overriding environment variables
要通过 CLI 覆盖环境变量,我们可以根据 AWS ECS Commandline Reference 使用 --overrides (structure)
。
如何在命令行中传递名称值对(结构或JSON)?
[
{ "name" : "NAME", "value" : "123" },
{ "name" : "DATE", "value" : "1234-12-12" },
{ "name" : "SCRIPT", "value" : "123456" }
]
我正在寻找一种使用 AWS ECS CLI 覆盖上述环境变量的方法。
类似于:
aws ecs run-task --overrides <<just environment vars here>> --task-definition ...
文档不明确。我用谷歌搜索但无济于事。
您必须提供 --overrides
option 下记录的 JSON 文件。
{
"containerOverrides": [
{
"name": "string",
"command": ["string", ...],
"environment": [
{
"name": "string",
"value": "string"
}
...
]
}
...
],
"taskRoleArn": "string"
}
您必须指定容器的 name
才能覆盖环境,并指定 environment
键值对列表。
您可以在参数中指定 JSON 文档,或者将文件路径参数传递给任务。我会展示两种方式。
在线传递 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.
中转义引号
因此,您也可以将文件路径传递给 AWS CLI,并让它从文件中加载覆盖 JSON。
传递文件路径参数
创建一个文件,我们称它为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 (..)
对逆さま回答的一个小补充。您可能还想添加集群的详细信息。当我 运行 以上时,我得到了 ClusterNotFoundException
.
这对我有用:
aws ecs run-task --overrides file://overrides.json --task-definition (..) --cluster (..)
要通过 CLI 覆盖环境变量,我们可以根据 AWS ECS Commandline Reference 使用 --overrides (structure)
。
如何在命令行中传递名称值对(结构或JSON)?
[
{ "name" : "NAME", "value" : "123" },
{ "name" : "DATE", "value" : "1234-12-12" },
{ "name" : "SCRIPT", "value" : "123456" }
]
我正在寻找一种使用 AWS ECS CLI 覆盖上述环境变量的方法。 类似于:
aws ecs run-task --overrides <<just environment vars here>> --task-definition ...
文档不明确。我用谷歌搜索但无济于事。
您必须提供 --overrides
option 下记录的 JSON 文件。
{
"containerOverrides": [
{
"name": "string",
"command": ["string", ...],
"environment": [
{
"name": "string",
"value": "string"
}
...
]
}
...
],
"taskRoleArn": "string"
}
您必须指定容器的 name
才能覆盖环境,并指定 environment
键值对列表。
您可以在参数中指定 JSON 文档,或者将文件路径参数传递给任务。我会展示两种方式。
在线传递 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.
中转义引号因此,您也可以将文件路径传递给 AWS CLI,并让它从文件中加载覆盖 JSON。
传递文件路径参数
创建一个文件,我们称它为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 (..)
对逆さま回答的一个小补充。您可能还想添加集群的详细信息。当我 运行 以上时,我得到了 ClusterNotFoundException
.
这对我有用:
aws ecs run-task --overrides file://overrides.json --task-definition (..) --cluster (..)