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.

vpc.mddocs/services/networking/

VPC (Virtual Private Cloud)

Amazon VPC provides isolated network environments in AWS.

Core Imports

import com.pulumi.aws.ec2.Vpc;
import com.pulumi.aws.ec2.VpcArgs;
import com.pulumi.aws.ec2.Subnet;
import com.pulumi.aws.ec2.SubnetArgs;
import com.pulumi.aws.ec2.SecurityGroup;
import com.pulumi.aws.ec2.SecurityGroupArgs;
import com.pulumi.aws.ec2.RouteTable;
import com.pulumi.aws.ec2.RouteTableArgs;
import com.pulumi.aws.ec2.InternetGateway;
import com.pulumi.aws.ec2.InternetGatewayArgs;
import com.pulumi.aws.ec2.NatGateway;
import com.pulumi.aws.ec2.NatGatewayArgs;
import com.pulumi.aws.ec2.NetworkInterface;
import com.pulumi.aws.ec2.NetworkInterfaceArgs;
import com.pulumi.aws.ec2.NetworkAcl;
import com.pulumi.aws.ec2.NetworkAclArgs;
import com.pulumi.aws.ec2.Ec2Functions;

Vpc Resource

Create and manage Virtual Private Clouds.

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

    // Exported Properties
    public Output<String> id();
    public Output<String> arn();
    public Output<String> cidrBlock();
    public Output<List<String>> cidrBlockAssociations();
    public Output<String> defaultNetworkAclId();
    public Output<String> defaultRouteTableId();
    public Output<String> defaultSecurityGroupId();
    public Output<String> dhcpOptionsId();
    public Output<Boolean> enableDnsHostnames();
    public Output<Boolean> enableDnsSupport();
    public Output<Optional<Boolean>> enableNetworkAddressUsageMetrics();
    public Output<Optional<String>> instanceTenancy();
    public Output<Optional<String>> ipv4IpamPoolId();
    public Output<Optional<Integer>> ipv4NetmaskLength();
    public Output<Optional<String>> ipv6CidrBlock();
    public Output<String> ipv6AssociationId();
    public Output<Optional<String>> ipv6IpamPoolId();
    public Output<Optional<Integer>> ipv6NetmaskLength();
    public Output<String> mainRouteTableId();
    public Output<String> ownerId();
    public Output<Optional<Map<String, String>>> tags();
    public Output<Map<String, String>> tagsAll();
}

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

    public static final class Builder {
        // CIDR Configuration
        public Builder cidrBlock(Output<String> cidrBlock);
        public Builder ipv4IpamPoolId(Output<String> ipv4IpamPoolId);
        public Builder ipv4NetmaskLength(Output<Integer> ipv4NetmaskLength);
        public Builder ipv6CidrBlock(Output<String> ipv6CidrBlock);
        public Builder ipv6IpamPoolId(Output<String> ipv6IpamPoolId);
        public Builder ipv6NetmaskLength(Output<Integer> ipv6NetmaskLength);
        public Builder ipv6CidrBlockNetworkBorderGroup(Output<String> ipv6CidrBlockNetworkBorderGroup);

        // DNS Configuration
        public Builder enableDnsHostnames(Output<Boolean> enableDnsHostnames);
        public Builder enableDnsSupport(Output<Boolean> enableDnsSupport);

        // Instance Configuration
        public Builder instanceTenancy(Output<String> instanceTenancy);

        // Monitoring
        public Builder enableNetworkAddressUsageMetrics(Output<Boolean> enableNetworkAddressUsageMetrics);

        // Tags
        public Builder tags(Output<Map<String, String>> tags);
        public Builder tagsAll(Output<Map<String, String>> tagsAll);

        public VpcArgs build();
    }
}

Subnet Resource

