diff --git a/README.rst b/README.rst
index a5e3451..c6602be 100644
--- a/README.rst
+++ b/README.rst
@@ -162,6 +162,16 @@ This will modify the definition **of two containers**.
 The **webserver**'s environment variable `SOME_VARIABLE` will be set to "SOME_VALUE" and the variable `OTHER_VARIABLE` to "OTHER_VALUE".
 The **app**'s environment variable `APP_VARIABLE` will be set to "APP_VALUE".
 
+
+Set environment variables exclusively, remove all other pre-existing environment variables
+==========================================================================================
+To reset all existing environment variables of a task definition, use the flag ``--exclusive-env`` ::
+
+    $ ecs deploy my-cluster my-service -e webserver SOME_VARIABLE SOME_VALUE --exclusive-env
+
+This will remove **all other** existing environment variables of **all containers** of the task definition, except for the variable `SOME_VARIABLE` with the value "SOME_VALUE" in the webserver container.
+
+
 Set a secret environment variable from the AWS Parameter Store
 ==============================================================
 
@@ -178,6 +188,16 @@ You can also specify the full arn of the parameter::
 
 This will modify the **webserver** container definition and add or overwrite the environment variable `SOME_SECRET` with the value of the `KEY_OF_SECRET_IN_PARAMETER_STORE` in the AWS Parameter Store of the AWS Systems Manager.
 
+
+Set secrets exclusively, remove all other pre-existing secret environment variables
+===================================================================================
+To reset all existing secrets (secret environment variables) of a task definition, use the flag ``--exclusive-secrets`` ::
+
+    $ ecs deploy my-cluster my-service -s webserver NEW_SECRET KEY_OF_SECRET_IN_PARAMETER_STORE --exclusive-secret
+
+This will remove **all other** existing secret environment variables of **all containers** of the task definition, except for the new secret variable `NEW_SECRET` with the value coming from the AWS Parameter Store with the name "KEY_OF_SECRET_IN_PARAMETER_STORE" in the webserver container.
+
+
 Modify a command
 ================
 To change the command of a specific container, run the following command::
diff --git a/ecs_deploy/cli.py b/ecs_deploy/cli.py
index 3b9e9d9..45cdfee 100644
--- a/ecs_deploy/cli.py
+++ b/ecs_deploy/cli.py
@@ -46,7 +46,9 @@ def get_client(access_key_id, secret_access_key, region, profile):
 @click.option('--diff/--no-diff', default=True, help='Print which values were changed in the task definition (default: --diff)')
 @click.option('--deregister/--no-deregister', default=True, help='Deregister or keep the old task definition (default: --deregister)')
 @click.option('--rollback/--no-rollback', default=False, help='Rollback to previous revision, if deployment failed (default: --no-rollback)')
