1. Packages
  2. AWS Classic
  3. API Docs
  4. ec2
  5. getInstances

Try AWS Native preview for resources not in the classic version.

AWS Classic v6.12.0 published on Wednesday, Nov 29, 2023 by Pulumi

aws.ec2.getInstances

Explore with Pulumi AI

aws logo

Try AWS Native preview for resources not in the classic version.

AWS Classic v6.12.0 published on Wednesday, Nov 29, 2023 by Pulumi

    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.Linq;
    using System.Threading.Tasks;
    using Pulumi;
    using Aws = Pulumi.Aws;
    
    return await Deployment.RunAsync(async() => 
    {
        var testInstances = await Aws.Ec2.GetInstances.InvokeAsync(new()
        {
            InstanceTags = 
            {
                { "Role", "HardWorker" },
            },
            Filters = new[]
            {
                new Aws.Ec2.Inputs.GetInstancesFilterInputArgs
                {
                    Name = "instance.group-id",
                    Values = new[]
                    {
                        "sg-12345678",
                    },
                },
            },
            InstanceStateNames = new[]
            {
                "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()
            {
                Instance = testInstances.Ids[range.Value],
            }));
        }
    });
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ec2"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		testInstances, err := ec2.GetInstances(ctx, &ec2.GetInstancesArgs{
    			InstanceTags: map[string]interface{}{
    				"Role": "HardWorker",
    			},
    			Filters: []ec2.GetInstancesFilter{
    				{
    					Name: "instance.group-id",
    					Values: []string{
    						"sg-12345678",
    					},
    				},
    			},
    			InstanceStateNames: []string{
    				"running",
    				"stopped",
    			},
    		}, nil)
    		if err != nil {
    			return err
    		}
    		var testEip []*ec2.Eip
    		for index := 0; index < len(testInstances.Ids); index++ {
    			key0 := index
    			val0 := index
    			__res, err := ec2.NewEip(ctx, fmt.Sprintf("testEip-%v", key0), &ec2.EipArgs{
    				Instance: testInstances.Ids[val0],
    			})
    			if err != nil {
    				return err
    			}
    			testEip = append(testEip, __res)
    		}
    		return nil
    	})
    }
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.aws.ec2.Ec2Functions;
    import com.pulumi.aws.ec2.inputs.GetInstancesArgs;
    import com.pulumi.aws.ec2.Eip;
    import com.pulumi.aws.ec2.EipArgs;
    import com.pulumi.codegen.internal.KeyedValue;
    import java.util.List;
    import java.util.ArrayList;
    import java.util.Map;
    import java.io.File;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    
    public class App {
        public static void main(String[] args) {
            Pulumi.run(App::stack);
        }
    
        public static void stack(Context ctx) {
            final var testInstances = Ec2Functions.getInstances(GetInstancesArgs.builder()
                .instanceTags(Map.of("Role", "HardWorker"))
                .filters(GetInstancesFilterArgs.builder()
                    .name("instance.group-id")
                    .values("sg-12345678")
                    .build())
                .instanceStateNames(            
                    "running",
                    "stopped")
                .build());
    
            for (var i = 0; i < testInstances.applyValue(getInstancesResult -> getInstancesResult.ids()).length(); i++) {
                new Eip("testEip-" + i, EipArgs.builder()            
                    .instance(testInstances.applyValue(getInstancesResult -> getInstancesResult.ids())[range.value()])
                    .build());
    
            
    }
        }
    }
    
    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]}));
        }
    }
    

    Coming soon!

    Using getInstances

    Two invocation forms are available. The direct form accepts plain arguments and either blocks until the result value is available, or returns a Promise-wrapped result. The output form accepts Input-wrapped arguments and returns an Output-wrapped result.

    function getInstances(args: GetInstancesArgs, opts?: InvokeOptions): Promise<GetInstancesResult>
    function getInstancesOutput(args: GetInstancesOutputArgs, opts?: InvokeOptions): Output<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
    def get_instances_output(filters: Optional[pulumi.Input[Sequence[pulumi.Input[GetInstancesFilterArgs]]]] = None,
                      instance_state_names: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                      instance_tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
                      opts: Optional[InvokeOptions] = None) -> Output[GetInstancesResult]
    func GetInstances(ctx *Context, args *GetInstancesArgs, opts ...InvokeOption) (*GetInstancesResult, error)
    func GetInstancesOutput(ctx *Context, args *GetInstancesOutputArgs, opts ...InvokeOption) GetInstancesResultOutput

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

    public static class GetInstances 
    {
        public static Task<GetInstancesResult> InvokeAsync(GetInstancesArgs args, InvokeOptions? opts = null)
        public static Output<GetInstancesResult> Invoke(GetInstancesInvokeArgs args, InvokeOptions? opts = null)
    }
    public static CompletableFuture<GetInstancesResult> getInstances(GetInstancesArgs args, InvokeOptions options)
    // Output-based functions aren't available in Java yet
    
    fn::invoke:
      function: aws:ec2/getInstances:getInstances
      arguments:
        # arguments dictionary

    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>

    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>

    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

    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

    Map of tags, each pair of which must exactly match a pair on desired instances.

    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>

    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>

    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[]

    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}

    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]

    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]

    Map of tags, each pair of which must exactly match a pair on desired instances.

    filters List<Property Map>

    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>

    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>

    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>
    Ipv6Addresses List<string>

    IPv6 addresses of instances found through the filter

    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
    Ipv6Addresses []string

    IPv6 addresses of instances found through the filter

    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 List<String>

    IDs of instances found through the filter

    instanceTags Map<String,String>
    ipv6Addresses List<String>

    IPv6 addresses of instances found through the filter

    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 {[key: string]: string}
    ipv6Addresses string[]

    IPv6 addresses of instances found through the filter

    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]
    ipv6_addresses Sequence[str]

    IPv6 addresses of instances found through the filter

    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]
    id String

    The provider-assigned unique ID for this managed resource.

    ids List<String>

    IDs of instances found through the filter

    instanceTags Map<String>
    ipv6Addresses List<String>

    IPv6 addresses of instances found through the filter

    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<Property Map>
    instanceStateNames List<String>

    Supporting Types

    GetInstancesFilter

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

    Package Details

    Repository
    AWS Classic pulumi/pulumi-aws
    License
    Apache-2.0
    Notes

    This Pulumi package is based on the aws Terraform Provider.

    aws logo

    Try AWS Native preview for resources not in the classic version.

    AWS Classic v6.12.0 published on Wednesday, Nov 29, 2023 by Pulumi