Eip
Provides an Elastic IP resource.
Note: EIP may require IGW to exist prior to association. Use
depends_on
to set an explicit dependency on the IGW. Note: Do not usenetwork_interface
to associate the EIP toaws.lb.LoadBalancer
oraws.ec2.NatGateway
resources. Instead use theallocation_id
available in those resources to allow AWS to manage the association, otherwise you will seeAuthFailure
errors.
Example Usage
Single EIP associated with an instance
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.aws.ec2.Eip;
import com.pulumi.aws.ec2.EipArgs;
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) {
var lb = new Eip("lb", EipArgs.builder()
.instance(aws_instance.web().id())
.domain("vpc")
.build());
}
}
Content copied to clipboard
Multiple EIPs associated with a single network interface
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.aws.ec2.NetworkInterface;
import com.pulumi.aws.ec2.NetworkInterfaceArgs;
import com.pulumi.aws.ec2.Eip;
import com.pulumi.aws.ec2.EipArgs;
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) {
var multi_ip = new NetworkInterface("multi-ip", NetworkInterfaceArgs.builder()
.subnetId(aws_subnet.main().id())
.privateIps(
"10.0.0.10",
"10.0.0.11")
.build());
var one = new Eip("one", EipArgs.builder()
.domain("vpc")
.networkInterface(multi_ip.id())
.associateWithPrivateIp("10.0.0.10")
.build());
var two = new Eip("two", EipArgs.builder()
.domain("vpc")
.networkInterface(multi_ip.id())
.associateWithPrivateIp("10.0.0.11")
.build());
}
}
Content copied to clipboard
Attaching an EIP to an Instance with a pre-assigned private ip (VPC Only)
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.aws.ec2.Vpc;
import com.pulumi.aws.ec2.VpcArgs;
import com.pulumi.aws.ec2.InternetGateway;
import com.pulumi.aws.ec2.InternetGatewayArgs;
import com.pulumi.aws.ec2.Subnet;
import com.pulumi.aws.ec2.SubnetArgs;
import com.pulumi.aws.ec2.Instance;
import com.pulumi.aws.ec2.InstanceArgs;
import com.pulumi.aws.ec2.Eip;
import com.pulumi.aws.ec2.EipArgs;
import com.pulumi.resources.CustomResourceOptions;
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) {
var default_ = new Vpc("default", VpcArgs.builder()
.cidrBlock("10.0.0.0/16")
.enableDnsHostnames(true)
.build());
var gw = new InternetGateway("gw", InternetGatewayArgs.builder()
.vpcId(default_.id())
.build());
var myTestSubnet = new Subnet("myTestSubnet", SubnetArgs.builder()
.vpcId(default_.id())
.cidrBlock("10.0.0.0/24")
.mapPublicIpOnLaunch(true)
.build(), CustomResourceOptions.builder()
.dependsOn(gw)
.build());
var foo = new Instance("foo", InstanceArgs.builder()
.ami("ami-5189a661")
.instanceType("t2.micro")
.privateIp("10.0.0.12")
.subnetId(myTestSubnet.id())
.build());
var bar = new Eip("bar", EipArgs.builder()
.domain("vpc")
.instance(foo.id())
.associateWithPrivateIp("10.0.0.12")
.build(), CustomResourceOptions.builder()
.dependsOn(gw)
.build());
}
}
Content copied to clipboard
Allocating EIP from the BYOIP pool
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.aws.ec2.Eip;
import com.pulumi.aws.ec2.EipArgs;
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) {
var byoip_ip = new Eip("byoip-ip", EipArgs.builder()
.domain("vpc")
.publicIpv4Pool("ipv4pool-ec2-012345")
.build());
}
}
Content copied to clipboard
Import
Using pulumi import
, import EIPs in a VPC using their Allocation ID. For example:
$ pulumi import aws:ec2/eip:Eip bar eipalloc-00a10e96
Content copied to clipboard
Properties
Link copied to clipboard
Link copied to clipboard
ID of a customer-owned address pool. For more on customer owned IP addressed check out Customer-owned IP addresses guide.
Link copied to clipboard
Link copied to clipboard