Create and attach an Elastic Fabric Adapter to an Amazon EC2 instance - Amazon Elastic Compute Cloud

Create and attach an Elastic Fabric Adapter to an Amazon EC2 instance

You can create an EFA and attach it to an Amazon EC2 instance much like any other elastic network interface in Amazon EC2. However, unlike elastic network interfaces, EFAs can't be attached to or detached from an instance in a running state.

Considerations
  • You can change the security group that is associated with an EFA. To enable OS-bypass functionality, the EFA must be a member of a security group that allows all inbound and outbound traffic to and from the security group itself. For more information, see Step 1: Prepare an EFA-enabled security group.

    You change the security group that is associated with an EFA in the same way that you change the security group that is associated with an elastic network interface. For more information, see Changing the security group.

  • You assign an Elastic IP (IPv4) and IPv6 address to an EFA (EFA with ENA) network interface in the same way that you assign an IP address to an elastic network interface. For more information, see Managing IP addresses.

    You can't assign an IP address to an EFA-only network interface.

Create an EFA

You can create an EFA in a subnet in a VPC. You can't move the EFA to another subnet after it's created, and you can only attach it to stopped instances in the same Availability Zone.

Console
To create an EFA (EFA with ENA) network interface using the console
  1. Open the Amazon EC2 console at https://console.aws.amazon.com/ec2/.

  2. In the navigation pane, choose Network Interfaces.

  3. Choose Create Network Interface.

  4. For Description, enter a descriptive name for the EFA.

  5. For Subnet, select the subnet in which to create the EFA.

  6. For Private IP, enter the primary private IPv4 address. If you don't specify an IPv4 address, we select an available private IPv4 address from the selected subnet.

  7. (Optional) If you selected a subnet that has an associated IPv6 CIDR block, you can optionally specify an IPv6 address in the IPv6 IP field.

  8. For Security groups, select one or more security groups.

  9. For Elastic Fabric Adapter, select Enable.

  10. Choose Create network interface.

To create an EFA-only network interface using the console
  1. Open the Amazon EC2 console at https://console.aws.amazon.com/ec2/.

  2. In the navigation pane, choose Network Interfaces.

  3. Expand the Create Network Interface drop-down and choose Create EFA Only network interface.

  4. For Description, enter a descriptive name for the EFA.

  5. For Subnet, select the subnet in which to create the EFA.

  6. Choose Create network interface.

AWS CLI
To create a new EFA using the AWS CLI

Use the create-network-interface command. For interface-type, specify either efa for an EFA network interface, or efa-only for an EFA-only network interface.

aws ec2 create-network-interface \ --subnet-id subnet-01234567890 \ --description example_efa \ --interface-type efa|efa-only

Attach an EFA to a stopped instance

You can attach an EFA to any supported instance that is in the stopped state. You cannot attach an EFA to an instance that is in the running state. For more information about the supported instance types, see Supported instance types.

You attach an EFA to an instance in the same way that you attach a network interface to an instance. For more information, see Attach a network interface.

Attach an EFA when launching an instance

To attach an existing EFA when launching an instance (AWS CLI)

Use the run-instances command. For --network-interfaces, specify the EFA network interfaces to attach. For the primary network interface, specify an EFA network interface and NetworkCardIndex=0, DeviceIndex=0. If you are attaching multiple EFA network interfaces, see Maximize network bandwidth on Amazon EC2 instances with multiple network cards.

aws ec2 run-instances \ --image-id ami_id \ --count 1 \ --instance-type c5n.18xlarge \ --key-name my_key_pair \ --network-interfaces "NetworkCardIndex=0,DeviceIndex=0,NetworkInterfaceId=efa_1_id,Groups=sg_id,SubnetId=subnet_id" ...
To attach a new EFA when launching an instance (AWS CLI)

Use the run-instances command. For --network-interfaces, specify the EFA network interfaces to attach. For the primary network interface, use NetworkCardIndex=0, DeviceIndex=0, and InterfaceType=efa. If you are attaching multiple EFA network interfaces, see Maximize network bandwidth on Amazon EC2 instances with multiple network cards.

aws ec2 run-instances \ --image-id ami_id \ --count 1 \ --instance-type c5n.18xlarge \ --key-name my_key_pair \ --network-interfaces "NetworkCardIndex=0,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa" ...

Add an EFA to a launch template

You can create a launch template that contains the configuration information needed to launch EFA-enabled instances. You can specify both EFA and EFA-only network interfaces in the launch template. To create an EFA-enabled launch template, create a new launch template and specify a supported instance type, your EFA-enabled AMI, and an EFA-enabled security group. For NetworkInterfaces, specify the EFA network interfaces to attach. For the primary network interface, use NetworkCardIndex=0, DeviceIndex=0, and InterfaceType=efa. If you are attaching multiple EFA network interfaces, see Maximize network bandwidth on Amazon EC2 instances with multiple network cards.

You can leverage launch templates to launch EFA-enabled instances with other AWS services, such as AWS Batch or AWS ParallelCluster.

For more information about creating launch templates, see Create an Amazon EC2 launch template.