##### SUMMARY

ec2_instance module stopped working after update to v 2.9.1

##### ISSUE TYPE
- Bug Report

##### COMPONENT NAME

ec2_instance module 
https://docs.ansible.com/ansible/latest/modules/ec2_instance_module.html

##### ANSIBLE VERSION
<!--- Paste verbatim output from "ansible --version" between quotes -->
```paste below
ansible 2.9.1
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/home/user0/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3.8/site-packages/ansible
  executable location = /usr/bin/ansible
  python version = 3.8.0 (default, Oct 23 2019, 18:51:26) [GCC 9.2.0]
```

##### CONFIGURATION
<!--- Paste verbatim output from "ansible-config dump --only-changed" between quotes -->
```paste below

```

##### OS / ENVIRONMENT

```
uname -a
Linux work3 5.3.11-arch1-1 #1 SMP PREEMPT Tue, 12 Nov 2019 22:19:48 +0000 x86_64 GNU/Linux
```

##### STEPS TO REPRODUCE

previously working snippet
```yaml
- name: stop image instance 
  register: image_instance
  ec2_instance:
    region: "{{amazon_region}}"
    instance_ids: "{{instance_id}}"
    state: stopped
    wait: yes
    wait_timeout: 320
    aws_access_key: "{{aws_access_key_id}}"
    aws_secret_key: "{{aws_secret_access_key}}"
    validate_certs: no
```

##### EXPECTED RESULTS

invocation success

##### ACTUAL RESULTS

invocation failure

```paste below
Traceback (most recent call last):
  File "/home/user0/.ansible/tmp/ansible-tmp-1574115528.3222384-162345873183700/AnsiballZ_ec2_instance.py", line 102, in <module>
    _ansiballz_main()
  File "/home/user0/.ansible/tmp/ansible-tmp-1574115528.3222384-162345873183700/AnsiballZ_ec2_instance.py", line 94, in _ansiballz_main
    invoke_module(zipped_mod, temp_path, ANSIBALLZ_PARAMS)
  File "/home/user0/.ansible/tmp/ansible-tmp-1574115528.3222384-162345873183700/AnsiballZ_ec2_instance.py", line 40, in invoke_module
    runpy.run_module(mod_name='ansible.modules.cloud.amazon.ec2_instance', init_globals=None, run_name='__main__', alter_sys=True)
  File "/usr/lib/python3.8/runpy.py", line 205, in run_module
    return _run_module_code(code, init_globals, run_name, mod_spec)
  File "/usr/lib/python3.8/runpy.py", line 95, in _run_module_code
    _run_code(code, mod_globals, init_globals,
  File "/usr/lib/python3.8/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/tmp/ansible_ec2_instance_payload_hz5qgsqh/ansible_ec2_instance_payload.zip/ansible/modules/cloud/amazon/ec2_instance.py", line 1710, in <module>
  File "/tmp/ansible_ec2_instance_payload_hz5qgsqh/ansible_ec2_instance_payload.zip/ansible/modules/cloud/amazon/ec2_instance.py", line 1681, in main
  File "/tmp/ansible_ec2_instance_payload_hz5qgsqh/ansible_ec2_instance_payload.zip/ansible/modules/cloud/amazon/ec2_instance.py", line 1297, in find_instances
RuntimeError: dictionary keys changed during iteration
```

#### code in error:

code in error is in fact doing: "dictionary keys changed during iteration":

[ec2_instance.py#L1297](https://github.com/ansible/ansible/blob/v2.9.1/lib/ansible/modules/cloud/amazon/ec2_instance.py#L1297
)

```
        for key in filters.keys():
            if not key.startswith("tag:"):
                filters[key.replace("_", "-")] = filters.pop(key)
```

vpcs = ec2.describe_vpcs(Filters=ansible_dict_to_boto3_filter_list({'isDefault': 'true'}))
    if len(vpcs.get('Vpcs', [])):
        return vpcs.get('Vpcs')[0]
    return None
@AWSRetry.jittered_backoff()
def get_default_subnet(ec2, vpc, availability_zone=None):
    subnets = ec2.describe_subnets(
        Filters=ansible_dict_to_boto3_filter_list({
            'vpc-id': vpc['VpcId'],
            'state': 'available',
            'default-for-az': 'true',
        })
    )
    if len(subnets.get('Subnets', [])):
        if availability_zone is not None:
            subs_by_az = dict((subnet['AvailabilityZone'], subnet) for subnet in subnets.get('Subnets'))
            if availability_zone in subs_by_az:
                return subs_by_az[availability_zone]
        
        
        by_az = sorted(subnets.get('Subnets'), key=lambda s: s['AvailabilityZone'])
        return by_az[0]
    return None
def ensure_instance_state(state, ec2=None):