Create and manage VPC subnets.

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

    // Exported Properties
    public Output<String> id();
    public Output<String> arn();
    public Output<String> vpcId();
    public Output<String> cidrBlock();
    public Output<String> availabilityZone();
    public Output<String> availabilityZoneId();
    public Output<Boolean> assignIpv6AddressOnCreation();
    public Output<Optional<String>> customerOwnedIpv4Pool();
    public Output<Optional<Boolean>> enableDns64();
    public Output<Optional<Boolean>> enableLniAtDeviceIndex();
    public Output<Optional<String>> enableResourceNameDnsARecordOnLaunch();
    public Output<Optional<String>> enableResourceNameDnsAaaaRecordOnLaunch();
    public Output<Optional<String>> ipv6CidrBlock();
    public Output<String> ipv6CidrBlockAssociationId();
    public Output<Boolean> mapCustomerOwnedIpOnLaunch();
    public Output<Boolean> mapPublicIpOnLaunch();
    public Output<Optional<String>> outpostArn();
    public Output<String> ownerId();
    public Output<Optional<String>> privateDnsHostnameTypeOnLaunch();
    public Output<Optional<Map<String, String>>> tags();
    public Output<Map<String, String>> tagsAll();
}

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

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

        // CIDR Configuration
        public Builder cidrBlock(Output<String> cidrBlock);
        public Builder ipv6CidrBlock(Output<String> ipv6CidrBlock);
        public Builder ipv6Native(Output<Boolean> ipv6Native);

        // Availability Zone
        public Builder availabilityZone(Output<String> availabilityZone);
        public Builder availabilityZoneId(Output<String> availabilityZoneId);

        // IP Configuration
        public Builder assignIpv6AddressOnCreation(Output<Boolean> assignIpv6AddressOnCreation);
        public Builder mapPublicIpOnLaunch(Output<Boolean> mapPublicIpOnLaunch);
        public Builder customerOwnedIpv4Pool(Output<String> customerOwnedIpv4Pool);
        public Builder mapCustomerOwnedIpOnLaunch(Output<Boolean> mapCustomerOwnedIpOnLaunch);

        // DNS Configuration
        public Builder enableDns64(Output<Boolean> enableDns64);
        public Builder enableResourceNameDnsARecordOnLaunch(Output<Boolean> enableResourceNameDnsARecordOnLaunch);
        public Builder enableResourceNameDnsAaaaRecordOnLaunch(Output<Boolean> enableResourceNameDnsAaaaRecordOnLaunch);
        public Builder privateDnsHostnameTypeOnLaunch(Output<String> privateDnsHostnameTypeOnLaunch);

        // Outposts
        public Builder outpostArn(Output<String> outpostArn);
        public Builder enableLniAtDeviceIndex(Output<Integer> enableLniAtDeviceIndex);

        // Tags
        public Builder tags(Output<Map<String, String>> tags);

        public SubnetArgs build();
    }
}

SecurityGroup Resource

Create and manage security groups for controlling network access.

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

    // Exported Properties
    public Output<String> id();
    public Output<String> arn();
    public Output<String> name();
    public Output<String> namePrefix();
    public Output<Optional<String>> description();
    public Output<String> vpcId();
    public Output<String> ownerId();
    public Output<List<SecurityGroupEgress>> egress();
    public Output<List<SecurityGroupIngress>> ingress();
    public Output<Optional<Map<String, String>>> tags();
    public Output<Map<String, String>> tagsAll();
    public Output<Optional<Boolean>> revokeRulesOnDelete();
}

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

    public static final class Builder {
        // Basic Configuration
        public Builder name(Output<String> name);
        public Builder namePrefix(Output<String> namePrefix);
        public Builder description(Output<String> description);
        public Builder vpcId(Output<String> vpcId);

        // Rules (use SecurityGroupIngressRule/EgressRule instead)
        public Builder ingress(Output<List<SecurityGroupIngressArgs>> ingress);
        public Builder egress(Output<List<SecurityGroupEgressArgs>> egress);

        // Lifecycle
        public Builder revokeRulesOnDelete(Output<Boolean> revokeRulesOnDelete);

        // Tags
        public Builder tags(Output<Map<String, String>> tags);

        public SecurityGroupArgs build();
    }
}

