To override environment variables via CLI we may use --overrides (structure)
according to AWS ECS Commandline Reference.
How to pass name value pairs (structure or JSON) in command line?
[ { "name" : "NAME", "value" : "123" }, { "name" : "DATE", "value" : "1234-12-12" }, { "name" : "SCRIPT", "value" : "123456" } ]
I'm looking for a way to override above environment variables using AWS ECS CLI. Something like:
aws ecs run-task --overrides <<just environment vars here>> --task-definition ...
Documentation is not clear. I googled but couldn't help.
You have to provide a JSON document as documented under the --overrides
option.
{ "containerOverrides": [ { "name": "string", "command": ["string", ...], "environment": [ { "name": "string", "value": "string" } ... ] } ... ], "taskRoleArn": "string" }
You have to specify the name
of the container to get the environment override, and specify a list of environment
key-value pairs.
You can specify the JSON document in-line with your argument or pass a file path argument to the task. I will show both ways.
Your command would look like this (fill in the value 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 (...)
That does look rather ugly though, and would be annoying to edit. It also only works on Unix-y systems and would require quote escaping in Windows.
So alternatively, you can pass a file path to the AWS CLI and have it load your override JSON from a file.
Create a file, let's call it overrides.json
, and put the same JSON into it:
{ "containerOverrides": [{ "name": "CONTAINER_NAME_FROM_TASK", "environment": [{ "name": "NAME", "value": "123" }, { "name": "DATE", "value": "1234-12-12" }, { "name": "SCRIPT", "value": "123456" }] }] }
Then, assuming your file is in the current directory:
aws ecs run-task --overrides file://overrides.json --task-definition (..)
If your file is elsewhere in the filesystem and you're on a Linux/Unix-y system:
aws ecs run-task --overrides file:///path/to/overrides.json --task-definition (..)
If your file is elsewhere in the filesystem and you're doing this in Windows:
aws ecs run-task --overrides file://DRIVE_LETTER:\path\to\overrides.json --task-definition (..)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With