getInstances

Use this data source to get IDs or IPs of Amazon EC2 instances to be referenced elsewhere, e.g. to allow easier migration from another management solution or to make it easier for an operator to connect through bastion host(s).

Note: It’s strongly discouraged to use this data source for querying ephemeral instances (e.g. managed via autoscaling group), as the output may change at any time and you’d need to re-run apply every time an instance comes up or dies.

Example Usage

using System.Collections.Generic;
using System.Threading.Tasks;
using Pulumi;
using Aws = Pulumi.Aws;

class MyStack : Stack
{
    public MyStack()
    {
        var dict = Output.Create(Initialize());
    }

    private async Task<IDictionary<string, Output<string>>> Initialize()
    {
        var testInstances = await Aws.Ec2.GetInstances.InvokeAsync(new Aws.Ec2.GetInstancesArgs
        {
            InstanceTags = 
            {
                { "Role", "HardWorker" },
            },
            Filters = 
            {
                new Aws.Ec2.Inputs.GetInstancesFilterArgs
                {
                    Name = "instance.group-id",
                    Values = 
                    {
                        "sg-12345678",
                    },
                },
            },
            InstanceStateNames = 
            {
                "running",
                "stopped",
            },
        });
        var testEip = new List<Aws.Ec2.Eip>();
        for (var rangeIndex = 0; rangeIndex < testInstances.Ids.Length; rangeIndex++)
        {
            var range = new { Value = rangeIndex };
            testEip.Add(new Aws.Ec2.Eip($"testEip-{range.Value}", new Aws.Ec2.EipArgs
            {
                Instance = testInstances.Ids[range.Value],
            }));
        }

        return new Dictionary<string, Output<string>>
        {
        };
    }

}

Coming soon!

import pulumi
import pulumi_aws as aws

test_instances = aws.ec2.get_instances(instance_tags={
        "Role": "HardWorker",
    },
    filters=[aws.ec2.GetInstancesFilterArgs(
        name="instance.group-id",
        values=["sg-12345678"],
    )],
    instance_state_names=[
        "running",
        "stopped",
    ])
test_eip = []
for range in [{"value": i} for i in range(0, len(test_instances.ids))]:
    test_eip.append(aws.ec2.Eip(f"testEip-{range['value']}", instance=test_instances.ids[range["value"]]))
import * as pulumi from "@pulumi/pulumi";
import * as aws from "@pulumi/aws";

export = async () => {
    const testInstances = await aws.ec2.getInstances({
        instanceTags: {
            Role: "HardWorker",
        },
        filters: [{
            name: "instance.group-id",
            values: ["sg-12345678"],
        }],
        instanceStateNames: [
            "running",
            "stopped",
        ],
    });
    const testEip: aws.ec2.Eip[];
    for (const range = {value: 0}; range.value < testInstances.ids.length; range.value++) {
        testEip.push(new aws.ec2.Eip(`testEip-${range.value}`, {instance: testInstances.ids[range.value]}));
    }
}

Using getInstances

function getInstances(args: GetInstancesArgs, opts?: InvokeOptions): Promise<GetInstancesResult>
def get_instances(filters: Optional[Sequence[GetInstancesFilter]] = None,
                  instance_state_names: Optional[Sequence[str]] = None,
                  instance_tags: Optional[Mapping[str, str]] = None,
                  opts: Optional[InvokeOptions] = None) -> GetInstancesResult
func GetInstances(ctx *Context, args *GetInstancesArgs, opts ...InvokeOption) (*GetInstancesResult, error)

Note: This function is named GetInstances in the Go SDK.

public static class GetInstances {
    public static Task<GetInstancesResult> InvokeAsync(GetInstancesArgs args, InvokeOptions? opts = null)
}

The following arguments are supported:

Filters List<GetInstancesFilter>
One or more name/value pairs to use as filters. There are several valid keys, for a full reference, check out [describe-instances in the AWS CLI reference][1].
InstanceStateNames List<string>
A list of instance states that should be applicable to the desired instances. The permitted values are: pending, running, shutting-down, stopped, stopping, terminated. The default value is running.
InstanceTags Dictionary<string, string>
A map of tags, each pair of which must exactly match a pair on desired instances.
Filters []GetInstancesFilter
One or more name/value pairs to use as filters. There are several valid keys, for a full reference, check out [describe-instances in the AWS CLI reference][1].
InstanceStateNames []string
A list of instance states that should be applicable to the desired instances. The permitted values are: pending, running, shutting-down, stopped, stopping, terminated. The default value is running.
InstanceTags map[string]string
A map of tags, each pair of which must exactly match a pair on desired instances.
filters GetInstancesFilter[]
One or more name/value pairs to use as filters. There are several valid keys, for a full reference, check out [describe-instances in the AWS CLI reference][1].
instanceStateNames string[]
A list of instance states that should be applicable to the desired instances. The permitted values are: pending, running, shutting-down, stopped, stopping, terminated. The default value is running.
instanceTags {[key: string]: string}
A map of tags, each pair of which must exactly match a pair on desired instances.
filters Sequence[GetInstancesFilter]
One or more name/value pairs to use as filters. There are several valid keys, for a full reference, check out [describe-instances in the AWS CLI reference][1].
instance_state_names Sequence[str]
A list of instance states that should be applicable to the desired instances. The permitted values are: pending, running, shutting-down, stopped, stopping, terminated. The default value is running.
instance_tags Mapping[str, str]
A map of tags, each pair of which must exactly match a pair on desired instances.

getInstances Result

The following output properties are available:

Id string
The provider-assigned unique ID for this managed resource.
Ids List<string>
IDs of instances found through the filter
InstanceTags Dictionary<string, string>
PrivateIps List<string>
Private IP addresses of instances found through the filter
PublicIps List<string>
Public IP addresses of instances found through the filter
Filters List<GetInstancesFilter>
InstanceStateNames List<string>
Id string
The provider-assigned unique ID for this managed resource.
Ids []string
IDs of instances found through the filter
InstanceTags map[string]string
PrivateIps []string
Private IP addresses of instances found through the filter
PublicIps []string
Public IP addresses of instances found through the filter
Filters []GetInstancesFilter
InstanceStateNames []string
id string
The provider-assigned unique ID for this managed resource.
ids string[]
IDs of instances found through the filter
instanceTags {[key: string]: string}
privateIps string[]
Private IP addresses of instances found through the filter
publicIps string[]
Public IP addresses of instances found through the filter
filters GetInstancesFilter[]
instanceStateNames string[]
id str
The provider-assigned unique ID for this managed resource.
ids Sequence[str]
IDs of instances found through the filter
instance_tags Mapping[str, str]
private_ips Sequence[str]
Private IP addresses of instances found through the filter
public_ips Sequence[str]
Public IP addresses of instances found through the filter
filters Sequence[GetInstancesFilter]
instance_state_names Sequence[str]

Supporting Types

GetInstancesFilter

Name string
Values List<string>
Name string
Values []string
name string
values string[]
name str
values Sequence[str]

Package Details

Repository
https://github.com/pulumi/pulumi-aws
License
Apache-2.0
Notes
This Pulumi package is based on the aws Terraform Provider.