Ctrl + k

or run

tessl search
Log in

Version

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
mavenpkg:maven/com.pulumi/aws@7.16.x

docs

common-patterns.mdgetting-started.mdindex.mdprovider.md
tile.json

tessl/maven-com-pulumi--aws

tessl install tessl/maven-com-pulumi--aws@7.16.0

Pulumi Java SDK for AWS providing strongly-typed Infrastructure-as-Code for 227 AWS service packages including compute, storage, databases, networking, security, analytics, machine learning, and more.

ec2.mddocs/services/compute/

EC2 (Elastic Compute Cloud)

Amazon EC2 provides resizable virtual machines in the cloud.

Core Imports

import com.pulumi.aws.ec2.Instance;
import com.pulumi.aws.ec2.InstanceArgs;
import com.pulumi.aws.ec2.Ami;
import com.pulumi.aws.ec2.AmiArgs;
import com.pulumi.aws.ec2.KeyPair;
import com.pulumi.aws.ec2.KeyPairArgs;
import com.pulumi.aws.ec2.SecurityGroup;
import com.pulumi.aws.ec2.SecurityGroupArgs;
import com.pulumi.aws.ec2.LaunchTemplate;
import com.pulumi.aws.ec2.LaunchTemplateArgs;
import com.pulumi.aws.ec2.Ec2Functions;
import com.pulumi.aws.ec2.inputs.GetAmiArgs;
import com.pulumi.aws.ec2.inputs.GetInstanceArgs;

Instance Resource

Create and manage EC2 instances.

@ResourceType(type="aws:ec2/instance:Instance")
public class Instance extends com.pulumi.resources.CustomResource {
    public Instance(String name, InstanceArgs args);
    public Instance(String name, InstanceArgs args, @Nullable CustomResourceOptions options);

    // Exported Properties
    public Output<String> ami();
    public Output<String> arn();
    public Output<String> instanceType();
    public Output<String> availabilityZone();
    public Output<Optional<String>> keyName();
    public Output<Optional<List<String>>> securityGroups();
    public Output<Optional<List<String>>> vpcSecurityGroupIds();
    public Output<Optional<String>> subnetId();
    public Output<Optional<String>> privateIp();
    public Output<String> publicIp();
    public Output<String> publicDns();
    public Output<String> privateDns();
    public Output<String> instanceState();
    public Output<Optional<Map<String, String>>> tags();
    public Output<Optional<String>> userData();
    public Output<Optional<String>> iamInstanceProfile();
    public Output<Optional<Boolean>> associatePublicIpAddress();
    public Output<Optional<Boolean>> sourceDestCheck();
    public Output<Optional<Boolean>> monitoring();
    public Output<Optional<List<InstanceEbsBlockDevice>>> ebsBlockDevices();
    public Output<Optional<InstanceRootBlockDevice>> rootBlockDevice();
    public Output<Optional<InstanceMetadataOptions>> metadataOptions();
}

public class InstanceArgs extends com.pulumi.resources.ResourceArgs {
    public static Builder builder() { return new Builder(); }

    public static final class Builder {
        // Required
        public Builder ami(Output<String> ami);
        public Builder instanceType(Output<String> instanceType);

        // Optional
        public Builder keyName(Output<String> keyName);
        public Builder securityGroups(Output<List<String>> securityGroups);
        public Builder vpcSecurityGroupIds(Output<List<String>> vpcSecurityGroupIds);
        public Builder subnetId(Output<String> subnetId);
        public Builder availabilityZone(Output<String> availabilityZone);
        public Builder privateIp(Output<String> privateIp);
        public Builder associatePublicIpAddress(Output<Boolean> associatePublicIpAddress);
        public Builder sourceDestCheck(Output<Boolean> sourceDestCheck);
        public Builder userData(Output<String> userData);
        public Builder iamInstanceProfile(Output<String> iamInstanceProfile);
        public Builder tags(Output<Map<String, String>> tags);
        public Builder monitoring(Output<Boolean> monitoring);
        public Builder ebsBlockDevices(Output<List<InstanceEbsBlockDeviceArgs>> ebsBlockDevices);
        public Builder rootBlockDevice(Output<InstanceRootBlockDeviceArgs> rootBlockDevice);
        public Builder metadataOptions(Output<InstanceMetadataOptionsArgs> metadataOptions);
        public Builder cpuOptions(Output<InstanceCpuOptionsArgs> cpuOptions);
        public Builder creditSpecification(Output<InstanceCreditSpecificationArgs> creditSpecification);
        public Builder launchTemplate(Output<InstanceLaunchTemplateArgs> launchTemplate);
        public Builder instanceMarketOptions(Output<InstanceInstanceMarketOptionsArgs> instanceMarketOptions);

