Network Interface Args
Provides an Elastic network interface (ENI) resource.
Example Usage
import * as pulumi from "@pulumi/pulumi";
import * as aws from "@pulumi/aws";
const test = new aws.ec2.NetworkInterface("test", {
subnetId: publicA.id,
privateIps: ["10.0.0.50"],
securityGroups: [web.id],
attachments: [{
instance: testAwsInstance.id,
deviceIndex: 1,
}],
});import pulumi
import pulumi_aws as aws
test = aws.ec2.NetworkInterface("test",
subnet_id=public_a["id"],
private_ips=["10.0.0.50"],
security_groups=[web["id"]],
attachments=[aws.ec2.NetworkInterfaceAttachmentArgs(
instance=test_aws_instance["id"],
device_index=1,
)])using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Aws = Pulumi.Aws;
return await Deployment.RunAsync(() =>
{
var test = new Aws.Ec2.NetworkInterface("test", new()
{
SubnetId = publicA.Id,
PrivateIps = new[]
{
"10.0.0.50",
},
SecurityGroups = new[]
{
web.Id,
},
Attachments = new[]
{
new Aws.Ec2.Inputs.NetworkInterfaceAttachmentArgs
{
Instance = testAwsInstance.Id,
DeviceIndex = 1,
},
},
});
});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 {
_, err := ec2.NewNetworkInterface(ctx, "test", &ec2.NetworkInterfaceArgs{
SubnetId: pulumi.Any(publicA.Id),
PrivateIps: pulumi.StringArray{
pulumi.String("10.0.0.50"),
},
SecurityGroups: pulumi.StringArray{
web.Id,
},
Attachments: ec2.NetworkInterfaceAttachmentTypeArray{
&ec2.NetworkInterfaceAttachmentTypeArgs{
Instance: pulumi.Any(testAwsInstance.Id),
DeviceIndex: pulumi.Int(1),
},
},
})
if err != nil {
return err
}
return nil
})
}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.inputs.NetworkInterfaceAttachmentArgs;
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 test = new NetworkInterface("test", NetworkInterfaceArgs.builder()
.subnetId(publicA.id())
.privateIps("10.0.0.50")
.securityGroups(web.id())
.attachments(NetworkInterfaceAttachmentArgs.builder()
.instance(testAwsInstance.id())
.deviceIndex(1)
.build())
.build());
}
}resources:
test:
type: aws:ec2:NetworkInterface
properties:
subnetId: ${publicA.id}
privateIps:
- 10.0.0.50
securityGroups:
- ${web.id}
attachments:
- instance: ${testAwsInstance.id}
deviceIndex: 1Example of Managing Multiple IPs on a Network Interface
By default, private IPs are managed through the private_ips and private_ips_count arguments which manage IPs as a set of IPs that are configured without regard to order. For a new network interface, the same primary IP address is consistently selected from a given set of addresses, regardless of the order provided. However, modifications of the set of addresses of an existing interface will not alter the current primary IP address unless it has been removed from the set. In order to manage the private IPs as a sequentially ordered list, configure private_ip_list_enabled to true and use private_ip_list to manage the IPs. This will disable the private_ips and private_ips_count settings, which must be removed from the config file but are still exported. Note that changing the first address of private_ip_list, which is the primary, always requires a new interface. If you are managing a specific set or list of IPs, instead of just using private_ips_count, this is a potential workflow for also leveraging private_ips_count to have AWS automatically assign additional IP addresses:
Comment out
private_ips,private_ip_list,private_ip_list_enabledin your configurationSet the desired
private_ips_count(count of the number of secondaries, the primary is not included)Apply to assign the extra IPs
Remove
private_ips_countand restore your settings from the first stepAdd the new IPs to your current settings
Apply again to update the stored state This process can also be used to remove IP addresses in addition to the option of manually removing them. Adding IP addresses in a manually is more difficult because it requires knowledge of which addresses are available.
Import
Using pulumi import, import Network Interfaces using the id. For example:
$ pulumi import aws:ec2/networkInterface:NetworkInterface test eni-e5aa89a3