From 6604b8ab23fe030e9338be79f8011031d171f1fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20T=C5=99ebick=C3=BD?= Date: Wed, 17 Mar 2021 14:44:50 +0100 Subject: [PATCH] feat(ecs-fargate-env-file): add option to pass env file path to fargate tasks --- developers_chamber/ecs_utils.py | 27 ++++++++++++++++++++++++++- developers_chamber/scripts/ecs.py | 5 +++-- 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/developers_chamber/ecs_utils.py b/developers_chamber/ecs_utils.py index 3499cec..a261afb 100644 --- a/developers_chamber/ecs_utils.py +++ b/developers_chamber/ecs_utils.py @@ -294,9 +294,34 @@ def run_task(cluster, task_definition, command, name, region, ecs_client=None, * } for key, value in kwargs.items(): - if value is not None: + if key != "environmentFiles" and value is not None: args[key] = value + if kwargs.get('environmentFiles') is not None: + if 'overrides' in args: + if 'containerOverrides' in args['overrides']: + args['overrides']['containerOverrides'][0]['environmentFiles'] = [ + { + 'type': 's3', + 'value': kwargs.get('environmentFiles') + } + ] + + else: + args['overrides'] = { + 'containerOverrides': [ + { + 'name': name, + 'environmentFiles': [ + { + 'type': 's3', + 'value': kwargs.get('environmentFiles') + } + ] + }, + ], + } + try: resp = ecs_client.run_task(**args) except ecs_client.exceptions.ClusterNotFoundException: diff --git a/developers_chamber/scripts/ecs.py b/developers_chamber/scripts/ecs.py index 3b50c92..0781e3e 100644 --- a/developers_chamber/scripts/ecs.py +++ b/developers_chamber/scripts/ecs.py @@ -149,7 +149,8 @@ def run_service_task(cluster, service, command, success_string, timeout, region, @click.option('--region', '-r', help='AWS region', type=str, default=default_region, required=True) @click.option('--subnet', help='subnet ID', type=str, required=True, multiple=True) @click.option('--security-group', help='security group ID', type=str, required=True, multiple=True) -def run_service_task_fargate(cluster, service, command, success_string, timeout, region, container, subnet, security_group): +@click.option('--environment-file', '-e', help='S3 arn with path to env file', type=str, required=False, default=None) +def run_service_task_fargate(cluster, service, command, success_string, timeout, region, container, subnet, security_group, environment_file): """Run a single task based on service's task definition in AWS ECS and wait for it to stop with success.""" run_service_task_func(cluster, service, command, success_string, timeout, region, container, networkConfiguration={ 'awsvpcConfiguration': { @@ -157,7 +158,7 @@ def run_service_task_fargate(cluster, service, command, success_string, timeout, 'securityGroups': [s for s in security_group], 'assignPublicIp': 'DISABLED' } - }, launchType='FARGATE') + }, launchType='FARGATE', environmentFiles=environment_file) @ecs.command()