-def deploy(cluster, service, tag, image, command, env, secret, role, task, region, access_key_id, secret_access_key, profile, timeout, newrelic_apikey, newrelic_appid, comment, user, ignore_warnings, diff, deregister, rollback):
+@click.option('--exclusive-env', is_flag=True, default=False, help='Set the given environment variables exclusively and remove all other pre-existing env variables from all containers')
+@click.option('--exclusive-secrets', is_flag=True, default=False, help='Set the given secrets exclusively and remove all other pre-existing secrets from all containers')
+def deploy(cluster, service, tag, image, command, env, secret, role, task, region, access_key_id, secret_access_key, profile, timeout, newrelic_apikey, newrelic_appid, comment, user, ignore_warnings, diff, deregister, rollback, exclusive_env, exclusive_secrets):
     """
     Redeploy or modify a service.
 
@@ -66,8 +68,8 @@ def deploy(cluster, service, tag, image, command, env, secret, role, task, regio
         td = get_task_definition(deployment, task)
         td.set_images(tag, **{key: value for (key, value) in image})
         td.set_commands(**{key: value for (key, value) in command})
-        td.set_environment(env)
-        td.set_secrets(secret)
+        td.set_environment(env, exclusive_env)
+        td.set_secrets(secret, exclusive_secrets)
         td.set_role_arn(role)
 
         if diff:
diff --git a/ecs_deploy/ecs.py b/ecs_deploy/ecs.py
index 74cf19a..9136bdd 100644
--- a/ecs_deploy/ecs.py
+++ b/ecs_deploy/ecs.py
@@ -241,7 +241,7 @@ class EcsTaskDefinition(object):
                 self._diff.append(diff)
                 container[u'command'] = new_command.split(" ")
 
-    def set_environment(self, environment_list):
+    def set_environment(self, environment_list, exclusive=False):
         environment = {}
 
         for env in environment_list:
@@ -253,14 +253,25 @@ class EcsTaskDefinition(object):
             if container[u'name'] in environment:
                 self.apply_container_environment(
                     container=container,
-                    new_environment=environment[container[u'name']]
+                    new_environment=environment[container[u'name']],
+                    exclusive=exclusive,
+                )
+            elif exclusive is True:
+                self.apply_container_environment(
+                    container=container,
+                    new_environment={},
+                    exclusive=exclusive,
                 )
 
-    def apply_container_environment(self, container, new_environment):
+    def apply_container_environment(self, container, new_environment, exclusive=False):
         environment = container.get('environment', {})
         old_environment = {env['name']: env['value'] for env in environment}
-        merged = old_environment.copy()
-        merged.update(new_environment)
+
+        if exclusive is True:
+            merged = new_environment
+        else:
+            merged = old_environment.copy()
+            merged.update(new_environment)
 
         if old_environment == merged:
             return
@@ -277,7 +288,7 @@ class EcsTaskDefinition(object):
             {"name": e, "value": merged[e]} for e in merged
         ]
 
-    def set_secrets(self, secrets_list):
+    def set_secrets(self, secrets_list, exclusive=False):
         secrets = {}
 
         for secret in secrets_list:
@@ -289,14 +300,25 @@ class EcsTaskDefinition(object):
             if container[u'name'] in secrets:
                 self.apply_container_secrets(
                     container=container,
-                    new_secrets=secrets[container[u'name']]
+                    new_secrets=secrets[container[u'name']],
+                    exclusive=exclusive,
+                )
+            elif exclusive is True:
+                self.apply_container_secrets(
+                    container=container,
+                    new_secrets={},
+                    exclusive=exclusive,
                 )
 
-    def apply_container_secrets(self, container, new_secrets):
+    def apply_container_secrets(self, container, new_secrets, exclusive=False):
         secrets = container.get('secrets', {})
         old_secrets = {secret['name']: secret['valueFrom'] for secret in secrets}
-        merged = old_secrets.copy()
-        merged.update(new_secrets)
+
+        if exclusive is True:
+            merged = new_secrets
+        else:
+            merged = old_secrets.copy()
+            merged.update(new_secrets)
 
         if old_secrets == merged:
             return
@@ -369,23 +391,33 @@ class EcsTaskDefinitionDiff(object):
     @staticmethod
     def _get_environment_diffs(container, env, old_env):
         msg = u'Changed environment "%s" of container "%s" to: "%s"'
+        msg_removed = u'Removed environment "%s" of container "%s"'
         diffs = []
         for name, value in env.items():
             old_value = old_env.get(name)
             if value != old_value or not old_value:
                 message = msg % (name, container, value)
                 diffs.append(message)
+        for old_name in old_env.keys():
+            if old_name not in env.keys():
+                message = msg_removed % (old_name, container)
+                diffs.append(message)
         return diffs
 
     @staticmethod
     def _get_secrets_diffs(container, secrets, old_secrets):
         msg = u'Changed secret "%s" of container "%s" to: "%s"'
+        msg_removed = u'Removed secret "%s" of container "%s"'
         diffs = []
         for name, value in secrets.items():
             old_value = old_secrets.get(name)
             if value != old_value or not old_value:
                 message = msg % (name, container, value)
                 diffs.append(message)
+        for old_name in old_secrets.keys():
+            if old_name not in secrets.keys():
+                message = msg_removed % (old_name, container)
+                diffs.append(message)
         return diffs
 
 

Remove omitted ENV variables on new deployments
We are using ecs deploy to specify environment (and secrets) via command line for new TaskDefinitions. If an older TaskDefinition has some ENV variables that we need to remove from future deployments (by removing them from the command line) they do still show up in the new TaskDefinition - seems the existing ones don't get deleted if removing them from the command line.
diff --git a/tests/test_cli.py b/tests/test_cli.py
index 8922286..79150b1 100644
--- a/tests/test_cli.py
+++ b/tests/test_cli.py
@@ -253,6 +253,52 @@ def test_deploy_empty_environment_variable_again(get_client, runner):
     assert u'Deployment successful' in result.output
 
 
+@patch('ecs_deploy.cli.get_client')
+def test_deploy_exclusive_environment(get_client, runner):
+    get_client.return_value = EcsTestClient('acces_key', 'secret_key')
+    result = runner.invoke(cli.deploy, (CLUSTER_NAME, SERVICE_NAME, '-e', 'webserver', 'new-env', 'new-value', '--exclusive-env'))
+
+    assert result.exit_code == 0
+    assert not result.exception
+
+    assert u"Deploying based on task definition: test-task:1" in result.output
+    assert u"Updating task definition" in result.output
+    assert u'Changed environment "new-env" of container "webserver" to: "new-value"' in result.output
+
+    assert u'Removed environment "foo" of container "webserver"' in result.output
+    assert u'Removed environment "lorem" of container "webserver"' in result.output
+
+    assert u'Removed secret' not in result.output
+
+    assert u'Successfully created revision: 2' in result.output
+    assert u'Successfully deregistered revision: 1' in result.output
+    assert u'Successfully changed task definition to: test-task:2' in result.output
+    assert u'Deployment successful' in result.output
+
+
+@patch('ecs_deploy.cli.get_client')
+def test_deploy_exclusive_secret(get_client, runner):
+    get_client.return_value = EcsTestClient('acces_key', 'secret_key')
+    result = runner.invoke(cli.deploy, (CLUSTER_NAME, SERVICE_NAME, '-s', 'webserver', 'new-secret', 'new-place', '--exclusive-secrets'))
+
+    assert result.exit_code == 0
+    assert not result.exception
+
+    assert u"Deploying based on task definition: test-task:1" in result.output
+    assert u"Updating task definition" in result.output
+    assert u'Changed secret "new-secret" of container "webserver" to: "new-place"' in result.output
+
+    assert u'Removed secret "baz" of container "webserver"' in result.output
+    assert u'Removed secret "dolor" of container "webserver"' in result.output
+
+    assert u'Removed environment' not in result.output
+
+    assert u'Successfully created revision: 2' in result.output
+    assert u'Successfully deregistered revision: 1' in result.output
+    assert u'Successfully changed task definition to: test-task:2' in result.output
+    assert u'Deployment successful' in result.output
+
+
 @patch('ecs_deploy.cli.get_client')
 def test_deploy_one_new_secret_variable(get_client, runner):
     get_client.return_value = EcsTestClient('acces_key', 'secret_key')
diff --git a/tests/test_ecs.py b/tests/test_ecs.py
index 6634188..c93372b 100644
--- a/tests/test_ecs.py
+++ b/tests/test_ecs.py
@@ -28,7 +28,7 @@ TASK_DEFINITION_CONTAINERS_1 = [
     {u'name': u'webserver', u'image': u'webserver:123', u'command': u'run',
      u'environment': ({"name": "foo", "value": "bar"}, {"name": "lorem", "value": "ipsum"}, {"name": "empty", "value": ""}),
      u'secrets': ({"name": "baz", "valueFrom": "qux"}, {"name": "dolor", "valueFrom": "sit"})},
-    {u'name': u'application', u'image': u'application:123', u'command': u'run'}
+    {u'name': u'application', u'image': u'application:123', u'command': u'run', u'environment': ()}
 ]
 TASK_DEFINITION_FAMILY_2 = u'test-task'
 TASK_DEFINITION_REVISION_2 = 2
@@ -39,7 +39,7 @@ TASK_DEFINITION_CONTAINERS_2 = [
     {u'name': u'webserver', u'image': u'webserver:123', u'command': u'run',
      u'environment': ({"name": "foo", "value": "bar"}, {"name": "lorem", "value": "ipsum"}, {"name": "empty", "value": ""}),
      u'secrets': ({"name": "baz", "valueFrom": "qux"}, {"name": "dolor", "valueFrom": "sit"})},
-    {u'name': u'application', u'image': u'application:123', u'command': u'run'}
+    {u'name': u'application', u'image': u'application:123', u'command': u'run', u'environment': ()}
 ]
 
 PAYLOAD_TASK_DEFINITION_1 = {
@@ -310,12 +310,40 @@ def test_task_set_image(task_definition):
 
 
 def test_task_set_environment(task_definition):
+    assert len(task_definition.containers[0]['environment']) == 3
+
     task_definition.set_environment(((u'webserver', u'foo', u'baz'), (u'webserver', u'some-name', u'some-value')))
 
+    assert len(task_definition.containers[0]['environment']) == 4
+
     assert {'name': 'lorem', 'value': 'ipsum'} in task_definition.containers[0]['environment']
     assert {'name': 'foo', 'value': 'baz'} in task_definition.containers[0]['environment']
     assert {'name': 'some-name', 'value': 'some-value'} in task_definition.containers[0]['environment']
 
+
+def test_task_set_environment_exclusively(task_definition):
+    assert len(task_definition.containers[0]['environment']) == 3
+    assert len(task_definition.containers[1]['environment']) == 0
+
+    task_definition.set_environment(((u'application', u'foo', u'baz'), (u'application', u'new-var', u'new-value')), exclusive=True)
+
+    assert len(task_definition.containers[0]['environment']) == 0
+    assert len(task_definition.containers[1]['environment']) == 2
+
+    assert task_definition.containers[0]['environment'] == []
+    assert {'name': 'foo', 'value': 'baz'} in task_definition.containers[1]['environment']
+    assert {'name': 'new-var', 'value': 'new-value'} in task_definition.containers[1]['environment']
+
+
+def test_task_set_secrets_exclusively(task_definition):
+    assert len(task_definition.containers[0]['secrets']) == 2
+
+    task_definition.set_secrets(((u'webserver', u'new-secret', u'another-place'), ), exclusive=True)
+
+    assert len(task_definition.containers[0]['secrets']) == 1
+    assert {'name': 'new-secret', 'valueFrom': 'another-place'} in task_definition.containers[0]['secrets']
+
+
 def test_task_set_secrets(task_definition):
     task_definition.set_secrets(((u'webserver', u'foo', u'baz'), (u'webserver', u'some-name', u'some-value')))
 
@@ -323,6 +351,7 @@ def test_task_set_secrets(task_definition):
     assert {'name': 'foo', 'valueFrom': 'baz'} in task_definition.containers[0]['secrets']
     assert {'name': 'some-name', 'valueFrom': 'some-value'} in task_definition.containers[0]['secrets']
 
+
 def test_task_set_image_for_unknown_container(task_definition):
     with pytest.raises(UnknownContainerError):
         task_definition.set_images(foobar=u'new-image:123')
@@ -336,6 +365,7 @@ def test_task_set_command(task_definition):
         if container[u'name'] == u'application':
             assert container[u'command'] == [u'run-application']
 
+
 def test_task_set_command_with_multiple_arguments(task_definition):
     task_definition.set_commands(webserver=u'run-webserver arg1 arg2', application=u'run-application arg1 arg2')
     for container in task_definition.containers:

pip install -e .[dev]
parse_log_pytest
pytest
pytest pytest-cov pytest-mock mock requests boto3
3.6
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
attrs @ file:///opt/conda/conda-bld/attrs_1642510447205/work
boto3==1.23.10
botocore==1.26.10
certifi==2021.5.30
charset-normalizer==2.0.12
click==6.7
coverage==6.2
-e git+https://github.com/fabfuel/ecs-deploy.git@f489ac92fe2cf9ead5bedac68e852fadc6d68778#egg=ecs_deploy
future==1.0.0
idna==3.10
importlib-metadata @ file:///tmp/build/80754af9/importlib-metadata_1631916693255/work
iniconfig @ file:///home/linux1/recipes/ci/iniconfig_1610983019677/work
jmespath==0.10.0
mock==5.2.0
more-itertools @ file:///tmp/build/80754af9/more-itertools_1637733554872/work
packaging @ file:///tmp/build/80754af9/packaging_1637314298585/work
pluggy @ file:///tmp/build/80754af9/pluggy_1615976315926/work
py @ file:///opt/conda/conda-bld/py_1644396412707/work
pyparsing @ file:///tmp/build/80754af9/pyparsing_1635766073266/work
pytest==6.2.4
pytest-cov==4.0.0
pytest-mock==3.6.1
python-dateutil==2.9.0.post0
requests==2.27.1
s3transfer==0.5.2
six==1.17.0
toml @ file:///tmp/build/80754af9/toml_1616166611790/work
tomli==1.2.3
typing_extensions @ file:///opt/conda/conda-bld/typing_extensions_1647553014482/work
urllib3==1.26.20
zipp @ file:///tmp/build/80754af9/zipp_1633618647012/work

name: ecs-deploy
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - attrs=21.4.0=pyhd3eb1b0_0
  - ca-certificates=2025.2.25=h06a4308_0
  - certifi=2021.5.30=py36h06a4308_0
  - importlib-metadata=4.8.1=py36h06a4308_0
  - importlib_metadata=4.8.1=hd3eb1b0_0
  - iniconfig=1.1.1=pyhd3eb1b0_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.3=he6710b0_2
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - more-itertools=8.12.0=pyhd3eb1b0_0
  - ncurses=6.4=h6a678d5_0
  - openssl=1.1.1w=h7f8727e_0
  - packaging=21.3=pyhd3eb1b0_0
  - pip=21.2.2=py36h06a4308_0
  - pluggy=0.13.1=py36h06a4308_0
  - py=1.11.0=pyhd3eb1b0_0
  - pyparsing=3.0.4=pyhd3eb1b0_0
  - pytest=6.2.4=py36h06a4308_2
  - python=3.6.13=h12debd9_1
  - readline=8.2=h5eee18b_0
  - setuptools=58.0.4=py36h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - toml=0.10.2=pyhd3eb1b0_0
  - typing_extensions=4.1.1=pyh06a4308_0
  - wheel=0.37.1=pyhd3eb1b0_0
  - xz=5.6.4=h5eee18b_1
  - zipp=3.6.0=pyhd3eb1b0_0
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - boto3==1.23.10
      - botocore==1.26.10
      - charset-normalizer==2.0.12
      - click==6.7
      - coverage==6.2
      - future==1.0.0
      - idna==3.10
      - jmespath==0.10.0
      - mock==5.2.0
      - pytest-cov==4.0.0
      - pytest-mock==3.6.1
      - python-dateutil==2.9.0.post0
      - requests==2.27.1
      - s3transfer==0.5.2
      - six==1.17.0
      - tomli==1.2.3
      - urllib3==1.26.20
prefix: /opt/conda/envs/ecs-deploy

tests/test_cli.py::test_deploy_exclusive_environment tests/test_cli.py::test_deploy_exclusive_secret tests/test_ecs.py::test_task_set_environment_exclusively tests/test_ecs.py::test_task_set_secrets_exclusively
tests/test_cli.py::test_get_client tests/test_cli.py::test_ecs tests/test_cli.py::test_deploy_without_credentials tests/test_cli.py::test_deploy_with_invalid_cluster tests/test_cli.py::test_deploy_with_invalid_service tests/test_cli.py::test_deploy tests/test_cli.py::test_deploy_with_rollback tests/test_cli.py::test_deploy_without_deregister tests/test_cli.py::test_deploy_with_role_arn tests/test_cli.py::test_deploy_new_tag tests/test_cli.py::test_deploy_one_new_image tests/test_cli.py::test_deploy_two_new_images tests/test_cli.py::test_deploy_one_new_command tests/test_cli.py::test_deploy_one_new_environment_variable tests/test_cli.py::test_deploy_change_environment_variable_empty_string tests/test_cli.py::test_deploy_new_empty_environment_variable tests/test_cli.py::test_deploy_empty_environment_variable_again tests/test_cli.py::test_deploy_one_new_secret_variable tests/test_cli.py::test_deploy_without_changing_environment_value tests/test_cli.py::test_deploy_without_changing_secrets_value tests/test_cli.py::test_deploy_without_diff tests/test_cli.py::test_deploy_with_errors tests/test_cli.py::test_deploy_with_client_errors tests/test_cli.py::test_deploy_ignore_warnings tests/test_cli.py::test_deploy_with_newrelic tests/test_cli.py::test_deploy_with_newrelic_errors tests/test_cli.py::test_deploy_task_definition_arn tests/test_cli.py::test_deploy_with_timeout tests/test_cli.py::test_deploy_unknown_task_definition_arn tests/test_cli.py::test_scale_with_invalid_cluster tests/test_cli.py::test_scale_with_invalid_service tests/test_cli.py::test_scale tests/test_cli.py::test_scale_with_errors tests/test_cli.py::test_scale_with_client_errors tests/test_cli.py::test_scale_ignore_warnings tests/test_cli.py::test_scale_with_timeout tests/test_cli.py::test_scale_without_credentials tests/test_cli.py::test_run_task tests/test_cli.py::test_run_task_with_command tests/test_cli.py::test_run_task_with_environment_var tests/test_cli.py::test_run_task_without_diff tests/test_cli.py::test_run_task_with_errors tests/test_cli.py::test_run_task_without_credentials tests/test_cli.py::test_run_task_with_invalid_cluster tests/test_cli.py::test_record_deployment_without_revision tests/test_cli.py::test_record_deployment_without_apikey tests/test_cli.py::test_record_deployment_without_appid tests/test_cli.py::test_record_deployment tests/test_ecs.py::test_service_init tests/test_ecs.py::test_service_set_task_definition tests/test_ecs.py::test_service_name tests/test_ecs.py::test_service_deployment_created_at tests/test_ecs.py::test_service_deployment_updated_at tests/test_ecs.py::test_service_deployment_created_at_without_deployments tests/test_ecs.py::test_service_deployment_updated_at_without_deployments tests/test_ecs.py::test_service_errors tests/test_ecs.py::test_service_older_errors tests/test_ecs.py::test_task_family tests/test_ecs.py::test_task_containers tests/test_ecs.py::test_task_container_names tests/test_ecs.py::test_task_volumes tests/test_ecs.py::test_task_revision tests/test_ecs.py::test_task_no_diff tests/test_ecs.py::test_task_image_diff tests/test_ecs.py::test_task_set_tag tests/test_ecs.py::test_task_set_image tests/test_ecs.py::test_task_set_environment tests/test_ecs.py::test_task_set_secrets tests/test_ecs.py::test_task_set_image_for_unknown_container tests/test_ecs.py::test_task_set_command tests/test_ecs.py::test_task_set_command_with_multiple_arguments tests/test_ecs.py::test_task_set_command_for_unknown_container tests/test_ecs.py::test_task_get_overrides tests/test_ecs.py::test_task_get_overrides_with_command tests/test_ecs.py::test_task_get_overrides_with_environment tests/test_ecs.py::test_task_get_overrides_with_secrets tests/test_ecs.py::test_task_get_overrides_with_command_environment_and_secrets tests/test_ecs.py::test_task_get_overrides_with_command_secrets_and_environment_for_multiple_containers tests/test_ecs.py::test_task_get_overrides_command tests/test_ecs.py::test_task_get_overrides_environment tests/test_ecs.py::test_task_get_overrides_secrets tests/test_ecs.py::test_task_definition_diff tests/test_ecs.py::test_client_init tests/test_ecs.py::test_client_describe_services tests/test_ecs.py::test_client_describe_task_definition tests/test_ecs.py::test_client_describe_unknown_task_definition tests/test_ecs.py::test_client_list_tasks tests/test_ecs.py::test_client_describe_tasks tests/test_ecs.py::test_client_register_task_definition tests/test_ecs.py::test_client_deregister_task_definition tests/test_ecs.py::test_client_update_service tests/test_ecs.py::test_client_run_task tests/test_ecs.py::test_ecs_action_init tests/test_ecs.py::test_ecs_action_init_with_invalid_cluster tests/test_ecs.py::test_ecs_action_init_with_invalid_service tests/test_ecs.py::test_ecs_action_init_without_credentials tests/test_ecs.py::test_ecs_action_get_service tests/test_ecs.py::test_ecs_action_get_current_task_definition tests/test_ecs.py::test_update_task_definition tests/test_ecs.py::test_deregister_task_definition tests/test_ecs.py::test_update_service tests/test_ecs.py::test_is_deployed tests/test_ecs.py::test_is_not_deployed_with_more_than_one_deployment tests/test_ecs.py::test_is_deployed_if_no_tasks_should_be_running tests/test_ecs.py::test_is_not_deployed_if_no_tasks_running tests/test_ecs.py::test_get_running_tasks_count tests/test_ecs.py::test_get_running_tasks_count_new_revision tests/test_ecs.py::test_deploy_action tests/test_ecs.py::test_scale_action tests/test_ecs.py::test_run_action tests/test_ecs.py::test_run_action_run
README.rst ecs_deploy/ecs.py ecs_deploy/cli.py
README.rst ecs_deploy/ecs.py ecs_deploy/cli.py