        public InstanceArgs build();
    }
}

AMI Resource

Create and manage Amazon Machine Images.

@ResourceType(type="aws:ec2/ami:Ami")
public class Ami extends com.pulumi.resources.CustomResource {
    public Ami(String name, AmiArgs args);
    public Ami(String name, AmiArgs args, @Nullable CustomResourceOptions options);

    public Output<String> id();
    public Output<String> arn();
    public Output<String> name();
    public Output<Optional<String>> description();
    public Output<String> architecture();
    public Output<String> imageLocation();
    public Output<String> rootDeviceName();
    public Output<Optional<String>> virtualizationType();
    public Output<Optional<List<AmiEbsBlockDevice>>> ebsBlockDevices();
    public Output<Optional<Map<String, String>>> tags();
}

public class AmiArgs extends com.pulumi.resources.ResourceArgs {
    public static Builder builder() { return new Builder(); }

    public static final class Builder {
        public Builder name(Output<String> name);
        public Builder description(Output<String> description);
        public Builder architecture(Output<String> architecture);
        public Builder imageLocation(Output<String> imageLocation);
        public Builder rootDeviceName(Output<String> rootDeviceName);
        public Builder virtualizationType(Output<String> virtualizationType);
        public Builder ebsBlockDevices(Output<List<AmiEbsBlockDeviceArgs>> ebsBlockDevices);
        public Builder ephemeralBlockDevices(Output<List<AmiEphemeralBlockDeviceArgs>> ephemeralBlockDevices);
        public Builder tags(Output<Map<String, String>> tags);

        public AmiArgs build();
    }
}

Launch Template Resource

Define launch parameters for EC2 instances.

@ResourceType(type="aws:ec2/launchTemplate:LaunchTemplate")
public class LaunchTemplate extends com.pulumi.resources.CustomResource {
    public LaunchTemplate(String name, LaunchTemplateArgs args);

    public Output<String> id();
    public Output<String> arn();
    public Output<String> name();
    public Output<Integer> latestVersion();
    public Output<Integer> defaultVersion();
    public Output<Optional<String>> imageId();
    public Output<Optional<String>> instanceType();
    public Output<Optional<String>> keyName();
    public Output<Optional<String>> userData();
}

public class LaunchTemplateArgs extends com.pulumi.resources.ResourceArgs {
    public static Builder builder() { return new Builder(); }

    public static final class Builder {
        public Builder name(Output<String> name);
        public Builder description(Output<String> description);
        public Builder imageId(Output<String> imageId);
        public Builder instanceType(Output<String> instanceType);
        public Builder keyName(Output<String> keyName);
        public Builder userData(Output<String> userData);
        public Builder blockDeviceMappings(Output<List<LaunchTemplateBlockDeviceMappingArgs>> blockDeviceMappings);
        public Builder networkInterfaces(Output<List<LaunchTemplateNetworkInterfaceArgs>> networkInterfaces);
        public Builder iamInstanceProfile(Output<LaunchTemplateIamInstanceProfileArgs> iamInstanceProfile);
        public Builder monitoring(Output<LaunchTemplateMonitoringArgs> monitoring);
        public Builder placement(Output<LaunchTemplatePlacementArgs> placement);
        public Builder tags(Output<Map<String, String>> tags);
        public Builder tagSpecifications(Output<List<LaunchTemplateTagSpecificationArgs>> tagSpecifications);

        public LaunchTemplateArgs build();
    }
}

Security Group Resource

Control inbound and outbound traffic for EC2 instances.

@ResourceType(type="aws:ec2/securityGroup:SecurityGroup")
public class SecurityGroup extends com.pulumi.resources.CustomResource {
    public SecurityGroup(String name, SecurityGroupArgs args);

    public Output<String> id();
    public Output<String> arn();
    public Output<String> name();
    public Output<Optional<String>> description();
    public Output<String> vpcId();
    public Output<Optional<List<SecurityGroupIngress>>> ingress();
    public Output<Optional<List<SecurityGroupEgress>>> egress();
}

public class SecurityGroupArgs extends com.pulumi.resources.ResourceArgs {
    public static Builder builder() { return new Builder(); }

    public static final class Builder {
        public Builder name(Output<String> name);
        public Builder description(Output<String> description);
        public Builder vpcId(Output<String> vpcId);
        public Builder ingress(Output<List<SecurityGroupIngressArgs>> ingress);
        public Builder egress(Output<List<SecurityGroupEgressArgs>> egress);
        public Builder tags(Output<Map<String, String>> tags);

        public SecurityGroupArgs build();
    }
}

Key Pair Resource

