aws.ec2.getInstances
Explore with Pulumi AI
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
import * as pulumi from "@pulumi/pulumi";
import * as aws from "@pulumi/aws";
export = async () => {
const test = 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 < test.ids.length; range.value++) {
testEip.push(new aws.ec2.Eip(`test-${range.value}`, {instance: test.ids[range.value]}));
}
}
import pulumi
import pulumi_aws as aws
test = aws.ec2.get_instances(instance_tags={
"Role": "HardWorker",
},
filters=[{
"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.ids))]:
test_eip.append(aws.ec2.Eip(f"test-{range['value']}", instance=test.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 {
test, 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 < int(len(test.Ids)); index++ {
key0 := index
val0 := index
__res, err := ec2.NewEip(ctx, fmt.Sprintf("test-%v", key0), &ec2.EipArgs{
Instance: pulumi.String(test.Ids[val0]),
})
if err != nil {
return err
}
testEip = append(testEip, __res)
}
return nil
})
}
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Pulumi;
using Aws = Pulumi.Aws;
return await Deployment.RunAsync(async() =>
{
var test = 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 < test.Ids.Length; rangeIndex++)
{
var range = new { Value = rangeIndex };
testEip.Add(new Aws.Ec2.Eip($"test-{range.Value}", new()
{
Instance = test.Ids[range.Value],
}));
}
});
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 test = 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 < test.applyValue(getInstancesResult -> getInstancesResult.ids()).length(); i++) {
new Eip("testEip-" + i, EipArgs.builder()
.instance(test.applyValue(getInstancesResult -> getInstancesResult.ids())[range.value()])
.build());
}
}
}
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<Get
Instances Filter> - 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 List<string>Names - 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 isrunning
. - Dictionary<string, string>
- Map of tags, each pair of which must exactly match a pair on desired instances.
- Filters
[]Get
Instances Filter - 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 []stringNames - 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 isrunning
. - map[string]string
- Map of tags, each pair of which must exactly match a pair on desired instances.
- filters
List<Get
Instances Filter> - 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 List<String>Names - 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 isrunning
. - Map<String,String>
- Map of tags, each pair of which must exactly match a pair on desired instances.
- filters
Get
Instances Filter[] - 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 string[]Names - 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 isrunning
. - {[key: string]: string}
- Map of tags, each pair of which must exactly match a pair on desired instances.
- filters
Sequence[Get
Instances Filter] - 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_ Sequence[str]names - 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 isrunning
. - 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].
- instance
State List<String>Names - 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 isrunning
. - 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
- Dictionary<string, string>
- Ipv6Addresses List<string>
- IPv6 addresses of instances found through the filter
- Private
Ips List<string> - Private IP addresses of instances found through the filter
- Public
Ips List<string> - Public IP addresses of instances found through the filter
- Filters
List<Get
Instances Filter> - Instance
State List<string>Names
- Id string
- The provider-assigned unique ID for this managed resource.
- Ids []string
- IDs of instances found through the filter
- map[string]string
- Ipv6Addresses []string
- IPv6 addresses of instances found through the filter
- Private
Ips []string - Private IP addresses of instances found through the filter
- Public
Ips []string - Public IP addresses of instances found through the filter
- Filters
[]Get
Instances Filter - Instance
State []stringNames
- id String
- The provider-assigned unique ID for this managed resource.
- ids List<String>
- IDs of instances found through the filter
- Map<String,String>
- ipv6Addresses List<String>
- IPv6 addresses of instances found through the filter
- private
Ips List<String> - Private IP addresses of instances found through the filter
- public
Ips List<String> - Public IP addresses of instances found through the filter
- filters
List<Get
Instances Filter> - instance
State List<String>Names
- id string
- The provider-assigned unique ID for this managed resource.
- ids string[]
- IDs of instances found through the filter
- {[key: string]: string}
- ipv6Addresses string[]
- IPv6 addresses of instances found through the filter
- private
Ips string[] - Private IP addresses of instances found through the filter
- public
Ips string[] - Public IP addresses of instances found through the filter
- filters
Get
Instances Filter[] - instance
State string[]Names
- id str
- The provider-assigned unique ID for this managed resource.
- ids Sequence[str]
- IDs of instances found through the filter
- 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[Get
Instances Filter] - instance_
state_ Sequence[str]names
- id String
- The provider-assigned unique ID for this managed resource.
- ids List<String>
- IDs of instances found through the filter
- Map<String>
- ipv6Addresses List<String>
- IPv6 addresses of instances found through the filter
- private
Ips List<String> - Private IP addresses of instances found through the filter
- public
Ips List<String> - Public IP addresses of instances found through the filter
- filters List<Property Map>
- instance
State List<String>Names
Supporting Types
GetInstancesFilter
Package Details
- Repository
- AWS Classic pulumi/pulumi-aws
- License
- Apache-2.0
- Notes
- This Pulumi package is based on the
aws
Terraform Provider.