RouteTable Resource

Create and manage VPC route tables.

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

    // Exported Properties
    public Output<String> id();
    public Output<String> arn();
    public Output<String> vpcId();
    public Output<String> ownerId();
    public Output<List<RouteTableRoute>> routes();
    public Output<Optional<Boolean>> propagatingVgws();
    public Output<Optional<Map<String, String>>> tags();
    public Output<Map<String, String>> tagsAll();
}

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

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

        // Routes
        public Builder routes(Output<List<RouteTableRouteArgs>> routes);

        // Virtual Private Gateway
        public Builder propagatingVgws(Output<List<String>> propagatingVgws);

        // Tags
        public Builder tags(Output<Map<String, String>> tags);

        public RouteTableArgs build();
    }
}

InternetGateway Resource

Create and manage internet gateways for VPC internet connectivity.

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

    // Exported Properties
    public Output<String> id();
    public Output<String> arn();
    public Output<Optional<String>> vpcId();
    public Output<String> ownerId();
    public Output<Optional<Map<String, String>>> tags();
    public Output<Map<String, String>> tagsAll();
}

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

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

        public InternetGatewayArgs build();
    }
}

NatGateway Resource

Create and manage NAT gateways for private subnet internet access.

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

    // Exported Properties
    public Output<String> id();
    public Output<String> allocationId();
    public Output<Optional<String>> associationId();
    public Output<Optional<String>> connectivityType();
    public Output<String> networkInterfaceId();
    public Output<Optional<String>> privateIp();
    public Output<String> publicIp();
    public Output<Optional<List<String>>> secondaryAllocationIds();
    public Output<Optional<List<String>>> secondaryPrivateIpAddresses();
    public Output<Optional<Integer>> secondaryPrivateIpAddressCount();
    public Output<String> subnetId();
    public Output<Optional<Map<String, String>>> tags();
    public Output<Map<String, String>> tagsAll();
}

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

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

        // Elastic IP
        public Builder allocationId(Output<String> allocationId);

        // Connectivity
        public Builder connectivityType(Output<String> connectivityType); // "private" or "public"

        // Private IPs
        public Builder privateIp(Output<String> privateIp);
        public Builder secondaryAllocationIds(Output<List<String>> secondaryAllocationIds);
        public Builder secondaryPrivateIpAddresses(Output<List<String>> secondaryPrivateIpAddresses);
        public Builder secondaryPrivateIpAddressCount(Output<Integer> secondaryPrivateIpAddressCount);

        // Tags
        public Builder tags(Output<Map<String, String>> tags);

        public NatGatewayArgs build();
    }
}

NetworkInterface Resource

Create and manage elastic network interfaces.

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

    // Exported Properties
    public Output<String> id();
    public Output<String> arn();
    public Output<String> subnetId();
    public Output<Optional<String>> description();
    public Output<Optional<List<String>>> securityGroups();
    public Output<Optional<String>> privateIp();
    public Output<List<String>> privateIps();
    public Output<Optional<Integer>> privateIpsCount();
    public Output<Optional<Boolean>> sourceDestCheck();
    public Output<Optional<String>> interfaceType();
    public Output<String> macAddress();
    public Output<String> ownerId();
    public Output<Optional<NetworkInterfaceAttachment>> attachment();
    public Output<Optional<Map<String, String>>> tags();
    public Output<Map<String, String>> tagsAll();
}

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

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

        // Configuration
        public Builder description(Output<String> description);
        public Builder privateIp(Output<String> privateIp);
        public Builder privateIps(Output<List<String>> privateIps);
        public Builder privateIpsCount(Output<Integer> privateIpsCount);
        public Builder securityGroups(Output<List<String>> securityGroups);
        public Builder sourceDestCheck(Output<Boolean> sourceDestCheck);

        // Interface Type
        public Builder interfaceType(Output<String> interfaceType);

        // IPv6
        public Builder ipv6Addresses(Output<List<String>> ipv6Addresses);
        public Builder ipv6AddressCount(Output<Integer> ipv6AddressCount);
        public Builder ipv6AddressList(Output<List<String>> ipv6AddressList);
        public Builder ipv6AddressListEnabled(Output<Boolean> ipv6AddressListEnabled);
        public Builder ipv4Prefixes(Output<List<String>> ipv4Prefixes);
        public Builder ipv4PrefixCount(Output<Integer> ipv4PrefixCount);
        public Builder ipv6Prefixes(Output<List<String>> ipv6Prefixes);
        public Builder ipv6PrefixCount(Output<Integer> ipv6PrefixCount);

        // Attachment
        public Builder attachment(Output<NetworkInterfaceAttachmentArgs> attachment);

        // Tags
        public Builder tags(Output<Map<String, String>> tags);

        public NetworkInterfaceArgs build();
    }
}

