docs
reference
services
tessl install tessl/maven-com-pulumi--aws@7.16.0Pulumi 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.
Amazon VPC provides isolated network environments in AWS.
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;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();
}
}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();
}
}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();
}
}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();
}
}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();
}
}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();
}
}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();
}
}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);
}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());
}
}