How to find instances that DONT have a tag using Boto3
<p>I'm trying to find instances that DONT have a certain tag.</p>

<p>For instance I want all instances that don't have the Foo tag.
I also want instances that don't have the Foo value equal to Bar.</p>

<p>This is what I'm doing now:</p>

<pre><code>import boto3


def aws_get_instances_by_name(name):
    """Get EC2 instances by name"""
    ec2 = boto3.resource('ec2')

    instance_iterator = ec2.instances.filter(
        Filters=[
            {
                'Name': 'tag:Name',
                'Values': [
                    name,
                ]
            },
            {
                'Name': 'tag:Foo',
                'Values': [

                ]
            },
        ]
    )

    return instance_iterator
</code></pre>

<p>This is returning nothing.</p>

<p>What is the correct way?</p>

<p>Here's some code that will display the <code>instance_id</code> for instances <strong>without</strong> a particular tag:</p>

<pre><code>import boto3

instances = [i for i in boto3.resource('ec2', region_name='ap-southeast-2').instances.all()]

# Print instance_id of instances that do not have a Tag of Key='Foo'
for i in instances:
  if 'Foo' not in [t['Key'] for t in i.tags]:
    print i.instance_id
</code></pre>

python amazon-ec2 boto3