VPC Data Sources

Query existing VPC resources.

public final class Ec2Functions {
    // Get VPC
    public static Output<GetVpcResult> getVpc(GetVpcArgs args);
    public static CompletableFuture<GetVpcResult> getVpcPlain(GetVpcPlainArgs args);

    // Get Subnet
    public static Output<GetSubnetResult> getSubnet(GetSubnetArgs args);
    public static CompletableFuture<GetSubnetResult> getSubnetPlain(GetSubnetPlainArgs args);

    // Get Security Group
    public static Output<GetSecurityGroupResult> getSecurityGroup(GetSecurityGroupArgs args);
    public static CompletableFuture<GetSecurityGroupResult> getSecurityGroupPlain(GetSecurityGroupPlainArgs args);

    // Get Subnets (multiple)
    public static Output<GetSubnetsResult> getSubnets();
    public static Output<GetSubnetsResult> getSubnets(GetSubnetsArgs args);
    public static CompletableFuture<GetSubnetsResult> getSubnetsPlain(GetSubnetsPlainArgs args);
}

Usage Example

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

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

    public static void stack(Context ctx) {
        // Create VPC
        var vpc = new Vpc("myVpc", VpcArgs.builder()
            .cidrBlock("10.0.0.0/16")
            .enableDnsHostnames(true)
            .enableDnsSupport(true)
            .tags(Map.of("Name", "my-vpc"))
            .build());

        // Create public subnet
        var publicSubnet = new Subnet("publicSubnet", SubnetArgs.builder()
            .vpcId(vpc.id())
            .cidrBlock("10.0.1.0/24")
            .availabilityZone("us-west-2a")
            .mapPublicIpOnLaunch(true)
            .tags(Map.of("Name", "public-subnet"))
            .build());

        // Create private subnet
        var privateSubnet = new Subnet("privateSubnet", SubnetArgs.builder()
            .vpcId(vpc.id())
            .cidrBlock("10.0.2.0/24")
            .availabilityZone("us-west-2a")
            .tags(Map.of("Name", "private-subnet"))
            .build());

        // Create Internet Gateway
        var igw = new InternetGateway("igw", InternetGatewayArgs.builder()
            .vpcId(vpc.id())
            .tags(Map.of("Name", "main-igw"))
            .build());

        // Create Elastic IP for NAT Gateway
        var eip = new Eip("natEip", EipArgs.builder()
            .domain("vpc")
            .tags(Map.of("Name", "nat-eip"))
            .build());

        // Create NAT Gateway
        var natGw = new NatGateway("natGw", NatGatewayArgs.builder()
            .subnetId(publicSubnet.id())
            .allocationId(eip.id())
            .tags(Map.of("Name", "main-nat"))
            .build());

        // Create Security Group
        var sg = new SecurityGroup("webSg", SecurityGroupArgs.builder()
            .name("web-sg")
            .description("Allow HTTP and HTTPS")
            .vpcId(vpc.id())
            .tags(Map.of("Name", "web-security-group"))
            .build());

        ctx.export("vpcId", vpc.id());
        ctx.export("publicSubnetId", publicSubnet.id());
        ctx.export("privateSubnetId", privateSubnet.id());
    }
}