Manage SSH key pairs for EC2 instances.

@ResourceType(type="aws:ec2/keyPair:KeyPair")
public class KeyPair extends com.pulumi.resources.CustomResource {
    public KeyPair(String name, KeyPairArgs args);

    public Output<String> keyName();
    public Output<String> keyPairId();
    public Output<String> fingerprint();
    public Output<Optional<String>> publicKey();
}

public class KeyPairArgs extends com.pulumi.resources.ResourceArgs {
    public static Builder builder() { return new Builder(); }

    public static final class Builder {
        public Builder keyName(Output<String> keyName);
        public Builder publicKey(Output<String> publicKey);
        public Builder tags(Output<Map<String, String>> tags);

        public KeyPairArgs build();
    }
}

EC2 Data Sources

Query existing EC2 resources.

public class Ec2Functions {
    // Get AMI by filters
    public static Output<GetAmiResult> getAmi(GetAmiArgs args);
    public static CompletableFuture<GetAmiResult> getAmiPlain(GetAmiArgs args);

    // Get instance information
    public static Output<GetInstanceResult> getInstance(GetInstanceArgs args);
    public static CompletableFuture<GetInstanceResult> getInstancePlain(GetInstanceArgs args);

    // Get instances list
    public static Output<GetInstancesResult> getInstances(GetInstancesArgs args);
    public static CompletableFuture<GetInstancesResult> getInstancesPlain(GetInstancesArgs args);

    // Get security group
    public static Output<GetSecurityGroupResult> getSecurityGroup(GetSecurityGroupArgs args);
    public static CompletableFuture<GetSecurityGroupResult> getSecurityGroupPlain(GetSecurityGroupArgs args);
}

public class GetAmiArgs {
    public static Builder builder() { return new Builder(); }

    public static final class Builder {
        public Builder mostRecent(Boolean mostRecent);
        public Builder owners(List<String> owners);
        public Builder filters(List<GetAmiFilterArgs> filters);
        public Builder nameRegex(String nameRegex);

        public GetAmiArgs build();
    }
}

Usage Example

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.aws.ec2.*;
import com.pulumi.aws.ec2.inputs.*;
import java.util.Map;

public class App {
    public static void main(String[] args) {
        Pulumi.run(App::stack);
    }

    public static void stack(Context ctx) {
        // Create a key pair
        var keyPair = new KeyPair("my-key", KeyPairArgs.builder()
            .keyName("my-key-pair")
            .publicKey("ssh-rsa AAAAB3NzaC1...")
            .build());

        // Create a security group
        var securityGroup = new SecurityGroup("web-sg", SecurityGroupArgs.builder()
            .name("web-security-group")
            .description("Allow HTTP and SSH")
            .ingress(
                SecurityGroupIngressArgs.builder()
                    .protocol("tcp")
                    .fromPort(22)
                    .toPort(22)
                    .cidrBlocks("0.0.0.0/0")
                    .build(),
                SecurityGroupIngressArgs.builder()
                    .protocol("tcp")
                    .fromPort(80)
                    .toPort(80)
                    .cidrBlocks("0.0.0.0/0")
                    .build()
            )
            .egress(SecurityGroupEgressArgs.builder()
                .protocol("-1")
                .fromPort(0)
                .toPort(0)
                .cidrBlocks("0.0.0.0/0")
                .build())
            .tags(Map.of("Name", "web-sg"))
            .build());

        // Look up latest Ubuntu AMI
        var ubuntu = Ec2Functions.getAmi(GetAmiArgs.builder()
            .mostRecent(true)
            .owners("099720109477")
            .filters(
                GetAmiFilterArgs.builder()
                    .name("name")
                    .values("ubuntu/images/hvm-ssd/ubuntu-jammy-22.04-amd64-server-*")
                    .build(),
                GetAmiFilterArgs.builder()
                    .name("virtualization-type")
                    .values("hvm")
                    .build()
            )
            .build());

        // Create an EC2 instance
        var instance = new Instance("web-server", InstanceArgs.builder()
            .ami(ubuntu.applyValue(GetAmiResult::id))
            .instanceType("t3.micro")
            .keyName(keyPair.keyName())
            .vpcSecurityGroupIds(securityGroup.id().applyValue(List::of))
            .userData("""
                #!/bin/bash
                apt-get update
                apt-get install -y nginx
                systemctl start nginx
                """)
            .tags(Map.of(
                "Name", "web-server",
                "Environment", "production"
            ))
            .build());

        // Export instance details
        ctx.export("instanceId", instance.id());
        ctx.export("instancePublicIp", instance.publicIp());
        ctx.export("instancePublicDns", instance.publicDns());
    }
}