

# Amazon EC2におけるネットワーク
<a name="ec2-networking"></a>

Amazon VPC を使用すると、Virtual Private Cloud (VPC) と呼ばれる AWS アカウント専用の仮想ネットワークに対して Amazon EC2 インスタンスなどの AWS リソースを起動できます。インスタンスを起動するときに、VPC からサブネットを選択できます。インスタンスには、論理的な仮想ネットワークカードであるプライマリネットワークインターフェイスが設定されています。インスタンスは、サブネットの IPv4 アドレスからプライマリプライベート IP アドレスを受け取ります。そのアドレスは、プライマリネットワークインターフェイスに割り当てられます。

インスタンスが Amazon のパブリック IP アドレスのプールからパブリック IP アドレスを受け取るかどうかをコントロールできます。インスタンスのパブリック IP アドレスは、インスタンスが停止または終了するまでに限り、インスタンスに関連付けられます。永続的なパブリック IP アドレスが必要な場合は、AWS アカウントに Elastic IP アドレスを割り当て、インスタンスまたはネットワークインターフェイスに関連付けることができます。Elastic IP アドレスは、ユーザーが AWS アカウントをリリースするまでアカウントに関連付けられたままであり、必要に応じてインスタンス間でそのアドレスを移動できます。独自の IP アドレスの範囲を AWS アカウントに持ち込み、アドレスプールとして表示して、そこから Elastic IP アドレスを割り当てることができます。

ネットワークのパフォーマンスを向上させ、レイテンシーを低減するために、プレイスメントグループ内でインスタンスを起動できます。拡張ネットワーキングを使用すると、1 秒あたりのパケット (PPS) のパフォーマンスが大幅に向上します。Elastic Fabric Adapter (EFA) を使用すると、ハイパフォーマンスコンピューティングおよび機械学習アプリケーションを高速化できます。EFA は、サポートされているインスタンスタイプにアタッチできるネットワークデバイスです。

**Topics**
+ [リージョンとゾーン](using-regions-availability-zones.md)
+ [インスタンスの IP アドレス指定](using-instance-addressing.md)
+ [EC2 インスタンスのホスト名とドメイン](ec2-instance-naming.md)
+ [自分の IP アドレスを使用する](ec2-byoip.md)
+ [Elastic IP アドレス](elastic-ip-addresses-eip.md)
+ [ネットワークインターフェイス](using-eni.md)
+ [ネットワーク帯域幅](ec2-instance-network-bandwidth.md)
+ [拡張ネットワーク](enhanced-networking.md)
+ [Elastic Fabric Adapter](efa.md)
+ [EC2 トポロジー](ec2-instance-topology.md)
+ [プレイスメントグループ](placement-groups.md)
+ [ネットワーク MTU](network_mtu.md)
+ [仮想プライベートクラウド](using-vpc.md)
+ [セカンダリネットワーク](secondary-networks.md)

# リージョンとゾーン
<a name="using-regions-availability-zones"></a>

Amazon EC2 は世界各地の場所でホスティングされています。これらの場所はAWS リージョン、アベイラビリティーゾーン、Local Zones、AWS Outposts、および Wavelength Zones で構成されます。
+ **リージョン**は別々の地理的エリアです。
+ **アベイラビリティーゾーン**は、各リージョン内の複数の独立した場所です。
+ **Local Zones** を使用すると、コンピューティングやストレージなどのリソースをエンドユーザーに近い複数の場所に配置できます。
+ **Wavelength Zone** を使用すると、5G デバイスやエンドユーザーに非常に低いレイテンシーを提供するアプリケーションを構築できます。Wavelength は標準の AWS コンピューティングおよびストレージサービスを通信事業者の 5G ネットワークのエッジにデプロイします。
+ **AWS Outposts** ではネイティブの AWS サービス、インフラストラクチャ、運用モデルを、ほぼすべてのデータセンター、コロケーションスペース、オンプレミスの施設で利用できます。

AWS は最新の高可用性のデータセンターを運用しています。しかし、非常にまれですが、同じ場所にあるインスタンスすべての可用性に影響する障害が発生することもあります。すべてのインスタンスを 1 か所でホストしている場合、そのような障害が起きると、すべてのインスタンスが利用できなくなります。

詳細については[AWS グローバルインフラストラクチャ](https://aws.amazon.com/about-aws/global-infrastructure/)を参照してください。

**Topics**
+ [リージョン](#concepts-regions)
+ [アベイラビリティーゾーン](#concepts-availability-zones)
+ [Local Zones](#concepts-local-zones)
+ [Wavelength Zone](#concepts-wavelength-zones)
+ [AWS Outposts](#concepts-outposts)

## リージョン
<a name="concepts-regions"></a>

各リージョンは他のリージョンと完全に分離されるように設計されています。これにより、最大限の耐障害性と安定性が達成されます。

インスタンスを起動するときは、インスタンスと特定のお客様の近くに配置したり、法的要件やその他の要件を満たしたりするリージョンを選択してください。複数のリージョンでインスタンスを起動できます。

リソースを表示すると、指定した リージョンに結び付けられているリソースのみが表示されます。これはリージョンが相互に分離されており、リージョン間ではリソースが自動的にレプリケートされないためです。

### 利用できるリージョン
<a name="concepts-available-regions"></a>

利用可能なリージョンのリストについては、「[AWSリージョン](https://docs.aws.amazon.com/global-infrastructure/latest/regions/aws-regions.html)」を参照してください。

### Amazon EC2 のリージョンエンドポイント
<a name="using-regions-endpoints"></a>

コマンドラインインターフェイスまたは API アクションを使用してインスタンスを操作するときはそのリージョンエンドポイントを指定する必要があります。Amazon EC2 のリージョンとエンドポイントの詳細については「Amazon EC2 デベロッパーガイド」の「[Amazon EC2 service endpoints](https://docs.aws.amazon.com/ec2/latest/devguide/ec2-endpoints.html)」を参照してください。

詳細については、「*AWS リージョン とアベイラビリティーゾーンのユーザーガイド*」の「[AWS リージョン](https://docs.aws.amazon.com/global-infrastructure/latest/regions/aws-regions.html)」を参照してください。

## アベイラビリティーゾーン
<a name="concepts-availability-zones"></a>

リージョンごとにアベイラビリティーゾーンと呼ばれる複数の独立した場所があります。アベイラビリティーゾーンのコードはリージョンコードとそれに続く文字識別子です。例えば、`us-east-1a`。

複数のアベイラビリティーゾーンで EC2 インスタンスを起動することにより、リージョン内の 1 つの場所で障害が発生しても、アプリケーションを保護することができます。

次の図はAWS リージョン内の複数のアベイラビリティーゾーンを示しています。アベイラビリティーゾーン A とアベイラビリティーゾーン B にはそれぞれ 1 つのサブネットがあり、各サブネットには EC2 インスタンスがあります。アベイラビリティーゾーン C にはサブネットがないため、このアベイラビリティーゾーンにインスタンスを起動することはできません。

![\[1 つのアベイラビリティーゾーンにインスタンスがあるリージョン。\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/region-with-azs.png)


詳細については、「[EC2 インスタンスの仮想プライベートクラウド](using-vpc.md)」を参照してください。

### リージョン別のアベイラビリティゾーン
<a name="available-availability-zones"></a>

リージョン別のアベイラビリティーゾーンのリストについては、「[AWS アベイラビリティーゾーン](https://docs.aws.amazon.com/global-infrastructure/latest/regions/aws-availability-zones.html)」を参照してください。

### アベイラビリティーゾーンのインスタンス
<a name="using-regions-availability-zones-launching"></a>

インスタンスを起動するときは、リージョンと Virtual Private Cloud (VPC) を選択します。次に、いずれかのアベイラビリティーゾーンからサブネットを選択するか、サブネットを自動的に選択されるようにできます。最初のインスタンスを起動するときは、システムの正常性と利用可能なキャパシティーに基づいて、アベイラビリティーゾーンを自動選択させることをお勧めします。追加のインスタンスを起動する場合、新しいインスタンスを既存のインスタンスに近づける必要がある場合、または既存のインスタンスから分離する必要がある場合にのみ、アベイラビリティーゾーンを指定します。

インスタンスを複数のアベイラビリティーゾーンに分散し、インスタンスに障害が発生した場合は、代わりに別のアベイラビリティーゾーンのインスタンスがリクエストを処理するようにアプリケーションを設計できます。

詳細については、「*AWS リージョン とアベイラビリティーゾーンのユーザーガイド*」の「[AWS アベイラビリティーゾーン](https://docs.aws.amazon.com/global-infrastructure/latest/regions/aws-availability-zones.html)」を参照してください。

## Local Zones
<a name="concepts-local-zones"></a>

ローカルゾーンは地理的にユーザーに近い場所に位置する AWS リージョンを拡張したものです。Local Zones はインターネットへの独自の接続を持ち、Direct Connect をサポートしているため、Local Zonesで作成されたリソースは低レイテンシーの通信でローカルユーザーにサービスを提供できます。詳細についてはAWS ローカルゾーンユーザーガイドの「[AWS ローカルゾーンとは](https://docs.aws.amazon.com/local-zones/latest/ug/what-is-aws-local-zones.html)」を参照してください。

ローカルゾーンのコードはそのリージョンコードの後に、物理的な場所を示す識別子が続きます。例えば、ロサンゼルスの `us-west-2-lax-1` です。

次の図はAWS リージョン `us-west-2`、そのアベイラビリティーゾーンのうちの 2 つ、およびそのローカルゾーンのうちの 2 つを示しています。VPC はアベイラビリティーゾーンといずれかのローカルゾーンにまたがっています。VPC 内の各ゾーンには 1 つのサブネットがあり、各サブネットにはインスタンスがあります。

![\[アベイラビリティーゾーンとローカルゾーンを使用する VPC。\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/region-with-lzs.png)


### 利用可能な Local Zones
<a name="available-local-zones"></a>

利用可能なローカルゾーンのリストについては「AWS ローカルゾーンユーザーガイド」の「[Available Local Zones](https://docs.aws.amazon.com/local-zones/latest/ug/available-local-zones.html)」を参照してください。発表されたローカルゾーンのリストについては「[AWS Local Zones ロケーション](https://aws.amazon.com/about-aws/global-infrastructure/localzones/locations/)」を参照してください。

### ローカルゾーンのインスタンス
<a name="local-zones-launching"></a>

ローカルゾーンを使用するには最初にそれを有効にする必要があります。次に、ローカルゾーン内にサブネットを作成します。インスタンスの起動時にローカルゾーンのサブネットを指定できます。これにより、インスタンスはローカルゾーンのサブネットに配置されます。

ローカルゾーンでインスタンスを起動する際にはネットワーク境界グループからの IP アドレスの割り当ても行います。ネットワークボーダーグループはAWS が IP アドレスをアドバタイズするアベイラビリティーゾーン、Local Zones、または Wavelength Zones の一意のセットです (例: `us-west-2-lax-1a`)。ネットワークボーダーグループから次の IP アドレスを割り当てることができます。
+ Amazon が提供する Elastic IPv4 アドレス
+ Amazon が提供する IPv6 VPC アドレス (ロサンゼルスゾーンのみで利用可能)

Local Zones でインスタンスを起動する方法の詳細については「AWS Local Zones ユーザーガイド」の「[AWS Local Zones 入門](https://docs.aws.amazon.com/local-zones/latest/ug/getting-started.html)」を参照してください。

## Wavelength Zone
<a name="concepts-wavelength-zones"></a>

AWS Wavelength を使用することで、デベロッパーはモバイルデバイスおよびエンドユーザー向けに、非常にレイテンシーが低いアプリケーションを構築できます。Wavelength は標準の AWS コンピューティングおよびストレージサービスを通信事業者の 5G ネットワークのエッジにデプロイします。デベロッパーはVirtual Private Cloud (VPC) を 1 つ以上の Wavelength Zones に拡張し、Amazon EC2 インスタンスなどの AWS リソースを使用して、超低レイテンシーやリージョンの AWS サービスへの接続を必要とするアプリケーションを実行できます。

Wavelength Zone はWavelength インフラストラクチャをデプロイする先のキャリアロケーション内の独立したゾーンです。Wavelength Zone はリージョンに関連付けられています。Wavelength Zone はリージョンの論理的な拡張であり、リージョンの制御プレーンによって管理されます。

Wavelength Zone のコードはそのリージョンコードの後に、物理的な場所を示す識別子が続きます。例えば、ボストンの `us-east-1-wl1-bos-wlz-1` です。

次の図はAWS リージョン `us-west-2`、そのアベイラビリティーゾーンのうちの 2 つ、および Wavelength Zone を示しています。VPC はアベイラビリティーゾーンと Wavelength Zone にまたがっています。VPC 内の各ゾーンには 1 つのサブネットがあり、各サブネットにはインスタンスがあります。

![\[アベイラビリティーゾーンと Wavelength Zone を使用する VPC。\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/region-with-wavelength-zones.png)


Wavelength Zoneはすべてのリージョンで利用できるわけではありません。Wavelength Zone をサポートするリージョンについては*AWS Wavelength デベロッパーガイド*の[利用可能な Wavelength Zone](https://docs.aws.amazon.com/wavelength/latest/developerguide/wavelength-quotas.html#concepts-available-zones) をご参照ください。

### 利用可能な Wavelength Zone
<a name="available-wavelength-zones"></a>

利用可能な Wavelength Zone のリストについては「AWS Wavelength ガイド」の「[Available Wavelength Zones](https://docs.aws.amazon.com/wavelength/latest/developerguide/available-wavelength-zones.html)」を参照してください。

### Wavelength Zone のインスタンス
<a name="wavelength-zones-launching"></a>

Wavelength Zone を使用するにはまずゾーンにオプトインする必要があります。次に、Wavelength Zone にサブネットを作成します。インスタンスの起動時に Wavelength のサブネットを指定できます。また、ネットワークボーダーグループからキャリア IP アドレスを割り当てます。これはAWS が IP アドレスをアドバタイズするアベイラビリティーゾーン、Local Zones、または Wavelength Zones の一意のセットです (例: `us-east-1-wl1-bos-wlz-1` など)。

Wavelength Zone でインスタンスを起動する際のステップバイステップの指示については「AWS Wavelength デベロッパーガイド」の「[Get started with AWS Wavelength](https://docs.aws.amazon.com/wavelength/latest/developerguide/get-started-wavelength.html)」を参照してください。

## AWS Outposts
<a name="concepts-outposts"></a>

AWS Outposts はAWS のインフラストラクチャ、サービス、API、ツールをお客様のオンプレミスまで拡張するフルマネージドサービスです。AWS は、AWS Outposts 管理されたインフラストラクチャへのローカルアクセスを提供することで、AWS リージョンと同じプログラミングインターフェイスを使用してオンプレミスでアプリケーションを構築して実行できるようにします。同時に、コンピューティングとストレージのローカルリソースを使用して、レイテンシーを短縮し、ローカルのデータ処理ニーズに対応します。

Outpost とはお客様のサイトにデプロイされる AWS のコンピューティングおよびストレージキャパシティーのプールです。AWS はAWS リージョンの一部としてこのキャパシティーを運営、監視、管理します。Outpost にサブネットを作成し、AWS リソースを作成したときにこれらのサブネットを指定します。Outpost サブネット内のインスタンスはプライベート IP アドレスを使用して、AWS リージョン内の他のインスタンスと通信します。これらはすべて同じ VPC 内にあります。

次の図はAWS リージョン `us-west-2`、そのアベイラビリティーゾーンのうちの 2 つ、および Outpost を示しています。VPC はアベイラビリティーゾーンと Outpost にまたがっています。Outpost はオンプレミスの顧客データセンターにあります。VPC 内の各ゾーンには 1 つのサブネットがあり、各サブネットにはインスタンスがあります。

![\[アベイラビリティーゾーンと Outpost を持つ VPC。\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/region-with-outpost.png)


### Outpost のインスタンス
<a name="outposts-instances"></a>

AWS Outposts の使用を開始するにはOutpost を作成し、Outpost 容量を注文する必要があります。AWS Outposts にはOutposts ラックと Outposts サーバーの 2 つのフォームファクタがあります。Outposts の設定の詳細については「[AWS Outposts ファミリー](https://aws.amazon.com/outposts/)」を参照してください。Outpost 機器をインストールすると、Outpost で EC2 インスタンスを起動するときに、コンピューティング容量とストレージ容量を使用できます。

EC2 インスタンスを起動するには、Outpost サブネットを作成する必要があります。セキュリティグループはアベイラビリティーゾーンサブネットのインスタンスと同様に、Outpost サブネットのインスタンスのインバウンドトラフィックとアウトバウンドトラフィックを制御します。SSH を使用して Outpost サブネットのインスタンスに接続するには、アベイラビリティーゾーンのサブネット内のインスタンスの場合と同様に、インスタンスの起動時にキー ペアを指定します。

詳細については「[Get started with Outposts racks](https://docs.aws.amazon.com/outposts/latest/userguide/get-started-outposts.html)」または「[Get started with Outposts servers](https://docs.aws.amazon.com/outposts/latest/server-userguide/get-started-outposts.html)」を参照してください。

### Outposts ラックのボリューム
<a name="outposts-rack-volumes"></a>

Outposts コンピューティング容量が Outpost ラックにある場合、作成した Outpost サブネットに EBS ボリュームを作成できます。ボリュームの作成時に、Outpost の Amazon リソースネーム (ARN) を指定します。

次の [create-volume](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-volume.html) コマンドは指定した Outpost に空の 50 GB ボリュームを作成します。

```
aws ec2 create-volume --availability-zone us-east-2a --outpost-arn arn:aws:outposts:us-east-2:123456789012:outpost/op-03e6fecad652a6138 --size 50
```

Amazon EBS gp2 ボリュームのサイズはボリュームをデタッチする必要なく動的に変更することができます。ボリュームをデタッチせずに変更する方法の詳細については「Amazon EBS ユーザーガイド」の「[Request modifications to your EBS volumes](https://docs.aws.amazon.com/ebs/latest/userguide/requesting-ebs-volume-modifications.html)」を参照してください。

Outpost ラック上のインスタンスのルートボリュームを 30 GiB 以下に制限することをお勧めします。AMI またはインスタンスのブロックデバイスマッピングでデータボリュームを指定し、追加のストレージを提供できます。ブートボリュームから未使用のブロックを削除するにはAWS パートナーネットワークブログの「[How to Build Sparse EBS Volumes](https://aws.amazon.com/blogs/apn/how-to-build-sparse-ebs-volumes-for-fun-and-easy-snapshotting/)」を参照してください。

ルートボリュームの NVMe タイムアウトを増やすことをお勧めします。詳細については「Amazon EBS ユーザーガイド」の「[I/O オペレーションタイムアウト](https://docs.aws.amazon.com/ebs/latest/userguide/nvme-ebs-volumes.html#timeout-nvme-ebs-volumes)」を参照してください。

### Outposts サーバー上のボリューム
<a name="outposts-server-volumes"></a>

Outposts サーバー上のインスタンスはインスタンスストアボリュームを提供しますが、EBS ボリュームはサポートしません。単一の EBS スナップショットのみを持つ Amazon EBS-backed AMI を選択してください。アプリケーションの要件を満たすのに十分なインスタンスストレージを備えたインスタンスサイズを選択してください。詳細については「[インスタンスストアボリュームの制限](instance-store-volumes.md)」を参照してください。

# Amazon EC2 インスタンスの IP アドレス指定
<a name="using-instance-addressing"></a>

Amazon EC2 と Amazon VPC はIPv4 と IPv6 の両方のアドレス設定プロトコルをサポートします。デフォルトではAmazon VPC は IPv4 アドレス設定プロトコルを使用します。この動作を無効にすることはできません。VPC の作成時には IPv4 CIDR ブロック (プライベート IPv4 アドレスの範囲) を指定する必要があります。必要に応じて、IPv6 CIDR ブロックを VPC に割り当て、そのブロックからサブネットのインスタンスに IPv6 アドレスを割り当てることができます。

EC2 インスタンスを起動するときに、VPC とサブネットを指定できます。インスタンスは、サブネットの CIDR 範囲からプライベート IPv4 アドレスを受け取ります。必要に応じて、インスタンスにパブリック IPv4 アドレスと IPv6 アドレスを設定できます。異なる VPC の EC2 インスタンスがパブリック IP アドレスを使用して通信する場合、トラフィックは AWS プライベートグローバルネットワークにとどまり、パブリックインターネットを通過しません。

**Topics**
+ [プライベート IPv4 アドレス](#concepts-private-addresses)
+ [パブリック IPv4 アドレス](#concepts-public-addresses)
+ [パブリック IPv4 アドレスの最適化](#concepts-public-ip-address-opt)
+ [IPv6 アドレス](#ipv6-addressing)
+ [複数の IP アドレス](#multiple-ip-addresses)
+ [EC2 インスタンスのホスト名](#amazon-dns)
+ [リンクローカルアドレス](#link-local-addresses)
+ [EC2 インスタンスの IPv4 アドレスを管理する](working-with-ip-addresses.md)
+ [EC2 インスタンスの IPv6 アドレスを管理する](working-with-ipv6-addresses.md)
+ [EC2 インスタンスのセカンダリ IP アドレス](instance-secondary-ip-addresses.md)
+ [Windows インスタンスのセカンダリプライベート IPv4 アドレスを設定する](config-windows-multiple-ip.md)

## プライベート IPv4 アドレス
<a name="concepts-private-addresses"></a>

プライベート IPv4 アドレスはインターネットから到達できない IP アドレスです。プライベート IPv4 アドレスは同じ VPC 内のインスタンス間の通信に使用できます。プライベート IPv4 アドレスの標準および仕様については[RFC 1918](http://www.faqs.org/rfcs/rfc1918.html) を参照してください。DHCP を使用してインスタンスにプライベート IPv4 アドレスが割り当てられます。

**注記**  
RFC 1918 に指定されているプライベート IPv4 アドレスの範囲に含まれない、パブリックにルーティングできる CIDR ブロックを持つ VPC を作成できます。ただし、このドキュメントでプライベート IPv4 アドレス (またはプライベート IP アドレス) と言う場合はVPC の IPv4 CIDR 範囲に含まれる IP アドレスを指します。

VPC サブネットは次のいずれかのタイプです。
+ IPv4 専用サブネット - これらのサブネットにはIPv4 アドレスが割り当てられたリソースのみを作成できます。
+ IPv6 専用サブネット - これらのサブネットにはIPv6 アドレスが割り当てられたリソースのみを作成できます。
+ IPv4 および IPv6 サブネット - これらのサブネットにはIPv4 または IPv6 アドレスのいずれかが割り当てられたリソースを作成できます。

EC2 インスタンスをIPv4 専用サブネットまたはデュアルスタック (IPv4 および IPv6) サブネットで起動すると、インスタンスはサブネットの IPv4 アドレス範囲からプライマリプライベート IP アドレスを受け取ります。詳細については[Amazon VPC User Guide] (Amazon VPC ユーザーガイド) の[[IP addressing]](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-ip-addressing.html) (IP アドレス指定) を参照してください。プライマリプライベート IP アドレスを指定しないでインスタンスを起動すると、サブネットの IPv4 範囲内で使用可能な IP アドレスが自動的に選択されます。各インスタンスにはプライマリプライベート IPv4 アドレスが割り当てられたデフォルトのネットワークインターフェイス (eth0) があります。追加のプライベート IPv4 アドレス (*セカンダリプライベート IPv4 アドレス*) も指定できます。プライマリプライベート IP アドレスとは異なり、セカンダリプライベート IP アドレスは別のインスタンスに割り当て直すことができます。詳細については、「[複数の IP アドレス](#multiple-ip-addresses)」を参照してください。

プライベート IPv4 アドレスはプライマリアドレスまたはセカンダリアドレスを問わず、インスタンスが停止して起動、または休止して起動した際に、ネットワークインターフェイスに関連付けられたままになり、インスタンスを終了するとリリースされます。

## パブリック IPv4 アドレス
<a name="concepts-public-addresses"></a>

パブリック IP アドレスはインターネットから到達可能な IPv4 アドレスです。インスタンスとインターネット間で通信するにはパブリック アドレスを使用できます。

デフォルトの VPC でインスタンスを起動すると、デフォルトでパブリック IP アドレスが割り当てられます。デフォルト以外の VPC でインスタンスを起動するとき、サブネットにはそのサブネットで起動するインスタンスがパブリック IPv4 アドレスプールからパブリック IP アドレスを受け取るかどうかを決定する属性があります。デフォルトではデフォルト以外のサブネットで起動されたインスタンスにパブリック IP アドレスを割り当てません。

インスタンスがパブリック IP アドレスを割り当てられるかどうかを制御するには以下の方法を使用します。
+ **サブネットのパブリック IP アドレス指定属性を変更します。**詳細については「*Amazon VPC ユーザーガイド*」の「[サブネットのパブリック IPv4 アドレス指定属性の変更](https://docs.aws.amazon.com/vpc/latest/userguide/subnet-public-ip.html)」を参照してください。
+ **起動時にパブリック IP アドレス指定機能を有効または無効にします。**これにより、サブネットのパブリック IP アドレス指定属性が上書きされます。詳細については、「[起動時にパブリック IPv4 アドレスを割り当てる](working-with-ip-addresses.md#public-ip-addresses)」を参照してください。
+ **起動後にインスタンスからパブリック IP アドレスの割り当てを解除します。**詳細については、「[ネットワークインターフェイスの IP アドレスを管理する](managing-network-interface-ip-addresses.md)」を参照してください。

パブリック IP アドレスはAmazon のパブリック IPv4 アドレスプールからインスタンスに割り当てられ、お客様の AWS アカウントには関連付けられません。パブリック IP アドレスをインスタンスから割り当て解除すると、そのパブリック IPv4 アドレスはパブリック IP アドレスプールに戻され、再利用することはできません。

次の場合、パブリック IP アドレスをインスタンスか解放し、新しい IP アドレスを割り当てます。
+ インスタンスが停止、休止状態、または終了すると、インスタンスのパブリック IP アドレスが開放されます。停止または休止状態のインスタンスは起動時に、新しいパブリック IP アドレスが割り当てられます。
+ Elastic IP アドレスをインスタンスに関連付けると、パブリック IP アドレスが解放されます。インスタンスから Elastic IP アドレスの関連付けを解除すると、そのインスタンスには新しいパブリック IP アドレスが割り当てられます。
+ インスタンスのパブリック IP アドレスを開放し、セカンダリネットワークインターフェイスがある場合、新しいパブリック IP アドレスは割り当てられません。
+ インスタンスのパブリック IP アドレスが開放され、且つそのインスタンスに Elastic IP アドレスに関連付けられたセカンダリプライベート IP アドレスがある場合、新しいパブリック IP アドレスは割り当てられません。

必要に応じて、インスタンスに関連付けおよびインスタンスから関連付けできる永続的なパブリック IP アドレスが必要な場合はElastic IP アドレスを使用します。

動的 DNS を使用して既存の DNS 名を新しいインスタンスのパブリック IP アドレスにマッピングした場合、その IP アドレスがインターネット内に伝達されるまでに最大 24 時間かかることがあります。その結果、新しいインスタンスはトラフィックを受信せず、終了したインスタンスがリクエストの受信を継続することがあります。この問題を解決するにはElastic IP アドレスを使用します。独自の Elastic IP アドレスを割り当てて、それをインスタンスに関連付けることができます。詳細については「[Elastic IP アドレス](elastic-ip-addresses-eip.md)」を参照してください。

Amazon VPC IP Address Manager (IPAM) を使用している場合はAWS からパブリック IPv4 アドレスの連続したブロックを取得し、それを使用して Elastic IP アドレスを AWS リソースに割り当てることができます。連続した IPv4 アドレスブロックを使用すると、セキュリティアクセスコントロールリストの管理オーバーヘッドを大幅に削減し、AWS でスケーリングするエンタープライズの IP アドレスの割り当てと追跡を簡素化できます。詳細については「Amazon VPC IPAM ユーザーガイド」の「[Allocate sequential Elastic IP addresses from an IPAM pool](https://docs.aws.amazon.com/vpc/latest/ipam/tutorials-eip-pool.html)」を参照してください。

**考慮事項**
+ AWS は、実行中のインスタンスに関連付けられているパブリック IPv4 アドレスや Elastic IP アドレスを含めたすべてのパブリック IPv4 アドレスの料金を請求します。詳細については「[Amazon VPC の料金](https://aws.amazon.com/vpc/pricing/)」ページの「**パブリック IPv4 アドレス**」タブを参照してください。
+ インスタンスがパブリック NAT IP アドレスを使用して他のインスタンスにアクセスする場合、アクセス先のインスタンスが同じリージョンにあるかどうかによって、リージョンデータ転送またはインターネットデータ転送に対して課金されます。

## パブリック IPv4 アドレスの最適化
<a name="concepts-public-ip-address-opt"></a>

AWS では実行中のインスタンスに関連付けられているパブリック IPv4 アドレスと Elastic IP アドレスを含む、すべてのパブリック IPv4 アドレスに対して料金が課されます。詳細については「[Amazon VPC の料金](https://aws.amazon.com/vpc/pricing/)」ページの「**パブリック IPv4 アドレス**」タブを参照してください。

次のリストには使用するパブリック IPv4 アドレスの数を最適化するために実行できるアクションが含まれています。
+ [Elastic Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/load-balancer-getting-started.html) を使用して EC2 インスタンスへのトラフィックを分散させ、[インスタンス に割り当てられたプライマリ ENI で**パブリック IP の自動割り当て**を無効にします](managing-network-interface-ip-addresses.md)。ロードバランサーは 1 つのパブリック IPv4 アドレスを使用するため、パブリック IPv4 アドレスの数を削減できます。パブリック IPv4 アドレスの数をさらに削減すために、既存のロードバランサーを統合することもできます。
+ NAT ゲートウェイを使用する唯一の理由が、メンテナンスまたは緊急のためにプライベートサブネットの EC2 インスタンスに SSH 接続することである場合は代わりに [EC2 Instance Connect Endpoint](connect-using-eice.md) を使用することを検討してください。EC2 Instance Connect Endpoint を使用すると、パブリック IPv4 アドレスを使わないでインスタンスに接続できます。
+ EC2 インスタンスがパブリックサブネットにあり、パブリック IP アドレスが割り当てられている場合はインスタンスをプライベートサブネットに移動し、パブリック IP アドレスを削除して、EC2 インスタンスとの間のアクセスを許可するために[パブリック NAT ゲートウェイ](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html)を使用することを検討してください。NAT ゲートウェイを使用する場合は費用に注意する必要があります。この計算方法を使用して、NAT ゲートウェイを使用する場合の費用対効果を判断します。この計算に必要な `Number of public IPv4 addresses` は[AWS請求コストと使用状況レポート を作成](https://aws.amazon.com/blogs/networking-and-content-delivery/identify-and-optimize-public-ipv4-address-usage-on-aws/)することで取得できます。

  ```
  NAT gateway per hour + NAT gateway public IPs + NAT gateway transfer / Existing public IP cost
  ```

  コードの説明は以下のとおりです。
  + `NAT gateway per hour = $0.045 * 730 hours in a month * Number of Availability Zones the NAT gateways are in`
  + `NAT gateway public IPs = $0.005 * 730 hours in a month * Number of IPs associated with your NAT gateways`
  + `NAT gateway transfer = $0.045 * Number of GBs that will go through the NAT gateway in a month`
  + `Existing public IP cost = $0.005 * 730 hours in a month * Number of public IPv4 addresses`

  合計が 1 未満の場合、NAT ゲートウェイの方がパブリック IPv4 アドレスよりも安価に済みます。
+ [AWS PrivateLink](https://docs.aws.amazon.com/vpc/latest/userguide/endpoint-services-overview.html) を使用して、パブリック IPv4 アドレスやインターネットゲートウェイを使用するのではなく、AWS サービスまたは他の AWS アカウントによってホストされているサービスにプライベートに接続します。
+ Amazon が所有するパブリック IPv4 アドレスを使用するのではなく、[独自の IP アドレス範囲 (BYOIP) を AWS 環境に持ち込み](ec2-byoip.md)、その範囲をパブリック IPv4 アドレスに使用します。
+ [サブネット内に起動されたインスタンスに対するパブリック IPv4 アドレスの自動割り当て](https://docs.aws.amazon.com/vpc/latest/userguide/subnet-public-ip.html)を無効ににします。このオプションは通常、サブネットの作成時に VPC に対してデフォルトで無効になっていますが、既存のサブネットをチェックして無効になっていることを確認する必要があります。
+ パブリック IPv4 アドレスを必要としない EC2 インスタンスがある場合は[インスタンスにアタッチされたネットワークインターフェイスで**パブリック IP の自動割り当て**が無効になっていることを確認してください](managing-network-interface-ip-addresses.md)。
+ [プライベートサブネットの EC2 インスタンス用に AWS Global Accelerator](https://docs.aws.amazon.com/global-accelerator/latest/dg/about-endpoints.html) でアクセラレータエンドポイントを設定して、パブリック IP アドレスを使用せずにインターネットトラフィックが VPCs内のエンドポイントに直接流れるようにします。また、[独自のアドレスを AWS Global Accelerator に持ち込んで](https://docs.aws.amazon.com/global-accelerator/latest/dg/using-byoip.html)、アクセラレーターの静的 IP アドレスに独自の IPv4 アドレスを使用することもできます。

## IPv6 アドレス
<a name="ipv6-addressing"></a>

IPv6 アドレスはグローバルに一意であり、プライベートのまま、またはインターネット経由で到達可能になるように設定できます。AWS ではパブリック IPv6 とプライベート IPv6 のどちらのアドレス指定も利用可能です。
+ **プライベート IPv6**: AWS ではAWS からインターネット上でアドバタイズされておらず、アドバタイズできない IPv6 アドレスをプライベート IPv6 アドレスと見なします。
+ **パブリック IPv6**: AWS ではAWS からインターネットでアドバタイズされている IPv6 アドレスをパブリック IPv6 アドレスと見なします。

パブリックおよびプライベート IPv6 アドレスの詳細については「Amazon VPC ユーザーガイド」の「[IPv6 アドレス](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-ip-addressing.html#vpc-ipv6-addresses)」を参照してください。

C1, M1, M2, M3 を除くすべてのインスタンスタイプが IPv6 アドレスをサポートします。 T1

IPv6 CIDR ブロックが VPC およびサブネットと関連付けられており、以下のいずれかに該当する場合、EC2 インスタンスには IPv6 アドレスが割り当てられます。
+ 起動時にサブネットからインスタンスに IPv6 アドレスが自動的に割り当てられるように設定されている。詳細については「[サブネットの IP アドレス指定属性を変更する](https://docs.aws.amazon.com/vpc/latest/userguide/subnet-public-ip.html)」を参照してください。
+ 起動時に IPv6 アドレスをインスタンスに割り当てる。
+ 起動後に IPv6 アドレスをインスタンスのプライマリネットワークインターフェイスに割り当てる。
+ 起動後に IPv6 アドレスを同じサブネットのネットワークインターフェイスに割り当て、そのネットワークインターフェイスをインスタンスにアタッチします。

起動時にインスタンスに IPv6 アドレスが割り当てられると、そのアドレスはインスタンスのプライマリネットワークインターフェイス (eth0) と関連付けられます。インスタンスのプライマリネットワークインターフェイス (eth0) の IPv6 アドレスは次の方法で管理できます。
+ ネットワークインターフェイスへ IPv6 アドレスを割り当て/割り当て解除します。ネットワークインターフェイスに割り当てることができる IPv6 アドレスの数と、インスタンスにアタッチできるネットワークインターフェイスの数はインスタンスタイプごとに異なります。詳細については「[ネットワークインターフェイスあたりの IP アドレスの最大数](AvailableIpPerENI.md)」を参照してください。
+ プライマリ IPv6 アドレスを有効にします。プライマリ IPv6 アドレスにより、インスタンスまたは ENI へのトラフィックの中断を回避できます。詳細については「[EC2 インスタンス用のネットワークインターフェイスを作成する](create-network-interface.md)」または「[ネットワークインターフェイスの IP アドレスを管理する](managing-network-interface-ip-addresses.md)」を参照してください。

IPv6 アドレスはインスタンスの停止して起動、または休止して起動する際には保持され、インスタンスの終了時にリリースされます。IPv6 アドレスは別のネットワークインターフェイスに割り当てられている間は再割り当てできません。最初に割り当てを解除する必要があります。

インスタンスのサブネットのルーティングを制御するか、セキュリティグループとネットワーク ACL ルールを使用することで、IPv6 アドレスを介してインスタンスに接続できるかどうかを制御できます。詳細については「*Amazon VPC User Guide*」の[インターネットワークトラフィックのプライバシー](https://docs.aws.amazon.com/IAM/latest/UserGuide/access.html)を参照してください。

予約済み IPv6 アドレスの範囲については「[IANA IPv6 Special-Purpose Address Registry](http://www.iana.org/assignments/iana-ipv6-special-registry/iana-ipv6-special-registry.xhtml)」と「[RFC4291](https://tools.ietf.org/html/rfc4291)」を参照してください。

## 複数の IP アドレス
<a name="multiple-ip-addresses"></a>

インスタンスに複数のプライベート IPv4 および IPv6 アドレスを指定できます。インスタンスに指定できるネットワークインターフェイスとプライベート IPv4 および IPv6 アドレスの数はインスタンスタイプによって異なります。詳細については、「[ネットワークインターフェイスあたりの IP アドレスの最大数](AvailableIpPerENI.md)」を参照してください。

**ユースケース**
+ 1 つのサーバーで複数の SSL 証明書を使用し、各インターフェイスに各 IP アドレスに割り当てることで、1 つのサーバーで複数のウェブサイトをホストします。
+ 各ネットワークインターフェイス用に複数の IP アドレスを持つネットワークアプライアンス (ファイアウォールやロードバランサーなど) を運用します。
+ インスタンスでエラーが発生した場合に、セカンダリ IP アドレスをスタンバイインスタンスに再割り当てすることによって、内部トラフィックをスタンバイインスタンスにリダイレクトします。

**複数の IP アドレスを使用する方法**
+ セカンダリプライベート IPv4 アドレスをネットワークインターフェイスに割り当てることができます。
+ IPv6 CIDR ブロックが関連付けられているサブネット内のネットワークインターフェイスに複数の IPv6 アドレスを割り当てることができます。
+ ネットワークインターフェイスのサブネットの IPv4 CIDR ブロック範囲からセカンダリ IPv4 アドレスを選択する必要があります。
+ ネットワークインターフェイスのサブネットの IPv6 CIDR ブロック範囲から IPv6 アドレスを選択する必要があります。
+ セキュリティグループを関連付けるのは個々の IP アドレスではなく、ネットワークインターフェイスです。そのため、ネットワークインターフェイスで指定した各 IP アドレスはそのネットワークインターフェイスのセキュリティグループの対象です。
+ 複数の IP アドレスは実行中または停止したインスタンスにアタッチされたネットワークインターフェイスに割り当てたり、割り当て解除したりできます。
+ ネットワークインターフェイスに割り当てられているセカンダリプライベート IPv4 アドレスは明示的に許可された場合、別のネットワークインターフェイスに割り当て直すことができます。
+ IPv6 アドレスは最初に既存のネットワークインターフェイスから割り当て解除しない限り、別のネットワークインターフェイスに再割り当てすることはできません。
+ コマンドラインツールまたは API を使用して複数の IP アドレスをネットワークインターフェイスに割り当てるときに、いずれかの IP アドレスを割り当てることができない場合、オペレーション全体が失敗します。
+ プライマリプライベート IPv4 アドレス、セカンダリプライベート IPv4 アドレス、Elastic IP アドレス、および IPv6 アドレスはセカンダリネットワークインターフェイスをインスタンスからデタッチしたり、インスタンスにアタッチしても、セカンダリネットワークインターフェイスへの割り当ては維持します。
+ プライマリネットワークインターフェイスをインスタンスからデタッチすることはできませんが、プライマリネットワークインターフェイスのセカンダリプライベート IPv4 アドレスを別のネットワークインターフェイスに再割り当てすることはできます。

詳細については、「[EC2 インスタンスのセカンダリ IP アドレス](instance-secondary-ip-addresses.md)」を参照してください。

## EC2 インスタンスのホスト名
<a name="amazon-dns"></a>

EC2 インスタンスを作成すると、AWS はそのインスタンスのホスト名を作成します。ホスト名のタイプと、AWS によるプロビジョニング方法についての詳細[EC2 インスタンスのホスト名とドメイン](ec2-instance-naming.md)を参照してください。Amazon は、Amazon が提供するホスト名を IPv4 および IPv6 アドレスに解決する DNS サーバーを提供します。Amazon DNS サーバーは VPC ネットワークの範囲に 2 をプラスしたアドレスにあります。詳細については、*Amazon VPC ユーザーガイド*の「[DNS attributes for your VPC](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns.html)」(VPC の DNS 属性) を参照してください。

## リンクローカルアドレス
<a name="link-local-addresses"></a>

リンクローカルアドレスはよく知られた、ルーティング不可の IP アドレスです。Amazon EC2 はリンクローカルアドレス空間のアドレスを使用して、EC2 インスタンスからのみアクセスできるサービスを提供します。これらのサービスはインスタンス上では実行されず、基盤となるホスト上で実行されます。これらのサービスのリンクローカルアドレスにアクセスすると、Xen ハイパーバイザーまたは Nitro コントローラーのどちらかと通信することになります。

**リンクローカルアドレスの範囲**
+ IPv4 — 169.254.0.0/16 (169.254.0.0～169.254.255.255)
+ IPv6 – fe80::/10

**リンクローカルアドレスを使用してアクセスするサービス**
+ [インスタンスメタデータサービス](instancedata-data-retrieval.md)
+ [Amazon Route 53 Resolver](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns.html#AmazonDNS) (Amazon DNS サーバーとも呼ばれます)
+ [Amazon Time Sync Service](set-time.md)
+ [AWS KMS サーバー](common-messages.md#activate-windows)

# EC2 インスタンスの IPv4 アドレスを管理する
<a name="working-with-ip-addresses"></a>

インスタンスを起動するときに、パブリック IPv4 アドレスをインスタンスに割り当てることができます。インスタンスの IPv4 アドレスをコンソールに表示するには**Instances** (インスタンス) ページまたは **[Network Interfaces]** (ネットワークインターフェイス) ページを使用します。

**Topics**
+ [起動時にパブリック IPv4 アドレスを割り当てる](#public-ip-addresses)
+ [起動時にプライベート IPv4 アドレスを割り当てる](#assign-private-ipv4-address)
+ [プライマリ IPv4 アドレスを表示する](#view-instance-ipv4-addresses)
+ [インスタンスメタデータを使用して IPv4 アドレスを表示するには](#view-instance-ipv4-addresses-imds)

## 起動時にパブリック IPv4 アドレスを割り当てる
<a name="public-ip-addresses"></a>

各サブネットに、そのサブネット内で起動されるインスタンスにパブリック IP アドレスが割り当てられるかどうかを決定する属性があります。デフォルトではデフォルト以外のサブネットではこの属性が false に設定されており、デフォルトのサブネットではこの属性が true に設定されています。インスタンスを起動する場合、パブリック IPv4 アドレス指定機能を使用してインスタンスにパブリック IPv4 アドレスを割り当てるかどうかを制御することもできます。サブネットの IP アドレス指定属性のデフォルトの動作をオーバーライドできます。パブリック IPv4 アドレスはAmazon のパブリック IPv4 アドレスプールから割り当てられ、デバイスインデックス eth0 を持つネットワークインターフェイスに割り当てられます。この機能はインスタンス起動時の特定の条件により異なります。

**考慮事項**
+ [ネットワークインターフェースに関連付けられた IP アドレスを管理する](managing-network-interface-ip-addresses.md)ことで、起動後にインスタンスからパブリック IP アドレスの割り当てを解除できます。パブリック IPv4 アドレスの詳細については[パブリック IPv4 アドレス](using-instance-addressing.md#concepts-public-addresses)を参照してください。
+ 複数のネットワークインターフェイスを指定した場合、パブリック IP アドレスを自動で割り当てることはできません。さらに、eth0 のように既存のネットワークインターフェイスを指定すると、パブリック IP の自動割り当て機能を使用してサブネット設定をオーバーライドすることはできません。
+ 起動時にパブリック IP アドレスをインスタンスに割り当てるかどうかにかかわらず、起動後に Elastic IP アドレスをインスタンスに関連付けることができます。詳細については「[Elastic IP アドレス](elastic-ip-addresses-eip.md)」を参照してください。サブネットのパブリック IPv4 アドレス指定動作を変更することもできます。詳細については「[サブネットの IPv4 アドレス指定属性の変更](https://docs.aws.amazon.com/vpc/latest/userguide/subnet-public-ip.html)」を参照してください。

------
#### [ Console ]

**起動時にパブリック IPv4 アドレスを割り当てるには**  
手順に従って[インスタンスを起動](ec2-launch-instance-wizard.md)し、[[Network Settings]](ec2-instance-launch-parameters.md#liw-network-settings) (ネットワーク設定) を設定するときに、**[Auto-assign Public IP]** (パブリック IP を自動的に割り当てる) オプションを選択してください。

------
#### [ AWS CLI ]

**起動時にパブリック IPv4 アドレスを割り当てるには**  
`--associate-public-ip-address` オプションで [run-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html) コマンドを使用します。

```
--associate-public-ip-address
```

------
#### [ PowerShell ]

**起動時にパブリック IPv4 アドレスを割り当てるには**  
`-AssociatePublicIp` パラメータで [New-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2Instance.html) コマンドレットを使用します。

```
-AssociatePublicIp $true
```

------

## 起動時にプライベート IPv4 アドレスを割り当てる
<a name="assign-private-ipv4-address"></a>

プライベート IPv4 アドレスは、サブネットの IPv4 アドレス範囲から指定できます。また、Amazon EC2 に自動選択させることもできます。これはプライマリネットワークインターフェイスの IP アドレスです。

起動後に IPv4 アドレスを割り当てる方法については、[インスタンスにセカンダリ IP アドレスを割り当てる](instance-secondary-ip-addresses.md#assign-secondary-ip-address) を参照してください。

------
#### [ Console ]

**起動時にプライベート IPv4 アドレスを割り当てるには**  
[インスタンスを起動する](ec2-launch-instance-wizard.md)ための手順に従います。[[ネットワーク設定]](ec2-instance-launch-parameters.md#liw-network-settings) を設定するときは、**[高度なネットワーク設定]** を展開して**プライマリ IP** の値を入力します。

------
#### [ AWS CLI ]

**起動時にプライベート IPv4 アドレスを割り当てるには**  
`--private-ip-address` オプションで [run-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html) コマンドを使用します。

```
--private-ip-addresses 10.251.50.12
```

Amazon EC2 に IP アドレスを選択させるときは、このオプションを省略します。

------
#### [ PowerShell ]

**起動時にプライベート IPv4 アドレスを割り当てるには**  
`-PrivateIpAddress` パラメータで [New-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2Instance.html) コマンドレットを使用します。

```
-PrivateIpAddress 10.251.50.12
```

Amazon EC2 に IP アドレスを選択させるときは、このパラメータを省略します。

------

## プライマリ IPv4 アドレスを表示する
<a name="view-instance-ipv4-addresses"></a>

パブリック IPv4 アドレスはコンソールのネットワークインターフェイスのプロパティとして表示されますが、NAT によってプライマリプライベート IPv4 アドレスにマッピングされます。したがって、インスタンスのネットワークインターフェイスのプロパティを、例えば `ifconfig` (Linux) または `ipconfig` (Windows) を通して調べてみると、パブリック IPv4 アドレスは表示されていません。

------
#### [ Console ]

**インスタンスの IPv4 アドレスを表示するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、[**インスタンス**] を選択してください。

1. インスタンスを選択します。

1. **[ネットワーク]** タブで、**パブリック IPv4 アドレス**と**プライベート IPv4 アドレス**を見つけます。

1. (オプション) **[ネットワーク]** タブには、インスタンスのネットワークインターフェイスと Elastic IP アドレスも記載されています。

------
#### [ AWS CLI ]

**インスタンスのプライマリ IPv4 アドレスを表示するには**  
[describe-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html) コマンドを使用します。

```
aws ec2 describe-instances \
    --instance-ids i-1234567890abcdef0 \
    --query "Reservations[].Instances[].PrivateIpAddress" \
    --output text
```

以下は出力の例です。

```
10.251.50.12
```

------
#### [ PowerShell ]

**インスタンスのプライマリ IPv4 アドレスを表示するには**  
[Get-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Instance.html) コマンドレットを使用します。

```
(Get-EC2Instance `
    -InstanceId i-1234567890abcdef0).Instances.PrivateIpAddress
```

以下は出力の例です。

```
10.251.50.12
```

------

## インスタンスメタデータを使用して IPv4 アドレスを表示するには
<a name="view-instance-ipv4-addresses-imds"></a>

インスタンスの IPv4 アドレスは、インスタンスのメタデータを取得することで入手できます。詳細については、「[インスタンスメタデータを使用して EC2 インスタンスを管理する](ec2-instance-metadata.md)」を参照してください。

**インスタンスメタデータを使用して IPv4 アドレスを表示するには**

1. インスタンスに接続します。詳細については、「[EC2 インスタンスに接続する](connect.md)」を参照してください。

1. 以下のいずれかのコマンドを実行します。

------
#### [ IMDSv2 ]

**Linux**  
次のコマンドを Linux インスタンスから実行します。

   ```
   TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` \
   && curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/local-ipv4
   ```

**Server**  
次のコマンドを Windows インスタンスから実行します。

   ```
   [string]$token = Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token-ttl-seconds" = "21600"} `
       -Method PUT -Uri http://169.254.169.254/latest/api/token
   ```

   ```
   Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token" = $token} `
       -Method GET -Uri http://169.254.169.254/latest/meta-data/local-ipv4
   ```

------
#### [ IMDSv1 ]

**Linux**  
次のコマンドを Linux インスタンスから実行します。

   ```
   curl http://169.254.169.254/latest/meta-data/local-ipv4
   ```

**Server**  
次のコマンドを Windows インスタンスから実行します。

   ```
   Invoke-RestMethod http://169.254.169.254/latest/meta-data/local-ipv4
   ```

------

1. パブリック IP アドレスにアクセスするには次のコマンドのうちいずれか 1 つを使用します。Elastic IP アドレスがインスタンスに関連付けられている場合、コマンドは Elastic IP アドレスを返します。

------
#### [ IMDSv2 ]

**Linux**  
次のコマンドを Linux インスタンスから実行します。

   ```
   [ec2-user ~]$ TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` \
   && curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/public-ipv4
   ```

**Server**  
次のコマンドを Windows インスタンスから実行します。

   ```
   [string]$token = Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token-ttl-seconds" = "21600"} `
       -Method PUT -Uri http://169.254.169.254/latest/api/token
   ```

   ```
   Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token" = $token} `
       -Method GET -Uri http://169.254.169.254/latest/meta-data/public-ipv4
   ```

------
#### [ IMDSv1 ]

**Linux**  
次のコマンドを Linux インスタンスから実行します。

   ```
   curl http://169.254.169.254/latest/meta-data/public-ipv4
   ```

**Server**  
次のコマンドを Windows インスタンスから実行します。

   ```
   Invoke-RestMethod http://169.254.169.254/latest/meta-data/public-ipv4
   ```

------

# EC2 インスタンスの IPv6 アドレスを管理する
<a name="working-with-ipv6-addresses"></a>

VPC とサブネットに IPv6 CIDR ブロックが関連付けられている場合は起動時または起動後に IPv6 アドレスをインスタンスに割り当てることができます。インスタンスの IPv6 アドレスにコンソールでアクセスするには、**[インスタンス]** ページまたは **[ネットワークインターフェイス]** ページを使用します。以下のタスクでは、インスタンスの IP アドレスを設定します。代わりにネットワークインターフェイスの IP アドレスを設定するには、「[ネットワークインターフェイスの IP アドレスを管理する](managing-network-interface-ip-addresses.md)」を参照してください。

**Topics**
+ [インスタンスへの IPv6 アドレスの割り当て](#assign-ipv6-address)
+ [インスタンスの IPv6 アドレスを表示する](#view-ipv6-addresses)
+ [インスタンスメタデータを使用して IPv6 アドレスを表示する](#view-ipv6-addresses-imds)
+ [インスタンスからの IPv6 アドレスの割り当て解除](#unassign-ipv6-address)

## インスタンスへの IPv6 アドレスの割り当て
<a name="assign-ipv6-address"></a>

IPv6 アドレスは、サブネットの IPv6 アドレス範囲から指定できます。また、Amazon EC2 に自動選択させることもできます。これはプライマリネットワークインターフェイスの IP アドレスです。C1、M1、M2、M3 および T1 のインスタンスタイプは IPv6 アドレスをサポートしていないことに注意してください。

------
#### [ Console ]

**起動時に IPv6 アドレスを割り当てるには**  
[インスタンスを起動する](ec2-launch-instance-wizard.md)ための手順に従います。[ネットワーク設定](ec2-instance-launch-parameters.md#liw-network-settings)を構成するときは**IPv6 IP を自動割り当て**するオプションを選択してください。このオプションが表示されない場合、選択したサブネットには IPv6 CIDR ブロックが関連付けられていません。

**起動後に IPv6 アドレスをインスタンスに割り当てるには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、[**インスタンス**] を選択してください。

1. インスタンスを選択後、[**アクション**]、[**ネットワーク**]、[**IP アドレスの管理**] の順に選択してください。

1. ネットワークインターフェイスを展開します。**[IPv6 addresses]** (IPv6 アドレス) で、**[Assign new IP address]** (新しい IP アドレスの割り当て) を選択してください。

1. サブネットの範囲から IPv6 アドレスを入力します。フィールドを空欄のままにすると、Amazon EC2 が自動的に IPv6 アドレスを選択します。このオプションが表示されない場合、インスタンスのサブネットには IPv6 CIDR ブロックが関連付けられていません。

1. **[保存]** を選択します。

------
#### [ AWS CLI ]

**起動時に IPv6 アドレスを割り当てるには**  
`--ipv6-addresses` オプションで [run-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html) コマンドを使用します。次の例では、2 つの IPv6 アドレスを割り当てます。

```
--ipv6-addresses Ipv6Address=2001:db8::1234:5678:1.2.3.4 Ipv6Address=2001:db8::1234:5678:5.6.7.8
```

Amazon EC2 に IPv6 アドレスを選択させる場合は、代わりに `--ipv6-address-count` のオプションを使用します。次の例では、2 つの IPv6 アドレスを割り当てます。

```
--ipv6-address-count 2
```

**起動後に IPv6 アドレスをインスタンスに割り当てるには**  
[assign-ipv6-addresses](https://docs.aws.amazon.com/cli/latest/reference/ec2/assign-ipv6-addresses.html) コマンドを使用します。次の例では、2 つの IPv6 アドレスを割り当てます。

```
aws ec2 assign-ipv6-addresses \ 
    --network-interface-id eni-1234567890abcdef0 \
    --ipv6-addresses 2001:db8::1234:5678:1.2.3.4 2001:db8::1234:5678:5.6.7.8
```

Amazon EC2 に IPv6 アドレスを選択させる場合は、代わりに `--ipv6-address-count` のオプションを使用します。次の例では、2 つの IPv6 アドレスを割り当てます。

```
aws ec2 assign-ipv6-addresses \
    --network-interface-id eni-1234567890abcdef0 \
    --ipv6-address-count 2
```

------
#### [ PowerShell ]

**起動時に IPv6 アドレスを割り当てるには**  
`-Ipv6Address` パラメータで [New-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2Instance.html) コマンドレットを使用します。次の例では、2 つの IPv6 アドレスを割り当てます。

```
-Ipv6Address $ipv6addr1,$ipv6addr2
```

IPv6 アドレスを次のように定義します。

```
$ipv6addr1 = New-Object Amazon.EC2.Model.InstanceIpv6Address
$ipv6addr1.Ipv6Address = "2001:db8::1234:5678:1.2.3.4"
$ipv6addr2 = New-Object Amazon.EC2.Model.InstanceIpv6Address
$ipv6addr2.Ipv6Address = "2001:db8::1234:5678:5.6.7.8"
```

Amazon EC2 に IPv6 アドレスを選択させる場合は、代わりに `-Ipv6AddressCount` のパラメータを使用します。次の例では、2 つの IPv6 アドレスを割り当てます。

```
-Ipv6AddressCount 2
```

**起動後に IPv6 アドレスをインスタンスに割り当てるには**  
[Register-EC2Ipv6AddressList](https://docs.aws.amazon.com/powershell/latest/reference/items/Register-EC2Ipv6AddressList.html) コマンドレットを使用します。次の例では、2 つの IPv6 アドレスを割り当てます。

```
Register-EC2Ipv6AddressList `
    -NetworkInterfaceId eni-1234567890abcdef0 `
    -Ipv6Address "2001:db8::1234:5678:1.2.3.4","2001:db8::1234:5678:5.6.7.8"
```

Amazon EC2 に IPv6 アドレスを選択させる場合は、代わりに `-Ipv6AddressCount` のパラメータを使用します。次の例では、2 つの IPv6 アドレスを割り当てます。

```
Register-EC2Ipv6AddressList `
    -NetworkInterfaceId eni-1234567890abcdef0 `
    -Ipv6AddressCount 2
```

------

## インスタンスの IPv6 アドレスを表示する
<a name="view-ipv6-addresses"></a>

インスタンスの IPv6 アドレスを表示することができます。

------
#### [ Console ]

**インスタンスの IPv6 アドレスを表示するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、[**インスタンス**] を選択してください。

1. インスタンスを選択してください。

1. **[Networking]** (ネットワーキング) タブで、**[IPv6 addresses]** (IPv6 アドレス) を見つけます。

------
#### [ AWS CLI ]

**インスタンスの IPv6 アドレスを表示するには**  
[describe-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html) コマンドを使用します。

```
aws ec2 describe-instances \
    --instance-ids i-1234567890abcdef0 \
    --query "Reservations[*].Instances[].Ipv6Address" \
    --output text
```

以下は出力の例です。

```
2001:db8::1234:5678:1.2.3.4
```

------
#### [ PowerShell ]

**インスタンスの IPv6 アドレスを表示するには**  
[Get-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Instance.html) コマンドレットを使用します。

```
(Get-EC2Instance `
    -InstanceId i-1234567890abcdef0).Instances.Ipv6Address
```

以下は出力の例です。

```
2001:db8::1234:5678:1.2.3.4
```

------

## インスタンスメタデータを使用して IPv6 アドレスを表示する
<a name="view-ipv6-addresses-imds"></a>

インスタンスに接続すると、インスタンスメタデータを使用して IPv6 アドレスを取得できるようになります。最初に、`http://169.254.169.254/latest/meta-data/network/interfaces/macs/` からインスタンスの MAC アドレスを取得します。

------
#### [ IMDSv2 ]

**Linux**  
次のコマンドを Linux インスタンスから実行します。

```
TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` \
&& curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/network/interfaces/macs/mac-address/ipv6s
```

**Server**  
次のコマンドレットを Windows インスタンスから実行します。

```
[string]$token = Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token-ttl-seconds" = "21600"} `
    -Method PUT -Uri http://169.254.169.254/latest/api/token
```

```
Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token" = $token} `
    -Method GET -Uri http://169.254.169.254/latest/meta-data/network/interfaces/macs/mac-address/ipv6s
```

------
#### [ IMDSv1 ]

**Linux**  
次のコマンドを Linux インスタンスから実行します。

```
curl http://169.254.169.254/latest/meta-data/network/interfaces/macs/mac-address/ipv6s
```

**Server**  
次のコマンドレットを Windows インスタンスから実行します。

```
Invoke-RestMethod -Uri http://169.254.169.254/latest/meta-data/network/interfaces/macs/mac-address/ipv6s
```

------

## インスタンスからの IPv6 アドレスの割り当て解除
<a name="unassign-ipv6-address"></a>

IPv6 アドレスはインスタンスからいつでも割り当て解除できます。

------
#### [ Console ]

**インスタンスから IPv6 アドレスを割り当て解除するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、[**インスタンス**] を選択してください。

1. インスタンスを選択後、[**アクション**]、[**ネットワーク**]、[**IP アドレスの管理**] の順に選択してください。

1. ネットワークインターフェイスを展開します。**[IPv6 addresses]** (IPv6 アドレス) で、IPv6 アドレスの横にある **[Unassign]** (割り当て解除) を選択してください。

1. **[保存]** を選択します。

------
#### [ AWS CLI ]

**インスタンスから IPv6 アドレスを割り当て解除するには**  
[unassign-ipv6-addresses](https://docs.aws.amazon.com/cli/latest/reference/ec2/unassign-ipv6-addresses.html) コマンドを使用します。

```
aws ec2 unassign-ipv6-addresses \ 
    --network-interface-id eni-1234567890abcdef0 \
    --ipv6-addresses 2001:db8::1234:5678:1.2.3.4
```

------
#### [ PowerShell ]

**インスタンスから IPv6 アドレスを割り当て解除するには**  
[Unregister-EC2Ipv6AddressList](https://docs.aws.amazon.com/powershell/latest/reference/items/Unregister-EC2Ipv6AddressList.html) コマンドレットを使用します。

```
Unregister-EC2Ipv6AddressList `
    -NetworkInterfaceId eni-1234567890abcdef0 `
    -Ipv6Address 2001:db8::1234:5678:1.2.3.4
```

------

# EC2 インスタンスのセカンダリ IP アドレス
<a name="instance-secondary-ip-addresses"></a>

ネットワークインターフェイスに最初に割り当てられた IPv4 アドレスを、プライマリ IP アドレスといいます。セカンダリ IP アドレスは、ネットワークインターフェイスに追加で割り当てられた IPv4 アドレスです。詳細については、「[複数の IP アドレス](using-instance-addressing.md#multiple-ip-addresses)」を参照してください。

また、1 つのインスタンスに複数の IPv6 アドレスを割り当てることができます。詳細については、「[EC2 インスタンスの IPv6 アドレスを管理する](working-with-ipv6-addresses.md)」を参照してください。

**Topics**
+ [インスタンスにセカンダリ IP アドレスを割り当てる](#assign-secondary-ip-address)
+ [セカンダリ IP アドレスを使用するようにオペレーティングシステムを設定する](#StepTwoConfigOS)
+ [インスタンスからセカンダリ IP アドレスの割り当てを解除する](#unassign-secondary-ip-address)

## インスタンスにセカンダリ IP アドレスを割り当てる
<a name="assign-secondary-ip-address"></a>

セカンダリ IP アドレスは、インスタンスの起動時に、または起動後に、インスタンスのネットワークインターフェイスに割り当てることができます。

------
#### [ Console ]

**起動時にセカンダリ IP アドレスを割り当てるには**

1. [インスタンスを起動する](ec2-launch-instance-wizard.md)ための手順に従います。[[ネットワーク設定]](ec2-instance-launch-parameters.md#liw-network-settings) を設定するときに、**[高度なネットワーク設定]** を展開します。

1. **[セカンダリ IP]** で **[自動で割り当て]** を選択し、Amazon EC2 に割り当てさせる IP アドレスの数を入力します。または、**[手動で割り当て]** を選択し、IPv4 アドレスを入力します。

1. インスタンスを起動する残りのステップを完了します。

**起動後にセカンダリ IP アドレスを割り当てるには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、[**インスタンス**] を選択してください。

1. インスタンスを選択後、[**アクション**]、[**ネットワーク**]、[**IP アドレスの管理**] の順に選択してください。

1. ネットワークインターフェイスを展開します。

1. IPv4 アドレスを追加するには、**[IPv4 アドレス]** で **[新しい IP アドレスの割り当て]** を選択します。サブネットの範囲から IPv4 アドレスを入力します。フィールドを空欄のままにすると Amazon EC2 が自動的にアドレスを選択します。

1. **[保存]** を選択します。

------
#### [ AWS CLI ]

**起動時にセカンダリ IP アドレスを割り当てるには**  
`--secondary-private-ip-addresses` オプションで [run-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html) コマンドを使用します。

```
--secondary-private-ip-addresses 10.251.50.12
```

Amazon EC2 に IP アドレスを選択させる場合は、代わりに `--secondary-private-ip-address-count` のオプションを使用します。次の例では、1 つのセカンダリ IP アドレスを割り当てます。

```
--secondary-private-ip-address-count 1
```

または、ネットワークインターフェイスを作成することができます。詳細については、「[EC2 インスタンス用のネットワークインターフェイスを作成する](create-network-interface.md)」を参照してください。

**起動後にセカンダリ IP アドレスを割り当てるには**  
[assign-private-ip-addresses](https://docs.aws.amazon.com/cli/latest/reference/ec2/assign-private-ip-addresses.html) コマンドを `--private-ip-addresses` オプションと共に使用します。

```
aws ec2 assign-private-ip-addresses \
    --network-interface-ids eni-1234567890abcdef0 \
    --private-ip-addresses 10.251.50.12
```

Amazon EC2 に IPv4 アドレスを選択させる場合は、代わりに `--secondary-private-ip-address-count` のパラメータを使用します。次の例では、1 つの IPv4 アドレスを割り当てます。

```
aws ec2 assign-private-ip-addresses \
    --network-interface-ids eni-1234567890abcdef0 \
    --secondary-private-ip-address-count 1
```

------
#### [ PowerShell ]

**起動時にセカンダリ IP アドレスを割り当てるには**  
ネットワークインターフェイスを作成する必要があります。詳細については、「[EC2 インスタンス用のネットワークインターフェイスを作成する](create-network-interface.md)」を参照してください。

**起動後にセカンダリ IP アドレスを割り当てるには**  
[Register-EC2PrivateIpAddress](https://docs.aws.amazon.com/powershell/latest/reference/items/Register-EC2PrivateIpAddress.html) コマンドレットを `-PrivateIpAddress` パラメータと共に使用します。

```
Register-EC2PrivateIpAddress `
    -NetworkInterfaceId eni-1234567890abcdef0 `
    -PrivateIpAddress 10.251.50.12
```

Amazon EC2 に IPv4 アドレスを選択させる場合は、代わりに `-SecondaryPrivateIpAddressCount` のパラメータを使用します。次の例では、1 つの IPv4 アドレスを割り当てます。

```
Register-EC2PrivateIpAddress `
    -NetworkInterfaceId eni-1234567890abcdef0 `
    -SecondaryPrivateIpAddressCount 1
```

------

## セカンダリ IP アドレスを使用するようにオペレーティングシステムを設定する
<a name="StepTwoConfigOS"></a>

セカンダリ IP アドレスをインスタンスに割り当てたら、追加のプライベート IPv4 アドレスを認識するように、インスタンスのオペレーティングシステムを設定する必要があります。

**Linux インスタンス**
+ Amazon Linux を使用している場合、ec2-net-utils パッケージがこの処理を自動実行します。このパッケージはインスタンスの実行中にアタッチされる追加のネットワークインターフェイスを設定し、DHCP リースの更新中にセカンダリ IPv4 アドレスを更新して、関連するルーティングルールを更新します。システムに応じて、`sudo systemctl restart systemd-networkd` (AL2023) または `sudo service network restart` (Amazon Linux 2) のいずれか 1 つのコマンドを使用して、インターフェイスのリストをすぐに更新できます。次のコマンドを使用して最新のリストを表示できます: `ip addr li`。ネットワーク構成を手動で構成する必要がある場合、ec2-net-utils パッケージを削除できます。詳細については「[ec2-net-utils を使用したネットワークインターフェイスの設定](https://docs.aws.amazon.com/linux/al2/ug/ec2-net-utils.html)」を参照してください。
+ 別の Linux ディストリビューションを使用している場合、Linux ディストリビューションのドキュメントを参照してください。追加のネットワークインターフェイスとセカンダリ IPv4 アドレスの設定に関する情報が記載されています。同じサブネットのインスタンスに複数のインターフェイスがある場合、非対称のルーティングに対処する方法についてはルーティングルールの使用に関する情報を検索してください。

**Windows インスタンス**  
詳細については、「[Windows インスタンスのセカンダリプライベート IPv4 アドレスを設定する](config-windows-multiple-ip.md)」を参照してください。

## インスタンスからセカンダリ IP アドレスの割り当てを解除する
<a name="unassign-secondary-ip-address"></a>

セカンダリ IP アドレスが不要になったら、インスタンスやネットワークインターフェイスからその割り当てを解除できます。セカンダリプライベート IPv4 アドレスをネットワークインターフェイスから割り当て解除した場合、Elastic IP アドレス (存在する場合) の関連付けも解除されます。

------
#### [ Console ]

**インスタンスからセカンダリプライベート IPv4 アドレスを割り当て解除するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、**[Instances]** (インスタンス) を選択してください。

1. インスタンスを選択し、**[アクション]**、**[ネットワーク]**、**[IP アドレスの管理]** の順に選択してください。

1. ネットワークインターフェイスを展開します。**[IPv4 アドレス]** で、割り当て解除する IPv4 アドレスに対して **[割り当て解除]** を選択してください。

1. **[保存]** を選択します。

------
#### [ AWS CLI ]

**セカンダリプライベート IP アドレスの割り当てを解除するには**  
[unassign-private-ip-addresses](https://docs.aws.amazon.com/cli/latest/reference/ec2/unassign-private-ip-addresses.html) コマンドを使用します。

```
aws ec2 unassign-private-ip-addresses \
    --network-interface eni-1234567890abcdef0\
    --private-ip-addresses 10.251.50.12
```

------
#### [ PowerShell ]

**セカンダリプライベート IP アドレスの割り当てを解除するには**  
[Unregister-EC2PrivateIpAddress](https://docs.aws.amazon.com/powershell/latest/reference/items/Unregister-EC2PrivateIpAddress.html) コマンドレットを使用します。

```
Unregister-EC2PrivateIpAddress `
    -NetworkInterface eni-1234567890abcdef0 `
    -PrivateIpAddress 10.251.50.12
```

------

# Windows インスタンスのセカンダリプライベート IPv4 アドレスを設定する
<a name="config-windows-multiple-ip"></a>

インスタンスに複数のプライベート IPv4 IP アドレスを指定できます。インスタンスにセカンダリプライベート IPv4 アドレスを割り当てたら、セカンダリプライベート IPv4 アドレスを認識するようにインスタンスのオペレーティングシステムを設定する必要があります。

**注記**  
この手順は Windows Server 2022 を対象にしています。Windows インスタンスのオペレーティングシステムによって、これらの手順の実施方法が異なる場合があります。

**Topics**
+ [前提条件](#prereq-steps)
+ [ステップ 1: インスタンスで静的 IP アドレス指定を設定する](#step1)
+ [ステップ 2: インスタンスにセカンダリプライベート IP アドレスを設定する](#step2)
+ [ステップ3: セカンダリプライベート IP アドレスを使用するようにアプリケーションを設定する](#step3)

## 前提条件
<a name="prereq-steps"></a>
+ セカンダリプライベート IPv4 アドレスを、インスタンスのネットワークインターフェイスに割り当てます。セカンダリプライベート IPv4 アドレスは、インスタンスの起動時または実行の開始後に割り当てることができます。詳細については、「[インスタンスにセカンダリ IP アドレスを割り当てる](instance-secondary-ip-addresses.md#assign-secondary-ip-address)」を参照してください。

## ステップ 1: インスタンスで静的 IP アドレス指定を設定する
<a name="step1"></a>

Windows インスタンスが複数の IP アドレスを使用するには、インスタンスが DHCP サーバーではなく、静的 IP アドレス指定を使用するように設定する必要があります。

**重要**  
インスタンスで静的 IP アドレス指定を設定する場合、IP アドレスは、コンソール、CLI、または API で表示される IP アドレスと正確に一致している必要があります。これらの IP アドレスを誤って入力すると、インスタンスは到達不能になる可能性があります。

**Windows インスタンスで静的 IP アドレス指定を設定するには**

1. インスタンスに接続します。

1. 次のステップを実行してインスタンスの IP アドレス、サブネットマスク、デフォルトゲートウェイアドレスを見つけます: 

   1. PowerShell で次のコマンドを実行します。

     ```
     ipconfig /all
     ```

     出力を確認し、ネットワークインターフェイスの **[IPv4 アドレス]**、**[サブネットマスク]**、**[デフォルトゲートウェイ]**、**[DNS サーバー]** の値を書き留めます。出力は次の例のようになります。

     ```
     ...
     
     Ethernet adapter Ethernet 4:
     
        Connection-specific DNS Suffix  . : us-west-2.compute.internal
        Description . . . . . . . . . . . : Amazon Elastic Network Adapter #2
        Physical Address. . . . . . . . . : 02-9C-3B-FC-8E-67
        DHCP Enabled. . . . . . . . . . . : Yes
        Autoconfiguration Enabled . . . . : Yes
        Link-local IPv6 Address . . . . . : fe80::f4d1:a773:5afa:cd1%7(Preferred)
        IPv4 Address. . . . . . . . . . . : 10.200.0.128(Preferred)
        Subnet Mask . . . . . . . . . . . : 255.255.255.0
        Lease Obtained. . . . . . . . . . : Monday, April 8, 2024 12:19:29 PM
        Lease Expires . . . . . . . . . . : Monday, April 8, 2024 4:49:30 PM
        Default Gateway . . . . . . . . . : 10.200.0.1
        DHCP Server . . . . . . . . . . . : 10.200.0.1
        DHCPv6 IAID . . . . . . . . . . . : 151166011
        DHCPv6 Client DUID. . . . . . . . : 00-01-00-01-2D-67-AC-FC-12-34-9A-BE-A5-E7
        DNS Servers . . . . . . . . . . . : 10.200.0.2
        NetBIOS over Tcpip. . . . . . . . : Enabled
     ```

1. PowerShell で次のコマンドを実行して **[ネットワークと共有センター]** を開きます。

   ```
   & $env:SystemRoot\system32\control.exe ncpa.cpl
   ```

1. ネットワークインターフェイス (ローカルエリア接続またはイーサネット) のコンテキスト (右クリック) メニューを開き、**[プロパティ]** を選択します。

1. [**Internet Protocol Version 4 (TCP/IPv4)**]、[**Properties**] の順に選択します。

1. [**Internet Protocol Version 4 (TCP/IPv4) Properties**] ダイアログボックスで [**Use the following IP address**] を選択して以下の値を入力し、[**OK**] を選択します。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/config-windows-multiple-ip.html)
**重要**  
IP アドレスを現在の IP アドレス以外の値に設定すると、インスタンスへの接続が失われます。  
![\[IP アドレス\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/windows-ip-static.png)

インスタンスで DHCP の使用から静的アドレス指定に変換する間、Windows インスタンスへの RDP 接続が数秒間失われます。インスタンスは以前と同じ IP アドレス情報を保持していますが、この情報は静的であり、DHCP によって管理されていません。

## ステップ 2: インスタンスにセカンダリプライベート IP アドレスを設定する
<a name="step2"></a>

Windows インスタンスで静的 IP アドレスをセットアップしたら、セカンダリ プライベート IP アドレスを設定できます。

**セカンダリ IP アドレスを構成するには**

1. Amazon EC2 コンソール ([https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)) を開きます。

1. ナビゲーションペインで [**Instances**] を選択し、インスタンスを選択します。

1. [**ネットワーキング**] で、セカンダリ IP アドレスをメモします。

1. インスタンスに接続します。

1. Windows インスタンスで、[**スタート**]、[**コントロールパネル**] の順に選択します。

1. [**ネットワークとインターネット**]、[**ネットワークと共有センター**] の順に選択します。

1. ネットワークインターフェイス (ローカルエリア接続またはイーサネット) を選択し、**[プロパティ]** を選択します。

1. [**ローカルエリア接続のプロパティ**] ページで、[**インターネットプロトコルバージョン 4 (TCP/IPv4)**]、[**プロパティ**]、[**詳細設定**] の順に選択します。

1. [**Add**] を選択します。

1. [**TCP/IP アドレス**] ダイアログボックスで、[**IP アドレス**] にセカンダリプライベート IP アドレスを入力します。[**サブネットマスク**] に、[ステップ 1: インスタンスで静的 IP アドレス指定を設定する](#step1) でプライマリプライベート IP アドレス用に入力したものと同じサブネットマスクを入力し、[**追加**] を選択します。  
![\[[TCP/IP アドレス] ダイアログボックス\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/windows-ip-add.png)

1. IP アドレス設定を確認して、[**OK**] を選択します。  
![\[IP 設定タブ\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/windows-ip-advanced-tcpip.png)

1. [**OK**]、[**閉じる**] の順に選択します。

1. オペレーティングシステムにセカンダリプライベート IP アドレスが追加されたことを確認するには、PowerShell で、`ipconfig /all` コマンドを実行します。出力は次のようになります。

   ```
   Ethernet adapter Ethernet 4:
   
      Connection-specific DNS Suffix  . :
      Description . . . . . . . . . . . : Amazon Elastic Network Adapter #2
      Physical Address. . . . . . . . . : 02-9C-3B-FC-8E-67
      DHCP Enabled. . . . . . . . . . . : No
      Autoconfiguration Enabled . . . . : Yes
      Link-local IPv6 Address . . . . . : fe80::f4d1:a773:5afa:cd1%7(Preferred)
      IPv4 Address. . . . . . . . . . . : 10.200.0.128(Preferred)
      Subnet Mask . . . . . . . . . . . : 255.255.255.0
      IPv4 Address. . . . . . . . . . . : 10.200.0.129(Preferred)
      Subnet Mask . . . . . . . . . . . : 255.255.255.0
      Default Gateway . . . . . . . . . : 10.200.0.1
      DHCPv6 IAID . . . . . . . . . . . : 151166011
      DHCPv6 Client DUID. . . . . . . . : 00-01-00-01-2D-67-AC-FC-12-34-9A-BE-A5-E7
      DNS Servers . . . . . . . . . . . : 10.200.0.2
      NetBIOS over Tcpip. . . . . . . . : Enabled
   ```

## ステップ3: セカンダリプライベート IP アドレスを使用するようにアプリケーションを設定する
<a name="step3"></a>

セカンダリプライベート IP アドレスを使用するように任意のアプリケーションを設定できます。例えば、インスタンスが IIS でウェブサイトを実行している場合、セカンダリプライベート IP アドレスを使用するように IIS を設定できます。

**セカンダリプライベート IP アドレスを使用するように IIS を設定するには**

1. インスタンスに接続します。

1. インターネットインフォメーションサービス (IIS) マネージャーを開きます。

1. [**Connections**] ペインで、[**Sites**] を展開します。

1. ウェブサイトのコンテキスト (右クリック) メニューを開き、[**Edit Bindings**] を選択します。

1. [**Site Bindings**] ダイアログボックスの [**Type**] で、[**http**]、[**Edit**] の順に選択します。

1. [**Edit Site Binding**] ダイアログボックスの [**IP address**] で、セカンダリプライベート IP アドレスを選択します。(デフォルトでは、各ウェブサイトはすべての IP アドレスからの HTTP 要求を受け付けます)。  
![\[IP アドレス\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/windows-ip-iis-site-binding.png)

1. [**OK**]、[**閉じる**] の順に選択します。

# EC2 インスタンスのホスト名とドメイン
<a name="ec2-instance-naming"></a>

EC2 インスタンスのホスト名とドメインを理解することは、Amazon EC2 インスタンスの効果的な管理とアクセスのために重要です。各 EC2 インスタンスは、プライベートとパブリックの異なる 2 タイプのホスト名を持つことができます。各ホスト名はそれぞれ異なる目的に対応しており、それぞれ固有の命名規則に従います。

このトピックでは、EC2 インスタンスホスト名の構造、構築方法、および使用可能なさまざまなホスト名タイプについて説明します。ホスト名の設定を表示および変更する方法、各タイプを使用するタイミング、および AWS 環境でのホスト名管理のベストプラクティスについて説明します。

**Topics**
+ [EC2 インスタンスのホスト名とドメインについて](understanding-ec2-instance-hostnames-domains.md)
+ [ホスト名タイプ](hostname-types.md)

# EC2 インスタンスのホスト名とドメインについて
<a name="understanding-ec2-instance-hostnames-domains"></a>

EC2 インスタンスアドレスは、複数のコンポーネントで構成されています。インスタンスのプライベート IPv4 アドレスを使用する EC2 インスタンスアドレスの例を次に示します。

```
   IP address         Domain name                   
   ↓--------↓ ↓------------------------↓
ip-10-24-34-0.us-west-2.compute.internal
↑-----------↑   
  Hostname      
↑--------------------------------------↑ 
    Fully qualified domain name (FQDN)
```

コードの説明は以下のとおりです。
+ **IP アドレス**: インスタンスに関連付けられたプライマリネットワークインターフェイスのプライマリ IPv4 アドレス。
+ **ホスト名**: 特定の EC2 インスタンスのローカル名 (オペレーティングシステムとローカルネットワークの特定に使用)
+ **ドメイン名**: FQDN のうち AWS が提供する部分
+ **完全修飾ドメイン名 (FQDN)**: ホスト名とドメイン名の両方を含む完全なアドレス。これは、ネットワーク間でインスタンスにアクセスするために使用する、グローバルに一意の完全な識別子となります。

ホスト名とドメイン名の形式は上記の例とは異なる場合があり、インスタンスまたはインスタンスにアタッチされるプライマリネットワークインターフェイス向けに選択したホスト名タイプに応じた形式となります。このセクションでは、ホスト名タイプのオプションについて説明します。

# ホスト名タイプ
<a name="hostname-types"></a>

AWS は、**プライベート**と**パブリック**の 2 種類のホスト名を提供します。次の表は、解決方法、設定方法、およびそれぞれのタイプを使用すべき状況など、プライベートホスト名とパブリックホスト名の主な違いを比較したものです。


| ​ | プライベートホスト名 | パブリックホスト名 | 
| --- | --- | --- | 
| DNS 解決 | プライベートホスト名は、パブリックインターネットからアクセスできないプライベート FQDN を有効にします。プライベートホスト名では、VPC 内のプライベート IPv4 および IPv6 GUA アドレスに解決するリクエストのみが許可されます。 | パブリックホスト名は、パブリックインターネットからアクセスできるパブリック FQDN を有効にします。パブリックホスト名を設定すると、VPC 内のプライベート IPv4 と IPv6 GUA、およびインターネット上のパブリック IP (スプリットホライズン DNS) へのリクエストを解決できます。 | 
| 設定 | プライベートホスト名はインスタンスレベルで設定されます。 | パブリックホスト名は、ネットワークインターフェイスレベルで設定されます。 | 
| どのようなときに使うか |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/hostname-types.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/hostname-types.html)  | 

**Topics**
+ [パブリックホスト名](#public-hostnames)
+ [プライベートホスト名](#ec2-instance-private-hostnames)

## パブリックホスト名
<a name="public-hostnames"></a>

*パブリックホスト名*を使用すると、インスタンスのパブリック IPv4 アドレスまたは IPv6 アドレスに解決されるホスト名を使用して EC2 インスタンスにアクセスでき、IPv6 への移行がスムーズになります。

パブリックホスト名を使用すると、以下のメリットがあります。
+ IPv4 と IPv6 の両方を介して EC2 インスタンスにアクセスでき、リソースへの接続方法の柔軟性が高まる。
+ 自分の好きなタイミングで IPv4 環境から IPv6 環境に移行できる。たとえば、データベースの移行とアプリケーションの移行を切り離して処理することで、複雑さとリスクを軽減できます。
+ 複数のホスト名オプション (IPv4 のみ、IPv6 のみ、デュアルスタック) を使用することで、自動で適切な IP アドレスに解決できる。
+ VPC 内からクエリを実行するとホスト名がプライベート IP アドレスに解決される、つまり[スプリットホライズン DNS](https://en.wikipedia.org/wiki/Split-horizon_DNS) によるセキュリティ向上のメリットもあります。

**Topics**
+ [パブリックホスト名のタイプと、それぞれのタイプを使用すべき状況](#public-hostname-types)
+ [パブリックホスト名を表示する](#view-public-hostnames)
+ [パブリックホスト名タイプを変更する](#modify-public-hostnames)

### パブリックホスト名のタイプと、それぞれのタイプを使用すべき状況
<a name="public-hostname-types"></a>

パブリックホスト名を使用するには、既存のネットワークインターフェイスを変更する必要があります。このセクションでは、3 つのパブリックホスト名タイプのオプションと、それぞれのタイプを使用すべき状況について説明します。
+ **デュアルスタック – IP ベース名**
  + これは、IPv4 から IPv6 に移行する場合、あるいは移行を計画している場合に最適なオプションです。このオプションを使用すると、IPv4 と IPv6 の両方を介した接続が可能になり、どちらか一つのプロトコルのみを使用しているクライアントも柔軟に接続できます。このオプションの場合、クライアントは IPv6 への移行中も同じホスト名を維持できます。
  + VPC 内からのリクエストは、ネットワークインターフェイスのプライベート IPv4 アドレスと IPv6 グローバルユニキャストアドレス (GUA) の両方に解決されます。インターネットからのリクエストは、ネットワークインターフェイスのパブリック IPv4 と IPv6 GUA アドレスの両方に解決されます。
  + **例**
    + このオプションを選択すると、このネットワークインターフェイス用にデュアルスタック FQDN が生成されます。こちらが、生成される FQDN の例です。
      + f5lnz-0khrm-nt2u3-gyqqt-nbdl5-q3cdpO.ap-southeast-2.ip.aws
    + コードの説明は以下のとおりです。
      + f5lnz-0khrm-nt2u3-gyqqt-nbdl5-q3cdpO は、ネットワークインターフェイス上のプライマリパブリック IPv6 アドレス (f5lnz-0khrm-nt2u3-gyqt-nbdl5) の [base36](https://en.wikipedia.org/wiki/Base36) 表現と、ネットワークインターフェイス上のプライマリパブリック IPv4 アドレス (q3cdpO) の base36 表現を組み合わせたホスト名です。
      + f5lnz-0khrm-nt2u3-gyqqt-nbdl5 は、Amazon DNS リゾルバーによって IPv6 GUA アドレス FFFF:1407:4:f000:81d:2689:1066:4489 に解決されます。これは、ネットワークインターフェイスに割り当てられた最初の IPv6 GUA です。
      + q3cdpO は IPv4 アドレス 52.54.55.56 に解決されます。これは、プライマリネットワークインターフェイスにアタッチされたパブリック IPv4 アドレスです。
      + ap-southeast-2 は、ネットワークインターフェイスが存在するサブネットのリージョンです。
      + ip.aws は、AWS が提供するドメインです。
+ **IPv6 – IP ベースの名前**
  + これは、すでに IPv6 に移行していて、IPv6 経由の接続のみを必要とする場合に適しています。
  + VPC 内またはインターネットからのリクエストは、ネットワークインターフェイスの IPv6 GUA に解決されます。
  + **例**
    + このオプションを選択すると、このネットワークインターフェイス用に FQDN が生成されます。こちらが、生成される FQDN の例です。
      + f5lnz-0khrm-nt2u3-gyqqt-nbdl5.ap-southeast-2.ip.aws
    + コードの説明は以下のとおりです。
      + f5lnz-0khrm-nt2u3-gyqqt-nbdl5 は、ネットワークインターフェイス上のプライマリパブリック IPv6 アドレスの base36 表現であるホスト名です。
      + f5lnz-0khrm-nt2u3-gyqqt-nbdl5 は、Amazon DNS リゾルバーによって IPv6 GUA アドレス FFFF:1407:4:f000:81d:2689:1066:4489 に解決されます。これは、ネットワークインターフェイスに割り当てられた最初の IPv6 GUA です。
      + ap-southeast-2 は、ネットワークインターフェイスが存在するサブネットのリージョンです。
      + ip.aws は、AWS が提供するドメインです。
+ **IPv4 – IP ベースの名前**
  + これは、このネットワークインターフェイスを使用するインスタンスが IPv6 への移行中に IPv4 アクセスを維持する必要がある場合、またはインスタンスで実行されているアプリケーションまたはシステムが IPv4 のみをサポートしている場合に適しています。これは、IPv4 接続のみの維持を必要としており、ワークロードには IPv6 サポートが必要ない場合に最適なオプションです。例えば、IPv6 への移行に際して、一部のアプリケーションを IPv4 に残してその他のアプリケーションを IPv6 に移行させたい場合があります。
  + VPC 内からのリクエストは、ネットワークインターフェイスのプライベートプライマリ IPv4 アドレスに解決されます。インターネットからのリクエストは、ネットワークインターフェイスのパブリック IPv4 アドレスに解決されます。
  + **例**
    + このオプションを選択すると、このネットワークインターフェイスに IPv4 対応のパブリックホスト名が生成されます。こちらは、生成される DNS 名の例です。
      + ec2-52-54-55-66.ap-southeast-2.compute.amazonaws.com
    + コードの説明は以下のとおりです。
      + ec2-52-54-55-66 は、ネットワークインターフェイスのプライマリパブリック IPv4 アドレスの base36 表現であるホスト名です。
      + ec2-52-54-55-66 は IPv4 アドレス 52.54.55.56 に解決されます。これは、プライマリネットワークインターフェイスにアタッチされたパブリック IPv4 アドレスです。
      + ap-southeast-2 は、ネットワークインターフェイスが存在するサブネットのリージョンです。
      + ip.aws は、AWS が提供するドメインです。

**重要**  
上記の例では、ホスト名の生成に IP アドレスが使用されていることがわかります。プライマリプライベート IPv4 アドレスまたはネットワークインターフェイスに割り当てられた最初の IPv6 GUA を変更すると、ホスト名のうち IP アドレスに反映される部分が変更され、**以前に生成されたパブリックホスト名は無効になります**。さらに、プライマリ IPv4 パブリックアドレスを変更すると、「*Amazon EC2 ユーザーガイド*」で説明している[インスタンスメタデータサービス (IMDS)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html) のダウンストリーム更新が強制されるため、EC2 インスタンス IMDS メタデータは自動的に更新されます。

### パブリックホスト名を表示する
<a name="view-public-hostnames"></a>

ネットワークインターフェイスがある VPC に EnableDnsHostnames および EnableDnsSupport の両方が有効になっていない場合、ホスト名タイプは定義または生成されません。

------
#### [ Console ]

インスタンスまたはプライマリネットワークインターフェイスのパブリックホスト名を表示できます。

**インスタンスのホスト名タイプと DNS 名を表示する方法**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、[**インスタンス**] を選択してください。

1. インスタンスのチェックボックスをオンにします。

1. **[ネットワーク]** タブの **[ホスト名と DNS]** で、次のものを探します。
   + **[パブリックホスト名タイプ]**
   + **[パブリック DNS]**
   + **[IPv4 のみの IP ベースの名前]**
   + **[IPv6 のみ – IP ベースの名前]**
   + **[デュアルスタック – IP ベースの名前]**

**ネットワークインターフェイスのホスト名タイプと DNS 名を表示する方法**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、[**Network Interfaces**] を選択してください。

1. 検索フィールドに、インスタンスの ID を入力します。ネットワークインターフェイスの ID を選択して、その詳細ページを開きます。

1. **[ホスト名と DNS]** で次のものを探します。
   + **[パブリックホスト名タイプ]**
   + **Public DNS name**
   + **[パブリック IPv4 DNS 名]**
   + **[パブリック IPv6 DNS 名]**
   + **[パブリックデュアルスタック DNS 名]**

------
#### [ AWS CLI ]

**ネットワークインターフェイスのホスト名タイプと DNS 名を表示する方法**  
[describe-network-interfaces](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-network-interfaces.html) コマンドを使用します。

```
aws ec2 describe-network-interfaces \
    --network-interface-id eni-1234567890abcdef0 \
    --query NetworkInterfaces[].PublicIpDnsNameOptions
```

以下は出力の例です。ホスト名タイプが `public-dual-stack-dns-name` であるため、DNS ホスト名は `PublicDualStackDnsName` と同じです。

```
[
     {
          "DnsHostnameType": "public-dual-stack-dns-name",
          "PublicIpv4DnsName": "ec2-52-54-55-66.ap-southeast-2.compute.amazonaws.com",
          "PublicIpv6DnsName": "f5lnz-0khrm-nt2u3-gyqqt-nbdl5.ap-southeast-2.ip.aws",
          "PublicDualStackDnsName": "f5lnz-0khrm-nt2u3-gyqqt-nbdl5-q3cdpO.ap-southeast-2.ip.aws"
     }
]
```

------
#### [ PowerShell ]

**ネットワークインターフェイスのホスト名タイプと DNS 名を表示する方法**  
[Get-EC2NetworkInterface](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2NetworkInterface.html) コマンドレットを使用します。

```
(Get-EC2NetworkInterface `
    -NetworkInterfaceId eni-1234567890abcdef0).PublicIpDnsNameOptions
```

以下は出力の例です。ホスト名タイプが `public-dual-stack-dns-name` であるため、DNS ホスト名は `PublicDualStackDnsName` と同じです。

```
DnsHostnameType        : public-dual-stack-dns-name
PublicDualStackDnsName : f5lnz-0khrm-nt2u3-gyqqt-nbdl5-q3cdpO.ap-southeast-2.ip.aws
PublicIpv4DnsName      : ec2-52-54-55-66.ap-southeast-2.compute.amazonaws.com
PublicIpv6DnsName      : f5lnz-0khrm-nt2u3-gyqqt-nbdl5.ap-southeast-2.ip.aws
```

------

### パブリックホスト名タイプを変更する
<a name="modify-public-hostnames"></a>

パブリックホスト名タイプのオプションは、ネットワークインターフェイスに関連付けられた IP アドレスによって異なります。
+ ネットワークインターフェイスにパブリック IPv4 アドレスのみがある場合、ホスト名タイプは **IPv4 – IP ベースの名前**である必要があります。
+ ネットワークインターフェイスに IPv6 アドレスのみがある場合、ホスト名タイプは **IPv6 – IP ベースの名前**である必要があります。
+ ネットワークインターフェイスにパブリック IPv4 アドレスおよび IPv6 アドレスの両方がある場合、ホスト名タイプは**デュアルスタック – IP ベースの名前**である必要があります。

**前提条件**
+ ネットワークインターフェイスは、関連付けられたパブリック IPv4 アドレスまたは IPv6 アドレスが必要です。
+ ネットワークインターフェイスが存在する VPC には、EnableDnsHostnames および EnableDnsSupport が有効になっている必要があります。「*Amazon VPC ユーザーガイド*」の「[VPC の DNS 属性の表示と更新](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns-updating.html)」を参照してください。

------
#### [ Console ]

**パブリックホスト名タイプを変更する方法**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、[**Network Interfaces**] を選択してください。

1. 検索フィールドに、インスタンスの ID を入力します。ネットワークインターフェイスのチェックボックスをオンにします。

   または、インスタンスの詳細ページで **[ネットワーク]** タブを選択し、デバイスインデックス 0 のネットワークインターフェイスの ID を選択します。

1. **[アクション]** および **[パブリックホスト名タイプの変更]** を選択します。

1. 次のいずれかのオプションを選択します。
   + **デュアルスタック – IP ベースの名前**: ネットワークインターフェイスのデュアルスタックパブリックホスト名。VPC 内からのリクエストは、ネットワークインターフェイスのプライベート IPv4 アドレスと IPv6 グローバルユニキャストアドレスの両方に解決されます。インターネットからのリクエストは、ネットワークインターフェイスのパブリック IPv4 と IPv6 GUA アドレスの両方に解決されます。
   + **IPv4 – IP ベース名**: ネットワークインターフェイスの IPv4 対応パブリックホスト名。VPC 内からのリクエストは、ネットワークインターフェイスのプライベートプライマリ IPv4 アドレスに解決されます。インターネットからのリクエストは、ネットワークインターフェイスのパブリック IPv4 アドレスに解決されます。
   + **IPv6 – IP ベース名**: ネットワークインターフェイスの IPv6 対応パブリックホスト名。VPC 内またはインターネットからのリクエストは、ネットワークインターフェイスの IPv6 GUA に解決されます。

1. **[Modify]** (変更) を選択します。

------
#### [ AWS CLI ]

**パブリックホスト名タイプを変更する方法**  
[modify-public-ip-dns-name-options](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-public-ip-dns-name-options.html) コマンドを使用します。

```
aws ec2 modify-public-ip-dns-name-options \
    --network-interface-id eni-1234567890abcdef0 \
    --hostname-type public-dual-stack-dns-name
```

以下は出力の例です。

```
{
    "Successful": true
}
```

------
#### [ PowerShell ]

**パブリックホスト名タイプを変更する方法**  
[Edit-EC2PublicIpDnsNameOption](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2PublicIpDnsNameOption.html) コマンドレットを使用します。

```
Edit-EC2PublicIpDnsNameOption `
    -NetworkInterfaceId eni-1234567890abcdef0 `
    -HostNameType public-dual-stack-dns-name
```

------

## プライベートホスト名
<a name="ec2-instance-private-hostnames"></a>

このセクションでは、VPC サブネットでインスタンスを起動する際に使用できる Amazon EC2 インスタンスのプライベートホスト名について説明します。

ネットワーク上の EC2 インスタンスはプライベートホスト名によって区別されます。例えば、ネットワーク上の一部またはすべてのインスタンスと通信するスクリプトを実行する場合、インスタンスのプライベートホスト名を使用できます。

**Topics**
+ [プライベートホスト名タイプ](#instance-naming-types)
+ [リソース名と IP 名を検索する場所](#instance-naming-presence)
+ [リソース名と IP 名の選択](#instance-naming-choose)
+ [Amazon EC2 のリソースベースの命名オプションを変更する](#instance-naming-modify)

### プライベートホスト名タイプ
<a name="instance-naming-types"></a>

EC2 インスタンスが VPC で起動されるときのゲスト OS ホスト名には、次の 2 つのプライベートホスト名タイプがあります。
+ **[IP 名]**: 従来の命名スキームでは、インスタンスの起動時に、インスタンスの*プライベート IPv4 アドレス*がインスタンスのホスト名に含まれます。IP 名は EC2 インスタンスの存続中に存在します。プライベート DNS ホスト名として使用すると、プライベート IPv4 アドレス (A レコード) のみが返されます。
+ **[リソース名]**: インスタンスを起動すると、*EC2 インスタンス ID* がインスタンスのホスト名に含まれます。リソース名はEC2 インスタンスの存続中に存在します。プライベート DNS ホスト名として使用すると、プライベート IPv4 アドレス (A レコード) と IPv6 グローバルユニキャストアドレス (AAAA レコード) の両方を返すことができます。

EC2 インスタンスのゲスト OS ホスト名 のタイプはサブネット設定によって異なります。
+ インスタンスが IPv4 専用サブネットで起動された場合、IP 名またはリソース名を選択できます。
+ インスタンスがデュアルスタック (IPv4\$1IPv6) サブネットで起動されている場合、IP 名またはリソース名を選択できます。
+ インスタンスが IPv6 専用サブネットで起動された場合、リソース名が自動的に使用されます。

**Topics**
+ [IP 名](#instance-naming-ipbn)
+ [リソース名](#instance-naming-rbn)
+ [IP 名とリソース名の違い](#instance-naming-diff)

#### IP 名
<a name="instance-naming-ipbn"></a>

**[IP name]** (IP 名) の **[Hostname type]** (ホスト名タイプ) を使用して EC2 インスタンスを起動すると、ゲスト OS ホスト名がプライベート IPv4 アドレスを使用するように設定されます。
+ us-east-1 でのインスタンスのフォーマット: `private-ipv4-address.ec2.internal`
+ 例:`ip-10-24-34-0.ec2.internal`
+ その他の AWS リージョンのインスタンスのフォーマット: `private-ipv4-address.region.compute.internal`
+ 例:`ip-10-24-34-0.us-west-2.compute.internal`

#### リソース名
<a name="instance-naming-rbn"></a>

EC2 インスタンスを IPv6 専用サブネットで起動すると、**[Resource name]** (リソース名) の**[Hostname type]** (ホスト名タイプ) がデフォルトで選択されます。IPv4 専用またはデュアルスタック (IPv4\$1IPv6) サブネットでインスタンスを起動すると、**[Resource name]** (リソース名) は選択できるオプションです。インスタンスを起動してから、ホスト名設定を管理できます。詳細については、[Amazon EC2 のリソースベースの命名オプションを変更する](#instance-naming-modify)を参照してください。

**[Resource name]** (リソース名) の **[Hostname type]** (ホスト名タイプ) を使用して EC2 インスタンスを起動すると、ゲスト OS ホスト名が EC2 インスタンス ID を使用するように設定されます。
+ us-east-1 でのインスタンスのフォーマット: `ec2-instance-id.ec2.internal`
+ 例:`i-0123456789abcdef.ec2.internal`
+ その他の AWS リージョンのインスタンスのフォーマット: `ec2-instance-id.region.compute.internal`
+ 例:`i-0123456789abcdef.us-west-2.compute.internal`

#### IP 名とリソース名の違い
<a name="instance-naming-diff"></a>

IP 名とリソース名の両方の DNS クエリが共存して、下位互換性を確保し、ホスト名に対する IP ベースの命名 からリソースベースの命名に移行できます。IP 名に基づくプライベート DNS ホスト名の場合、インスタンスの DNS A レコードクエリに応答するかどうかを設定することはできません。DNS A レコードクエリは、ゲスト OS ホスト名の設定に関係なく、常に応答されます。対照的に、リソース名に基づくプライベート DNS ホスト名の場合、インスタンスの DNS A または DNS AAAA クエリに応答するかどうかを設定できます。インスタンスの起動時またはサブネットの変更時に、レスポンスの動作を設定します。詳細については、「[Amazon EC2 のリソースベースの命名オプションを変更する](#instance-naming-modify)」を参照してください。

### リソース名と IP 名を検索する場所
<a name="instance-naming-presence"></a>

Amazon EC2 コンソールでホスト名のタイプ、リソース名、および IP 名を確認できます。

**Topics**
+ [EC2 インスタンスを作成する場合](#instance-naming-presence-create)
+ [既存の EC2 インスタンスの詳細を表示する場合](#instance-naming-presence-view)

#### EC2 インスタンスを作成する場合
<a name="instance-naming-presence-create"></a>

EC2 インスタンスを作成する際、選択したサブネットのタイプに応じて、**[Resource name]** (リソース名) の **[Hostname type]** (ホスト名タイプ) が使用可能になるか、または選択されて変更できない場合があります。このセクションでは、ホスト名タイプのリソース名と IP 名が表示されるシナリオについて説明します。

##### シナリオ 1
<a name="instance-naming-presence-create-1"></a>

ウィザード ([コンソールのインスタンス起動ウィザードを使用して EC2 インスタンスを起動する](ec2-launch-instance-wizard.md)を参照) で EC2 インスタンスを作成し、詳細を設定するときに IPv6 専用に設定したサブネットを選択します。

この場合、**[Resource name]** (リソース名) の **[Hostname type]** (ホスト名タイプ) は自動的に選択され、変更できません。**[Enable IP name IPv4 (A record) DNS requests]** (IP 名 IPv4 (A レコード) DNS リクエストを有効にする) の **[DNS Hostname]** (DNS ホスト名) オプションと **[Enable resource-based IPv4 (A record) DNS requests]** (リソースベースの IPv4 (A レコード) DNS リクエストを有効にする) は自動的に選択解除され、変更できません。**[Enable resource-based IPv6 (AAAA record) DNS requests]** (リソースベースの IPv6 (AAAA レコード) DNS リクエストを有効にする) がデフォルトで選択されていますが、変更可能です。選択した場合、リソース名への DNS リクエストはこの EC2 インスタンスの IPv6 アドレス (AAAA レコード) に解決されます。

##### シナリオ 2
<a name="instance-naming-presence-create-2"></a>

ウィザード ([コンソールのインスタンス起動ウィザードを使用して EC2 インスタンスを起動する](ec2-launch-instance-wizard.md)を参照) で EC2 インスタンスを作成し、詳細を設定するときに、IPv4 CIDR ブロックまたは IPv4 と IPv6 の両方の CIDR ブロック (「デュアルスタック」) で構成されたサブネットを選択します。

この場合、**[Enable IP name IPV4 (A record) DNS requests]** (IP 名 IPV4 (A レコード) DNS リクエストを有効にする) は自動的に選択され、変更できません。つまり、IP 名へのリクエストは、この EC2 インスタンスの IPv4 アドレス (A レコード) に解決されます。

オプションはサブネットの設定にデフォルト設定されますが、サブネットの設定に応じてこのインスタンスのオプションを変更できます。
+ **[Hostname type]** (ホスト名タイプ): EC2 インスタンスのゲスト OS ホスト名をリソース名 をリソース名または IP 名にするかを決定します。デフォルト値は **[IP name]** (IP 名) です。
+ **[Enable resource-based IPv4 (A record) DNS requests]** (リソースベースの IPv4 (A レコード) DNS リクエストを有効にする): リソース名へのリクエストが、この EC2 インスタンスのプライベート IPv4 アドレス (A レコード) に解決されるかどうかを決定します。このオプションはデフォルトで選択されていません。
+ **[Enable resource-based IPv6 (AAAA record) DNS requests]** (リソースベースの IPv6 (AAAA レコード) DNS リクエストを有効にする): リソース名へのリクエストが、この EC2 インスタンスの IPv6 GUA アドレス (AAAA レコード) に解決するかどうかを決定します。このオプションはデフォルトで選択されていません。

#### 既存の EC2 インスタンスの詳細を表示する場合
<a name="instance-naming-presence-view"></a>

既存の EC2 インスタンスのホスト名の値は、EC2 インスタンスの **[Details]** (詳細) タブで確認できます。
+ **[Hostname type]** (ホスト名タイプ): IP 名またはリソース名形式のホスト名
+ **[Private IP DNS name (IPv4 only) ]** (プライベート IP DNS 名 (IPv4 専用) ): インスタンスのプライベート IPv4 アドレスに常に解決される IP 名
+ **[Private resource DNS name]** (プライベートリソース DNS 名): このインスタンス用に選択された DNS レコードに解決されるリソース名
+ **[Answer private resource DNS name]** (プライベートリソース DNS 名に応答する): リソース名は IPv4 (A)、IPv6 (AAAA)、または IPv4 と IPv6 (A と AAAA) の DNS レコードに解決されます。

さらに、SSH 経由で直接 EC2 インスタンスに接続して、`hostname`コマンドを入力すると、ホスト名が IP 名またはリソース名形式で表示されます。

### リソース名と IP 名の選択
<a name="instance-naming-choose"></a>

EC2 インスタンス ([コンソールのインスタンス起動ウィザードを使用して EC2 インスタンスを起動する](ec2-launch-instance-wizard.md)を参照) を起動する際に **[Resource name]** (リソース名) の **[Hostname type]** (ホスト名) を選んだ場合、EC2 インスタンスはリソース名形式のホスト名を使用して起動します。このような場合、この EC2 インスタンスの DNS レコードはリソース名を指すこともあります。これにより、そのホスト名はインスタンスの IPv4 アドレス、IPv6 アドレス、または IPv4 アドレスと IPv6 アドレスの両方に解決されるように選択する柔軟さを実現します。今後 IPv6 を使用する予定がある場合、あるいは現在デュアルスタックのサブネットを使用している場合、**[Resource name]** (リソース名) の **[Hostname type]** (ホスト名タイプ) の使用により、DNS レコード自体に変更を加えることなく、インスタンスのホスト名の DNS 解決を変更できます。リソース名を使用すると、EC2 インスタンスで IPv4 および IPv6 DNS リゾリューションを追加して削除できます。

代わりに **[IP name]** (IP 名) の **[Hostname type]** (ホスト名タイプ) を選択し、DNS ホスト名として使用する場合、インスタンスの IPv4 アドレスにのみ解決されます。インスタンスに IPv4 アドレスと IPv6 アドレスの両方が関連付けられている場合でも、インスタンスの IPv6 アドレスには解決されません。

### Amazon EC2 のリソースベースの命名オプションを変更する
<a name="instance-naming-modify"></a>

サブネットのホスト名タイプと DNS ホスト名の設定を変更する (そのサブジェクトの後続のすべてのインスタンス起動に影響を与えます) か、EC2 インスタンスの起動後にそのインスタンスの設定を変更することができます。

**リソースベースの命名オプション**
+ **[ホスト名のタイプ]**: サブネットで起動される EC2 インスタンスのゲスト OS ホスト名のデフォルト設定を決定します。これは、リソース名または IP 名です。
+ **[DNS ホスト名 IPv4 (A レコード) リクエストを有効にする]**: リソース名への DNS リクエスト/クエリがこの EC2 インスタンスのプライベート IPv4 アドレス (A レコード) に解決されるかどうかを決定します。
+ **[DNS ホスト名 IPv6 (AAAA レコード) リクエストを有効にする]**: リソース名への DNS リクエスト/クエリがこの EC2 インスタンスの IPv6 アドレス (AAAA レコード) に解決されるかどうかを決定します。

#### サブネット
<a name="instance-naming-modify-subnets"></a>

サブネット設定を変更しても、サブネットですでに起動されている EC2 インスタンスの設定は変更されません。

------
#### [ Console ]

**サブネットのオプションを変更するには**  
Amazon VPC コンソールを開き、サブネットを選択します。**[アクション]**、**[サブネットの設定を編集]** の順に選択します。必要に応じて設定を変更し、変更を保存します。

------
#### [ AWS CLI ]

**サブネットのオプションを変更するには**  
[modify-subnet-attribute](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-subnet-attribute.html) コマンドを使用します。

```
aws ec2 modify-subnet-attribute \
    --subnet-id subnet-0abcdef1234567890 \
    --private-dns-hostname-type-on-launch resource-name \
    --enable-resource-name-dns-a-record-on-launch \
    --enable-resource-name-dns-aaaa-record-on-launch
```

------
#### [ PowerShell ]

**サブネットのオプションを変更するには**  
[Edit-EC2SubnetAttribute](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2SubnetAttribute.html) コマンドレットを使用します。

```
Edit-EC2SubnetAttribute `
    -SubnetId subnet-0abcdef1234567890 `
    -PrivateDnsHostnameTypeOnLaunch ResourceName `
    -EnableResourceNameDnsAAAARecordOnLaunch $true `
    -EnableResourceNameDnsARecordOnLaunch $true
```

------

#### EC2 インスタンス
<a name="instance-naming-modify-instances"></a>

**考慮事項**
+ ホスト名タイプを変更するには、まずインスタンスを停止する必要があります。他の 2 つのオプションを変更するためにインスタンスを停止する必要はありません。
+ インスタンスストアのルートボリュームを持つインスタンスを停止することはできないため、インスタンスの起動時にのみホスト名タイプと DNS ホスト名のオプションを設定できます。インスタンスストアのルートボリュームをサポートするインスタンスタイプは、C1、C3、D2、I2、M1、M2、M3、R3、X1 のみです。

------
#### [ Console ]

**インスタンスのホスト名タイプと DNS ホスト名のオプションを変更するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. **[Use resource based naming as guest OS hostname]** (リソースベース命名をゲスト OS ホスト名として使用) の設定を変更する場合、まず EC2 インスタンスを停止してください。それ以外の場合は、この手順をスキップしてください。

   インスタンスを停止し、インスタンスを選択後、**[Instance state]** (インスタンスの状態)、**[Stop instance]** (インスタンスの停止) の順にクリックします。

1. インスタンスを選択し、そして **[Actions]** (アクション)、**[Instance settings]** (インスタンス設定)、**[Change resource based naming options]** (リソースベースの命名オプションの変更) を選択します。
   + **[Use resource based naming as guest OS hostname]** (リソースベース命名をゲスト OS ホスト名として使用)：EC2 インスタンスのゲスト OS ホスト名をリソース名または IP 名にするかを決定します。
   + **[Answer DNS hostname IPv4 (A record) requests]** (DNS ホスト名 IPv4 (A レコード) リクエストに応答する): リソース名への DNS リクエスト/クエリがこの EC2 インスタンスのプライベート IPv4 アドレスに解決されるかどうかを決定します。
   + **[Answer DNS hostname IPv6 (AAAA record) requests]** (DNS ホスト名 IPv6 (AAAA レコード) 要求に応答する): リソース名への DNS リクエスト/クエリがこの EC2 インスタンスの IPv6 アドレス (AAAA レコード) に解決されるかどうかを決定します。

1. **[保存]** を選択します。

1. インスタンスを停止した後は、インスタンスを再起動します。

------
#### [ AWS CLI ]

**インスタンスのホスト名タイプと DNS ホスト名のオプションを変更するには**  
[modify-private-dns-name-options](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-private-dns-name-options.html) コマンドを使用します。

```
aws ec2 modify-private-dns-name-options \
    --instance-id i-1234567890abcdef0 \
    --private-dns-hostname-type resource-name \
    --enable-resource-name-dns-a-record \
    --enable-resource-name-dns-aaaa-record
```

------
#### [ PowerShell ]

**インスタンスのホスト名タイプと DNS ホスト名のオプションを変更するには**  
[Edit-EC2PrivateDnsNameOption](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2PrivateDnsNameOption.html) コマンドレットを使用します。

```
Edit-EC2PrivateDnsNameOption `
    -InstanceId i-1234567890abcdef0 `
    -PrivateDnsHostnameType ResourceName `
    -EnableResourceNameDnsAAAARecord $true`
    -EnableResourceNameDnsARecord $true
```

------

# Amazon EC2 に自分の IP アドレスを持ち込む (BYOIP)
<a name="ec2-byoip"></a>

オンプレミスのネットワークから、パブリックにルーティング可能な IPv4 または IPv6 アドレス範囲の一部または全部を AWS アカウントに持ち込むことができます。アドレス範囲は引き続き管理でき、AWS を通じてインターネット上でアドレス範囲をアドバタイズできます。アドレス範囲を Amazon EC2 に持ち込むと、そのアドレス範囲がアドレスプールとして AWS アカウントに表示されます。

**注記**  
このドキュメントでは自分の IP アドレス範囲を Amazon EC2 でのみ使用するために持ち込む方法について説明します。AWS Global Acceleratorで使用するために独自の IP アドレス範囲を使用するには「AWS Global Accelerator デベロッパーガイド」の「[独自 IP アドレス (BYOIP) の使用](https://docs.aws.amazon.com/global-accelerator/latest/dg/using-byoip.html)」を参照してください。Amazon VPC IP Address Manager で使用する独自の IP アドレス範囲を導入するには「Amazon VPC IPAM ユーザーガイド」の「[チュートリアル: BYOIP アドレス CIDR を IPAM へ](https://docs.aws.amazon.com/vpc/latest/ipam/tutorials-byoip-ipam.html)」を参照してください。

IP アドレス範囲を AWS に設定すると、AWS は IP アドレス範囲がユーザーによって制御されていることを検証します。範囲を制御していることを示すためには次の 2 つの方法を使用できます。
+ IP アドレス範囲が RDAP をサポートするインターネットレジストリ (ARIN、RIPE、APNIC など) に登録されている場合、このページのプロセスを使用して X.509 証明書でドメインの制御を確認できます。証明書はプロビジョニングプロセスの間のみ有効である必要があります。プロビジョニングが完了したら、RIR の記録から証明書を削除できます。
+ インターネットレジストリが RDAP をサポートしているかどうかにかかわらず、Amazon VPC IPAM を使用すると DNS TXT レコードでドメインの制御を確認できます。このプロセスについては「Amazon VPC IPAM ユーザーガイド」の「[チュートリアル: IP アドレスを IPAM に移行する](https://docs.aws.amazon.com/vpc/latest/ipam/tutorials-byoip-ipam.html)」を参照してください。

詳細についてはAWS オンラインテックトークの[自分の IP アドレス使用の詳細](https://pages.awscloud.com/Deep-Dive-on-Bring-Your-Own-IP_1024-NET_OD.html)を参照してください。

**Topics**
+ [BYOIP の定義](#byoip-definitions)
+ [要件とクォータ](#byoip-requirements)
+ [リージョナルな可用性](#byoip-reg-avail)
+ [Local Zone の可用性](#byoip-zone-avail)
+ [前提条件](prepare-for-byoip.md)
+ [アドレス範囲をオンボードする](byoip-onboard.md)
+ [アドレス範囲を使用する](byoip-working-with.md)

## BYOIP の定義
<a name="byoip-definitions"></a>
+ **X.509 自己署名証明書** — ネットワーク内のデータを暗号化および認証するために最も一般的に使用される証明書標準。これはRDAP レコードからの IP スペースの制御を検証するために AWS によって使用される証明書です。X.509 証明書の詳細については「[RFC 3280](https://datatracker.ietf.org/doc/html/rfc3280)」を参照してください。
+ **AS 番号 (ASN)** — 明確に定義された単一のルーティングポリシーを維持する 1 つ以上のネットワークオペレーターによって実行される IP プレフィックスのグループを定義するグローバル一意識別子。
+ **地域インターネットレジストリ (RIR)** — 世界のある地域内の IP アドレスと ASN の割り当てと登録を管理する組織。
+ **レジストリデータアクセスプロトコル (RDAP)** — RIR 内の現在の登録データを照会する、読み取り専用プロトコルです。クエリされた RIR データベース内のエントリは「RDAP レコード」と呼ばれます。特定のレコードタイプはRIR が提供するメカニズムを使用して顧客により更新される必要があります。これらのレコードはRIR 内のアドレス空間の制御を確認するために AWS によりクエリされます。
+ **Route Origin Authorization (ROA)** — お客様が特定の自律システムで IP アドバタイズメントを認証するために RIR によって作成されたオブジェクト。概要についてはARIN ウェブサイトの「[Route Origin Authorizations (ROAs)](https://www.arin.net/resources/manage/rpki/roa_request/)」(ルートオリジン認証 (ROA)) を参照してください。
+ **ローカルインターネットレジストリ (LIR)** — RIR からの IP アドレスのブロックをお客様に割り当てるインターネットサービスプロバイダーなどの組織。

## 要件とクォータ
<a name="byoip-requirements"></a>
+ アドレス範囲は地域インターネットレジストリ (RIR) に登録する必要があります。地理的リージョンに関するポリシーについてはRIR を参照してください。BYOIP は現在、American Registry for Internet Numbers (ARIN)、Réseaux IP Européens Network Coordination Centre (RIPE) または Asia-Pacific Network Information Centre (APNIC) への登録をサポートしています。アドレス範囲は事業体または機関エンティティについて登録を受ける必要があり、個人については登録を受けられない場合があります。
+ 取得できる最も具体的な IPv4 アドレス範囲は /24 です。
+ 提供できる最も具体的な IPv6 アドレス範囲はパブリックにアドバタイズ可能な CIDR の場合は /48、[パブリックにアドバタイズ可能でない](byoip-onboard.md#byoip-provision-non-public) CIDR の場合は /60 です。
+ ROA はパブリックにアドバタイズ可能でない CIDR 範囲には必要ありませんが、RDAP レコードは更新する必要があります。
+ 各アドレス範囲は一度に 1 つの AWS リージョンで使用できます。
+ AWS リージョンごとに合計 5 つの BYOIP IPv4 および IPv6 アドレス範囲を AWS アカウントに取り込むことができます。Service Quotas コンソールを使用して BYOIP CIDR のクォータを調整することはできませんが、「*AWS 全般のリファレンス*」の「[AWS サービスクォータ](https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html)」で説明されているように、AWS サポートセンターに連絡してクォータの引き上げをリクエストすることはできます。
+ Amazon VPC IP Address Manager (IPAM) を使用し、IPAM と AWS RAM Organizationsを統合しない限り、AWS を使用する他のアカウントとIPアドレス範囲を共有することはできません。詳細については*Amazon VPC IP アドレス管理ユーザーガイド*の[AWS Organizations と IPAM を統合する](https://docs.aws.amazon.com/vpc/latest/ipam/enable-integ-ipam.html)を参照してください。
+ IP アドレス範囲内のアドレスには消去履歴が含まれている必要があります。弊社はIP アドレス範囲に評価が低いまたは悪意のある挙動に関連付けられている IP アドレスが含まれている場合、当該範囲の評価を調査したり、当該範囲を拒否する権利を留保したりすることがあります。
+ レガシーアドレススペース、つまり Regional Internet Registry (RIR) システムの形成前に Internet Assigned Numbers Authority's (IANA) の中央レジストリによって配布された IPv4 アドレススペースには引き続き対応する ROA オブジェクトが必要です。
+ LIR では手動プロセスを使用してレコードを更新するのが一般的です。LIR によってはデプロイに数日かかることがあります。
+ 大規模な CIDR ブロックには単一の ROA オブジェクトと RDP レコードが必要です。単一のオブジェクトとレコードを使用して、その範囲から AWS まで (複数の AWS リージョンにまたがることもできます) 複数の小さな CIDR ブロックを使用できます。
+ BYOIP はWavelength Zones または AWS Outposts ではサポートされていません。
+ RADb やその他の IRR の BYOIP を手動で変更しないでください。BYOIP は RADb を自動的に更新します。BYOIP ASN を含む手動変更を行うと、BYOIP プロビジョニング操作が失敗します。
+ IPv4 アドレス範囲を AWS に設定すると、最初のアドレス (ネットワークアドレス) と最後のアドレス (ブロードキャストアドレス) を含む、範囲内のすべての IP アドレスを使用できます。

## リージョナルな可用性
<a name="byoip-reg-avail"></a>

BYOIP 機能は現在、[AWS中国リージョンを除くすべての商用リージョンで利用できます](https://aws.amazon.com//about-aws/global-infrastructure/regions_az/)。

## Local Zone の可用性
<a name="byoip-zone-avail"></a>

[Local Zone](https://docs.aws.amazon.com/local-zones/latest/ug/how-local-zones-work.html) は地理的にユーザーに近い場所に位置する AWS リージョンを拡張したものです。Local Zones は「ネットワークボーダーグループ」にグループ化されます。AWS で、ネットワークボーダーグループはAWS がパブリック IP アドレスをアドバタイズするアベイラビリティーゾーン (AZ)、Local Zones、Wavelength Zones のコレクションです。Local Zones はAWS ネットワークとこれらのゾーンのリソースにアクセスするお客様との間のレイテンシーや物理的距離を最小限に抑えるために、AWS リージョン内の AZ とは異なるネットワークボーダーグループを持つ場合があります。

`--network-border-group` オプションを使用すると、以下の Local Zone ネットワークボーダーグループに BYOIPv4 アドレス範囲をプロビジョニングしてアドバタイズできます。
+ af-south-1-los-1
+ ap-northeast-1-tpe-1
+ ap-south-1-ccu-1
+ ap-south-1-del-1
+ ap-southeast-1-bkk-1
+ ap-southeast-1-mnl-1
+ ap-southeast-2-akl-1
+ ap-southeast-2-per-1
+ eu-central-1-ham-1
+ eu-central-1-waw-1
+ eu-north-1-cph-1
+ eu-north-1-hel-1
+ me-south-1-mct-1
+ us-east-1-atl-2
+ us-east-1-bos-1
+ us-east-1-bue-1
+ us-east-1-chi-2
+ us-east-1-dfw-2
+ us-east-1-iah-2
+ us-east-1-lim-1
+ us-east-1-mci-1
+ us-east-1-mia-2
+ us-east-1-msp-1
+ us-east-1-nyc-1
+ us-east-1-nyc-2
+ us-east-1-phl-1
+ us-east-1-qro-1
+ us-east-1-scl-1
+ us-west-2-den-1
+ us-west-2-hnl-1
+ us-west-2-las-1
+ us-west-2-lax-1
+ us-west-2-pdx-1
+ us-west-2-phx-2
+ us-west-2-sea-1

Local Zones を有効にしている場合 (「[Enable a Local Zone](https://docs.aws.amazon.com/local-zones/latest/ug/getting-started.html#getting-started-find-local-zone)」を参照)、BYOIPv4 CIDR のプロビジョニングとアドバタイズをするときにネットワークボーダーグループを選択できます。EIP とそれが関連付けられている AWS リソースは同じネットワークボーダーグループに属している必要があるため、ネットワークボーダーグループは慎重に選択してください。

**注記**  
現時点ではLocal Zones で BYOIPv6 アドレス範囲をプロビジョニングまたはアドバタイズすることはできません。

# Amazon EC2 で BYOIP を使用するための前提条件
<a name="prepare-for-byoip"></a>

BYOIP のオンボーディングプロセスには 2 つのフェーズがあり、そのためには 3 つのステップを実行する必要があります。これらの手順は次の図に示す手順に対応しています。このドキュメントには手動のステップが含まれていますが、RIR はこれらのステップをサポートするマネージドサービスを提供している場合があります。

**ヒント**  
このセクションのタスクには Linux ターミナルが必要で、Linux、[AWS CloudShell](https://docs.aws.amazon.com/cloudshell/latest/userguide/welcome.html)、または [Windows Subsystem for Linux](https://learn.microsoft.com/en-us/windows/wsl/about) を使用して実行できます。

**Topics**
+ [概要:](#byoip-onboarding-overview)
+ [プライベートキーを作成し、X.509 証明書を生成します。](#byoip-certificate)
+ [X.509 証明書を RIR の RDAP レコードにアップロードする](#byoip-add-certificate)
+ [RIR に ROA オブジェクトを作成する](#byoip-create-roa-object)

## 概要:
<a name="byoip-onboarding-overview"></a>

**準備フェーズ**  
[1] [プライベートキーを作成](#byoip-certificate)し、それを使用して認証のための自己署名 X.509 証明書を生成します。この証明書はプロビジョニング段階でのみ使用されます。プロビジョニングが完了したら、RIR の記録から証明書を削除できます。

**RIR 設定フェーズ**

[2] RDAP レコードのコメントに[自己署名証明書をアップロード](#byoip-add-certificate)します。

[3] RIR に [ROA オブジェクトを作成](#byoip-create-roa-object)します。ROA は目的のアドレス範囲、アドレス範囲のアドバタイズを許可する自律システム番号 (ASN)、および RIR の Resource Public Key Infrastructure (RPKI) に登録する有効期限を定義します。

**注記**  
パブリックにアドバタイズ可能でない IPv6 アドレス空間にはROA は必要ありません。

![\[BYOIP をオンボーディングするための 3 段階プロセス。\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/byoip-preonboarding.png)


複数のアドレス範囲を使用する場合はそれぞれの不連続のアドレス範囲に対し、このプロセスを繰り返します。ただし、連続したブロックを複数の異なる AWS リージョンに分割する場合は準備の手順と RIR 設定手順を繰り返す必要はありません。

新しくアドレス範囲を追加しても、以前に追加済みのアドレス範囲には影響を与えません。

## プライベートキーを作成し、X.509 証明書を生成します。
<a name="byoip-certificate"></a>

次の手順を使用して、自己署名 X509 証明書を作成し、RIR の RDAP レコードに追加します。RIR を使用してアドレス範囲を認証するにはこのキーペアを使用します。**openssl** コマンドにはOpenSSL バージョン 1.0.2 以降が必要です。

次のコマンドをコピーし、プレースホルダー値 (色付きの斜体テキスト) のみを置換します。

この手順ではプライベート RSA キーを暗号化し、アクセスするためにパスフレーズを要求するベストプラクティスに従います。

1. 以下に示すように RSA 2048 ビットのプライベートキーを生成します。

   ```
   $ openssl genpkey -aes256 -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out private-key.pem
   ```

   `-aes256` パラメータはプライベートキーの暗号化に使用されるアルゴリズムを指定します。コマンドの出力は次の通りです。これにはパスフレーズを設定するためのプロンプトが含まれます。

   ```
   ......+++
   .+++
   Enter PEM pass phrase: xxxxxxx
   Verifying - Enter PEM pass phrase: xxxxxxx
   ```

   次のコマンドを使用して、キーを検査します。

   ```
   $ openssl pkey -in private-key.pem -text
   ```

   これは次のようなパスフレーズプロンプトとキーの内容を返します。

   ```
   Enter pass phrase for private-key.pem: xxxxxxx
   -----BEGIN PRIVATE KEY-----
   MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDFBXHRI4HVKAhh
   3seiciooizCRTbJe1+YsxNTja4XyKypVGIFWDGhZs44FCHlPOOSVJ+NqP74w96oM
   7DPS3xo9kaQyZBFn2YEp2EBq5vf307KHNRmZZUmkn0zHOSEpNmY2fMxISBxewlxR
   FAniwmSd/8TDvHJMY9FvAIvWuTsv5l0tJKk+a91K4+tO3UdDR7Sno5WXExfsBrW3
   g1ydo3TBsx8i5/YiVOcNApy7ge2/FiwY3aCXJB6r6nuF6H8mRgI4r4vkMRsOlAhJ
   DnZPNeweboo+K3Q3lwbgbmOKD/z9svk8N/+hUTBtIX0fRtbG+PLIw3xWRHGrMSn2
   BzsPVuDLAgMBAAECggEACiJUj2hfJkKv47Dc3es3Zex67A5uDVjXmxfox2Xhdupn
   fAcNqAptV6fXt0SPUNbhUxbBKNbshoJGufFwXPli1SXnpzvkdU4Hyco4zgbhXFsE
   RNYjYfOGzTPwdBLpNMB6k3Tp4RHse6dNrlH0jDhpioL8cQEBdBJyVF5X0wymEbmV
   mC0jgH/MxsBAPWW6ZKicg9ULMlWiAZ3MRAZPjHHgpYkAAsUWKAbCBwVQcVjGO59W
   jfZjzTX5pQtVVH68ruciH88DTZCwjCkjBhxg+OIkJBLE5wkh82jIHSivZ63flwLw
   z+E0+HhELSZJrn2MY6Jxmik3qNNUOF/Z+3msdj2luQKBgQDjwlC/3jxp8zJy6P8o
   JQKv7TdvMwUj4VSWOHZBHLv4evJaaia0uQjIo1UDa8AYitqhX1NmCCehGH8yuXj/
   v6V3CzMKDkmRr1NrONnSz5QsndQ04Z6ihAQlPmJ96g4wKtgoC7AYpyP0g1a+4/sj
   b1+o3YQI4pD/F71c+qaztH7PRwKBgQDdc23yNmT3+Jyptf0fKjEvONK+xwUKzi9c
   L/OzBq5yOIC1Pz2T85gOe1i8kwZws+xlpG6uBT6lmIJELd0k59FyupNu4dPvX5SD
   6GGqdx4jk9KvI74usGeOBohmF0phTHkrWKBxXiyT0oS8zjnJlEn8ysIpGgO28jjr
   LpaHNZ/MXQKBgQDfLNcnS0LzpsS2aK0tzyZU8SMyqVHOGMxj7quhneBq2T6FbiLD
   T9TVlYaGNZ0j71vQaLI19qOubWymbautH0Op5KV8owdf4+bf1/NJaPIOzhDUSIjD
   Qo01WW31Z9XDSRhKFTnWzmCjBdeIcajyzf10YKsycaAW9lItu8aBrMndnQKBgQDb
   nNp/JyRwqjOrNljk7DHEs+SD39kHQzzCfqd+dnTPv2sc06+cpym3yulQcbokULpy
   fmRo3bin/pvJQ3aZX/Bdh9woTXqhXDdrrSwWInVYMQPyPk8f/D9mIOJp5FUWMwHD
   U+whIZSxsEeE+jtixlWtheKRYkQmzQZXbWdIhYyI3QKBgD+F/6wcZ85QW8nAUykA
   3WrSIx/3cwDGdm4NRGct8ZOZjTHjiy9ojMOD1L7iMhRQ/3k3hUsin5LDMp/ryWGG
   x4uIaLat40kiC7T4I66DM7P59euqdz3w0PD+VU+h7GSivvsFDdySUt7bNK0AUVLh
   dMJfWxDN8QV0b5p3WuWH1U8B
   -----END PRIVATE KEY-----
   Private-Key: (2048 bit)
   modulus:
       00:c5:05:71:d1:23:81:d5:28:08:61:de:c7:a2:72:
       2a:28:8b:30:91:4d:b2:5e:d7:e6:2c:c4:d4:e3:6b:
       85:f2:2b:2a:55:18:81:56:0c:68:59:b3:8e:05:08:
       79:4f:38:e4:95:27:e3:6a:3f:be:30:f7:aa:0c:ec:
       33:d2:df:1a:3d:91:a4:32:64:11:67:d9:81:29:d8:
       40:6a:e6:f7:f7:d3:b2:87:35:19:99:65:49:a4:9f:
       4c:c7:39:21:29:36:66:36:7c:cc:48:48:1c:5e:c2:
       5c:51:14:09:e2:c2:64:9d:ff:c4:c3:bc:72:4c:63:
       d1:6f:00:8b:d6:b9:3b:2f:e6:5d:2d:24:a9:3e:6b:
       dd:4a:e3:eb:4e:dd:47:43:47:b4:a7:a3:95:97:13:
       17:ec:06:b5:b7:83:5c:9d:a3:74:c1:b3:1f:22:e7:
       f6:22:54:e7:0d:02:9c:bb:81:ed:bf:16:2c:18:dd:
       a0:97:24:1e:ab:ea:7b:85:e8:7f:26:46:02:38:af:
       8b:e4:31:1b:0e:94:08:49:0e:76:4f:35:ec:1e:6e:
       8a:3e:2b:74:37:97:06:e0:6e:63:8a:0f:fc:fd:b2:
       f9:3c:37:ff:a1:51:30:6d:21:7d:1f:46:d6:c6:f8:
       f2:c8:c3:7c:56:44:71:ab:31:29:f6:07:3b:0f:56:
       e0:cb
   publicExponent: 65537 (0x10001)
   privateExponent:
       0a:22:54:8f:68:5f:26:42:af:e3:b0:dc:dd:eb:37:
       65:ec:7a:ec:0e:6e:0d:58:d7:9b:17:e8:c7:65:e1:
       76:ea:67:7c:07:0d:a8:0a:6d:57:a7:d7:b7:44:8f:
       50:d6:e1:53:16:c1:28:d6:ec:86:82:46:b9:f1:70:
       5c:f9:62:d5:25:e7:a7:3b:e4:75:4e:07:c9:ca:38:
       ce:06:e1:5c:5b:04:44:d6:23:61:f3:86:cd:33:f0:
       74:12:e9:34:c0:7a:93:74:e9:e1:11:ec:7b:a7:4d:
       ae:51:f4:8c:38:69:8a:82:fc:71:01:01:74:12:72:
       54:5e:57:d3:0c:a6:11:b9:95:98:2d:23:80:7f:cc:
       c6:c0:40:3d:65:ba:64:a8:9c:83:d5:0b:32:55:a2:
       01:9d:cc:44:06:4f:8c:71:e0:a5:89:00:02:c5:16:
       28:06:c2:07:05:50:71:58:c6:3b:9f:56:8d:f6:63:
       cd:35:f9:a5:0b:55:54:7e:bc:ae:e7:22:1f:cf:03:
       4d:90:b0:8c:29:23:06:1c:60:f8:e2:24:24:12:c4:
       e7:09:21:f3:68:c8:1d:28:af:67:ad:df:97:02:f0:
       cf:e1:34:f8:78:44:2d:26:49:ae:7d:8c:63:a2:71:
       9a:29:37:a8:d3:54:38:5f:d9:fb:79:ac:76:3d:a5:
       b9
   prime1:
       00:e3:c2:50:bf:de:3c:69:f3:32:72:e8:ff:28:25:
       02:af:ed:37:6f:33:05:23:e1:54:96:38:76:41:1c:
       bb:f8:7a:f2:5a:6a:26:b4:b9:08:c8:a3:55:03:6b:
       c0:18:8a:da:a1:5f:53:66:08:27:a1:18:7f:32:b9:
       78:ff:bf:a5:77:0b:33:0a:0e:49:91:af:53:6b:38:
       d9:d2:cf:94:2c:9d:d4:34:e1:9e:a2:84:04:25:3e:
       62:7d:ea:0e:30:2a:d8:28:0b:b0:18:a7:23:f4:83:
       56:be:e3:fb:23:6f:5f:a8:dd:84:08:e2:90:ff:17:
       bd:5c:fa:a6:b3:b4:7e:cf:47
   prime2:
       00:dd:73:6d:f2:36:64:f7:f8:9c:a9:b5:fd:1f:2a:
       31:2f:38:d2:be:c7:05:0a:ce:2f:5c:2f:f3:b3:06:
       ae:72:38:80:b5:3f:3d:93:f3:98:0e:7b:58:bc:93:
       06:70:b3:ec:65:a4:6e:ae:05:3e:a5:98:82:44:2d:
       dd:24:e7:d1:72:ba:93:6e:e1:d3:ef:5f:94:83:e8:
       61:aa:77:1e:23:93:d2:af:23:be:2e:b0:67:8e:06:
       88:66:17:4a:61:4c:79:2b:58:a0:71:5e:2c:93:d2:
       84:bc:ce:39:c9:94:49:fc:ca:c2:29:1a:03:b6:f2:
       38:eb:2e:96:87:35:9f:cc:5d
   exponent1:
       00:df:2c:d7:27:4b:42:f3:a6:c4:b6:68:ad:2d:cf:
       26:54:f1:23:32:a9:51:ce:18:cc:63:ee:ab:a1:9d:
       e0:6a:d9:3e:85:6e:22:c3:4f:d4:d5:95:86:86:35:
       9d:23:ef:5b:d0:68:b2:35:f6:a3:ae:6d:6c:a6:6d:
       ab:ad:1f:43:a9:e4:a5:7c:a3:07:5f:e3:e6:df:d7:
       f3:49:68:f2:0e:ce:10:d4:48:88:c3:42:8d:35:59:
       6d:f5:67:d5:c3:49:18:4a:15:39:d6:ce:60:a3:05:
       d7:88:71:a8:f2:cd:fd:74:60:ab:32:71:a0:16:f6:
       52:2d:bb:c6:81:ac:c9:dd:9d
   exponent2:
       00:db:9c:da:7f:27:24:70:aa:33:ab:36:58:e4:ec:
       31:c4:b3:e4:83:df:d9:07:43:3c:c2:7e:a7:7e:76:
       74:cf:bf:6b:1c:d3:af:9c:a7:29:b7:ca:e9:50:71:
       ba:24:50:ba:72:7e:64:68:dd:b8:a7:fe:9b:c9:43:
       76:99:5f:f0:5d:87:dc:28:4d:7a:a1:5c:37:6b:ad:
       2c:16:22:75:58:31:03:f2:3e:4f:1f:fc:3f:66:20:
       e2:69:e4:55:16:33:01:c3:53:ec:21:21:94:b1:b0:
       47:84:fa:3b:62:c6:55:ad:85:e2:91:62:44:26:cd:
       06:57:6d:67:48:85:8c:88:dd
   coefficient:
       3f:85:ff:ac:1c:67:ce:50:5b:c9:c0:53:29:00:dd:
       6a:d2:23:1f:f7:73:00:c6:76:6e:0d:44:67:2d:f1:
       93:99:8d:31:e3:8b:2f:68:8c:c3:83:d4:be:e2:32:
       14:50:ff:79:37:85:4b:22:9f:92:c3:32:9f:eb:c9:
       61:86:c7:8b:88:68:b6:ad:e3:49:22:0b:b4:f8:23:
       ae:83:33:b3:f9:f5:eb:aa:77:3d:f0:d0:f0:fe:55:
       4f:a1:ec:64:a2:be:fb:05:0d:dc:92:52:de:db:34:
       ad:00:51:52:e1:74:c2:5f:5b:10:cd:f1:05:74:6f:
       9a:77:5a:e5:87:d5:4f:01
   ```

   プライベートキーは使用しないときは安全な場所に保管してください。

1. 以前のステップで作成したプライベートキーを使用して、X.509 証明書を生成します。この例では証明書は 365 日で期限切れになり、それ以降は信頼されません。有効期限は適切に設定してください。証明書はプロビジョニングプロセスの間のみ有効である必要があります。プロビジョニングが完了したら、RIR の記録から証明書を削除できます。`tr -d "\n"` コマンドは出力から改行文字 (改行) を削除します。プロンプトが表示されたら、共通名を指定する必要がありますが、その他のフィールドは空白のままにしておくことができます。

   ```
   $ openssl req -new -x509 -key private-key.pem -days 365 | tr -d "\n" > certificate.pem
   ```

   この結果、次のような出力が得られます。

   ```
   Enter pass phrase for private-key.pem: xxxxxxx
   You are about to be asked to enter information that will be incorporated
   into your certificate request.
   What you are about to enter is what is called a Distinguished Name or a DN.
   There are quite a few fields but you can leave some blank
   For some fields there will be a default value,
   If you enter '.', the field will be left blank.
   -----
   Country Name (2 letter code) []:
   State or Province Name (full name) []:
   Locality Name (eg, city) []:
   Organization Name (eg, company) []:
   Organizational Unit Name (eg, section) []:
   Common Name (eg, fully qualified host name) []:example.com
   Email Address []:
   ```
**注記**  
AWS プロビジョニングには共通名は必要ありません。内部ドメイン名またはパブリックドメイン名は任意です。

   次のコマンドを使用して、証明書を取得できます。

   ```
   $ cat certificate.pem
   ```

   出力は改行のない長い PEM エンコード文字列で、先頭が `-----BEGIN CERTIFICATE-----` で、その後に `-----END CERTIFICATE-----` が続きます。

## X.509 証明書を RIR の RDAP レコードにアップロードする
<a name="byoip-add-certificate"></a>

以前に作成した証明書を、RIR の RDAP レコードに追加します。エンコードされた部分の前後の `-----BEGIN CERTIFICATE-----` および `-----END CERTIFICATE-----` 文字列を、必ず含めます。このコンテンツはすべて、長い 1 行にする必要があります。RDAP を更新する手順はご使用の RIR によって異なります。
+ ARIN の場合は[Account Manager ポータル](https://account.arin.net/public/secure/dashboard)を使用して、アドレス範囲を表す「ネットワーク情報」オブジェクトの「パブリックコメント」セクションに証明書を追加してください。組織の [comments] セクションには追加しないでください。
+ RIPE の場合は証明書を新しい「descr」フィールドとして、アドレス範囲を表す「inetnum」または「inet6num」オブジェクトに追加します。これらは通常、[RIPE Database ポータル](https://apps.db.ripe.net/db-web-ui/myresources/overview)の「マイリソース」セクションにあります。組織の [コメント] セクションや上記オブジェクトの「備考」フィールドには追加しないでください。
+ APNIC の場合、「inetnum」または「inet6num」レコードに備考を編集して証明書を追加します。

以下のプロビジョニング段階が完了したら、RIR の記録から証明書を削除できます。

## RIR に ROA オブジェクトを作成する
<a name="byoip-create-roa-object"></a>

アドレス範囲をアドバタイズするために Amazon ASN 16509 および 14618 を承認し、また、アドレス範囲をアドバタイズすることが現在許可されている ASN も承認するために、ROA オブジェクトを作成します。AWS GovCloud (US) Regions については16509 および 14618 ではなく ASN 8987 を承認してください。持ち込む CIDR のサイズに最大長を設定する必要があります。持ち込める最も具体的な IPv4 プレフィクスは /24 です。提供できる最も具体的な IPv6 アドレス範囲はパブリックにアドバタイズ可能な CIDR の場合は /48、パブリックにアドバタイズ可能でない CIDR の場合は /60 です。

**重要**  
Amazon VPC IP Address Manager (IPAM) 用の ROA オブジェクトを作成する場合、ROA を作成するときにはIPv4 CIDR に対して、`/24` のIP アドレスのプレフィックスの最大長を設定する必要があります。IPv6 CIDR についてはアドバタイズ可能なプールに追加する場合、IP アドレスのプレフィックスの最大長は `/48` である必要があります。これにより、パブリック IP アドレスを AWS リージョンごとに分割して利用する柔軟性がもたらされます。IPAM では設定した最大長が適用されます。IPAM への BYOIP アドレスの詳細については、「[Amazon VPC IPAM ユーザーガイド](https://docs.aws.amazon.com/vpc/latest/ipam/tutorials-byoip-ipam.html)」の「*チュートリアル: IPAM への BYOIP アドレス CIDR*」を参照してください。

ROA が Amazon で使用できるようになるまで最大 24 時間かかる場合があります。詳細についてはRIRを参照してください。
+ ARIN — [ROA のリクエスト数](https://www.arin.net/resources/rpki/roarequest.html)
+ RIPE — [ROA の管理](https://www.ripe.net/manage-ips-and-asns/resource-management/rpki/resource-certification-roa-management/)
+ APNIC— [経路管理](https://www.apnic.net/wp-content/uploads/2017/01/route-roa-management-guide.pdf)

アドバタイズメントをオンプレミスのワークロードから AWS に移行する場合はAmazon の ASN の ROA を作成する前に、既存の ASN 向けの ROA を作成する必要があります。これを行わないと、既存のルーティングとアドバタイズメントに影響を与える可能性があります。

**重要**  
Amazon がお客様の IP アドレス範囲をアドバタイズし、引き続きアドバタイズするにはAmazon ASN の ROA が上記のガイドラインに準拠している必要があります。お客様の ROA が無効であるか、上記のガイドラインに準拠していない場合、Amazon はお客様の IP アドレス範囲のアドバタイズを停止する権利を留保します。

**注記**  
このステップはパブリックにアドバタイズ可能でない IPv6 アドレス空間には必要ありません。

# Amazon EC2 で使用するアドレス範囲をオンボードする
<a name="byoip-onboard"></a>

BYOIP のオンボーディングプロセスにはニーズに応じて次のタスクが含まれます。

**Topics**
+ [AWS でパブリックにアドバタイズ可能なアドレス範囲をプロビジョニングする](#byoip-provision)
+ [パブリックにアドバタイズ可能でない IPv6 アドレス範囲をプロビジョニングする](#byoip-provision-non-public)
+ [AWS を通じてアドレス範囲をアドバタイズする](#byoip-advertise)
+ [アドレス範囲のプロビジョニング解除](#byoip-deprovision)
+ [BYOIP を検証する](#byoip-validation)

## AWS でパブリックにアドバタイズ可能なアドレス範囲をプロビジョニングする
<a name="byoip-provision"></a>

AWS で使用するアドレス範囲をプロビジョニングする場合は当該範囲の管理者であることを証明し、Amazon による当該範囲のアドバタイズを承認します。また、署名済みの認可メッセージを使用して、アドレス範囲を管理していることを確認します。このメッセージはX.509 証明書で RDAP レコードを更新するときに使用した自己署名 X.509 キーペアで署名されます。AWS にはRIR に提示する暗号署名付き認可メッセージが必要です。RIR はRDAP に追加した証明書に対して署名を認証し、ROA に対して認可の詳細をチェックします。

**アドレス範囲をプロビジョニングするには**

1. 

**メッセージを構成する**

   プレーンテキスト認可メッセージを作成します。メッセージの形式は以下のとおりです。日付はメッセージの有効期限日になります。

   ```
   1|aws|account|cidr|YYYYMMDD|SHA256|RSAPSS
   ```

   アカウント番号、アドレス範囲、および有効期限日を独自の値に置き換え、次のようなメッセージを作成します。

   ```
   text_message="1|aws|0123456789AB|198.51.100.0/24|20211231|SHA256|RSAPSS"
   ```

   これは ROA メッセージと外観が似ているので、混同しないでください。

1. 

**メッセージに署名する**

   以前に作成したプライベートキーを使用して、プレーンテキストメッセージに署名します。このコマンドが返す署名は長い文字列となります。また、次の手順で使用する必要があります。
**重要**  
このコマンドをコピーして貼り付けることをお勧めします。メッセージの内容を除いて、いずれの値も変更または置換しないでください。

   ```
   signed_message=$( echo -n $text_message | openssl dgst -sha256 -sigopt rsa_padding_mode:pss -sigopt rsa_pss_saltlen:-1 -sign private-key.pem -keyform PEM | openssl base64 | tr -- '+=/' '-_~' | tr -d "\n")
   ```

1. 

**アドレスのプロビジョニング**

   AWS CLI[provision-byoip-cidr](https://docs.aws.amazon.com/cli/latest/reference/ec2/provision-byoip-cidr.html) コマンドを使用して、アドレス範囲をプロビジョニングします。`--cidr-authorization-context` オプションは以前に作成したメッセージと署名の文字列を使用します。
**重要**  
「[Configure the AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)」で設定した `Default region name` とは異なるリージョンに BYOIP 範囲をプロビジョニングする場合はプロビジョニング先の AWS リージョンを指定する必要があります。

   ```
   aws ec2 provision-byoip-cidr --cidr address-range --cidr-authorization-context Message="$text_message",Signature="$signed_message" --region us-east-1
   ```

   アドレス範囲のプロビジョニングは非同期オペレーションであるため、呼び出しはすぐに戻りますが、アドレスの範囲はそのステータスが `pending-provision` から `provisioned` に変わるまで使用できません。

1. 

**進行状況をモニタリングする**

   ほとんどのプロビジョニングは 2 時間以内に完了しますが、パブリックにアドバタイズ可能な範囲のプロビジョニングプロセスが完了するまでに最大 1 週間かかる場合があります。この例のように、[describe-byoip-cidrs](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-byoip-cidrs.html) コマンドを使用して進行状況をモニタリングします。

   ```
   aws ec2 describe-byoip-cidrs --max-results 5 --region us-east-1
   ```

   プロビジョニング中に問題が発生してステータスが `failed-provision` になった場合は問題の解決後に `provision-byoip-cidr` コマンドを再度実行する必要があります。

## パブリックにアドバタイズ可能でない IPv6 アドレス範囲をプロビジョニングする
<a name="byoip-provision-non-public"></a>

デフォルトではアドレス範囲はインターネットにパブリックにアドバタイズ可能になるようにプロビジョニングされます。パブリックにアドバタイズ可能でない IPv6 アドレス範囲をプロビジョニングできます。パブリックにアドバタイズできないルートの場合、プロビジョニングプロセスは通常、数分以内に完了します。非パブリックアドレス範囲の IPv6 CIDR ブロックを VPC に関連付ける場合、IPv6 CIDR には[Direct Connect](https://docs.aws.amazon.com/directconnect/latest/UserGuide/Welcome.html)、[AWS Site-to-Site VPN](https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html)、[Amazon VPC トランジットゲートウェイ](https://docs.aws.amazon.com/vpc/latest/tgw/what-is-transit-gateway.html)などの IPv6 をサポートするハイブリッド接続オプションを介してのみアクセスできます。

非パブリックアドレス範囲をプロビジョニングする場合、ROA は必要ありません。

**重要**  
ユーザーはプロビジョニング中にアドレス範囲がパブリックにアドバタイズ可能かどうかのみ指定できます。アドバタイズ可能なステータスは後で変更できません。
Amazon VPC は[ユニークローカルアドレス](https://en.wikipedia.org/wiki/Unique_local_address) (ULA) CIDR をサポートしていません。すべての VPC には一意の IPv6 CIDR が必要です。2 つの VPC が同じ IPv6 CIDR 範囲を持つことはできません。

パブリックにアドバタイズ可能でない IPv6 アドレス範囲をプロビジョニングするには次の [provision-byoip-cidr](https://docs.aws.amazon.com/cli/latest/reference/ec2/provision-byoip-cidr.html) コマンドを使用します。

```
aws ec2 provision-byoip-cidr --cidr address-range --cidr-authorization-context Message="$text_message",Signature="$signed_message" --no-publicly-advertisable --region us-east-1
```

## AWS を通じてアドレス範囲をアドバタイズする
<a name="byoip-advertise"></a>

アドレス範囲をプロビジョニングすると、公開することができるようになります。プロビジョンした正確なアドレス範囲をアドバタイズする必要があります。プロビジョンしたアドレス範囲の一部のみアドバタイズすることはできません。

パブリックにアドバタイズされない IPv6 アドレス範囲をプロビジョニングした場合、このステップを実行する必要はありません。

AWS からアドバタイズする前に、アドレス範囲またはその範囲の一部を他の場所からアドバタイズするのを停止することをお勧めします。他の場所から IP アドレス範囲またはその一部をアドバタイズし続ける場合は当社でその IP アドレス範囲を高い信頼性でサポートしたり、問題をトラブルシューティングすることができなくなります。具体的にはそのアドレス範囲またはその範囲の一部へのトラフィックが当社のネットワークに入るのを保証できません。

ダウンタイムを最小限に抑えるにはアドレス範囲がアドバタイズされる前にご使用のアドレスプールからアドレスを使用するように AWS リソースを設定してから、同時に現在の場所からのアドバタイズを停止して、AWS からのアドバタイズを開始します。アドレスプールからの Elastic IP アドレスの割り当ての詳細については[Elastic IP アドレスを割り当てる](working-with-eips.md#using-instance-addressing-eips-allocating)を参照してください。

**制限事項**
+ アドレス範囲が毎回異なる場合でも、**advertise-byoip-cidr** コマンドは 10 秒ごとに最大 1 回しか実行できません。
+ アドレス範囲が毎回異なる場合でも、**withdraw-byoip-cidr** コマンドは 10 秒ごとに最大 1 回しか実行できません。

アドレス範囲を公開するには以下の[advertise-byoip-cidr](https://docs.aws.amazon.com/cli/latest/reference/ec2/advertise-byoip-cidr.html)コマンドを使用します。

```
aws ec2 advertise-byoip-cidr --cidr address-range --region us-east-1
```

アドレス範囲の公開を停止するには以下の[withdraw-byoip-cidr](https://docs.aws.amazon.com/cli/latest/reference/ec2/withdraw-byoip-cidr.html)コマンドを使用します。

```
aws ec2 withdraw-byoip-cidr --cidr address-range --region us-east-1
```

## アドレス範囲のプロビジョニング解除
<a name="byoip-deprovision"></a>

AWS でアドレス範囲の使用を停止するにはまず Elastic IP アドレスをリリースし、アドレスプールからまだ割り当てられている IPv6 CIDR ブロックの関連付けを解除します。次に、アドレス範囲のアドバタイズを停止し、最後にアドレス範囲のプロビジョニングを解除します。

アドレス範囲のプロビジョニングを部分的に解除することはできません。AWS でより具体的なアドレス範囲を使用する場合はアドレス範囲全体のプロビジョニングを解除し、より具体的なアドレス範囲をプロビジョニングします。

(IPv4) 各 Elastic IP アドレスをリリースするには以下の [release-address](https://docs.aws.amazon.com/cli/latest/reference/ec2/release-address.html) コマンドを使用します。

```
aws ec2 release-address --allocation-id eipalloc-12345678abcabcabc --region us-east-1
```

(IPv6) IPv6 CIDR ブロックの関連付けを解除するには次の [disassociate-vpc-cidr-block](https://docs.aws.amazon.com/cli/latest/reference/ec2/disassociate-vpc-cidr-block.html) コマンドを使用します。

```
aws ec2 disassociate-vpc-cidr-block --association-id vpc-cidr-assoc-12345abcd1234abc1 --region us-east-1
```

アドレス範囲の公開を停止するには以下の[withdraw-byoip-cidr](https://docs.aws.amazon.com/cli/latest/reference/ec2/withdraw-byoip-cidr.html)コマンドを使用します。

```
aws ec2 withdraw-byoip-cidr --cidr address-range --region us-east-1
```

アドレス範囲のプロビジョニングを解除するには以下の[deprovision-byoip-cidr](https://docs.aws.amazon.com/cli/latest/reference/ec2/deprovision-byoip-cidr.html)コマンドを使用します。

```
aws ec2 deprovision-byoip-cidr --cidr address-range --region us-east-1
```

アドレス範囲のプロビジョニングを解除するには最長 1 日かかります。

## BYOIP を検証する
<a name="byoip-validation"></a>

1. 自己署名 x.509 キーペアを検証する

   whois コマンドで、証明書がアップロードされており、かつ、有効であることを確認します。

   ARIN の場合、`whois -h whois.arin.net r + 2001:0DB8:6172::/48` を使用してアドレス範囲の RDAP レコードを検索します。コマンド出力の `NetRange` (ネットワーク範囲) については「`Public Comments`」セクションを確認してください。証明書はアドレス範囲の「`Public Comments`」セクションに追加する必要があります。

   次のコマンドを使用して、証明書を含む `Public Comments` を検査できます。

   ```
   whois -h whois.arin.net r + 2001:0DB8:6172::/48 | grep Comments | grep BEGIN
   ```

   これにより、キーの内容を含む出力が返されます。これは次のようになります。

   ```
   Public Comments:
   -----BEGIN CERTIFICATE-----
   MIID1zCCAr+gAwIBAgIUBkRPNSLrPqbRAFP8RDAHSP+I1TowDQYJKoZIhvcNAQE
   LBQAwezELMAkGA1UEBhMCTloxETAPBgNVBAgMCEF1Y2tsYW5kMREwDwYDVQQHDA
   hBdWNrbGFuZDEcMBoGA1UECgwTQW1hem9uIFdlYiBTZXJ2aWNlczETMBEGA1UEC
   wwKQllPSVAgRGVtbzETMBEGA1UEAwwKQllPSVAgRGVtbzAeFw0yMTEyMDcyMDI0
   NTRaFw0yMjEyMDcyMDI0NTRaMHsxCzAJBgNVBAYTAk5aMREwDwYDVQQIDAhBdWN
   rbGFuZDERMA8GA1UEBwwIQXVja2xhbmQxHDAaBgNVBAoME0FtYXpvbiBXZWIgU2
   VydmljZXMxEzARBgNVBAsMCkJZT0lQIERlbW8xEzARBgNVBAMMCkJZT0lQIERlb
   W8wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCfmacvDp0wZ0ceiXXc
   R/q27mHI/U5HKt7SST4X2eAqufR9wXkfNanAEskgAseyFypwEEQr4CJijI/5hp9
   prh+jsWHWwkFRoBRR9FBtwcU/45XDXLga7D3stsI5QesHVRwOaXUdprAnndaTug
   mDPkD0vrl475JWDSIm+PUxGWLy+60aBqiaZq35wU/x+wXlAqBXg4MZK2KoUu27k
   Yt2zhmy0S7Ky+oRfRJ9QbAiSu/RwhQbh5Mkp1ZnVIc7NqnhdeIW48QaYjhMlUEf
   xdaqYUinzz8KpjfADZ4Hvqj9jWZ/eXo/9b2rGlHWkJsbhr0VEUyAGu1bwkgcdww
   3A7NjOxQbAgMBAAGjUzBRMB0GA1UdDgQWBBStFyujN6SYBr2glHpGt0XGF7GbGT
   AfBgNVHSMEGDAWgBStFyujN6SYBr2glHpGt0XGF7GbGTAPBgNVHRMBAf8EBTADA
   QH/MA0GCSqGSIb3DQEBCwUAA4IBAQBX6nn6YLhz521lfyVfxY0t6o3410bQAeAF
   08ud+ICtmQ4IO4A4B7zV3zIVYr0clrOOaFyLxngwMYN0XY5tVhDQqk4/gmDNEKS
   Zy2QkX4Eg0YUWVzOyt6fPzjOvJLcsqc1hcF9wySL507XQz76Uk5cFypBOzbnk35
   UkWrzA9KK97cXckfIESgK/k1N4ecwxwG6VQ8mBGqVpPpey+dXpzzzv1iBKN/VY4
   ydjgH/LBfdTsVarmmy2vtWBxwrqkFvpdhSGCvRDl/qdO/GIDJi77dmZWkh/ic90
   MNk1f38gs1jrCj8lThoar17Uo9y/Q5qJIsoNPyQrJRzqFU9F3FBjiPJF
   -----END CERTIFICATE-----
   ```

   RIPE の場合、`whois -r -h whois.ripe.net 2001:0DB8:7269::/48` を使用してアドレス範囲の RDAP レコードを検索します。コマンド出力の `inetnum` オブジェクト (ネットワーク範囲) については「`descr`」セクションを確認してください。証明書はアドレス範囲の新しい `descr` フィールドとして追加する必要があります。

   次のコマンドを使用して、証明書を含む `descr` を検査できます。

   ```
   whois -r -h whois.ripe.net 2001:0DB8:7269::/48 | grep descr | grep BEGIN
   ```

   これにより、キーの内容を含む出力が返されます。これは次のようになります。

   ```
   descr:
   -----BEGIN CERTIFICATE-----MIID1zCCAr+gAwIBAgIUBkRPNSLrPqbRAFP8
   RDAHSP+I1TowDQYJKoZIhvcNAQELBQAwezELMAkGA1UEBhMCTloxETAPBgNVBAg
   MCEF1Y2tsYW5kMREwDwYDVQQHDAhBdWNrbGFuZDEcMBoGA1UECgwTQW1hem9uIF
   dlYiBTZXJ2aWNlczETMBEGA1UECwwKQllPSVAgRGVtbzETMBEGA1UEAwwKQllPS
   VAgRGVtbzAeFw0yMTEyMDcyMDI0NTRaFw0yMjEyMDcyMDI0NTRaMHsxCzAJBgNV
   BAYTAk5aMREwDwYDVQQIDAhBdWNrbGFuZDERMA8GA1UEBwwIQXVja2xhbmQxHDA
   aBgNVBAoME0FtYXpvbiBXZWIgU2VydmljZXMxEzARBgNVBAsMCkJZT0lQIERlbW
   8xEzARBgNVBAMMCkJZT0lQIERlbW8wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwg
   gEKAoIBAQCfmacvDp0wZ0ceiXXcR/q27mHI/U5HKt7SST4X2eAqufR9wXkfNanA
   EskgAseyFypwEEQr4CJijI/5hp9prh+jsWHWwkFRoBRR9FBtwcU/45XDXLga7D3
   stsI5QesHVRwOaXUdprAnndaTugmDPkD0vrl475JWDSIm+PUxGWLy+60aBqiaZq
   35wU/x+wXlAqBXg4MZK2KoUu27kYt2zhmy0S7Ky+oRfRJ9QbAiSu/RwhQbh5Mkp
   1ZnVIc7NqnhdeIW48QaYjhMlUEfxdaqYUinzz8KpjfADZ4Hvqj9jWZ/eXo/9b2r
   GlHWkJsbhr0VEUyAGu1bwkgcdww3A7NjOxQbAgMBAAGjUzBRMB0GA1UdDgQWBBS
   tFyujN6SYBr2glHpGt0XGF7GbGTAfBgNVHSMEGDAWgBStFyujN6SYBr2glHpGt0
   XGF7GbGTAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQBX6nn6Y
   Lhz521lfyVfxY0t6o3410bQAeAF08ud+ICtmQ4IO4A4B7zV3zIVYr0clrOOaFyL
   xngwMYN0XY5tVhDQqk4/gmDNEKSZy2QkX4Eg0YUWVzOyt6fPzjOvJLcsqc1hcF9
   wySL507XQz76Uk5cFypBOzbnk35UkWrzA9KK97cXckfIESgK/k1N4ecwxwG6VQ8
   mBGqVpPpey+dXpzzzv1iBKN/VY4ydjgH/LBfdTsVarmmy2vtWBxwrqkFvpdhSGC
   vRDl/qdO/GIDJi77dmZWkh/ic90MNk1f38gs1jrCj8lThoar17Uo9y/Q5qJIsoN
   PyQrJRzqFU9F3FBjiPJF
   -----END CERTIFICATE-----
   ```

   APNIC の場合、`whois -h whois.apnic.net 2001:0DB8:6170::/48` を使用して BYOIP アドレス範囲の RDAP レコードを検索します。コマンド出力の `inetnum` オブジェクト (ネットワーク範囲) については「`remarks`」セクションを確認してください。証明書はアドレス範囲の新しい `remarks` フィールドとして追加する必要があります。

   次のコマンドを使用して、証明書を含む `remarks` を検査できます。

   ```
   whois -h whois.apnic.net 2001:0DB8:6170::/48 | grep remarks | grep BEGIN
   ```

   これにより、キーの内容を含む出力が返されます。これは次のようになります。

   ```
   remarks:
   -----BEGIN CERTIFICATE-----
   MIID1zCCAr+gAwIBAgIUBkRPNSLrPqbRAFP8RDAHSP+I1TowDQYJKoZIhvcNAQE
   LBQAwezELMAkGA1UEBhMCTloxETAPBgNVBAgMCEF1Y2tsYW5kMREwDwYDVQQHDA
   hBdWNrbGFuZDEcMBoGA1UECgwTQW1hem9uIFdlYiBTZXJ2aWNlczETMBEGA1UEC
   wwKQllPSVAgRGVtbzETMBEGA1UEAwwKQllPSVAgRGVtbzAeFw0yMTEyMDcyMDI0
   NTRaFw0yMjEyMDcyMDI0NTRaMHsxCzAJBgNVBAYTAk5aMREwDwYDVQQIDAhBdWN
   rbGFuZDERMA8GA1UEBwwIQXVja2xhbmQxHDAaBgNVBAoME0FtYXpvbiBXZWIgU2
   VydmljZXMxEzARBgNVBAsMCkJZT0lQIERlbW8xEzARBgNVBAMMCkJZT0lQIERlb
   W8wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCfmacvDp0wZ0ceiXXc
   R/q27mHI/U5HKt7SST4X2eAqufR9wXkfNanAEskgAseyFypwEEQr4CJijI/5hp9
   prh+jsWHWwkFRoBRR9FBtwcU/45XDXLga7D3stsI5QesHVRwOaXUdprAnndaTug
   mDPkD0vrl475JWDSIm+PUxGWLy+60aBqiaZq35wU/x+wXlAqBXg4MZK2KoUu27k
   Yt2zhmy0S7Ky+oRfRJ9QbAiSu/RwhQbh5Mkp1ZnVIc7NqnhdeIW48QaYjhMlUEf
   xdaqYUinzz8KpjfADZ4Hvqj9jWZ/eXo/9b2rGlHWkJsbhr0VEUyAGu1bwkgcdww
   3A7NjOxQbAgMBAAGjUzBRMB0GA1UdDgQWBBStFyujN6SYBr2glHpGt0XGF7GbGT
   AfBgNVHSMEGDAWgBStFyujN6SYBr2glHpGt0XGF7GbGTAPBgNVHRMBAf8EBTADA
   QH/MA0GCSqGSIb3DQEBCwUAA4IBAQBX6nn6YLhz521lfyVfxY0t6o3410bQAeAF
   08ud+ICtmQ4IO4A4B7zV3zIVYr0clrOOaFyLxngwMYN0XY5tVhDQqk4/gmDNEKS
   Zy2QkX4Eg0YUWVzOyt6fPzjOvJLcsqc1hcF9wySL507XQz76Uk5cFypBOzbnk35
   UkWrzA9KK97cXckfIESgK/k1N4ecwxwG6VQ8mBGqVpPpey+dXpzzzv1iBKN/VY4
   ydjgH/LBfdTsVarmmy2vtWBxwrqkFvpdhSGCvRDl/qdO/GIDJi77dmZWkh/ic90
   MNk1f38gs1jrCj8lThoar17Uo9y/Q5qJIsoNPyQrJRzqFU9F3FBjiPJF
   -----END CERTIFICATE-----
   ```

1. ROA オブジェクトの作成を検証する

   RIPEstat データ API コマンドを使用して、ROA オブジェクトが正常に作成されたことを検証します。Amazon ASN 16509 および 14618、ならびにそのアドレス範囲をアドバタイズすることが現在承認されている ASN に対して、アドレス範囲をテストしてください。

   次のコマンドを使用して、アドレス範囲で異なる Amazon ASN の ROA オブジェクトを検査できます。

   ```
   curl --location --request GET "https://stat.ripe.net/data/rpki-validation/data.json?resource=ASN&prefix=CIDR
   ```

   この出力例ではレスポンスには、Amazon ASN 16509 について `"status": "valid"` の結果があります。これはアドレス範囲についての ROA オブジェクトが正常に作成されたことを示します。

   ```
   {
       "messages": [],
       "see_also": [],
       "version": "0.3",
       "data_call_name": "rpki-validation",
       "data_call_status": "supported",
       "cached": false,
       "data": {
           "validating_roas": [
               {
                   "origin": "16509",
                   "prefix": "2001:0DB8::/32",
                   "max_length": 48,
                   "validity": "valid"
               },
               {
                   "origin": "14618",
                   "prefix": "2001:0DB8::/32",
                   "max_length": 48,
                   "validity": "invalid_asn"
               },
               {
                   "origin": "64496",
                   "prefix": "2001:0DB8::/32",
                   "max_length": 48,
                   "validity": "invalid_asn"
               }
           ],
           "status": "valid",
           "validator": "routinator",
           "resource": "16509",
           "prefix": "2001:0DB8::/32"
       },
       "query_id": "20230224152430-81e6384e-21ba-4a86-852a-31850787105f",
       "process_time": 58,
       "server_id": "app116",
       "build_version": "live.2023.2.1.142",
       "status": "ok",
       "status_code": 200,
       "time": "2023-02-24T15:24:30.773654"
   }
   ```

`“unknown”` の状態はアドレス範囲についての ROA オブジェクトが作成されていないことを示します。`“invalid_asn”` の状態はアドレス範囲についての ROA オブジェクトが正常に作成されなかったことを示します。

# Amazon EC2 で BYOIP アドレス範囲を使用する
<a name="byoip-working-with"></a>

ユーザーはアカウントでプロビジョニングした IPv4 と IPv6 のアドレス範囲の表示と使用が可能です。詳細については「[Amazon EC2 で使用するアドレス範囲をオンボードする](byoip-onboard.md)」を参照してください。

## IPv4 アドレス範囲
<a name="byoip-work-with-ipv4"></a>

IPv4 アドレスプールから Elastic IP アドレスを作成し、EC2 インスタンス、NAT ゲートウェイ、Network Load Balancer などの AWS リソースで使用できます。

アカウントでプロビジョニングした IPv4 アドレスプールに関する情報を表示するには次の [describe-public-ipv4-pools](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-public-ipv4-pools.html) コマンドを使用します。

```
aws ec2 describe-public-ipv4-pools --region us-east-1
```

IPv4 アドレスプールから Elastic IP アドレスを作成するには[allocate-address](https://docs.aws.amazon.com/cli/latest/reference/ec2/allocate-address.html) コマンドを使用します。`--public-ipv4-pool`オプションを使用して、`describe-byoip-cidrs`が返すアドレスプールの ID を指定したり、`--address` オプションを使用して、プロビジョニングしたアドレス範囲からのアドレスを指定したりすることができます。

## IPv6 アドレス範囲
<a name="byoip-work-with-ipv6"></a>

アカウントでプロビジョニングした IPv6 アドレスプールに関する情報を表示するには次の [describe-ipv6-pools](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-ipv6-pools.html) コマンドを使用します。

```
aws ec2 describe-ipv6-pools --region us-east-1
```

VPC を作成し、IPv6 アドレスプールから IPv6 CIDR を指定するには次の [create-vpc](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-vpc.html) コマンドを使用します。Amazon が IPv6 アドレスプールから IPv6 CIDR を選択できるようにするには[`--ipv6-cidr-block`] オプションを省略します。

```
aws ec2 create-vpc --cidr-block 10.0.0.0/16 --ipv6-cidr-block ipv6-cidr --ipv6-pool pool-id --region us-east-1
```

IPv6 アドレスプールからの IPv6 CIDR ブロックを VPC に関連付けるには次の [associate-vpc-cidr-block](https://docs.aws.amazon.com/cli/latest/reference/ec2/associate-vpc-cidr-block.html) コマンドを使用します。Amazon が IPv6 アドレスプールから IPv6 CIDR を選択できるようにするには[`--ipv6-cidr-block`] オプションを省略します。

```
aws ec2 associate-vpc-cidr-block --vpc-id vpc-123456789abc123ab --ipv6-cidr-block ipv6-cidr --ipv6-pool pool-id --region us-east-1
```

VPC および関連する IPv6 アドレスプール情報を表示するには[describe-vpcs](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-vpcs.html) コマンドを使用します。特定の IPv6 アドレスプールから関連付けられた IPv6 CIDR ブロックに関する情報を表示するには次の [get-associated-ipv6-pool-cidrs](https://docs.aws.amazon.com/cli/latest/reference/ec2/get-associated-ipv6-pool-cidrs.html) コマンドを使用します。

```
aws ec2 get-associated-ipv6-pool-cidrs --pool-id pool-id --region us-east-1
```

VPC から IPv6 CIDR ブロックの関連付けを解除すると、IPv6 アドレスプールに戻されます。

# Elastic IP アドレス
<a name="elastic-ip-addresses-eip"></a>

*Elastic IP アドレス*は動的なクラウドコンピューティングのために設計された静的 IPv4 アドレスです。Elastic IP アドレスはユーザーの AWS アカウントに割り当てられ、リリースするまでユーザーのアドレスになります。Elastic IP アドレスを使用すると、アドレスをアカウント内の別のインスタンスに迅速に再マッピングすることで、インスタンスやソフトウェアの障害をマスクできます。またはドメインがインスタンスを参照するように、ドメインの DNS レコードに Elastic IP アドレスを指定することもできます。詳細については使用しているドメインレジストラのドキュメントを参照してください。

Elastic IP アドレスはインターネットからアクセス可能なパブリック IPv4 アドレスです。パブリック IPv4 アドレスを持たないインスタンスに接続する必要がある場合はElastic IP アドレスをインスタンスに関連付けることで、インターネットとの通信を有効にできます。

**Topics**
+ [Elastic IP アドレスの料金](#eip-pricing)
+ [Elastic IP アドレスの基本](#eip-basics)
+ [Elastic IP アドレスのクォータ](#using-instance-addressing-limit)
+ [Elastic IP アドレスをインスタンスに関連付ける](working-with-eips.md)
+ [AWS アカウント間での Elastic IP アドレスの移管](transfer-EIPs-intro-ec2.md)
+ [Elastic IP アドレスをリリース](using-instance-addressing-eips-releasing.md)
+ [Amazon EC2 で E メールの逆引き DNS レコードを作成する](Using_Elastic_Addressing_Reverse_DNS.md)

## Elastic IP アドレスの料金
<a name="eip-pricing"></a>

すべての Elastic IP アドレスでは、使用中か (EC2 インスタンスなどのリソースに割り当てられているか)、アイドル状態か (アカウントに作成されているが割り当てられてはいない) にかかわらず、料金が発生します。

AWS は、実行中のインスタンスに関連付けられているパブリック IPv4 アドレスや Elastic IP アドレスを含めたすべてのパブリック IPv4 アドレスの料金を請求します。詳細については「[Amazon VPC の料金](https://aws.amazon.com/vpc/pricing/)」ページの「**パブリック IPv4 アドレス**」タブを参照してください。

## Elastic IP アドレスの基本
<a name="eip-basics"></a>

Elastic IP アドレスの基本的な特徴を次に示します。
+ Elastic IP アドレスは静的であり、時間の経過とともに変わることはありません。
+ Elastic IP アドレスは特定のリージョン専用であり、別のリージョンに移動することはできません。
+ Elastic IP アドレスはAmazon が持っている IPv4 アドレスのプールまたはお客様が AWS アカウント に持ち込んだカスタム IPv4 アドレスのプールから割り当てることができます。IPv6 に対する Elastic IP アドレスはサポートされていません。
+ Elastic IP アドレスを使用するにはまずアカウントに 1 つ割り当ててから、それをインスタンスまたはネットワークインターフェイスに関連付けます。
+ Elastic IP アドレスをインスタンスと関連付けると、インスタンスのプライマリネットワークインターフェイスとも関連付けられます。Elastic IP アドレスをインスタンスにアタッチされたネットワークインターフェイスと関連付けると、インスタンスとも関連付けられます。
+ Elastic IP アドレスをインスタンスまたはそのプライマリネットワークインターフェイスに関連付けると、インスタンスに既にパブリック IPv4 アドレスが関連付けられている場合、そのパブリック IPv4 アドレスは Amazon のパブリック IPv4 アドレスのプールに解放され、Elastic IP アドレスは代わりにインスタンスに関連付けられます。以前にインスタンスに関連付けられたパブリック IPv4 アドレスを再利用することはできず、そのパブリック IPv4 アドレスを Elastic IP アドレスに変換することもできません。詳細については「[パブリック IPv4 アドレス](using-instance-addressing.md#concepts-public-addresses)」を参照してください。
+ リソースから Elastic IP アドレスの関連付けを解除し、別のリソースと関連付けることができます。予期しない動作を避けるため、変更を行う前に、既存の関連付けで指定されたリソースへのアクティブな接続をすべて閉じていることを確認してください。Elastic IP アドレスを別のリソースに関連付けた後、新しく関連付けられたリソースへの接続を再度開くことができます。
+ 関連付けが解除された Elastic IP アドレスは明示的にリリースするまでアカウントに割り当てられたままです。インスタンスに関連付けられているか、関連付けが解除されているかにかかわらず、アカウント内のすべての Elastic IP アドレスに対して課金されます。詳細については「[Amazon VPC の料金](https://aws.amazon.com/vpc/pricing/)」ページの「**パブリック IPv4 アドレス**」タブを参照してください。
+ パブリック IPv4 アドレスが前回割り当てられたインスタンスに Elastic IP アドレスを関連付けると、インスタンスのパブリック DNS ホスト名はElastic IP アドレスに一致するように変更されます。
+ パブリック DNS ホスト名を解決すると、インスタンスのパブリック IPv4 アドレスまたは Elastic IP アドレス (インスタンスのネットワークの外部の場合)、およびインスタンスのプライベート IPv4 アドレス (インスタンスのネットワーク内からの場合) となります。
+ AWS アカウントに持ち込んだ IP アドレスプールから Elastic IP アドレスを割り当てた場合、Elastic IP アドレス制限にカウントされません。詳細については[Elastic IP アドレスのクォータ](#using-instance-addressing-limit)を参照してください。
+ Elastic IP アドレスを割り当てると、Elastic IP アドレスをネットワークボーダーグループに関連付けることができます。これはCIDR ブロックをアドバタイズする場所です。ネットワークボーダーグループを設定すると、CIDR ブロックがこのグループに制限されます。ネットワークボーダーグループを指定しない場合はリージョン (`us-west-2` など) のすべてのアベイラビリティーゾーンを含むボーダーグループが自動的に設定されます。
+ Elastic IP アドレスはネットワークボーダーグループ別に専用になっています。

## Elastic IP アドレスのクォータ
<a name="using-instance-addressing-limit"></a>

デフォルトではすべての AWS アカウント でリージョンあたり 5 つの Elastic IP アドレスが割り当てられています。これはパブリック (IPv4) インターネットアドレスが数に限りのあるパブリックリソースであるためです。インスタンスに障害が発生した場合にアドレスを他のインスタンスに再マップする機能のために主に Elastic IP アドレスを使用し、他のすべてのノード間通信には [DNS ホスト名](https://docs.aws.amazon.com/vpc/latest/userguide/AmazonDNS-concepts.html#vpc-dns-hostnames)を使用することを強くお勧めします。

お客様のアーキテクチャで追加の Elastic IP アドレスが必要な場合、クォータの引き上げを Service Quotas コンソールから直接リクエストできます。クォータの引き上げをリクエストするには[**アカウントレベルでの引き上げをリクエスト**] を選択してください。詳細については「[Amazon EC2 の Service Quotas](ec2-resource-limits.md)」を参照してください。

# Elastic IP アドレスをインスタンスに関連付ける
<a name="working-with-eips"></a>

Elastic IP アドレスを割り当てると、EC2 インスタンス、NAT ゲートウェイ、Network Load Balancer などの AWS リソースに関連付けることができます。後で Elastic IP アドレスを別の AWS リソースに関連付けるには現在のリソースから関連付けを解除してから、新しいリソースに関連付けます。

**Topics**
+ [Elastic IP アドレスを割り当てる](#using-instance-addressing-eips-allocating)
+ [Elastic IP アドレスの関連付け](#using-instance-addressing-eips-associating)
+ [Elastic IP アドレスの関連付けを解除する](#using-instance-addressing-eips-associating-different)

## Elastic IP アドレスを割り当てる
<a name="using-instance-addressing-eips-allocating"></a>

リージョンで使用するための Elastic IP アドレスを割り当てることができます。すべての Elastic IP アドレスでは、使用中か (EC2 インスタンスなどのリソースに関連付けられている)、アイドル状態か (アカウントに作成されているが関連付けられてはいない) にかかわらず、料金が発生します。

------
#### [ Console ]

**Elastic IP アドレスを割り当てるには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、[**Network & Security**]、[**Elastic IPs**] の順に選択してください。

1. [**Allocate Elastic IP address**] を選択してください。

1. (オプション) Elastic IP アドレス (EIP) を割り当てるときはEIP を割り当てる**ネットワークボーダーグループ**を選択してください。ネットワークボーダーグループはAWS がパブリック IP アドレスをアドバタイズするアベイラビリティーゾーン (AZ)、Local Zones、または Wavelength Zones のコレクションです。Local Zones と Wavelength Zones はAWS ネットワークとこれらのゾーンのリソースにアクセスする顧客との間のレイテンシーや物理的距離を最小限に抑えるために、リージョン内の AZ とは異なるネットワークボーダーグループを持つ場合があります。
**重要**  
EIP に関連付ける AWS リソースと同じネットワークボーダーグループに EIP を割り当てる必要があります。あるネットワークボーダーグループ内の EIP はそのネットワークボーダーグループ内のゾーンでのみアドバタイズでき、他のネットワークボーダーグループで表される他のゾーンではアドバタイズできません。

   Local Zones または Wavelength Zones を有効にしている場合 (詳細については「[Local Zone を有効にする](https://docs.aws.amazon.com/local-zones/latest/ug/getting-started.html#getting-started-find-local-zone)」または「[Wavelength Zones を有効にする](https://docs.aws.amazon.com//wavelength/latest/developerguide/get-started-wavelength.html#enable-zone-group)」を参照)、AZ、Local Zones、または Wavelength Zones のネットワークボーダーグループを選択できます。EIP とそれが関連付けられている AWS リソースは同じネットワークボーダーグループに属している必要があるため、ネットワークボーダーグループは慎重に選択してください。EC2 コンソールを使用して、アベイラビリティーゾーン、ローカルゾーン、または Wavelength Zones が属するネットワークボーダーグループを表示できます。通常、リージョン内のすべてのアベイラビリティーゾーンは同じネットワークボーダーグループに属しますが、Local Zones や Wavelength Zones はそれぞれ別のネットワークボーダーグループに属します。

   Local Zones または Wavelength Zones が有効になっていない場合、EIP を割り当てると、リージョン (`us-west-2` など) のすべての AZ を表すネットワークボーダーグループが定義済みになり、変更することはできません。つまり、このネットワークボーダーグループに割り当てた EIP は現在のリージョンのすべての AZ でアドバタイズされます。

1. [**Public IPv4 address pool (パブリック IPv4 アドレスのプール)**] で、以下のいずれかを選択してください。
   + [**Amazon's pool of IPv4 addresses (Amazon の IP アドレスのプール)**] — Amazon の IPv4 アドレスのプールから IPv4 アドレスを割り当てる場合。
   + **[AWS アカウントに持ち込むパブリック IPv4 アドレス]** - AWS アカウントに持ち込んだ IP アドレスプールから非連続 (非シーケンシャル) パブリック IPv4 アドレスを割り当てる場合。IP アドレスプールがない場合、このオプションは無効になります。AWS アカウントへの独自の IP アドレス範囲の持ち込みの詳細については[Amazon EC2 に自分の IP アドレスを持ち込む (BYOIP)](ec2-byoip.md) をご参照ください。
   + **ユーザー所有の IPv4 アドレスのプール** - AWS Outpost で使用するために、オンプレミスネットワークから作成したプールから IPv4 アドレスを割り当てる場合。AWS Outpost がない場合、このオプションは無効になります。
   + **[IPAM IPv4 プールを使用して割り当てる]**: IPAM プール内の連続したパブリック IPv4 ブロックからシーケンシャル Elastic IP アドレスを割り当てる場合。シーケンシャル Elastic IP アドレスを割り当てると、セキュリティアクセスコントロールリストの管理オーバーヘッドが大幅に削減され、AWS でスケーリングする企業の IP アドレスの割り当てと追跡が簡素化できます。詳細については「Amazon VPC IPAM ユーザーガイド」の「[Allocate sequential Elastic IP addresses from an IPAM pool](https://docs.aws.amazon.com/vpc/latest/ipam/tutorials-eip-pool.html)」を参照してください。

1. (オプション) タグを追加するには**[新しいタグを追加]** を選択し、タグキーとタグ値を入力してください。

------
#### [ AWS CLI ]

**Elastic IP アドレスを割り当てるには**  
[allocate-address](https://docs.aws.amazon.com/cli/latest/reference/ec2/allocate-address.html) AWS CLI コマンドを使用します。

次の例では、Amazon EC2 が Amazon のアドレスプールからアドレスを選択します。

```
aws ec2 allocate-address
```

次の例では、ユーザーが BYOIP を使用して AWS に持ち込んだ指定のプールから Amazon EC2 がアドレスを選択します。

```
aws ec2 allocate-address \
    --public-ipv4-pool ipv4pool-ec2-012345abcdef67890
```

次の例は、指定された IPv4 IPAM プールからのアドレスを指定します。

```
aws ec2 allocate-address \
    --ipam-pool-id ipam-pool-1234567890abcdef0 \
    --address 192.0.2.0
```

------
#### [ PowerShell ]

**Elastic IP アドレスを割り当てるには**  
[New-EC2Address](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2Address.html) コマンドレットを使用します。

次の例では、Amazon EC2 が Amazon のアドレスプールからアドレスを選択します。

```
New-EC2Address
```

次の例では、ユーザーが BYOIP を使用して AWS に持ち込んだ指定のプールから Amazon EC2 がアドレスを選択します。

```
New-EC2Address `
    -PublicIpv4Pool ipv4pool-ec2-012345abcdef67890
```

次の例は、指定された IPv4 IPAM プールからのアドレスを指定します。

```
New-EC2Address `
    -IpamPoolId ipam-pool-1234567890abcdef0 `
    -Address 192.0.2.0
```

------

## Elastic IP アドレスの関連付け
<a name="using-instance-addressing-eips-associating"></a>

Elastic IP アドレスをインスタンスに関連付けてインターネットとの通信を有効にする場合、インスタンスがパブリックサブネットに属していることも確認する必要があります。詳細については「Amazon VPC ユーザーガイド」の「[Enable internet access using an internet gateway](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Internet_Gateway.html)」を参照してください。

------
#### [ Console ]

**Elastic IP アドレスをインスタンスに関連付けるには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで [**Elastic IP**] を選択してください。

1. 関連付ける Elastic IP アドレスを選択してから、[**Actions (アクション)**]、[**Associate Elastic IP address (Elastic IP アドレスの関連付け)**] の順に選択してください。

1. [**リソースタイプ**] で、[**Instance (インスタンス)**] を選択してください。

1. 例えば、Elastic IP アドレスを関連付けるインスタンスを選択してください。テキストを入力して特定のインスタンスを検索することもできます。

1. (オプション) [**プライベート IP アドレス**] で、Elastic IP アドレスを関連付けるプライベート IP アドレスを指定します。

1. [**Associate**] を選択してください。

**Elastic IP アドレスとネットワークインターフェイスを関連付けるには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで [**Elastic IP**] を選択してください。

1. 関連付ける Elastic IP アドレスを選択してから、[**Actions (アクション)**]、[**Associate Elastic IP address (Elastic IP アドレスの関連付け)**] の順に選択してください。

1. [**リソースタイプ**] で、[**ネットワークインターフェイス**] を選択してください。

1. [**ネットワークインターフェイス**] で、Elastic IP アドレスを関連付けるネットワークインターフェイスを選択してください。テキストを入力して、特定のネットワークインターフェイスを検索することもできます。

1. (オプション) [**プライベート IP アドレス**] で、Elastic IP アドレスを関連付けるプライベート IP アドレスを指定します。

1. [**Associate**] を選択してください。

------
#### [ AWS CLI ]

**Elastic IP アドレスを関連付けるには**  
[associate-address](https://docs.aws.amazon.com/cli/latest/reference/ec2/associate-address.html) AWS CLI コマンドを使用します。

```
aws ec2 associate-address \
    --instance-id i-0b263919b6498b123 \
    --allocation-id eipalloc-64d5890a
```

------
#### [ PowerShell ]

**Elastic IP アドレスを関連付けるには**  
[Register-EC2Address](https://docs.aws.amazon.com/powershell/latest/reference/items/Register-EC2Address.html) コマンドレットを使用します。

```
Register-EC2Address `
    -InstanceId i-0b263919b6498b123 `
    -AllocationId eipalloc-64d5890a
```

------

## Elastic IP アドレスの関連付けを解除する
<a name="using-instance-addressing-eips-associating-different"></a>

インスタンスまたはネットワークインターフェイスから Elastic IP アドレスの関連付けをいつでも解除できます。Elastic IP アドレスの関連付けを解除した後、そのアドレスを別のリソースに関連付けることができます。

------
#### [ Console ]

**Elastic IP アドレスの関連付けを解除して再度関連付けするには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで [**Elastic IP**] を選択してください。

1. 関連付けを解除する Elastic IP アドレスを選択してから、[**Actions (アクション)**]、[**Elastic IP アドレスの関連付けの解除**] の順に選択してください。

1. [**関連付け解除**] を選択してください。

------
#### [ AWS CLI ]

**Elastic IP アドレスの関連付けを解除するには**  
[disassociate-address](https://docs.aws.amazon.com/cli/latest/reference/ec2/disassociate-address.html) AWS CLI コマンドを使用します。

```
aws ec2 disassociate-address --association-id eipassoc-12345678
```

------
#### [ PowerShell ]

**Elastic IP アドレスの関連付けを解除するには**  
[Unregister-EC2Address](https://docs.aws.amazon.com/powershell/latest/reference/items/Unregister-EC2Address.html) コマンドレットを使用します。

```
Unregister-EC2Address -AssociationId eipassoc-12345678
```

------

# AWS アカウント間での Elastic IP アドレスの移管
<a name="transfer-EIPs-intro-ec2"></a>

Elastic IP アドレスを AWS アカウント間で移管できます。これは次のような状況で役立つ場合があります。
+ **ディザスタリカバリ** – 緊急時に、一般向けインターネットワークロードの IP アドレスをすばやく再マッピングします。
+ **組織の再構築** - AWS アカウント間でワークロードをすばやく移動します。アドレスの移管により、セキュリティグループやネットワーク ACL によって新しい Elastic IP アドレスが許可されるのを待つ必要がなくなります。
+ **一元的なセキュリティ管理** - 一元化された AWS セキュリティアカウントを使用して、セキュリティコンプライアンスのために精査された Elastic IP アドレスを追跡および移管できます。

**料金**  
Elastic IP アドレスの移管には料金はかかりません。

**Topics**
+ [Elastic IP アドレスの移管を有効にする](#using-instance-addressing-eips-transfer-enable-ec2)
+ [移管された Elastic IP アドレスを承諾する](#using-instance-addressing-eips-transfer-accept-ec2)
+ [Elastic IP アドレスの移管を無効にする](#using-instance-addressing-eips-transfer-disable-ec2)

## Elastic IP アドレスの移管を有効にする
<a name="using-instance-addressing-eips-transfer-enable-ec2"></a>

このセクションでは移管された Elastic IP アドレスを承諾する方法について説明します。Elastic IP アドレスの移管を有効にする際には以下の制限に注意してください。
+ 任意の AWS アカウント (ソースアカウント) から同じ AWS リージョン内の他の AWS アカウント (転送先アカウント) に Elastic IP アドレスを転送できます。Elastic IP アドレスを別のリージョンに転送することはできません。
+ Elastic IP アドレスを転送する場合、AWS アカウント の間で 2 段階のハンドシェイクが行われます。ソースアカウントが移管を開始してから 7 日間は転送先アカウントが Elastic IP アドレス移管を受け入れることができます。この 7 日間、ソースアカウントは保留中の移管をAWS コンソールやコマンドの [describe-address-transfers](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-address-transfers.html) などを使用して) 確認できます。7 日後、移管の有効期限が切れ、Elastic IP アドレスの所有権がソースアカウントに戻ります。
+ 移管が受け入れられてから 14 日間、ソースアカウントは受け入れられた移管をAWS コンソールや コマンド [describe-address-transfers](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-address-transfers.html) などを使用して) 表示できます。
+ AWS は保留中の Elastic IP アドレス転送リクエストについて、転送先アカウントに通知しません。ソースアカウントの所有者は承諾する必要がある Elastic IP アドレス転送リクエストがあることを転送先アカウントの所有者に通知する必要があります。
+ 転送中の Elastic IP アドレスに関連付けられているタグは転送が完了するとリセットされます。
+ AWS アカウント に持ち込んだパブリック IPv4 アドレスプール (一般的に Bring-Your-Own-IP (BYOIP) アドレスプールと呼ばれる) から割り当てられた Elastic IP アドレスは転送できません。
+ Amazon が提供する連続したパブリック IPv4 Amazon VPC IP Address Manager (IPAM) プールから割り当てられた Elastic IP アドレスを転送することはできません。代わりに、IPAM ではIPAM を AWS Organizations と統合し、AWS RAM を使用することで、AWS アカウント間で IPAM プールを共有できます。詳細については「Amazon VPC IPAM ユーザーガイド」の「[Allocate sequential Elastic IP addresses from an IPAM pool](https://docs.aws.amazon.com/vpc/latest/ipam/tutorials-eip-pool.html)」を参照してください。
+ リバース DNS レコードが関連付けられている Elastic IP アドレスを移管しようとする場合、移管プロセスを開始することはできますが、関連付けられている DNS レコードが削除されるまで、転送先アカウントは移管を受け入れることができません。
+ AWS Outposts を有効にして設定している場合はカスタマー所有の IP アドレスプール (CoIP) から Elastic IP アドレスを割り当てている可能性があります。CoIP から割り当てられた Elastic IP アドレスを転送することはできません。ただし、AWS RAM を使用して CoIP を別のアカウントと共有することはできます。CoIP の詳細については[AWS Outposts ユーザーガイド](https://docs.aws.amazon.com/outposts/latest/userguide/routing.html#ip-addressing)の「*カスタマー所有 IP アドレス*」を参照してください 。
+ Amazon VPC IPAM を使用して、AWS Organizations から組織内のアカウントへの Elastic IP アドレスの転送を追跡することができます。詳細については「[IP アドレスの履歴の表示](https://docs.aws.amazon.com/vpc/latest/ipam/view-history-cidr-ipam.html)」を参照してください。Elastic IP アドレスが組織外の AWS アカウント に転送されると、その Elastic IP アドレスの IPAM 監査履歴は失われます。

これらのステップはソースアカウントで実行する必要があります。

------
#### [ Console ]

**Elastic IP アドレスの移管を有効にするには**

1. 転送元となる AWS アカウントを使用していることを確認してください。

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで [**Elastic IP**] を選択してください。

1. 移管を有効にする Elastic IP アドレスを 1 つ以上選択し、**[Action]** (アクション)、**[Enable transfer]** (移管を有効にする) を選択してください。

1. 複数の Elastic IP アドレスを移管する場合は**[Transfer type]** (転送タイプ) オプションが表示されます。以下のオプションのいずれかを選択してください。
   + Elastic IP アドレスを単一の AWS アカウントに移管する場合は**[Single account]** (単一アカウント) を選択してください。
   + Elastic IP アドレスを複数の AWS アカウントに移管する場合は**[Multiple accounts]** (複数アカウント) を選択してください。

1. **[Transfer account ID]** (アカウント ID の移管) に、Elastic IP アドレスの転送先の AWS アカウント ID を入力してください。

1. テキストボックスに「**enable**」と入力して移管を確定します。

1. [**送信**] を選択してください。

1. 移管を承諾するには「[移管された Elastic IP アドレスを承諾する](#using-instance-addressing-eips-transfer-accept-ec2)」を参照してください。移管を無効にするには「[Elastic IP アドレスの移管を無効にする](#using-instance-addressing-eips-transfer-disable-ec2)」を参照してください。

------
#### [ AWS CLI ]

**Elastic IP アドレスの移管を有効にするには**

[enable-address-transfer](https://docs.aws.amazon.com/cli/latest/reference/ec2/enable-address-transfer.html) コマンドを使用します。

```
aws ec2 enable-address-transfer \
    --allocation-id eipalloc-09ad461b0d03f6aaf \
    --transfer-account-id 123456789012
```

------
#### [ PowerShell ]

**Elastic IP アドレスの移管を有効にするには**  
[Enable-EC2AddressTransfer](https://docs.aws.amazon.com/powershell/latest/reference/items/Enable-EC2AddressTransfer.html) コマンドレットを使用します。

```
Enable-EC2AddressTransfer `
    -AllocationId eipalloc-09ad461b0d03f6aaf `
    -TransferAccountId 123456789012
```

------

## 移管された Elastic IP アドレスを承諾する
<a name="using-instance-addressing-eips-transfer-accept-ec2"></a>

このセクションでは移管された Elastic IP アドレスを承諾する方法について説明します。

Elastic IP アドレスを転送する場合、AWS アカウント の間で 2 段階のハンドシェイクが行われます。ソースアカウントが移管を開始してから 7 日間は転送先アカウントが Elastic IP アドレス移管を受け入れることができます。この 7 日間、ソースアカウントは保留中の移管をAWS コンソールやコマンドの [describe-address-transfers](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-address-transfers.html) などを使用して) 確認できます。7 日後、移管の有効期限が切れ、Elastic IP アドレスの所有権がソースアカウントに戻ります。

転送を承諾する際に発生する可能性のある例外と、解決する方法は次のとおりです。
+ **AddressLimitExceeded**: 転送先アカウントが Elastic IP アドレスのクォータを超えている場合、ソースアカウントは Elastic IP アドレス移管を有効にできますが、この例外は転送先アカウントが移管を承諾しようとした場合に発生します。デフォルトではすべての AWS アカウントはリージョンあたり 5 つの Elastic IP アドレスに制限されています。制限を増やす方法については「[Elastic IP アドレスのクォータ](elastic-ip-addresses-eip.md#using-instance-addressing-limit)」を参照してください。
+ **InvalidTransfer.addressCustomPtrSet**: お客様または組織内の誰かが、移管しようとしている Elastic IP アドレスをリバース DNS ルックアップを使用するように設定している場合、ソースアカウントは Elastic IP アドレスの移管を有効にできますが、転送元アカウントが転送を受け入れようとするとこの例外が発生します。この問題を解決するには転送元アカウントで Elastic IP アドレスの DNS レコードを削除する必要があります。詳細については「[Amazon EC2 で E メールの逆引き DNS レコードを作成する](Using_Elastic_Addressing_Reverse_DNS.md)」を参照してください。
+ **InvalidTransfer.AddressAssociated**: Elastic IP アドレスが ENI や EC2 インスタンスと関連付けられている場合、転送元アカウントはその Elastic IP アドレスに対して移管を有効にできますが、転送元アカウントが移管を受け入れようとするとこの例外が発生します。この問題を解決するにはソースアカウントが Elastic IP アドレスの関連付けを解除する必要があります。詳細については「[Elastic IP アドレスの関連付けを解除する](working-with-eips.md#using-instance-addressing-eips-associating-different)」を参照してください。

その他の例外については[サポート にお問い合わせください](https://aws.amazon.com/contact-us/)。

これらのステップは転送先アカウントで実行する必要があります。

------
#### [ Console ]

**Elastic IP アドレスの移管を承諾するには**

1. 転送先アカウントを使用していることを確認してください。

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで [**Elastic IP**] を選択してください。

1. **[Action]** (アクション)、**[Accept transfer]** (移管を許可する) を選択してください。

1. 転送を受け入れると、移管される Elastic IP アドレスに関連付けられたタグは転送されません。承諾する Elastic IP アドレスの **[Name]** (名前) タグを定義する場合は**[Create a tag with a key of 'Name' and a value that you specify]** ('Name'のキーと指定した値を使用してタグを作成) を選択してください。

1. 移管する Elastic IP アドレスを入力してください。

1. 複数の移管された Elastic IP アドレスを受け入れる場合は**[Add address]** (アドレスを追加) を選択して追加の Elastic IP アドレスを入力してください。

1. [**送信**] を選択してください。

------
#### [ AWS CLI ]

**Elastic IP アドレスの移管を承諾するには**

[accept-address-transfer](https://docs.aws.amazon.com/cli/latest/reference/ec2/accept-address-transfer.html) コマンドを使用します。

```
aws ec2 accept-address-transfer --address 100.21.184.216
```

------
#### [ PowerShell ]

**Elastic IP アドレスの移管を承諾するには**  
[Approve-EC2AddressTransfer](https://docs.aws.amazon.com/powershell/latest/reference/items/Approve-EC2AddressTransfer.html) コマンドレットを使用します。

```
Approve-EC2AddressTransfer -Address 100.21.184.216
```

------

## Elastic IP アドレスの移管を無効にする
<a name="using-instance-addressing-eips-transfer-disable-ec2"></a>

このセクションではElastic IP 移管を有効にした後に Elastic IP 転送を無効にする方法について説明します。

これらのステップは移管を有効にしたソースアカウントが実行する必要があります。

------
#### [ Console ]

**Elastic IP アドレスの移行を無効にするには**

1. 転送元となる AWS アカウントを使用していることを確認してください。

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで [**Elastic IP**] を選択してください。

1. Elastic IP のリソースリストで、**[Transfer status]** (移管ステータス) 列を表示するプロパティが有効になっていることを確認します。

1. **[Transfer status]** (移管ステータス) が **[Pending]** (保留中) の Elastic IP アドレスを 1 つ以上選択し、**[Action]** (アクション)、**[Disable transfer]** (移管を無効にする) を選択してください。

1. テキストボックスに「**disable**」と入力して確認します。

1. [**送信**] を選択してください。

------
#### [ AWS CLI ]

**Elastic IP アドレスの移管を無効にするには**

[disable-address-transfer](https://docs.aws.amazon.com/cli/latest/reference/ec2/disable-address-transfer.html) コマンドを使用します。

```
aws ec2 disable-address-transfer --allocation-id eipalloc-09ad461b0d03f6aaf
```

------
#### [ PowerShell ]

**Elastic IP アドレスの移管を無効にするには**  
[Disable-EC2AddressTransfer](https://docs.aws.amazon.com/powershell/latest/reference/items/Disable-EC2AddressTransfer.html) コマンドレットを使用します。

```
Disable-EC2AddressTransfer -AllocationId eipalloc-09ad461b0d03f6aaf
```

------

# Elastic IP アドレスをリリース
<a name="using-instance-addressing-eips-releasing"></a>

Elastic IP アドレスが不要になった場合は解放することをお勧めします。解放する Elastic IP アドレスは現在、AWS リソースに関連付けられていてはなりません。

------
#### [ Console ]

**Elastic IP アドレスを解放するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで [**Elastic IP**] を選択してください。

1. リリースする Elastic IP アドレスを選択してから、**[アクション]**、** [Elastic IP アドレスのリリース]** の順に選択してください。

1. **[リリース]** を選択してください。

------
#### [ AWS CLI ]

**Elastic IP アドレスをリリースするには**  
[release-address](https://docs.aws.amazon.com/cli/latest/reference/ec2/release-address.html) AWS CLI コマンドを使用します。

```
aws ec2 release-address --allocation-id eipalloc-64d5890a
```

------
#### [ PowerShell ]

**Elastic IP アドレスをリリースするには**  
[Remove-EC2Address](https://docs.aws.amazon.com/powershell/latest/reference/items/Remove-EC2Address.html) コマンドレットを使用します。

```
Remove-EC2Address -AllocationId eipalloc-64d5890a
```

------

Elastic IP アドレスを解放した後に、復元できる場合があります。以下のルールが適用されます。
+ Elastic IP アドレスが別の AWS アカウントに割り当てられている場合や Elastic IP アドレスの制限を超過する場合はElastic IP アドレスを復元できません。
+ Elastic IP アドレスに関連付けられたタグを復元することはできません。

------
#### [ AWS CLI ]

**Elastic IP アドレスを復元するには**  
[allocate-address](https://docs.aws.amazon.com/cli/latest/reference/ec2/allocate-address.html) コマンドレットを使用します。

```
aws ec2 allocate-address \
    --domain vpc \
    --address 203.0.113.3
```

------
#### [ PowerShell ]

**Elastic IP アドレスを復元するには**  
[New-EC2Address](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2Address.html) コマンドレットを使用します。

```
New-EC2Address `
    -Address 203.0.113.3 `
    -Domain vpc `
    -Region us-east-1
```

------

# Amazon EC2 で E メールの逆引き DNS レコードを作成する
<a name="Using_Elastic_Addressing_Reverse_DNS"></a>

EC2 インスタンスから第三者に E メールを送信する場合は1 つ以上の Elastic IP アドレスをプロビジョニングし、E メールの送信に使用する Elastic IP アドレスに静的な逆引き DNS レコードを割り当てることをお勧めします。これにより、電子メールが一部のスパム対策組織によりスパムとしてフラグ付けされるのを防ぐことができます。AWSはISP およびインターネットアンチスパム組織と協力して、これらのアドレスから送信された E メールにスパムのフラグが付く可能性を減らしています。

**考慮事項**
+ 逆引き DNS レコードを作成する前に、Elastic IP アドレスを参照する、対応するフォワード DNS レコード (レコードタイプ A) を設定する必要があります。
+ 逆引き DNS レコードが Elastic IP アドレスに関連付けられている場合、その Elastic IP アドレスはアカウントにロックされ、レコードが削除されるまでアカウントからリリースすることはできません。
+ サポートに問い合わせて Elastic IP アドレスの逆引き DNS を設定する場合、逆引き DNS を削除することはできますが、Elastic IP アドレスを解放することはできません。これはElastic IP アドレスが サポートによってロックされているためです。Elastic IP アドレスのロックを解除するには[AWS サポート](https://console.aws.amazon.com/support/home#/) にお問い合わせください。Elastic IP アドレスはロックを解除した後に解放することができます。
+ [AWS GovCloud (US) Region] 逆引き DNS レコードを作成することはできません。AWS から静的な逆引き DNS レコードが割り当てられる必要があります。サポートケースを開いて、逆引き DNS と E メール送信の制限を削除します。エラスチック IP アドレスと逆引き DNS レコードを指定する必要があります。

## 逆引き DNS レコードを作成する
<a name="eip-create-rdns-record"></a>

Elastic IP アドレスの逆引き DNS レコードを作成するには次の手順を実行します。

------
#### [ Console ]

**逆引き DNS レコードを作成するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで [**Elastic IP**] を選択してください。

1. Elastic IP アドレスを選択し、[**Actions**]、[**Update reverse DNS**] の順に選択してください。

1. **[Reverse DNS domain name]** (リバース DNS ドメイン名) の場合、ドメイン名を入力してください。

1. **update** を入力して確定します。

1. [**更新**] を選択してください。

------
#### [ AWS CLI ]

**逆引き DNS レコードを作成するには**  
[https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-address-attribute.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-address-attribute.html) コマンドを使用します。

```
aws ec2 modify-address-attribute \
    --allocation-id eipalloc-abcdef01234567890 \
    --domain-name example.com
```

以下は出力の例です。

```
{
    "Addresses": [
        {
            "PublicIp": "192.0.2.0",
            "AllocationId": "eipalloc-abcdef01234567890",
            "PtrRecord": "example.net.",
            "PtrRecordUpdate": {
                "Value": "example.com.",
                "Status": "PENDING"
            }
        }
    ]
}
```

------
#### [ PowerShell ]

**逆引き DNS レコードを作成するには**  
[https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2AddressAttribute.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2AddressAttribute.html) コマンドレットを使用します。

```
Edit-EC2AddressAttribute `
    -AllocationId 'eipalloc-abcdef01234567890' `
    -DomainName 'example.com' |
Format-List `
    AllocationId, PtrRecord, PublicIp,
    @{Name='PtrRecordUpdate';Expression={$_.PtrRecordUpdate | Format-List | Out-String}}
```

以下は出力の例です。

```
AllocationId    : eipalloc-abcdef01234567890
PtrRecord       : example.net.
PublicIp        : 192.0.2.0
PtrRecordUpdate : 
                  Reason :
                  Status : PENDING
                  Value  : example.com.
```

------

## 逆引き DNS レコードを削除する
<a name="eip-remove-rdns-record"></a>

Elastic IP アドレスから逆引き DNS レコードを削除するには次の手順を実行します。

次のエラーが表示された場合はサポートに [E メール送信制限の解除リクエスト](https://repost.aws/knowledge-center/ec2-port-25-throttle)を送信することで、サポートを受けることができます。

```
The address cannot be released because it is locked to your account.
```

------
#### [ Console ]

**逆引き DNS レコードを削除するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで [**Elastic IP**] を選択してください。

1. Elastic IP アドレスを選択し、[**Actions**]、[**Update reverse DNS**] の順に選択してください。

1. **[Reverse DNS domain name]** (リバース DNS ドメイン名) の場合、ドメイン名をクリアします。

1. **update** を入力して確定します。

1. [**更新**] を選択してください。

------
#### [ AWS CLI ]

**逆引き DNS レコードを削除するには**  
[https://docs.aws.amazon.com/cli/latest/reference/ec2/reset-address-attribute.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/reset-address-attribute.html) コマンドを使用します。

```
aws ec2 reset-address-attribute \
    --allocation-id eipalloc-abcdef01234567890 \
    --attribute domain-name
```

以下は出力の例です。

```
{
    "Addresses": [
        {
            "PublicIp": "192.0.2.0",
            "AllocationId": "eipalloc-abcdef01234567890",
            "PtrRecord": "example.com.",
            "PtrRecordUpdate": {
                "Value": "example.net.",
                "Status": "PENDING"
            }
        }
    ]
}
```

------
#### [ PowerShell ]

**逆引き DNS レコードを削除するには**  
[https://docs.aws.amazon.com/powershell/latest/reference/items/Reset-EC2AddressAttribute.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Reset-EC2AddressAttribute.html) コマンドレットを使用します。

```
Reset-EC2AddressAttribute `
    -AllocationId 'eipalloc-abcdef01234567890' `
    -Attribute domain-name |
Format-List `
    AllocationId, PtrRecord, PublicIp,
    @{Name='PtrRecordUpdate';Expression={$_.PtrRecordUpdate | Format-List | Out-String}}
```

以下は出力の例です。

```
AllocationId    : eipalloc-abcdef01234567890
PtrRecord       : example.com.
PublicIp        : 192.0.2.0
PtrRecordUpdate : 
                  Reason :
                  Status : PENDING
                  Value  : example.net.
```

------

# Elastic Network Interface
<a name="using-eni"></a>

*Elastic Network Interface* は仮想ネットワークカードを表す VPC 内の論理ネットワーキングコンポーネントです。ネットワークインターフェイスを作成および設定して、同じアベイラビリティーゾーンで起動するインスタンスにアタッチできます。ネットワークインターフェイスをインスタンスにアタッチしたり、インスタンスからデタッチして別のインスタンスに再アタッチしたりするときにはネットワークインターフェイスの属性が保持されます。インスタンス間でネットワークインターフェイスを移動すると、ネットワークトラフィックは元のインスタンスから新しいインスタンスにリダイレクトされます。

この AWS リソースはAWS マネジメントコンソール および Amazon EC2 API ではネットワークインターフェイスと呼ばれているので注意してください。したがって、このドキュメントでは Elastic Network Interface ではなく「ネットワークインターフェイス」を使用します。このドキュメントの「ネットワークインターフェイス」という用語は常に Elastic Network Interface を意味します。

**ネットワークインターフェイスの属性**

ネットワークインターフェイスには以下の属性を含めることができます。
+ サブネットの IPv4 アドレス範囲からのプライマリプライベート IPv4 アドレス
+ サブネットの IPv6 アドレス範囲からのプライマリ IPv6 アドレス
+ サブネットの IPv4 アドレス範囲からのセカンダリプライベート IPv4 アドレス
+ プライベート IPv4 アドレスごとに 1 つの Elastic IP アドレス (IPv4)
+ 1 つのパブリック IPv4 アドレス
+ セカンダリ IPv6 アドレス
+ セキュリティグループ
+ MAC アドレス
+ 送信元/送信先チェックフラグ
+ 説明

**トラフィックのモニタリング**  
ネットワークインターフェイスで VPC フローログを有効にして、ネットワークインターフェイスとの間で行き来するトラフィックに関する情報をキャプチャできます。フローログを作成すると、そのデータを Amazon CloudWatch Logs で表示し、取得できます。詳細については*Amazon VPC ユーザーガイド* の[VPC フローログ](https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs.html)を参照してください。

**Topics**
+ [ネットワークインターフェイスの概念](#eni-basics)
+ [ネットワークカード](#network-cards)
+ [ネットワークインターフェイスあたりの IP アドレスの最大数](AvailableIpPerENI.md)
+ [EC2 インスタンス用のネットワークインターフェイスを作成する](create-network-interface.md)
+ [EC2 インスタンスのネットワークインターフェイスのアタッチ](network-interface-attachments.md)
+ [ネットワークインターフェイスの IP アドレスを管理する](managing-network-interface-ip-addresses.md)
+ [ネットワークインターフェイス属性の変更](modify-network-interface-attributes.md)
+ [Amazon EC2 インスタンス用の複数のネットワークインターフェイス](scenarios-enis.md)
+ [リクエスタマネージド型のネットワークインターフェイス](requester-managed-eni.md)
+ [Amazon EC2 ネットワークインターフェイスのプレフィックス委任](ec2-prefix-eni.md)
+ [ネットワークインターフェイスの削除](delete_eni.md)

## ネットワークインターフェイスの概念
<a name="eni-basics"></a>

ネットワークインターフェイスの使用を開始する際に理解しておくべき重要な概念を次に示します。

**プライマリネットワークインターフェイス**  
各インスタンスには*プライマリネットワークインターフェイス*と呼ばれるデフォルトのネットワークインターフェイスがあります。プライマリネットワークインターフェイスをインスタンスからデタッチすることはできません。

**セカンダリネットワークインターフェイス**  
セカンダリネットワークインターフェイスを作成して、インスタンスにアタッチできます。ネットワークインターフェイスの最大数はインスタンスタイプによって異なります。詳細については「[ネットワークインターフェイスあたりの IP アドレスの最大数](AvailableIpPerENI.md)」を参照してください。

**ネットワークインターフェイスの IPv4 アドレス**  
EC2 インスタンスを IPv4 専用サブネットまたはデュアルスタックサブネットで起動すると、インスタンスはサブネットの IPv4 アドレス範囲からプライマリプライベート IP アドレスを受け取ります。追加のプライベート IPv4 アドレス (セカンダリプライベート IPv4 アドレス) も指定できます。プライマリプライベート IP アドレスとは異なり、セカンダリプライベート IP アドレスは別のインスタンスに割り当て直すことができます。

**ネットワークインターフェイスのパブリック IPv4 アドレス**  
すべてのサブネットに、そのサブネットで作成されるネットワークインターフェイス (結果的にそのサブネットで起動されるインスタンス) にパブリック IPv4 アドレスを割り当てるかどうかを決定する、変更可能な属性があります。詳細については「Amazon VPC ユーザーガイド」の「[サブネット設定](https://docs.aws.amazon.com/vpc/latest/userguide/configure-subnets.html#subnet-settings)」を参照してください。インスタンスを起動すると、プライマリネットワークインターフェイスに IP アドレスが割り当てられます。インスタンスの起動時に既存のネットワークインターフェイスをプライマリネットワークインターフェイスとして指定した場合、パブリック IPv4 アドレスはこのネットワークインターフェイスによって決まります。  
ネットワークインターフェイスを作成すると、サブネットからパブリック IPv4 アドレス指定属性を継承します。後でサブネットのパブリック IPv4 アドレス指定属性を変更しても、ネットワークインターフェイスでは作成時に有効だった設定が保持されます。  
インスタンスが停止、休止状態、または終了すると、インスタンスのパブリック IP アドレスが開放されます。Elastic IP アドレスに関連付けられたセカンダリネットワークインターフェイスまたはセカンダリプライベート IPv4 アドレスがない限り、停止または休止したインスタンスを起動すると、新しいパブリック IP アドレスが割り当てられます。

**ネットワークインターフェイスの IPv6 アドレス**  
IPv6 CIDR ブロックを VPC とサブネットに関連付けると、サブネットの範囲から IPv6 アドレスをネットワークインターフェイスに割り当てることができます。各 IPv6 アドレスは1 つのネットワークインターフェイスに割り当てることができます。  
すべてのサブネットにはそのサブネットで作成されるネットワークインターフェイス (結果的にそのサブネットで起動されるインスタンス) にサブネットの範囲から IPv6 アドレスを自動的に割り当てるかどうかを決定する、変更可能な属性があります。インスタンスを起動すると、プライマリネットワークインターフェイスに IPv6 アドレスが割り当てられます。

**ネットワークインターフェイスの Elastic IP アドレス**  
Elastic IP アドレスはネットワークインターフェイスの 1 つのプライベート IPv4 アドレスに関連付けることができます。1 つの Elastic IP アドレスと各プライベート IPv4 アドレスを関連付けることができます。ネットワークインターフェイスから Elastic IP アドレスを関連付け解除すると、その Elastic IP アドレスは解放することも他のインスタンスに関連付けることもできます。

**終了動作**  
インスタンスにアタッチされているネットワークインターフェイスの終了動作を設定できます。アタッチしたインスタンスの終了時に、ネットワークインターフェイスを自動的に削除するかどうかを指定できます。

**送信元/送信先チェック**  
送信元/送信先チェックを有効または無効にできます。これにより、受信するすべてのトラフィックに関して、そのインスタンスが送信元なのか、あるいたは送信先であるのかを確認できます。送信元/送信先チェックはデフォルトで有効化されています。ネットワークアドレス変換、ルーティング、ファイアウォールなどのサービスを実行するインスタンスでは送信元/送信先チェックを無効にする必要があります。

**リクエスタマネージド型のネットワークインターフェイス**  
これらのネットワークインターフェイスは AWS のサービスによって作成および管理され、ユーザーがリソースやサービスを使用できるようになります。これらのネットワークインターフェイスをユーザー自身が管理することはできません。詳細については「[リクエスタマネージド型のネットワークインターフェイス](requester-managed-eni.md)」を参照してください。

**プレフィックスの委任**  
プレフィックスとはインスタンスに関連付けられたネットワークインターフェイスに自動または手動で割り当てるために確保された、予約済みのプライベート IPv4 または IPv6 CIDR 範囲です。委任プレフィクスを使用すると、IP アドレスの範囲を単一のプレフィクスとして割り当てることで、サービスを迅速に起動できます。

**マネージド型のネットワークインターフェイス**  
*マネージドネットワークインターフェイス*は、Amazon EKS Auto Mode などのサービスプロバイダーによって管理されます。管理されたネットワークインターフェイスの設定を直接変更することはできません。管理されたネットワークインターフェイスは **管理された**フィールドの**真の**値によって識別されます。詳細については「[Amazon EC2 マネージドインスタンス](amazon-ec2-managed-instances.md)」を参照してください。

## ネットワークカード
<a name="network-cards"></a>

ほとんどのインスタンスタイプは1 つのネットワークカードをサポートします。複数のネットワークカードをサポートするインスタンスタイプは100 Gbps を超える帯域幅機能やパケットレートのパフォーマンスの向上など、より高いネットワークパフォーマンスを提供します。複数のネットワークカードをサポートするインスタンスにネットワークインターフェイスをアタッチすると、ネットワークインターフェイスのネットワークカードを選択できます。プライマリネットワークインターフェースはネットワークカードインデックス 0 に割り当てる必要があります。

EFA および EFA のみのネットワークインターフェイスはネットワークインターフェイスとしてカウントされます。ネットワークカードごとに割り当てることができる EFA または EFA のみのネットワークインターフェイスは 1 つのみです。EFA のみのネットワークインターフェースを、プライマリネットワークインターフェースにすることはできません。

次のインスタンスタイプは複数のネットワークカードをサポートします。インスタンスタイプがサポートしているネットワークインターフェイスの数については「[ネットワークインターフェイスあたりの IP アドレスの最大数](AvailableIpPerENI.md)」を参照してください。


| インスタンスタイプ | ネットワークカードの数 | 
| --- | --- | 
| c6in.32xlarge | 2 | 
| c6in.metal | 2 | 
| c8gb.48xlarge | 2 | 
| c8gb.metal-48xl | 2 | 
| c8gn.48xlarge | 2 | 
| c8gn.metal-48xl | 2 | 
| dl1.24xlarge | 4 | 
| g6e.24xlarge | 2 | 
| g6e.48xlarge | 4 | 
| g7e.24xlarge | 2 | 
| g7e.48xlarge | 4 | 
| hpc6id.32xlarge | 2 | 
| hpc7a.12xlarge | 2 | 
| hpc7a.24xlarge | 2 | 
| hpc7a.48xlarge | 2 | 
| hpc7a.96xlarge | 2 | 
| hpc8a.96xlarge | 2 | 
| m6idn.32xlarge | 2 | 
| m6idn.metal | 2 | 
| m6in.32xlarge | 2 | 
| m6in.metal | 2 | 
| m8gb.48xlarge | 2 | 
| m8gb.metal-48xl | 2 | 
| m8gn.48xlarge | 2 | 
| m8gn.metal-48xl | 2 | 
| p4d.24xlarge | 4 | 
| p4de.24xlarge | 4 | 
| p5.48xlarge | 32 | 
| p5e.48xlarge | 32 | 
| p5en.48xlarge | 16 | 
| p6-b200.48xlarge | 8 | 
| p6-b300.48xlarge | 17 | 
| p6e-gb200.36xlarge | 17 | 
| r8gb.48xlarge | 2 | 
| r8gb.metal-48xl | 2 | 
| r8gn.48xlarge | 2 | 
| r8gn.metal-48xl | 2 | 
| r6idn.32xlarge | 2 | 
| r6idn.metal | 2 | 
| r6in.32xlarge | 2 | 
| r6in.metal | 2 | 
| trn1.32xlarge | 8 | 
| trn1n.32xlarge | 16 | 
| trn2.48xlarge | 16 | 
| trn2u.48xlarge | 16 | 
| u7in-16tb.224xlarge | 2 | 
| u7in-24tb.224xlarge | 2 | 
| u7in-32tb.224xlarge | 2 | 
| u7inh-32tb.480xlarge | 2 | 

# ネットワークインターフェイスあたりの IP アドレスの最大数
<a name="AvailableIpPerENI"></a>

各インスタンスタイプはネットワークインターフェイスの最大数、ネットワークインターフェイスあたりのプライベート IPv4 アドレスの最大数、ネットワークインターフェイスあたりの IPv6 アドレスの最大数をサポートしています。ネットワークインターフェイスあたりの IPv6 アドレスとプライベート IPv4 アドレスの制限は異なります。C1, M1, M2, M3 を除くすべてのインスタンスタイプが IPv6 アドレス指定をサポートしていることに注意してください。 T1

**利用可能なネットワークインターフェイス**

「Amazon EC2 Instance Types ガイド」には各インスタンスタイプで利用できるネットワークインターフェイスに関する情報が記載されています。詳細については次を参照してください:
+ [ネットワーク仕様 — 汎用](https://docs.aws.amazon.com/ec2/latest/instancetypes/gp.html#gp_network)
+ [ネットワーク仕様 — コンピューティング最適化](https://docs.aws.amazon.com/ec2/latest/instancetypes/co.html#co_network)
+ [ネットワーク仕様 — メモリ最適化](https://docs.aws.amazon.com/ec2/latest/instancetypes/mo.html#mo_network)
+ [ネットワーク仕様 — ストレージ最適化](https://docs.aws.amazon.com/ec2/latest/instancetypes/so.html#so_network)
+ [ネットワーク仕様 — 高速コンピューティング](https://docs.aws.amazon.com/ec2/latest/instancetypes/ac.html#ac_network)
+ [ネットワーク仕様 — ハイパフォーマンスコンピューティング](https://docs.aws.amazon.com/ec2/latest/instancetypes/hpc.html#hpc_network)
+ [ネットワーク仕様 — 旧世代](https://docs.aws.amazon.com/ec2/latest/instancetypes/pg.html#pg_network)

------
#### [ Console ]

**最大ネットワークインターフェイスを取得するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、[**インスタンスタイプ**] を選択します。

1. フィルターを追加して、インスタンスタイプ (**Instance type=c5.12xlarge**) またはインスタンスファミリー (**Instance family=c5**) を指定します。

1. (オプション) **[設定]** アイコンをクリックして、**[ネットワークインターフェイスの最大数]** をオンにします。この列には、各インスタンスタイプの、ネットワークインターフェイスの最大数が表示されています。

1. (オプション) インスタンスタイプを選択します。**[ネットワーク]** タブで、**[ネットワークインターフェイスの最大数]** を見つけます。

------
#### [ AWS CLI ]

**最大ネットワークインターフェイスを取得するには**  
 [describe-instance-types](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instance-types.html) コマンドを使用して、サポートされるネットワークインターフェイスやインターフェイスごとの IP アドレスなど、インスタンスタイプに関する情報を表示できます。次の例ではすべての C8i インスタンスでこれらの情報を表示します。

```
{ echo -e "InstanceType\tMaximumNetworkInterfaces\tIpv4AddressesPerInterface"; \
aws ec2 describe-instance-types \
    --filters "Name=instance-type,Values=c8i.*" \
    --query 'InstanceTypes[*].[InstanceType, NetworkInfo.MaximumNetworkInterfaces, NetworkInfo.Ipv4AddressesPerInterface]' \
    --output text | sort -k2 -n; } | column -t
```

出力例を次に示します。

```
InstanceType    MaximumNetworkInterfaces  Ipv4AddressesPerInterface
c8i.large       3                         20
c8i.2xlarge     4                         30
c8i.xlarge      4                         30
c8i.4xlarge     8                         50
c8i.8xlarge     10                        50
c8i.12xlarge    12                        50
c8i.16xlarge    16                        64
c8i.24xlarge    16                        64
c8i.32xlarge    24                        64
c8i.48xlarge    24                        64
c8i.96xlarge    24                        64
c8i.metal-48xl  24                        64
c8i.metal-96xl  24                        64
```

------
#### [ PowerShell ]

**最大ネットワークインターフェイスを取得するには**  
[Get-EC2InstanceType](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2InstanceType.html) PowerShell コマンドを使用して、サポートされているネットワークインターフェイスやインターフェイスごとの IP アドレスなど、インスタンスタイプに関する情報を表示できます。次の例ではすべての C8i インスタンスでこれらの情報を表示します。

```
Get-EC2InstanceType -Filter @{Name="instance-type"; Values="c8i.*"} |
Select-Object `
    InstanceType,
    @{Name='MaximumNetworkInterfaces'; Expression={$_.NetworkInfo.MaximumNetworkInterfaces}},
    @{Name='Ipv4AddressesPerInterface'; Expression={$_.NetworkInfo.Ipv4AddressesPerInterface}} |
Sort-Object MaximumNetworkInterfaces |
Format-Table -AutoSize
```

出力例を次に示します。

```
InstanceType   MaximumNetworkInterfaces Ipv4AddressesPerInterface
------------   ------------------------ -------------------------
c8i.large                             3                        20
c8i.xlarge                            4                        30
c8i.2xlarge                           4                        30
c8i.4xlarge                           8                        50
c8i.8xlarge                          10                        50
c8i.12xlarge                         12                        50
c8i.24xlarge                         16                        64
c8i.16xlarge                         16                        64
c8i.96xlarge                         24                        64
c8i.48xlarge                         24                        64
c8i.metal-96xl                       24                        64
c8i.32xlarge                         24                        64
c8i.metal-48xl                       24                        64
```

------

# EC2 インスタンス用のネットワークインターフェイスを作成する
<a name="create-network-interface"></a>

EC2 インスタンスで使用するためのネットワークインターフェイスを作成できます。ネットワークインターフェイスを作成する際に、作成先のサブネットを指定します。ネットワークインターフェイスは作成後に別のサブネットに移動することはできません。ネットワークインターフェイスは同じアベイラビリティーゾーンのインスタンスにアタッチする必要があります。セカンダリネットワークインターフェイスをインスタンスからデタッチし、同じアベイラビリティーゾーンの別のインスタンスにアタッチできます。プライマリネットワークインターフェイスをインスタンスからデタッチすることはできません。詳細については「[EC2 インスタンスのネットワークインターフェイスのアタッチ](network-interface-attachments.md)」を参照してください。

------
#### [ Console ]

**ネットワークインターフェイスを作成するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、[**Network Interfaces**] を選択してください。

1. [**ネットワークインターフェイスの作成**] をクリックしてください。

1. (オプション) [**説明**] に分かりやすい名前を入力してください。

1. [**Subnet (サブネット)**] で、サブネットを選択してください。以降のステップで使用できるオプションは選択したサブネットのタイプ (IPv4 専用、IPv6 専用、またはデュアルスタック (IPv4 および IPv6)) によって異なります。

1. **[インターフェイスタイプ]** で、以下のいずれかを選択します。
   + **ENA**: CPU 使用率を最小限に抑えながら、TCP/IP プロトコルの高スループットとパケット毎秒のレートを処理するように設計された高性能ネットワークインターフェイス。これは、デフォルト値です。ENA の詳細については、「[Elastic Network Adapter](enhanced-networking-ena.md)」を参照してください。
   + **ENA を使用した EFA**: ENA デバイスと EFA デバイス両方のサポートにより、従来の TCP/IP ベースのトランスポートと SRD ベースのトランスポートを提供するネットワークインターフェイス。ENA を使用した EFA を選択する場合、アタッチするインスタンスも [EFA をサポート](efa.md#efa-instance-types)している必要があります。EFA の詳細については、「[Elastic Fabric Adapter](efa.md)」を参照してください。
   + **EFA のみ**: オペレーティングシステムスタックをバイパスしながら、SRD ベーストランスポートでの高スループットで低レイテンシーのノード間通信を処理するように設計された高性能ネットワークインターフェイス。このオプションを選択した場合、アタッチするインスタンスも [EFA をサポート](efa.md#efa-instance-types)している必要があります。EFA 専用ネットワークインターフェイスは IP アドレスをサポートしていません。EFA の詳細については、「[Elastic Fabric Adapter](efa.md)」を参照してください。

1. [**プライベート IPv4 アドレス**] で、次のいずれかの操作を実行します。
   + サブネットからの IPv4 アドレスの選択を Amazon EC2 に許可するには[**自動割り当て**] を選択してください。
   + [**カスタム**] を選択した場合は続いてサブネットから選択した IPv4 アドレスを入力してください。

1. (IPv6 アドレスを持つサブネットのみ) [**IPv6 アドレス**] で、次のいずれかの操作を行います。
   + ネットワークインターフェイスに IPv6 アドレスを割り当てたくない場合は[**なし**] を選択してください。
   + サブネットからの IPv6 アドレスの選択を Amazon EC2 に許可するには[**自動割り当て**] を選択してください。
   + [**カスタム**] を選択した場合は続いてサブネットから選択した IPv6 アドレスを入力してください。

1. (オプション) デュアルスタックまたは IPv6 専用サブネットにネットワーク インターフェイスを作成している場合は**プライマリ IPv6 IP の割り当てる**オプションがあります。これにより、プライマリ IPv6 グローバルユニキャストアドレス (GUA) がネットワークインターフェイスに割り当てられます。プライマリ IPv6 アドレスを割り当てると、インスタンスまたは ENI へのトラフィックの中断を回避できます。この ENI が接続されるインスタンスが IPv6 アドレスが変更されないことに依存する場合は**[有効化]** を選択してください。 AWS はインスタンスにアタッチされている ENI に関連付けられた IPv6 アドレスをプライマリ IPv6 アドレスとして自動的に割り当てます。IPv6 GUA アドレスをプライマリ IPv6 として有効にすると、無効にすることはできません。IPv6 GUA アドレスをプライマリ IPv6 にすることを有効にすると、インスタンスが終了するか、ネットワークインターフェースがデタッチされるまで、最初の IPv6 GUA がプライマリ IPv6 アドレスになります。インスタンスに複数の IPv6 アドレスがアタッチされていて、プライマリ IPv6 アドレスを有効にすると、ENI に関連付けられた最初の IPv6 GUA アドレスがプライマリ IPv6 アドレスになります。

1. (オプション) Elastic Fabric Adapter を作成するには**Elastic Fabric Adapter**、[**有効化**] の順にクリックしてください。

1. (オプション) **[詳細設定]** で、オプションで IP プレフィックス委任を設定できます。詳細については「[プレフィックスの委任](ec2-prefix-eni.md)」を参照してください。
   + **自動割り当て** — AWS が VPC サブネットの IPv4 または IPv6 CIDR ブロックからプレフィクスを選択し、ネットワークインターフェイスに割り当てます。
   + **カスタム** — サブネットの IPv4 または IPv6 CIDR ブロックからプレフィクスを指定します。AWS は、プレフィックスをネットワーク インターフェイスに割り当てる前に、そのプレフィックスが他のリソースにまだ割り当てられていないことを確認します。

1. (オプション) **[詳細設定]** の **[アイドル接続追跡タイムアウト]** で、デフォルトのアイドル接続のタイムアウトを変更します。詳細については「[アイドル接続追跡タイムアウト](security-group-connection-tracking.md#connection-tracking-timeouts)」を参照してください。
   + **TCP 確立タイムアウト**: 確立された状態のアイドル TCP 接続のタイムアウト (秒単位)。
     + 最小: `60` 秒
     + 最大: `432000` 秒
     + デフォルト: [Nitrov6](https://docs.aws.amazon.com/ec2/latest/instancetypes/ec2-nitro-instances.html) インスタンスタイプ (P6e-GB200 を除く) の場合、`350` 秒。その他のインスタンスタイプ (P6e-GB200 を含む) の場合、`432000` 秒。
     + 推奨: `432000` 秒未満
   + **UDP タイムアウト**: 単一方向、または 1 つのリクエスト-レスポンストランザクションのみのトラフィックが発生した、アイドル状態にある UDP フローのタイムアウト (秒単位)。
     + 最小: `30` 秒
     + 最大: `60` 秒
     + デフォルト: `30` 秒
   + **UDP ストリームタイムアウト**: 複数のリクエスト-レスポンストランザクションが発生したストリームとして分類される、アイドル状態にある UDP フローのタイムアウト (秒単位)。
     + 最小: `60` 秒
     + 最大: `180` 秒
     + デフォルト: `180` 秒

1. [**Security groups**] で、1 つまたは複数のセキュリティグループを選択してください。

1. (オプション) タグごとに [**新しいタグを追加**] をクリックし、タグキーとオプションのタグ値を入力してください。

1. [**ネットワークインターフェイスの作成**] をクリックしてください。

------
#### [ AWS CLI ]

**例 1: Amazon EC2 で選択された IP アドレスを持つネットワークインターフェイスを作成するには**  
次の [create-network-interface](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-network-interface.html) コマンドを使用します。こちらの例では、パブリック IPv4 アドレスと、Amazon EC2 が選択した IPv6 アドレスを持つネットワークインターフェイスを作成します。

```
aws ec2 create-network-interface \
    --subnet-id subnet-0abcdef1234567890 \
    --description "my dual-stack network interface" \
    --ipv6-address-count 1 \
    --groups sg-1234567890abcdef0
```

**例 2: 特定の IP アドレスを持つネットワークインターフェイスを作成するには**  
次の [create-network-interface](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-network-interface.html) コマンドを使用します。

```
aws ec2 create-network-interface \
    --subnet-id subnet-0abcdef1234567890 \
    --description "my dual-stack network interface" \
    --private-ip-address 10.251.50.12 \
    --ipv6-addresses 2001:db8::1234:5678:1.2.3.4 \
    --groups sg-1234567890abcdef0
```

**例 3: セカンダリ IP アドレスの数でネットワークインターフェイスを作成するには**  
次の [create-network-interface](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-network-interface.html) コマンドを使用します。こちらの例では、Amazon EC2 はプライマリ IP アドレスとセカンダリ IP アドレスの両方を選択します。

```
aws ec2 create-network-interface \
    --subnet-id subnet-0abcdef1234567890 \
    --description "my network interface" \
    --secondary-private-ip-address-count 2 \
    --groups sg-1234567890abcdef0
```

**例 4: 特定のセカンダリ IP アドレスを持つネットワークインターフェイスを作成するには**  
次の [create-network-interface](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-network-interface.html) コマンドを使用します。こちらの例では、プライマリ IP アドレスとセカンダリ IP アドレスを指定します。

```
aws ec2 create-network-interface \
    --subnet-id subnet-0abcdef1234567890 \
    --description "my network interface" \
    --private-ip-addresses PrivateIpAddress=10.0.1.30,Primary=true \
                           PrivateIpAddress=10.0.1.31,Primary=false
    --groups sg-1234567890abcdef0
```

------
#### [ PowerShell ]

**例 1: Amazon EC2 で選択された IP アドレスを持つネットワークインターフェイスを作成するには**  
[New-EC2NetworkInterface](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2NetworkInterface.html) コマンドレットを使用します。こちらの例では、パブリック IPv4 アドレスと、Amazon EC2 が選択した IPv6 アドレスを持つネットワークインターフェイスを作成します。

```
New-EC2NetworkInterface `
    -SubnetId subnet-0abcdef1234567890 `
    -Description "my dual-stack network interface" `
    -Ipv6AddresCount 1 `
    -Group sg-1234567890abcdef0
```

**例 2: 特定の IP アドレスを持つネットワークインターフェイスを作成するには**  
[New-EC2NetworkInterface](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2NetworkInterface.html) コマンドレットを使用します。

```
New-EC2NetworkInterface `
    -SubnetId subnet-0abcdef1234567890 `
    -Description "my dual-stack network interface" `
    -PrivateIpAddress 10.251.50.12 `
    -Ipv6Address $ipv6addr `
    -Group sg-1234567890abcdef0
```

IPv6 アドレスを次のように定義します。

```
$ipv6addr = New-Object Amazon.EC2.Model.InstanceIpv6Address
$ipv6addr1.Ipv6Address = "2001:db8::1234:5678:1.2.3.4"
```

**例 3: セカンダリ IP アドレスの数でネットワークインターフェイスを作成するには**  
[New-EC2NetworkInterface](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2NetworkInterface.html) コマンドレットを使用します。こちらの例では、Amazon EC2 はプライマリ IP アドレスとセカンダリ IP アドレスの両方を選択します。

```
New-EC2NetworkInterface `
    -SubnetId subnet-0abcdef1234567890 `
    -Description "my network interface" `
    -SecondaryPrivateIpAddressCount 2 `
    -Group sg-1234567890abcdef0
```

**例 4: 特定のセカンダリ IP アドレスを持つネットワークインターフェイスを作成するには**  
[New-EC2NetworkInterface](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2NetworkInterface.html) コマンドレットを使用します。こちらの例では、プライマリ IP アドレスとセカンダリ IP アドレスを指定します。

```
New-EC2NetworkInterface `
    -SubnetId subnet-0abcdef1234567890 `
    -Description "my network interface" `
    -PrivateIpAddresses @($primary, $secondary) `
    -Group sg-1234567890abcdef0
```

セカンダリアドレスを次のように定義します。

```
$primary = New-Object Amazon.EC2.Model.PrivateIpAddressSpecification
$primary.PrivateIpAddress = "10.0.1.30"
$primary.Primary = $true
$secondary = New-Object Amazon.EC2.Model.PrivateIpAddressSpecification
$secondary.PrivateIpAddress = "10.0.1.31"
$secondary.Primary = $false
```

------

# EC2 インスタンスのネットワークインターフェイスのアタッチ
<a name="network-interface-attachments"></a>

EC2 インスタンスがプライマリまたはセカンダリのネットワークインターフェイスとして使用するネットワークインターフェイスを作成できます。ネットワークインターフェイスがネットワークインターフェイスと同じアベイラビリティーゾーンにある場合、そのネットワークインターフェイスを EC2 インスタンスにアタッチする必要があります。インスタンスのインスタンスタイプによって、インスタンスにアタッチできるネットワークインターフェイスの数が決まります。詳細については「[ネットワークインターフェイスあたりの IP アドレスの最大数](AvailableIpPerENI.md)」を参照してください。

**考慮事項**
+ ネットワークインターフェイスはインスタンスの実行中、インスタンスの停止中、インスタンスの起動中にインスタンスにアタッチできます (それぞれ、ホットアタッチ、ウォームアタッチ、コールドアタッチと呼ばれています)。
+ セカンダリネットワークインターフェイスはインスタンスの実行中または停止中にデタッチできます。ただし、プライマリネットワークインターフェイスをデタッチすることはできません。
+ セカンダリネットワークインターフェイスをあるインスタンスからデタッチし、別のインスタンスにアタッチできます。
+ CLI、API、または SDK を使用してインスタンスを起動する場合、プライマリネットワークインターフェイスおよび追加のネットワークインターフェイスを指定できます。起動時にセカンダリネットワークインターフェイスを追加する場合、パブリック IPv4 アドレスの自動割り当てを有効にできません。
+ 複数のネットワークインターフェイスを使用して Amazon Linux または Windows Server インスタンスを起動すると、インスタンスのオペレーティングシステム上でインターフェイス、プライベート IPv4 アドレス、ルートテーブルが自動的に設定されます。
+ 追加ネットワークインターフェイスをウォームアタッチまたはホットアタッチする際、場合によっては手動で 2 つ目のインターフェイスを起動し、プライベート IPv4 アドレスを設定し、ルートテーブルを適宜変更する必要が生じます。Amazon Linux または Windows Server を実行するインスタンスはウォームアタッチまたはホットアタッチを自動的に認識し、それらのインスタンス自体を設定します。
+ 別のネットワークインターフェイスをインスタンスにアタッチする (NIC チーミング設定など) ことで、デュアルホーム接続インスタンスとの間のネットワーク帯域幅を増加または倍増させることはできません。
+ 同じサブネットから複数のネットワークインターフェイスをインスタンスにアタッチする場合、非対称ルーティングなどのネットワーク問題が発生する場合があります。可能であれば、代わりにプライマリネットワークインターフェイス上にセカンダリプライベート IPv4 アドレスを追加します。
+ IPv6 専用サブネット内の EC2 インスタンスの場合、セカンダリネットワークインターフェイスをアタッチすると、セカンダリネットワークインターフェイスのプライベート DNS ホスト名はプライマリネットワークインターフェイスのプライマリ IPv6 アドレスに解決されます。
+ [Windows インスタンス] – 複数のネットワークインターフェイスをインスタンスに追加する場合、静的ルーティングを使用するようにネットワークインターフェイスを設定する必要があります。

## ネットワークインターフェイスのアタッチ
<a name="attach_eni"></a>

同じアベイラビリティーゾーンにあるインスタンスであれば、ネットワークインターフェイスをアタッチできます。アタッチするにはAmazon EC2 コンソールの **[インスタンス]** または **[ネットワークインターフェイス]** ページを開きます。または[インスタンスを起動](ec2-launch-instance-wizard.md)する際に、既存のネットワークインターフェイスを指定することもできます。

インスタンスのパブリック IPv4 アドレスが解放される場合、複数のネットワークインターフェイスがそのインスタンスにアタッチされていると、インスタンスに新しいパブリック IP アドレスは送信されません。パブリック IPv4 アドレスの動作の詳細については[パブリック IPv4 アドレス](using-instance-addressing.md#concepts-public-addresses)を参照してください。

------
#### [ Console ]

**インスタンスページを使用してネットワークインターフェイスをインスタンスにアタッチするには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、[**インスタンス**] を選択してください。

1. インスタンスのチェックボックスをオンにします。

1. [**Actions (アクション)**]、[**Networking (ネットワーク)**]、[**Attach Network Interface (ネットワークインターフェイスのアタッチ)**] の順に選択してください。

1. VPC を選択してください。ネットワークインターフェイスがインスタンスと同じアベイラビリティゾーンにある場合に限り、ネットワークインターフェイスはインスタンスと同じ VPC または所有する別の VPC に所在することができます。これにより、ネットワークとセキュリティの設定が異なる VPC にまたがるマルチホームインスタンスを作成できます。

1. ネットワークインターフェイスを選択してください。インスタンスが複数のネットワークカードをサポートしている場合はネットワークカードを選択できます。

1. [**アタッチ**] を選択してください。

**ネットワークインターフェイスページを使用してネットワークインターフェイスをアタッチするには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、[**Network Interfaces**] を選択してください。

1. ネットワークインターフェイスのチェックボックスをオンにします。

1. [**アクション**]、[**アタッチ**] の順にクリックしてください。

1. インスタンスを選択してください。インスタンスが複数のネットワークカードをサポートしている場合はネットワークカードを選択できます。

1. [**アタッチ**] を選択してください。

------
#### [ AWS CLI ]

**ネットワークインターフェイスをアタッチするには**  
次の [attach-network-interface](https://docs.aws.amazon.com/cli/latest/reference/ec2/attach-network-interface.html) コマンドを使用します。

```
aws ec2 attach-network-interface \
    --network-interface-id eni-1234567890abcdef0 \
    --instance-id i-1234567890abcdef0 \
    --device-index 1
```

------
#### [ PowerShell ]

**ネットワークインターフェイスをアタッチするには**  
[Add-EC2NetworkInterface](https://docs.aws.amazon.com/powershell/latest/reference/items/Add-EC2NetworkInterface.html) コマンドレットを使用します。

```
Add-EC2NetworkInterface `
    -NetworkInterfaceId eni-1234567890abcdef0 `
    -InstanceId i-1234567890abcdef0 `
    -DeviceIndex 1
```

------

## ネットワークインターフェイスをデタッチする
<a name="detach_eni"></a>

ある時点で EC2 インスタンスにアタッチされているセカンダリネットワークインターフェイスはAmazon EC2 コンソールの [**インスタンス**] ページまたは [**ネットワークインターフェイス**] ページを使用して、いつでもデタッチできます。

Elastic Load Balancing ロードバランサー、Lambda 関数、WorkSpace、NAT ゲートウェイなど、別のサービスからリソースにアタッチされているネットワークインターフェイスをデタッチしようとすると、そのリソースに対するアクセス許可がないことを知らせるエラーが表示されます。ネットワークインターフェイスにアタッチされているリソースを作成したサービスを特定するにはそのネットワークインターフェイスの説明を確認します。リソースを削除すると、そのネットワークインターフェイスも削除されます。

------
#### [ Console ]

**インスタンスページを使用してネットワークインターフェイスをデタッチするには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、[**インスタンス**] を選択してください。

1. インスタンスのチェックボックスをオンにします。[**ネットワーキング**] タブにある [**ネットワークインタフェース**] セクションを選択して、そのネットワークインターフェイスが、セカンダリネットワークインターフェイスとしてインスタンスにアタッチされていることを確認します。

1. [**Actions (アクション)**]、[**Networking (ネットワーク)**]、[**Detach Network Interface (ネットワークインターフェイスのデタッチ)**] の順に選択してください。

1. ネットワークインターフェイスを選択し、[**デタッチ**] を選択してください。

**ネットワークインターフェイスページを使用してネットワークインターフェイスをデタッチするには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、[**Network Interfaces**] を選択してください。

1. ネットワークインターフェイスのチェックボックスをオンにします。[**詳細**] タブの [**インスタンスの詳細**] セクションを選択し、そのネットワークインターフェイスが、セカンダリネットワークインターフェイスとしてインスタンスにアタッチされていることを確認します。

1. [**アクション**]、[**デタッチ**] の順にクリックしてください。

1. 確認を求められたら、[**デタッチ**] を選択してください。

1. ネットワークインターフェイスをインスタンスからデタッチできなかった場合は[**強制デタッチ**]、[**有効化**] の順にクリックし再試行します。強制デタッチは最終的手段としてのみご使用になることをお勧めします。デタッチを強制すると、インスタンスを再起動するまで、同じインデックスに別のネットワークインターフェイスをアタッチできなくなります。また、インスタンスを再起動するまで、ネットワークインターフェイスがデタッチされたことをインスタンスメタデータに反映しないようにできます。

------
#### [ AWS CLI ]

**ネットワークインターフェースをデタッチするには**  
次の [detach-network-interface](https://docs.aws.amazon.com/cli/latest/reference/ec2/detach-network-interface.html) コマンドを使用します。

```
aws ec2 detach-network-interface --attachment-id eni-attach-016c93267131892c9
```

------
#### [ PowerShell ]

**ネットワークインターフェースをデタッチするには**  
[Dismount-EC2NetworkInterface](https://docs.aws.amazon.com/powershell/latest/reference/items/Dismount-EC2NetworkInterface.html) コマンドレットを使用します。

```
Dismount-EC2NetworkInterface -AttachmentId eni-attach-016c93267131892c9
```

------

# ネットワークインターフェイスの IP アドレスを管理する
<a name="managing-network-interface-ip-addresses"></a>

ネットワークインターフェースの次の IP アドレスを管理できます。
+ Elastic IP アドレス (プライベート IPv4 アドレスごとに 1 つ)
+ IPv4 アドレス
+ IPv6 アドレス

------
#### [ Console ]

**ネットワークインターフェイスの IP アドレスを管理するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、[**Network Interfaces**] を選択してください。

1. ネットワークインターフェイスのチェックボックスをオンにします。

1. IPv4 アドレスと IPv6 アドレスを管理するには、次の操作を行います。

   1. [**アクション**]、[**IP アドレスの管理**] の順にクリックしてください。

   1. ネットワークインターフェイスを展開します。

   1. **[IPv4 アドレス]** で、必要に応じて IP アドレスを修正します。追加の IPv4 アドレスを割り当てるには、**[新しい IP アドレスの割り当て]** をクリックし、サブネット範囲にある IPv4 アドレスを指定するか、AWS に自動選択させます。

   1. (デュアルスタックまたは IPv6 のみ) **IPv6 アドレス**については、必要に応じて IP アドレスを修正します。追加の IPv6 アドレスを割り当てるには、**[新しい IP アドレスの割り当て]** をクリックし、サブネット範囲にある IPv6 アドレスを指定するか、AWS に自動選択させます。

   1. ネットワークインターフェイスにパブリック IPv4 アドレスを割り当てるまたは割り当て解除するには**[パブリック IP の自動割り当て]** を選択してください。こちらは任意のネットワークインターフェイスで有効または無効にできますが、影響が及ぶのはプライマリネットワークインターフェイスのみです。

   1. (デュアルスタックまたは IPv6 のみの場合) **[プライマリ IPv6 IP の割り当て]** で、**[有効]** を選択してプライマリ IPv6 IP アドレスを割り当てます。ネットワークインターフェイスに関連付けられた最初の GUA が、プライマリ IPv6 アドレスとして選択されます。プライマリ IPv6 アドレスを割り当てた後は、これを変更することはできません。インスタンスが終了するか、ネットワークインターフェイスがデタッチされるまで、このアドレスがプライマリ IPv6 アドレスとなります。

   1. [**Save**] を選択してください。

1. Elastic IP アドレスを関連付けるには次の操作を行います。

   1. [**アクション**]、[**アドレスの関連付け**] の順にクリックしてください。

   1. [**Elastic IP アドレス**] で、Elastic IP アドレスを選択してください。

   1. [**プライベート IPv4 アドレス**] で、Elastic IP アドレスに関連付けるプライベート IPv4 アドレスを選択してください。

   1. (オプション) 現在、ネットワークインターフェイスが別のインスタンスまたはネットワークインターフェイスに関連付けられている場合は[**Elastic IP アドレスの再関連付けを許可する**] をクリックしてください。

   1. [**Associate**] を選択してください。

1. Elastic IP アドレスの関連付けを解除するには次の手順を実行します。

   1. [**Actions**]、[**Disassociate address**] の順に選択してください。

   1. [**パブリック IP アドレス**] で、Elastic IP アドレスを選択してください。

   1. [**関連付け解除**] を選択してください。

------
#### [ AWS CLI ]

**IPv4 アドレスを管理するには**  
IPv4 アドレスを割り当てるには、次の [assign-private-ip-addresses](https://docs.aws.amazon.com/cli/latest/reference/ec2/assign-private-ip-addresses.html) コマンドを使用します。

```
aws ec2 assign-private-ip-addresses \
    --network-interface-id eni-1234567890abcdef0 \
    --private-ip-addresses 10.0.0.82
```

IPv4 アドレスの割り当てを解除するには、次の [unassign-private-ip-addresses](https://docs.aws.amazon.com/cli/latest/reference/ec2/unassign-private-ip-addresses.html) コマンドを使用します。

```
aws ec2 unassign-private-ip-addresses \
    --network-interface-id eni-1234567890abcdef0 \
    --private-ip-addresses 10.0.0.82
```

**IPv6 アドレスを管理するには**  
IPv6 アドレスを割り当てるには、次の [assign-ipv6-addresses](https://docs.aws.amazon.com/cli/latest/reference/ec2/assign-ipv6-addresses.html) コマンドを使用します。

```
aws ec2 assign-ipv6-addresses \
    --network-interface-id eni-1234567890abcdef0 \
    --ipv6-addresses 2001:db8:1234:1a00:9691:9503:25ad:1761
```

IPv6 アドレスの割り当てを解除するには、次の [unassign-ipv6-addresses](https://docs.aws.amazon.com/cli/latest/reference/ec2/unassign-ipv6-addresses.html) コマンドを使用します。

```
aws ec2 unassign-ipv6-addresses \
    --network-interface-id eni-1234567890abcdef0 \
    --ipv6-addresses 2001:db8:1234:1a00:9691:9503:25ad:1761
```

**プライマリプライベート IPv4 アドレスの Elastic IP アドレスを管理するには**  
次の [associate-address](https://docs.aws.amazon.com/cli/latest/reference/ec2/associate-address.html) コマンドを使用して、Elastic IP アドレスをプライマリプライベート IPv4 アドレスに関連付けます。

```
aws ec2 associate-address \
    --allocation-id eipalloc-0b263919b6EXAMPLE \
    --network-interface-id eni-1234567890abcdef0
```

次の [disassociate-address](https://docs.aws.amazon.com/cli/latest/reference/ec2/disassociate-address.html) コマンドを使用して、Elastic IP アドレスとプライマリプライベート IPv4 アドレスの関連付けを解除します。

```
aws ec2 disassociate-address --association-id eipassoc-2bebb745a1EXAMPLE
```

------
#### [ PowerShell ]

**IPv4 アドレスを管理するには**  
[Register-EC2PrivateIpAddress](https://docs.aws.amazon.com/powershell/latest/reference/items/Register-EC2PrivateIpAddress.html) コマンドレットを使用して、IPv4 アドレスを割り当てます。

```
Register-EC2PrivateIpAddress `
    -NetworkInterfaceId eni-1234567890abcdef0 `
    -PrivateIpAddress 10.0.0.82
```

[Unregister-EC2PrivateIpAddress](https://docs.aws.amazon.com/powershell/latest/reference/items/Unregister-EC2PrivateIpAddress.html) コマンドレットを使用して、IPv4 アドレスの割り当てを解除します。

```
Unregister-EC2PrivateIpAddress `
    -NetworkInterfaceId eni-1234567890abcdef0 `
    -PrivateIpAddress 10.0.0.82
```

**IPv6 アドレスを管理するには**  
[Register-EC2Ipv6AddressList](https://docs.aws.amazon.com/powershell/latest/reference/items/Register-EC2Ipv6AddressList.html) コマンドレットを使用して、IPv6 アドレスを割り当てます。

```
Register-EC2Ipv6AddressList `
    -NetworkInterfaceId eni-1234567890abcdef0 `
    -Ipv6Address 2001:db8:1234:1a00:9691:9503:25ad:1761
```

[Unregister-EC2Ipv6AddressList](https://docs.aws.amazon.com/powershell/latest/reference/items/Unregister-EC2Ipv6AddressList.html) コマンドレットを使用して、IPv6 アドレスの割り当てを解除します。

```
Unregister-EC2Ipv6AddressList `
    -NetworkInterfaceId eni-1234567890abcdef0 `
    -Ipv6Address 2001:db8:1234:1a00:9691:9503:25ad:1761
```

**プライマリプライベート IPv4 アドレスの Elastic IP アドレスを管理するには**  
[Register-EC2Address](https://docs.aws.amazon.com/powershell/latest/reference/items/Register-EC2Address.html) コマンドレットを使用して、Elastic IP アドレスをプライマリプライベート IPv4 アドレスに関連付けます。

```
Register-EC2Address `
    -NetworkInterfaceId eni-1234567890abcdef0 `
    -AllocationId eipalloc-0b263919b6EXAMPLE
```

[Unregister-EC2Address](https://docs.aws.amazon.com/powershell/latest/reference/items/Unregister-EC2Address.html) コマンドレットを使用して、Elastic IP アドレスとプライマリプライベート IPv4 アドレスの関連付けを解除します。

```
Unregister-EC2Address -AssociationId eipassoc-2bebb745a1EXAMPLE
```

------

# ネットワークインターフェイス属性の変更
<a name="modify-network-interface-attributes"></a>

次のネットワークインターフェース属性を変更できます。
+ 説明
+ セキュリティグループ
+ 終了時に削除
+ 送信元/送信先チェック
+ アイドル接続追跡タイムアウト

**考慮事項**  
リクエスタマネジード型のネットワークインターフェイスの属性は、変更できません。

------
#### [ Console ]

**ネットワークインターフェイスの属性を変更するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、[**Network Interfaces**] を選択してください。

1. ネットワークインターフェイスのチェックボックスをオンにします。

1. 説明を変更するには、以下を実行します。

   1. [**アクション**]、[**説明の変更**] の順にクリックしてください。

   1. [**説明**] に説明を入力します。

   1. [**Save**] を選択してください。

1. セキュリティグループを変更するには、以下を実行します。

   1. [**アクション**]、[**セキュリティグループの変更**] の順にクリックしてください。

   1. **[関連付けられたセキュリティグループ]** で、必要に応じてセキュリティグループを追加および削除します。セキュリティグループとネットワークインターフェイスは同じ VPC に対して作成する必要があります。

   1. [**Save**] を選択してください。

1. 終了動作を変更するには、以下を実行します。

   1. [**アクション**]、[**終了時の動作を変更**] の順にクリックしてください。

   1. **[終了時に削除]** を選択するか、解除して **[有効]** にします。

   1. [**Save**] を選択してください。

1. 送信元/送信先チェックを変更するには、以下を実行します。

   1. [**アクション**]、[**送信元/送信先チェックの変更**] の順にクリックしてください。

   1. **[送信元/送信先チェック]** を選択するか、解除して **[有効]** にします。

   1. [**Save**] を選択してください。

1. [アイドル接続追跡タイムアウト] を変更するには、以下を実行します。

   1. **[アクション]**、**[アイドル接続追跡タイムアウトを変更]** の順に選択します。

   1. 必要に応じてタイムアウト値を変更します。詳細については「[アイドル接続追跡タイムアウト](security-group-connection-tracking.md#connection-tracking-timeouts)」を参照してください。
      + **TCP 確立タイムアウト**: 確立された状態のアイドル TCP 接続のタイムアウト (秒単位)。
        + 最小: `60` 秒
        + 最大: `432000` 秒
        + デフォルト: [Nitrov6](https://docs.aws.amazon.com/ec2/latest/instancetypes/ec2-nitro-instances.html) インスタンスタイプ (P6e-GB200 を除く) の場合、`350` 秒。その他のインスタンスタイプ (P6e-GB200 を含む) の場合、`432000` 秒。
        + 推奨: `432000` 秒未満
      + **UDP タイムアウト**: 単一方向、または 1 つのリクエスト-レスポンストランザクションのみのトラフィックが発生した、アイドル状態にある UDP フローのタイムアウト (秒単位)。
        + 最小: `30` 秒
        + 最大: `60` 秒
        + デフォルト: `30` 秒
      + **UDP ストリームタイムアウト**: 複数のリクエスト-レスポンストランザクションが発生したストリームとして分類される、アイドル状態にある UDP フローのタイムアウト (秒単位)。
        + 最小: `60` 秒
        + 最大: `180` 秒
        + デフォルト: `180` 秒

   1. [**Save**] を選択してください。

------
#### [ AWS CLI ]

**Example 例: 説明を変更するには**  
次の [modify-network-interface-attribute](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-network-interface-attribute.html) コマンドを使用します。  

```
aws ec2 modify-network-interface-attribute \
    --network-interface-id eni-1234567890abcdef0 \
    --description "my updated description"
```

**Example 例: セキュリティグループを変更するには**  
次の [modify-network-interface-attribute](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-network-interface-attribute.html) コマンドを使用します。  

```
aws ec2 modify-network-interface-attribute \
    --network-interface-id eni-1234567890abcdef0 \
    --groups sg-1234567890abcdef0
```

**Example 例: 終了動作を変更するには**  
次の [modify-network-interface-attribute](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-network-interface-attribute.html) コマンドを使用します。  

```
aws ec2 modify-network-interface-attribute \
    --network-interface-id eni-1234567890abcdef0 \
    --attachment AttachmentId=eni-attach-43348162abEXAMPLE,DeleteOnTermination=false
```

**Example 例: 送信元/送信先チェックを有効にするには**  
次の [modify-network-interface-attribute](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-network-interface-attribute.html) コマンドを使用します。  

```
aws ec2 modify-network-interface-attribute \
    --network-interface-id eni-1234567890abcdef0 \
    --source-dest-check
```

**Example 例: アイドル接続追跡タイムアウトを変更するには**  
次の [modify-network-interface-attribute](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-network-interface-attribute.html) コマンドを使用します。詳細については「[アイドル接続追跡タイムアウト](security-group-connection-tracking.md#connection-tracking-timeouts)」を参照してください。  

```
aws ec2 modify-network-interface-attribute \
    --network-interface-id eni-1234567890abcdef0 \
    --connection-tracking-specification TcpEstablishedTimeout=172800,UdpStreamTimeout=90,UdpTimeout=60
```

------
#### [ PowerShell ]

**Example 例: 説明を変更するには**  
[Edit-EC2NetworkInterfaceAttribute](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2NetworkInterfaceAttribute.html) コマンドレットを使用します。  

```
Edit-EC2NetworkInterfaceAttribute `
    -NetworkInterfaceId eni-1234567890abcdef0 `
    -Description "my updated description"
```

**Example 例: セキュリティグループを変更するには**  
[Edit-EC2NetworkInterfaceAttribute](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2NetworkInterfaceAttribute.html) コマンドレットを使用します。  

```
Edit-EC2NetworkInterfaceAttribute `
    -NetworkInterfaceId eni-1234567890abcdef0 `
    -Group sg-1234567890abcdef0
```

**Example 例: 終了動作を変更するには**  
[Edit-EC2NetworkInterfaceAttribute](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2NetworkInterfaceAttribute.html) コマンドレットを使用します。  

```
Edit-EC2NetworkInterfaceAttribute `
    -NetworkInterfaceId eni-1234567890abcdef0 `
    -Attachment_AttachmentId eni-attach-43348162abEXAMPLE `
    -Attachment_DeleteOnTermination $false
```

**Example 例: 送信元/送信先チェックを有効にするには**  
[Edit-EC2NetworkInterfaceAttribute](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2NetworkInterfaceAttribute.html) コマンドレットを使用します。  

```
Edit-EC2NetworkInterfaceAttribute `
    -NetworkInterfaceId eni-1234567890abcdef0 `
    -SourceDestCheck $true
```

**Example 例: アイドル接続追跡タイムアウトを変更するには**  
[Edit-EC2NetworkInterfaceAttribute](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2NetworkInterfaceAttribute.html) コマンドレットを使用します。詳細については「[アイドル接続追跡タイムアウト](security-group-connection-tracking.md#connection-tracking-timeouts)」を参照してください。  

```
Edit-EC2NetworkInterfaceAttribute `
    -NetworkInterfaceId eni-1234567890abcdef0 `
    -ConnectionTrackingSpecification_TcpEstablishedTimeout 172800 `
    -ConnectionTrackingSpecification_UdpStreamTimeout 90 `
    -ConnectionTrackingSpecification_UdpTimeout 60
```

------

# Amazon EC2 インスタンス用の複数のネットワークインターフェイス
<a name="scenarios-enis"></a>

以下が必要な場合、1 つのインスタンスに複数のネットワークインターフェイスをアタッチすると便利です。
+ [管理ネットワーク](#creating-a-management-network)。
+ [ネットワークアプライアンスとセキュリティアプライアンス](#use-network-and-security-appliances-in-your-vpc)。
+ 異なる[サブネット](#creating-dual-homed-instances-with-workloads-roles-on-distinct-subnets)または [VPC](#creating-dual-homed-instances-with-workloads-roles-on-distinct-subnets) にワークロードを持つデュアルホーム接続インスタンス。
+ [低予算で可用性の高い](#create-a-low-budget-high-availability-solution)ソリューション。

## 管理ネットワーク
<a name="creating-a-management-network"></a>

次の概要では複数のネットワークインターフェイスを使用して作成された管理ネットワークについて説明します。

**条件**
+ インスタンスのプライマリネットワークインターフェイス (例えば、eth0) がパブリックトラフィックを処理します。
+ インスタンスのセカンダリネットワークインターフェイス (例えばeth1) がバックエンド管理トラフィックを処理します。より厳格なアクセス制御を使用した個別のサブネットに接続されており、プライマリネットワークインターフェイスと同じアベイラビリティーゾーン内にあります。

**設定**
+ プライマリネットワークインターフェイスはロードバランサーの背後にある場合とそうでない場合があり、インターネットからのサーバーへのアクセスを許可するセキュリティグループが関連付けられています。例えば、0.0.0.0/0 またはロードバランサーからの TCP ポート 80 と 443 を許可します。
+ セカンダリネットワークインターフェイスには次のいずれかの場所から開始された SSH アクセスのみを許可するセキュリティグループが関連付けられています。
  + VPC 内またはインターネット上の IP アドレスの許容範囲。
  + プライマリネットワークインターフェイスと同じアベイラビリティーゾーン内のプライベートサブネット。
  + 仮想プライベートゲートウェイ。

**注記**  
フェイルオーバー機能が確実に動作するように、ネットワークインターフェイスの受信トラフィックに対してセカンダリプライベート IPv4 を使用することをお勧めします。インスタンスに障害が発生した場合はインターフェイスまたはセカンダリプライベート IPv4 アドレスあるいはその両方をスタンバイ用のインスタンスに移行できます。

![\[管理用ネットワークの作成\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/EC2_ENI_management_network.png)


## ネットワークアプライアンスとセキュリティアプライアンス
<a name="use-network-and-security-appliances-in-your-vpc"></a>

ロードバランサー、ネットワークアドレス変換 (NAT) サーバー、プロキシサーバーなど、ネットワークアプライアンスやセキュリティアプライアンスの中には複数のネットワークインターフェイスを使用した構成が優先されるものがあります。セカンダリネットワークインターフェイスを作成して、これらのタイプのアプリケーションを実行するインスタンスにアタッチし、専用のパブリック IP アドレスとプライベート IP アドレス、セキュリティグループ、およびソース/デスティネーションチェックを使用するインターフェイスを、追加で構成することができます。

## 異なるサブネットにワークロードを持つデュアルホーム接続インスタンス
<a name="creating-dual-homed-instances-with-workloads-roles-on-distinct-subnets"></a>

アプリケーションサーバーが存在するミッドティアネットワークに接続する Web サーバーのそれぞれにネットワークインターフェイスを置くことができます。このアプリケーションサーバーはデータベースサーバーが存在するバックエンドネットワーク (サブネット) にデュアルホーム接続することもできます。デュアルホーム接続されたインスタンスを介してネットワークパケットをルーティングする代わりに、デュアルホーム接続された各インスタンスはフロントエンドでリクエストを受信して処理し、バックエンドとの接続を開始して、バックエンドネットワーク上のサーバーにリクエストを送信します。

## 同じアカウントで異なる VPC にワークロードを持つデュアルホーム接続インスタンス
<a name="creating-dual-homed-instances-with-workloads-roles-on-distinct-vpcs"></a>

ネットワークインターフェイスがインスタンスと同じアベイラビリティーゾーンにある場合に限り、1 つの VPC で EC2 インスタンスを起動して別の VPC からセカンダリ ENI をアタッチできます。これにより、ネットワークとセキュリティの設定が異なる VPC にまたがるマルチホームインスタンスを作成できます。異なる AWS アカウントの VPC 間でマルチホームインスタンスを作成することはできません。

VPC にまたがるデュアルホームインスタンスは次のユースケースで使用できます。
+ **相互にピアリングできない 2 つの VPC 間における CIDR の重複を克服**: VPC のセカンダリ CIDR を活用して、重複しない 2 つの IP 範囲でインスタンスが通信できるようにします。
+ **単一アカウント内で複数の VPC を接続**: 通常は VPC の境界で区切られている個々のリソース間における通信を可能にします。

## 低予算で可用性の高いソリューション
<a name="create-a-low-budget-high-availability-solution"></a>

特定の機能にサービスを提供しているインスタンスのいずれかが機能しなくなった場合はそのネットワークインターフェイスを同じ役割で構成された交換用またはホットスタンバイ用のインスタンスにアタッチすることで、サービスを迅速に回復できます。例えば、データベースインスタンスや NAT インスタンスなどの重要なサービスに対するプライマリまたはセカンダリのネットワークインターフェイスとしてネットワークインターフェイスを使用することができます。そのインスタンスが機能しなくなった場合、お客様 (通常はお客様に代わって実行されるコード) がネットワークインターフェイスをホットスタンバイ用のインスタンスにアタッチすることができます。インターフェイスではプライベート IP アドレス、Elastic IP アドレス、および MAC アドレスがそのまま維持されるため、交換用のインスタンスにネットワークインターフェイスを接続するとすぐに、ネットワークトラフィックはスタンバイ用のインスタンスに流れ始めます。インスタンスに障害が発生してから、ネットワークインターフェイスがスタンバイ用のインスタンスにアタッチされるまで一時的な接続断が発生しますが、ルートテーブルや DNS サーバーに変更を加える必要はありません。

# リクエスタマネージド型のネットワークインターフェイス
<a name="requester-managed-eni"></a>

リクエスタマネージド型ネットワークインターフェイスはAWS のサービスがユーザーに代わって VPC 内に作成するネットワークインターフェイスです。ネットワークインターフェイスは、Amazon RDS の DB インスタンス、NAT ゲートウェイ、または AWS PrivateLink のインターフェイス VPC エンドポイントなど、別のサービスのリソースに関連付けられています。

**考慮事項**
+ アカウントにあるリクエスタマネージド型ネットワークインターフェイスを確認できます。タグを追加または削除することはできますが、リクエスタマネージド型ネットワークインターフェイスの他のプロパティは変更できません。
+ リクエスタマネジード型ネットワークインターフェイスをデタッチすることはできません。
+ リクエスタマネジード型ネットワークインターフェイスに関連付けられているリソースを削除すると、AWS のサービスはネットワークインターフェイスをデタッチして削除します。サービスがネットワークインターフェースをデタッチしたが、削除しなかった場合はデタッチされたネットワークインターフェイスを削除できます。

------
#### [ Console ]

**リクエスタマネージド型のネットワークインターフェイスを表示するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、**[Network & Security]** (ネットワークとセキュリティ)、**[Network Interfaces]** (ネットワークインターフェイス) を選択してください。

1. ネットワークインターフェイスの ID を選択して、その詳細ページを開きます。

1. ネットワークインターフェイスの目的を特定するために使用できる主要なフィールドを次に示します。
   + **[Description]** (説明): インターフェイスを作成した AWS のサービスによって提供される説明。例えば、「VPC Endpoint Interface vpce 089f2123488812123」です。
   + **Requester-managed**：ネットワークインターフェイスが AWS によって管理されているかどうかを示します。
   + **[Requester ID]** (リクエスタ ID)：ネットワークインターフェイスを作成したプリンシパルまたはサービスのエイリアスまたはAWSアカウント ID ネットワークインターフェイスを作成した場合、これはユーザのAWS アカウントID です。それ以外の場合は別のプリンシパルまたはサービスによって作成されています。

------
#### [ AWS CLI ]

**リクエスタマネージド型のネットワークインターフェイスを表示するには**  
次のように、[describe-network-interfaces](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-network-interfaces.html) コマンドを使用します。

```
aws ec2 describe-network-interfaces \
    --filters "Name=requester-managed,Values=true" \
    --query "NetworkInterfaces[*].[Description, InterfaceType]" \ 
    --output table
```

ネットワークインターフェイス `Description` および `InterfaceType` の目的を決定するために使用できるキーフィールドを示す出力例を次に示します。

```
-------------------------------------------------------------------------------
|                          DescribeNetworkInterfaces                          |
+---------------------------------------------------+-------------------------+
|  VPC Endpoint Interface: vpce-0f00567fa8477a1e6   |  interface              |
|  VPC Endpoint Interface vpce-0d8ddce4be80e4474    |  interface              |
|  VPC Endpoint Interface vpce-078221a1e27d1ea5b    |  vpc_endpoint           |
|  Resource Gateway Interface rgw-0bba03f3d56060135 |  interface              |
|  VPC Endpoint Interface: vpce-0cc199f605eaeace7   |  interface              |
|  VPC Endpoint Interface vpce-019b90d6f16d4f958    |  interface              |
+---------------------------------------------------+-------------------------+
```

------
#### [ PowerShell ]

**リクエスタマネージド型のネットワークインターフェイスを表示するには**  
次のように、[Get-EC2NetworkInterface](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2NetworkInterface.html) cmdlet を使用します。

```
Get-EC2NetworkInterface -Filter @{Name="requester-managed"; Values="true"} | Select Description, InterfaceType
```

以下は、ネットワークインターフェイス `Description` および `InterfaceType` の目的を特定する際に役立つキーフィールドを表示した出力の例です。

```
Description                                      InterfaceType
-----------                                      -------------
VPC Endpoint Interface: vpce-0f00567fa8477a1e6   interface
VPC Endpoint Interface vpce-0d8ddce4be80e4474    interface
VPC Endpoint Interface vpce-078221a1e27d1ea5b    vpc_endpoint
Resource Gateway Interface rgw-0bba03f3d56060135 interface
VPC Endpoint Interface: vpce-0cc199f605eaeace7   interface
VPC Endpoint Interface vpce-019b90d6f16d4f958    interface
```

------

# Amazon EC2 ネットワークインターフェイスのプレフィックス委任
<a name="ec2-prefix-eni"></a>

プライベート IPv4 または IPv6 CIDR 範囲は自動または手動で、ネットワークインターフェイスに割り当てることができます。プレフィクスを割り当てることにより、インスタンス上で複数の IP アドレスを必要とするコンテナおよびネットワークアプリケーションなど、アプリケーションの管理を拡張および簡素化します。IPv4 アドレスと IPv6 アドレスの詳細については「[Amazon EC2 インスタンスの IP アドレス指定](using-instance-addressing.md)」を参照してください。

以下の割り当てオプションが利用できます。
+ **自動割り当て** — AWS がプレフィックスを選択し、ネットワークインターフェイスに割り当てます。ネットワークインターフェイスのサブネットにタイプ `prefix` のサブネット CIDR 予約がある場合、サブネット CIDR 予約からプレフィックスが選択されます。そうでない場合、サブネット CIDR 範囲から選択されます。
+ **手動割り当て** — ユーザーがプレフィックスを指定し、AWS はそのプレフィックスが他のリソースにまだ割り当てられていないことを確認してから、ネットワークインターフェイスに割り当てます。

プレフィクスの割り当てには次の利点があります。
+ ネットワークインターフェイスの IP アドレスの増加 — プレフィクスを使用する場合は個々の IP アドレスではなく IP アドレスのブロックを割り当てます。これにより、ネットワークインターフェイスの IP アドレスの数が増加します。
+ コンテナの VPC 管理の簡素化 — コンテナアプリケーションでは各コンテナに一意の IP アドレスが必要です。インスタンスにプレフィクスを割り当てることで、個々の IP 割り当てに対して Amazon EC2 API を呼び出すことなくコンテナを起動および終了できるため、VPC の管理が簡素化されます。

**Contents**
+ [基本](#ec2-prefix-basics)
+ [考慮事項](#prefix-limit)
+ [プレフィックスを管理する](work-with-prefixes.md)
  + [ネットワークインターフェイスの作成時にプレフィクスを割り当てる](work-with-prefixes.md#assign-auto-creation)
  + [既存のネットワークインターフェイスにプレフィックスを割り当てる](work-with-prefixes.md#assign-auto-existing)
  + [ネットワークインターフェイスからプレフィクスを削除する](work-with-prefixes.md#unassign-prefix)

## 基本
<a name="ec2-prefix-basics"></a>
+ 新しいネットワークインターフェイスまたは既存のネットワークインターフェイスにプレフィクスを割り当てることができます。
+ プレフィクスを使用するにはネットワークインターフェイスにプレフィクスを割り当て、次にそのネットワークインターフェイスをインスタンスにアタッチしてから、オペレーティングシステムを設定します。
+ プレフィクスを指定するオプションを選択する場合、プレフィクスは次の要件を満たしている必要があります。
  + 指定できる IPv4 プレフィクスは `/28`。
  + 指定できる IPv6 プレフィクスは `/80`。
  + プレフィクスがネットワークインターフェイスのサブネット CIDR にあり、サブネット内の既存のリソースに割り当てられた他のプレフィクスまたは IP アドレスと重複していないこと。
+ プレフィクスはプライマリまたはセカンダリのネットワークインターフェイスに割り当てることができます。
+ プレフィクスが割り当てられているネットワークインターフェイスに Elastic IP アドレスを割り当てることができます。
+ 割り当てられたプレフィクスの IP アドレス部分に Elastic IP アドレスを割り当てることもできます。
+ インスタンスのプライベート DNS ホスト名をプライマリのプライベート IPv4 アドレスに解決します。
+ プレフィクスからのものを含め、ネットワークインターフェイスの各プライベート IPv4 アドレスは次の形式を使用して割り当てます。
  + `us-east-1` リージョン

    ```
    ip-private-ipv4-address.ec2.internal
    ```
  + その他のすべてのリージョン

    ```
    ip-private-ipv4-address.region.compute.internal
    ```

## 考慮事項
<a name="prefix-limit"></a>

プレフィックスを使用する場合は次の点を考慮してください:
+ プレフィックス付きのネットワークインターフェイスは[Nitro ベースのインスタンス](instance-types.md#instance-hypervisor-type)でサポートされています。
+ ネットワークインターフェイスのプレフィックスは、IPv6 アドレスまたはプライベート IPv4 アドレスに制限されます。
+ ネットワークインターフェイスに割り当てることができる IP アドレスの数はインスタンスタイプによって異なります。ネットワークインターフェイスに割り当てる各プレフィクスが、1 つの IP アドレスとしてカウントされます。例えば、`c5.large` インスタンスで、ネットワークインターフェイスあたりの IPv4 アドレス数が `10` に制限されているとします。このインスタンスの各ネットワークインターフェイスに、プライマリ IPv4 アドレスが存在します。ネットワークインターフェイスにセカンダリ IPv4 アドレスがない場合はネットワークインターフェイスに最大 9 つのプレフィクスを割り当てることができます。ネットワークインターフェイスに割り当てる IPv4 アドレスを追加する度に、ネットワークインターフェイスに割り当てるプレフィクスの数が 1 つ少なくなります。詳細については[ネットワークインターフェイスあたりの IP アドレスの最大数](AvailableIpPerENI.md) を参照してください。
+ プレフィクスは送信元/送信先チェックに含まれます。
+ プレフィクス付きのネットワークインターフェイス用にオペレーティングシステムを設定する必要があります。次の点に注意してください。
  + 一部の Amazon Linux AMI にはAWS によってインストールされる追加のスクリプト (`ec2-net-utils` と呼ばれる) が含まれます。これらのスクリプトはオプションで、ネットワークインターフェイスの設定を自動化します。これらは Amazon Linux 専用です。
  + コンテナの場合はKubernetes 用 Container Network Interface (CNI) プラグインを使用できます。またはDocker を使用してコンテナを管理している場合は`dockerd` を使用できます。

# ネットワークインターフェイスのプレフィックスを管理する
<a name="work-with-prefixes"></a>

ネットワークインターフェイスにプレフィックスを割り当てる際、プレフィックスを自動的に割り当てるか、カスタムプレフィックスを指定するかを選択できます。プレフィックスを自動的に割り当てて、ネットワークインターフェイスのサブネットにタイプ `prefix` のサブネット CIDR 予約がある場合、サブネッ CIDR 予約からプレフィックスが選択されます。そうでない場合、サブネット CIDR 範囲から選択されます。

**Topics**
+ [ネットワークインターフェイスの作成時にプレフィクスを割り当てる](#assign-auto-creation)
+ [既存のネットワークインターフェイスにプレフィックスを割り当てる](#assign-auto-existing)
+ [ネットワークインターフェイスからプレフィクスを削除する](#unassign-prefix)

## ネットワークインターフェイスの作成時にプレフィクスを割り当てる
<a name="assign-auto-creation"></a>

ネットワークインターフェイスの作成時に、自動プレフィックスまたはカスタムプレフィックスを割り当てることができます。

------
#### [ Console ]

**ネットワークインターフェース作成時に自動的にプレフィクスを割り当てるには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、[**Network Interfaces**] を選択してください。

1. [**ネットワークインターフェイスの作成**] をクリックしてください。

1. ネットワークインターフェイスの説明を入力し、ネットワークインターフェイスを作成するサブネットを選択し、プライベート IPv4 アドレスと IPv6 アドレスを設定します。

1. **[詳細設定]** を展開します。

1. **[IPv4 プレフィックス委任]** で、次のいずれかを実行します。
   + IPv4 プレフィックスを自動的に割り当てるには**[自動割り当て]** を選択してください。**[IPv4 プレフィックスの数]** で、割り当てるプレフィクスの数を入力してください。
   + 特定の IPv4 プレフィックスを割り当てるには**[カスタム]** を選択してください。**[新しいプレフィックスの追加]** を選択し、プレフィックスを入力してください。

1. **[IPv6 プレフィックス委任]** で、次のいずれかを実行します。
   + IPv6 プレフィクスを自動的に割り当てるには**[自動割り当て]** を選択してください。**[IPv6 プレフィックスの数]** で、割り当てるプレフィックスの数を入力してください。
   + 特定の IPv6 プレフィックスを割り当てるには**[カスタム]** を選択してください。**[新しいプレフィックスの追加]** を選択し、プレフィックスを入力してください。
**注記**  
[**IPv6 プレフィクスの委任**]は選択したサブネットがIPv6 に対して有効になっている場合にのみ表示されます。

1. ネットワークインターフェイスに関連付けるセキュリティグループを選択し、必要に応じてリソースタグを割り当てます。

1. [**ネットワークインターフェイスの作成**] をクリックしてください。

------
#### [ AWS CLI ]

**ネットワークインターフェース作成時に自動的に IPv4 プレフィクスを割り当てるには**  
[create-network-interface](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-network-interface.html) コマンドを使用して、AWS が割り当てる IPv4 プレフィックスの数を `--ipv4-prefix-count` に設定します。次の例ではAWS は 1 つの IPv4 プレフィクスを割り当てています。

```
aws ec2 create-network-interface \
    --subnet-id subnet-047cfed18eEXAMPLE \
    --description "IPv4 automatic example" \
    --ipv4-prefix-count 1
```

**ネットワークインターフェース作成時に特定の IPv4 プレフィクスを割り当てるには**  
[create-network-interface](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-network-interface.html) コマンドを使用し、`--ipv4-prefixes` にプレフィクスを設定します。AWS はこの範囲から IPv4 アドレスを選択してください。次の例ではプレフィクス CIDR は 10.0.0.208/28 です。

```
aws ec2 create-network-interface \
    --subnet-id subnet-047cfed18eEXAMPLE \
    --description "IPv4 manual example" \
    --ipv4-prefixes Ipv4Prefix=10.0.0.208/28
```

**ネットワークインターフェース作成時に自動的に IPv6 プレフィクスを割り当てるには**  
[create-network-interface](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-network-interface.html) コマンドを使用し、AWS が割り当てる IPv6 プレフィクスの数を `--ipv6-prefix-count` に設定します。次の例ではAWS は 1 つの IPv6 プレフィクスを割り当てています。

```
aws ec2 create-network-interface \
    --subnet-id subnet-047cfed18eEXAMPLE \
    --description "IPv6 automatic example" \
    --ipv6-prefix-count 1
```

**ネットワークインターフェース作成時に特定の IPv6 プレフィクスを割り当てるには**  
[create-network-interface](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-network-interface.html) コマンドを使用し、`--ipv6-prefixes` にプレフィクスを設定します。AWS はこの範囲から IPv6 アドレスを選択してください。次の例ではプレフィクス CIDR は 2600:1f13:fc2:a700:1768::/80 です。

```
aws ec2 create-network-interface \
    --subnet-id subnet-047cfed18eEXAMPLE \
    --description "IPv6 manual example" \
    --ipv6-prefixes Ipv6Prefix=2600:1f13:fc2:a700:1768::/80
```

------
#### [ PowerShell ]

**ネットワークインターフェース作成時に自動的に IPv4 プレフィクスを割り当てるには**  
[New-EC2NetworkInterface](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2NetworkInterface.html) コマンドレットを使用して、AWS が割り当てる IPv4 プレフィックスの数を `Ipv4PrefixCount` に設定します。次の例ではAWS は 1 つの IPv4 プレフィクスを割り当てています。

```
New-EC2NetworkInterface `
    -SubnetId 'subnet-047cfed18eEXAMPLE' `
    -Description 'IPv4 automatic example' `
    -Ipv4PrefixCount 1
```

**ネットワークインターフェース作成時に特定の IPv4 プレフィクスを割り当てるには**  
[New-EC2NetworkInterface](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2NetworkInterface.html) コマンドレットを使用して、`Ipv4Prefix` をプレフィックスに設定します。AWS はこの範囲から IPv4 アドレスを選択します。次の例ではプレフィクス CIDR は 10.0.0.208/28 です。

```
Import-Module AWS.Tools.EC2
New-EC2NetworkInterface `
    -SubnetId 'subnet-047cfed18eEXAMPLE' `
    -Description 'IPv4 manual example' `
    -Ipv4Prefix (New-Object `
        -TypeName Amazon.EC2.Model.Ipv4PrefixSpecificationRequest `
        -Property @{Ipv4Prefix = '10.0.0.208/28'})
```

**ネットワークインターフェース作成時に自動的に IPv6 プレフィクスを割り当てるには**  
[New-EC2NetworkInterface](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2NetworkInterface.html) コマンドレットを使用して、AWS が割り当てる IPv6 プレフィックスの数を `Ipv6PrefixCount` に設定します。次の例ではAWS は 1 つの IPv6 プレフィクスを割り当てています。

```
New-EC2NetworkInterface `
    -SubnetId 'subnet-047cfed18eEXAMPLE' `
    -Description 'IPv6 automatic example' `
    -Ipv6PrefixCount 1
```

**ネットワークインターフェース作成時に特定の IPv6 プレフィクスを割り当てるには**  
[New-EC2NetworkInterface](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2NetworkInterface.html) コマンドレットを使用して、`Ipv6Prefixes` をプレフィックスに設定します。AWS はこの範囲から IPv6 アドレスを選択します。次の例ではプレフィクス CIDR は 2600:1f13:fc2:a700:1768::/80 です。

```
Import-Module AWS.Tools.EC2
New-EC2NetworkInterface `
    -SubnetId 'subnet-047cfed18eEXAMPLE' `
    -Description 'IPv6 manual example' `
    -Ipv6Prefix (New-Object `
        -TypeName Amazon.EC2.Model.Ipv6PrefixSpecificationRequest `
        -Property @{Ipv6Prefix = '2600:1f13:fc2:a700:1768::/80'})
```

------

## 既存のネットワークインターフェイスにプレフィックスを割り当てる
<a name="assign-auto-existing"></a>

既存のネットワークインターフェイスに、自動プレフィックスまたはカスタムプレフィクスを割り当てることができます。

------
#### [ Console ]

**既存のネットワークインターフェイスに自動的にプレフィクスを割り当てるには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、**[ネットワークインターフェイス]** を選択してください。

1. プレフィクスを割り当てるネットワークインターフェイスを選択し、[**アクション**],[**プレフィクスの管理**]を選択してください。

1. **[IPv4 プレフィックス委任]** で、次のいずれかを実行します。
   + IPv4 プレフィックスを自動的に割り当てるには**[自動割り当て]** を選択してください。**[IPv4 プレフィックスの数]** で、割り当てるプレフィクスの数を入力してください。
   + 特定の IPv4 プレフィックスを割り当てるには**[カスタム]** を選択してください。**[新しいプレフィックスの追加]** を選択し、プレフィックスを入力してください。

1. **[IPv6 プレフィックス委任]** で、次のいずれかを実行します。
   + IPv6 プレフィクスを自動的に割り当てるには**[自動割り当て]** を選択してください。**[IPv6 プレフィックスの数]** で、割り当てるプレフィックスの数を入力してください。
   + 特定の IPv6 プレフィックスを割り当てるには**[カスタム]** を選択してください。**[新しいプレフィックスの追加]** を選択し、プレフィックスを入力してください。
**注記**  
[**IPv6 プレフィクスの委任**]はIPv6 に対して選択したサブネットが有効になっている場合にのみ表示されます。

1. **[保存]** を選択します。

------
#### [ AWS CLI ]

既存のネットワーク インターフェイスに IPv6 プレフィックスを割り当てるには、[assign-ipv6-addresses](https://docs.aws.amazon.com/cli/latest/reference/ec2/assign-ipv6-addresses.html) コマンドを使用し、IPv4 プレフィックスを割り当てるには、[assign-private-ip-addresses](https://docs.aws.amazon.com/cli/latest/reference/ec2/assign-private-ip-addresses.html) コマンドを使用します。

**既存のネットワークインターフェイスに自動的に IPv4 プレフィクスを割り当てるには**  
[assign-private-ip-addresses](https://docs.aws.amazon.com/cli/latest/reference/ec2/assign-private-ip-addresses.html) コマンドを使用し、AWS が割り当てる IPv4 プレフィクスの数を `--ipv4-prefix-count` に設定します。次の例ではAWS は 1 つの IPv4 プレフィクスを割り当てています。

```
aws ec2 assign-private-ip-addresses \
    --network-interface-id eni-081fbb4095EXAMPLE \
    --ipv4-prefix-count 1
```

**既存のネットワークインターフェイスに特定の IPv4 プレフィックスを割り当てるには**  
[assign-private-ip-addresses](https://docs.aws.amazon.com/cli/latest/reference/ec2/assign-private-ip-addresses.html) コマンドを使用し、`--ipv4-prefixes` にプレフィクスを設定します。AWS はこの範囲から IPv4 アドレスを選択してください。次の例ではプレフィクス CIDR は 10.0.0.208/28 です。

```
aws ec2 assign-private-ip-addresses \
    --network-interface-id eni-081fbb4095EXAMPLE \
    --ipv4-prefixes 10.0.0.208/28
```

**既存のネットワークインターフェイスに自動的に IPv6 プレフィクスを割り当てるには**  
[assign-ipv6-addresses](https://docs.aws.amazon.com/cli/latest/reference/ec2/assign-ipv6-addresses.html) コマンドを使用し、AWS が割り当てる IPv6 プレフィクスの数を `--ipv6-prefix-count` に設定します。次の例ではAWS は 1 つの IPv6 プレフィクスを割り当てています。

```
aws ec2 assign-ipv6-addresses \
    --network-interface-id eni-00d577338cEXAMPLE \
    --ipv6-prefix-count 1
```

**既存のネットワークインターフェイスに特定の IPv6 プレフィクスを割り当てるには**  
[assign-ipv6-addresses](https://docs.aws.amazon.com/cli/latest/reference/ec2/assign-ipv6-addresses.html) コマンドを使用し、`--ipv6-prefixes` にプレフィクスを設定します。AWS はこの範囲から IPv6 アドレスを選択してください。次の例ではプレフィクス CIDR は 2600:1f13:fc2:a700:18bb::/80 です。

```
aws ec2 assign-ipv6-addresses \
    --network-interface-id eni-00d577338cEXAMPLE \
    --ipv6-prefixes 2600:1f13:fc2:a700:18bb::/80
```

------
#### [ PowerShell ]

**既存のネットワークインターフェイスに自動的に IPv4 プレフィクスを割り当てるには**  
[Register-EC2PrivateIpAddress](https://docs.aws.amazon.com/powershell/latest/reference/items/Register-EC2PrivateIpAddress.html) コマンドレットを使用し、 AWS が割り当てる IPv4 プレフィックスの数を `Ipv4PrefixCount` に設定します。次の例ではAWS は 1 つの IPv4 プレフィクスを割り当てています。

```
Register-EC2PrivateIpAddress `
    -NetworkInterfaceId 'eni-00d577338cEXAMPLE' `
    -Ipv4PrefixCount 1
```

**既存のネットワークインターフェイスに特定の IPv4 プレフィックスを割り当てるには**  
[Register-EC2PrivateIpAddress](https://docs.aws.amazon.com/powershell/latest/reference/items/Register-EC2PrivateIpAddress.html) コマンドレットを使用して、`Ipv4Prefix` を プレフィックスに設定します。AWS はこの範囲から IPv4 アドレスを選択します。次の例ではプレフィクス CIDR は 10.0.0.208/28 です。

```
Register-EC2PrivateIpAddress `
    -NetworkInterfaceId 'eni-00d577338cEXAMPLE' `
    -Ipv4Prefix '10.0.0.208/28'
```

**既存のネットワークインターフェイスに自動的に IPv6 プレフィクスを割り当てるには**  
[Register-EC2Ipv6AddressList](https://docs.aws.amazon.com/powershell/latest/reference/items/Register-EC2Ipv6AddressList.html) コマンドレットを使用し、AWS が割り当てる IPv4 プレフィックスの数を `Ipv6PrefixCount` に設定します。次の例ではAWS は 1 つの IPv6 プレフィクスを割り当てています。

```
Register-EC2Ipv6AddressList `
    -NetworkInterfaceId 'eni-00d577338cEXAMPLE' `
    -Ipv6PrefixCount 1
```

**既存のネットワークインターフェイスに特定の IPv6 プレフィクスを割り当てるには**  
[Register-EC2Ipv6AddressList](https://docs.aws.amazon.com/powershell/latest/reference/items/Register-EC2Ipv6AddressList.html) コマンドレットを使用して、`Ipv6Prefix` をプレフィックスに設定します。AWS はこの範囲から IPv6 アドレスを選択します。次の例ではプレフィクス CIDR は 2600:1f13:fc2:a700:18bb::/80 です。

```
Register-EC2Ipv6AddressList `
    -NetworkInterfaceId 'eni-00d577338cEXAMPLE' `
    -Ipv6Prefix '2600:1f13:fc2:a700:18bb::/80'
```

------

## ネットワークインターフェイスからプレフィクスを削除する
<a name="unassign-prefix"></a>

既存のネットワークインターフェイスからプレフィックスを削除できます。

------
#### [ Console ]

**ネットワークインターフェイスからプレフィクスを削除するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、[**Network Interfaces**] を選択してください。

1. ネットワークインターフェイスを選択してください。

1. **[アクション]**、**[プレフィックスを管理]** を選択してください。

1. **[IPv4 プレフィックス委任]** で、特定のプレフィックスを削除するには削除するプレフィックスの横にある **[割り当て解除]** を選択してください。すべてのプレフィックスを削除するには**[割り当てない]** を選択してください。

1. **[IPv6 プレフィックス委任]** で、特定のプレフィックスを削除するには削除するプレフィックスの横にある **[割り当て解除]** を選択してください。すべてのプレフィックスを削除するには**[割り当てない]** を選択してください。
**注記**  
[**IPv6 プレフィクスの委任**]はIPv6 に対して選択したサブネットが有効になっている場合にのみ表示されます。

1. [**Save**] を選択してください。

------
#### [ AWS CLI ]

[unassign-ipv6-addresses](https://docs.aws.amazon.com/cli/latest/reference/ec2/unassign-ipv6-addresses.html) コマンドで IPv6 プレフィクスを削除し、[unassign-private-ip-addresses](https://docs.aws.amazon.com/cli/latest/reference/ec2/unassign-private-ip-addresses.html) コマンドで既存のネットワークインターフェイスから IPv4 プレフィクスを削除することができます。

**ネットワークインターフェイスから IPv4 プレフィクスを削除するには**  


[unassign-private-ip-addresses](https://docs.aws.amazon.com/cli/latest/reference/ec2/unassign-private-ip-addresses.html) コマンドを使用して、削除するプレフィックス CIDR に `--ipv4-prefix` を設定します。

```
aws ec2 unassign-private-ip-addresses \
    --network-interface-id eni-081fbb4095EXAMPLE \
    --ipv4-prefixes 10.0.0.176/28
```

**ネットワークインターフェイスから IPv6 プレフィクスを削除するには**  
[unassign-ipv6-addresses](https://docs.aws.amazon.com/cli/latest/reference/ec2/unassign-ipv6-addresses.html) コマンドを使用し、削除するプレフィックス CIDR に `--ipv6-prefix` を設定します。

```
aws ec2 unassign-ipv6-addresses \
    --network-interface-id eni-00d577338cEXAMPLE \
    --ipv6-prefix 2600:1f13:fc2:a700:18bb::/80
```

------
#### [ PowerShell ]

**ネットワークインターフェイスから IPv4 プレフィクスを削除するには**  
[Unregister-EC2PrivateIpAddress](https://docs.aws.amazon.com/powershell/latest/reference/items/Unregister-EC2PrivateIpAddress.html) コマンドレットを使用して、削除するプレフィックス CIDR に `Ipv4Prefix` を設定します。

```
Unregister-EC2PrivateIpAddress `
    -NetworkInterfaceId 'eni-00d577338cEXAMPLE' `
    -Ipv4Prefix '10.0.0.208/28'
```

**ネットワークインターフェイスから IPv6 プレフィクスを削除するには**  
[Unregister-EC2Ipv6AddressList](https://docs.aws.amazon.com/powershell/latest/reference/items/Unregister-EC2Ipv6AddressList.html) コマンドレットを使用して、削除するプレフィックス CIDR に `Ipv6Prefix` を設定します。

```
Unregister-EC2Ipv6AddressList `
    -NetworkInterfaceId 'eni-00d577338cEXAMPLE' `
    -Ipv6Prefix '2600:1f13:fc2:a700:18bb::/80'
```

------

# ネットワークインターフェイスの削除
<a name="delete_eni"></a>

ネットワークインターフェイスを削除すると、そのインターフェイスに関連付けられているすべての属性がリリースされ、別のインスタンスで使用できるように、プライベート IP アドレスまたは Elastic IP アドレスがリリースされます。

使用中のネットワークインターフェイスを削除することはできません。先に、[ネットワークインターフェイスをデタッチ](network-interface-attachments.md#detach_eni)する必要があります。

------
#### [ Console ]

**ネットワークインターフェイスを削除するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、[**Network Interfaces**] を選択してください。

1. ネットワークインターフェイスのチェックボックスをオンにし、[**アクション**]、[**削除**] の順にクリックしてください。

1. 確認を求めるメッセージが表示されたら、[**削除**] を選択してください。

------
#### [ AWS CLI ]

**ネットワークインターフェイスを削除するには**  
次の [delete-network-interface](https://docs.aws.amazon.com/cli/latest/reference/ec2/delete-network-interface.html) コマンドを使用します。

```
aws ec2 delete-network-interface --network-interface-id eni-1234567890abcdef0
```

------
#### [ PowerShell ]

**ネットワークインターフェイスを削除するには**  
[Remove-EC2NetworkInterface](https://docs.aws.amazon.com/powershell/latest/reference/items/Remove-EC2NetworkInterface.html) コマンドレットを使用します。

```
Remove-EC2NetworkInterface -NetworkInterfaceId eni-1234567890abcdef0
```

------

# Amazon EC2 インスタンスのネットワーク帯域幅
<a name="ec2-instance-network-bandwidth"></a>

インスタンスの帯域幅の仕様はインスタンスのインバウンドトラフィックとアウトバウンドトラフィックの両方に適用されます。例えば、インスタンスが最大 10 Gbps の帯域幅を指定している場合、それはインバウンドトラフィックに対して最大 10 Gbps の帯域幅があり、同時にアウトバウンドトラフィックに対しても最大 10 Gbps の帯域幅があることを意味します。EC2 インスタンスで使用できるネットワーク帯域幅は次のようにいくつかの要因によって異なります。

**マルチフロートラフィック**  
マルチフロー トラフィックの帯域幅は、32 個以上の vCPU を持つインスタンスの場合、インターネット ゲートウェイまたは「[ローカルゲートウェイ](https://docs.aws.amazon.com/outposts/latest/userguide/outposts-local-gateways.html)」を通過するトラフィックの使用可能な帯域幅の 50%、または 5 Gbps のいずれか大きい方に制限されます。vCPU が 32 個未満のインスタンスの場合、帯域幅は 5 Gbps に制限されます。

**シングルフロートラフィック**  
インスタンスが同じ[クラスタープレイスメントグループ](placement-strategies.md#placement-groups-cluster)にない場合、シングルフロートラフィックのベースライン帯域幅は 5 Gbps に制限されます。レイテンシーを減らし、シングルフロー帯域幅を増やすには以下のいずれかをお試しください。
+ クラスタープレイスメントグループを使用すると、同じプレイスメントグループ内のインスタンスで最大 10 Gbps の帯域幅を実現できます。
+ または任意の 2 つのエンドポイント間に複数のパスを設定することで、Multipath TCP (MPTCP) を使用して高帯域幅を実現できます。
+ 同じアベイラビリティーゾーン内の対象インスタンスに ENA Express を設定して、それらのインスタンス間で最大 25 Gbps を実現します。

**注記**  
シングルフローは一意の 5 タプル TCP または UDP フローと見なされます。IP ヘッダーに続く他のプロトコル (`GRE` や `IPsec` など) では送信元 IP、送信先 IP、次のプロトコルの 3 つのタプルを使用してフローを定義します。

## 使用可能なインスタンスの帯域幅
<a name="available-instance-bandwidth"></a>

使用可能なインスタンスのネットワーク帯域幅はその vCPU の数によって異なります。例えば、`m5.8xlarge` インスタンスには 32 個の vCPU と 10 Gbps のネットワーク帯域幅があり、`m5.16xlarge` インスタンスには 64 個の vCPU と 20 Gbps のネットワーク帯域幅があります。ただし、インスタンスがこの帯域幅を達成できない場合があります。例えば、インスタンスレベルでネットワーク許容量 (1 秒あたりのパケット数や追跡される接続数など) を超えた場合などです。トラフィックが使用できる帯域幅の量はvCPUsの数と宛先によって異なります。例えば、`m5.16xlarge` インスタンスは 64 vCPUs のため、リージョン内の別のインスタンスへのトラフィックは使用可能な全帯域幅 (20 Gbps) を利用できます。ただし、インターネットゲートウェイまたは[ローカルゲートウェイ](https://docs.aws.amazon.com/outposts/latest/userguide/outposts-local-gateways.html)を通過するトラフィックは利用可能な帯域幅 (10 Gbps) の 50% しか利用できません。

通常、vCPU が 16 個以下のインスタンス (サイズ `4xlarge` 以下) の場合、指定の帯域幅に「最大」と文書化されています。例えば、最大 10 Gbpsなどです。これらのインスタンスにはベースライン帯域幅があります。追加需要を満たすために、ネットワーク I/O クレジットメカニズムを使用して、ベースライン帯域幅を超えてバーストすることができます。インスタンスはインスタンスのサイズに応じて、バースト帯域幅を限られた期間 (通常は 5～60 分) 使用できます。

インスタンスは起動時にネットワーク I/O クレジットの最大数を受け取ります。インスタンスがネットワーク I/O クレジットを使い果たすと、ベースライン帯域幅に戻ります。実行中のインスタンスはベースライン帯域幅よりも少ないネットワーク帯域幅を使用するたびに、ネットワーク I/O クレジットを取得します。停止したインスタンスはネットワーク I/O クレジットを取得しません。バースト帯域幅は共有リソースであるため、インスタンスにクレジットが使用可能な場合でも、インスタンスのバーストはベストエフォートベースで行われます。

インバウンドトラフィックとアウトバウンドトラフィックには個別のネットワーク I/O クレジットバケットがあります。

**ベースおよびバーストネットワークパフォーマンス**

「*Amazon EC2 Instance Types ガイド*」では各インスタンスタイプのネットワークパフォーマンスに加え、バースト帯域幅を使用できるインスタンスで利用可能な、ベースラインネットワーク帯域幅について説明しています。詳細については次を参照してください:
+ [ネットワーク仕様 — 汎用](https://docs.aws.amazon.com/ec2/latest/instancetypes/gp.html#gp_network)
+ [ネットワーク仕様 — コンピューティング最適化](https://docs.aws.amazon.com/ec2/latest/instancetypes/co.html#co_network)
+ [ネットワーク仕様 — メモリ最適化](https://docs.aws.amazon.com/ec2/latest/instancetypes/mo.html#mo_network)
+ [ネットワーク仕様 — ストレージ最適化](https://docs.aws.amazon.com/ec2/latest/instancetypes/so.html#so_network)
+ [ネットワーク仕様 — 高速コンピューティング](https://docs.aws.amazon.com/ec2/latest/instancetypes/ac.html#ac_network)
+ [ネットワーク仕様 — ハイパフォーマンスコンピューティング](https://docs.aws.amazon.com/ec2/latest/instancetypes/hpc.html#hpc_network)
+ [ネットワーク仕様 — 旧世代](https://docs.aws.amazon.com/ec2/latest/instancetypes/gp.html#pg_network)

あるいはコマンドラインツールを使用して、この情報を取得することもできます。Amazon EC2 コンソールには、インスタンスタイプのベースラインネットワーク帯域幅は表示されません。

------
#### [ AWS CLI ]

 [describe-instance-types](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instance-types.html) マンドを使用して、インスタンスタイプに関する情報を表示できます。次の例ではすべての C5 インスタンスのネットワークパフォーマンス情報を表示します。

```
aws ec2 describe-instance-types \
    --filters "Name=instance-type,Values=c5.*" \
    --query "InstanceTypes[].[InstanceType, NetworkInfo.NetworkPerformance, NetworkInfo.NetworkCards[0].BaselineBandwidthInGbps] | sort_by(@,&[2])" \
    --output table
```

以下は出力の例です。出力にベースライン帯域幅がない場合はAWS CLI の最新バージョンに更新します。

```
---------------------------------------------
|           DescribeInstanceTypes           |
+--------------+--------------------+-------+
|  c5.large    |  Up to 10 Gigabit  |  0.75 |
|  c5.xlarge   |  Up to 10 Gigabit  |  1.25 |
|  c5.2xlarge  |  Up to 10 Gigabit  |  2.5  |
|  c5.4xlarge  |  Up to 10 Gigabit  |  5.0  |
|  c5.9xlarge  |  12 Gigabit        |  12.0 |
|  c5.12xlarge |  12 Gigabit        |  12.0 |
|  c5.18xlarge |  25 Gigabit        |  25.0 |
|  c5.24xlarge |  25 Gigabit        |  25.0 |
|  c5.metal    |  25 Gigabit        |  25.0 |
+--------------+--------------------+-------+
```

------
#### [ PowerShell ]

[Get-EC2InstanceType](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2InstanceType.html) PowerShell コマンドを使用して、インスタンスタイプに関する情報を表示できます。次の例ではすべての C5 インスタンスのネットワークパフォーマンス情報を表示します。

```
Get-EC2InstanceType -Filter @{Name = "instance-type"; Values = "c5.*" } | `
    Select-Object `
    InstanceType,
    @{Name = 'NetworkPerformance'; Expression = {($_.Networkinfo.NetworkCards.NetworkPerformance)}},
    @{Name = 'BaselineBandwidthInGbps'; Expression = {($_.Networkinfo.NetworkCards.BaselineBandwidthInGbps)}} | `
Format-Table -AutoSize
```

以下は出力の例です。

```
InstanceType NetworkPerformance BaselineBandwidthInGbps
------------ ------------------ -----------------------
c5.4xlarge   Up to 10 Gigabit                      5.00
c5.xlarge    Up to 10 Gigabit                      1.25
c5.12xlarge  12 Gigabit                           12.00
c5.9xlarge   12 Gigabit                           12.00
c5.24xlarge  25 Gigabit                           25.00
c5.metal     25 Gigabit                           25.00
c5.2xlarge   Up to 10 Gigabit                      2.50
c5.large     Up to 10 Gigabit                      0.75
c5.18xlarge  25 Gigabit                           25.00
```

------

# EC2 インスタンスの帯域幅の重み設定
<a name="configure-bandwidth-weighting"></a>

一部のインスタンスタイプはネットワーク処理または EBS オペレーションを優先するベースライン帯域幅の重み付けを選択できる、設定可能な帯域幅の重み付けをサポートしています。ベースライン帯域幅のデフォルト設定はインスタンスタイプによって決まります。起動時に帯域幅の重み付けを設定することも、次の重み設定を使用してインスタンス設定を変更することもできます。
+ **デフォルト** – このオプションはインスタンスタイプの標準帯域幅設定を使用します。
+ **vpc-1** – このオプションはネットワークに使用できるベースライン帯域幅を増やし、EBS オペレーションのベースライン帯域幅を減らします。
+ **ebs-1** – このオプションはEBS オペレーションで使用できるベースライン帯域幅を増やし、ネットワーク用のベースライン帯域幅を減らします。

## 帯域幅の重み付けに関する考慮事項
<a name="config-bw-considerations"></a>

以下は帯域幅の重み付け戦略に影響する可能性のある考慮事項です。
+ 帯域幅の重み付けの設定は帯域幅の仕様にのみ影響します。1 秒あたりのネットワークパケット (PPS) と EBS の 1 秒あたりの入出力オペレーション (IOPS) の仕様は変更されません。
+ ネットワークと EBS 間の帯域幅の仕様は変更されません。帯域幅の重み付け設定を選択すると、選択したオプションで使用可能なベースライン帯域幅が増加し、残りのオプションのベースライン帯域幅は同じ絶対量だけ減少します。Flex インスタンス以外のすべてのインスタンスでは、選択したオプションで使用可能なバースト帯域幅は変わりません。残りのオプションでは縮小されます。4xlarge までの Flex インスタンスの場合、バースト帯域幅は変更されません。Flex インスタンス 8xlarge 以上の場合、バースト帯域幅はベースライン帯域幅と同じ量だけ増加します。
+ 帯域幅割り当ての変更が EBS の I/O パフォーマンスにどのように影響するかを理解することが重要です。`vpc-1` 設定 (ネットワーク帯域幅の増加) を持つ EC2 インスタンスではIOPS 制限に達する前に EBS 帯域幅制限に達すると、EBS ボリュームの IOPS が低下する可能性があります。これはI/O サイズが大きいほど顕著です。

  例えば、通常 16 KiB の I/O サイズで 240,000 IOPS をサポートするインスタンスタイプでは`vpc-1`重み付けを選択すると、調整された EBS ベースライン帯域幅制限が原因で達成可能な IOPS が減少する可能性があります。

  ワークロードを計画するときはI/O のサイズとパターンを考慮してください。I/O サイズが小さいほど帯域幅制限の影響を受けにくくなりますが、I/O サイズやシーケンシャルワークロードが大きいほど、帯域幅の変化による影響が大きくなる可能性があります。選択した設定で最適なパフォーマンスを確保するために、常に特定のワークロードをテストしてください。
+ インターネットゲートウェイまたはローカルゲートウェイを通過するトラフィックのネットワークマルチフロー帯域幅仕様は設定済みオプションのベースライン帯域幅の 50%、または該当する場合は 5 Gbps に調整されます。詳細については「[Amazon EC2 インスタンスのネットワーク帯域幅](ec2-instance-network-bandwidth.md)」を参照してください。

  次の例はデフォルトのベースライン帯域幅が 40 Gbps、デフォルトの境界帯域幅が 20 Gbps のインスタンスタイプに基づいています。このインスタンスの`vpc-1`帯域幅の重み付けを選択すると、重み付けされたベースライン帯域幅は 50 Gbps に、境界帯域幅は 25 Gbps に変わります。
+ この機能はEC2 インスタンスの可用性とサポートに合わせて、すべての商用リージョンで使用できます。
+ この機能はEC2 インスタンスに追加のコストはかかりません。

## 帯域幅の重み付けでサポートされているインスタンスタイプ
<a name="config-bw-support"></a>

次のインスタンスタイプファミリーのインスタンスタイプは、設定可能な帯域幅の重み付けをサポートしています。
+ **汎用:** M8a、M8g、M8gd、M8i、M8id、M8i-flex
+ **コンピューティング最適化:** C8a、C8g、C8gd、C8i、C8id、C8i-flex
+ **メモリ最適化:** R8a、R8g、R8gd、R8i、R8id、R8i-flex、X8g、X8aedz、X8i

## 現在の帯域幅設定を確認する
<a name="config-bw-check-settings"></a>

インスタンスの現在の帯域幅設定を確認するにはいずれかのタブを選択して手順を確認してください。

------
#### [ Console ]

**インスタンスの帯域幅設定を取得するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、[**インスタンス**] を選択してください。

1. リストからチェックするインスタンスを選択し、**ネットワーク**タブに移動します。現在の設定は**設定済み帯域幅**フィールドに表示されます。帯域幅が特定の値に設定されていない場合、Amazon EC2 はインスタンスタイプのデフォルト設定を使用します。

------
#### [ AWS CLI ]

**インスタンスの帯域幅設定を取得するには**  
[https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html) コマンドを使用します。

```
aws ec2 describe-instances \
    --instance-ids i-1234567890abcdef0 \
    --query Reservations[].Instances[].NetworkPerformanceOptions.BandwidthWeighting \
    --output text
```

以下は出力の例です。

```
default
```

この例では、帯域幅をさらに増やすため、帯域幅の重み設定が `vpc-1` に設定されているすべてのインスタンスを一覧表示します。

```
aws ec2 describe-instances \
    --filters "Name=network-performance-options.bandwidth-weighting,Values=vpc-1" \
    --query Reservations[].Instances[].InstanceId \
    --output text
```

------
#### [ PowerShell ]

**インスタンスの帯域幅設定を取得するには**  
[Get-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Instance.html) コマンドレットを使用します。

```
(Get-EC2Instance `
    -InstanceId i-1234567890abcdef0).Instances.NetworkPerformanceOptions.BandwidthWeighting.Value
```

以下は出力の例です。

```
default
```

この例では、帯域幅をさらに増やすため、帯域幅の重み設定が `vpc-1` に設定されているすべてのインスタンスを一覧表示します。

```
(Get-EC2Instance `
    -Filter @{Name="network-performance-options.bandwidth-weighting";Values="vpc-1"}).Instances.InstanceId
```

------

## インスタンスの帯域幅の重み付けを設定する
<a name="config-bw-how-to"></a>

帯域幅の重み付けは起動時に設定するか、EC2 コンソール、API/SDKs、または CLI から既存のインスタンスを変更することで設定できます。

### インスタンスの起動時に帯域幅の重み付けを設定する
<a name="config-bw-launch-instance"></a>

インスタンスの起動時に帯域幅設定を構成するにはいずれかのタブを選択して手順を確認してください。

起動テンプレートで帯域幅の重み付けを指定することもできます。起動テンプレートを作成するには[Amazon EC2 起動テンプレートを作成する](create-launch-template.md) 設定するパラメータはコンソールから直接インスタンスを起動する場合と同じ場所にあります。**詳細**セクションを展開し、**インスタンス帯域幅設定**を設定します。

起動テンプレートを使用してインスタンスを起動するには[起動テンプレートを使用した EC2 インスタンスの起動](launch-instances-from-launch-template.md)を参照してください。

------
#### [ Console ]

**設定可能な帯域幅の重み付けを使用してインスタンスを起動するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、[**インスタンス**] を選択してください。

1. **[Launch Instances]** (インスタンスの起動) を選択してください。これにより、**[インスタンスを起動する]** ページが開きます。設定によりますが、起動ダイアログにアクセスする方法は他にいくつかあります。例えば、AMI から直接、または Amazon EC2 ダッシュボード自体からインスタンスを起動できます。

1. から起動する Amazon マシンイメージ (AMI) は`Arm`アーキテクチャに基づいている必要があります。多くの**クイックスタート**イメージは `x86` と `Arm` の両方のアーキテクチャをサポートしています。インスタンスのオペレーティングシステムを選択したら、**[アーキテクチャ]** リストから `Arm` オプションを選択してください。

1. インスタンスタイプはこの機能[サポートされるインスタンスタイプ](#config-bw-support)の の 1 つである必要があります。

1. **詳細**セクションを展開すると、下にスクロールして**インスタンス帯域幅の設定**を見つけることができます。インスタンスの帯域幅設定オプションを選択してください。

1. インスタンスの他のすべての設定を通常どおりに設定し、**インスタンスの起動**を選択してください。

------
#### [ AWS CLI ]

**設定可能な帯域幅の重み付けを使用してインスタンスを起動するには**  
次の [run-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html) コマンドを次のオプションで使用して、ネットワーク帯域幅をさらに増やすように設定されたインスタンスを起動します。

```
--network-performance-options BandwidthWeighting=vpc-1
```

次の [run-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html) コマンドを次のオプションで使用して、EBS 帯域幅をさらに増やすように設定されたインスタンスを起動します。

```
--network-performance-options BandwidthWeighting=ebs-1
```

------
#### [ PowerShell ]

**設定可能な帯域幅の重み付けを使用してインスタンスを起動するには**  
次の [New-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2Instance.html) コマンドレットを次のパラメータと共に使用して、ネットワーク帯域幅の重み付けをさらに増やすように設定されたインスタンスを起動します。

```
-NetworkPerformanceOptions_BandwidthWeighting vpc-1
```

次の [New-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2Instance.html) コマンドレットを次のパラメータと共に使用して、EBS 帯域幅の重み付けをさらに増やすように設定されたインスタンスを起動します。

```
-NetworkPerformanceOptions_BandwidthWeighting ebs-1
```

------

### 既存のインスタンスの帯域幅の重み付けを更新する
<a name="config-bw-update-existing"></a>

既存のインスタンスの帯域幅の重み付けを更新するにはインスタンスが `Stopped`状態である必要があります。

------
#### [ Console ]

**帯域幅の重み付けを更新するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、[**インスタンス**] を選択してください。

1. 更新するインスタンスをリストから選択してください。

1. 帯域幅設定を変更する前に、インスタンスが `Stopped`状態になっている必要があります。インスタンスが実行されている場合はインスタンス**状態メニューからインスタンス****を停止**を選択してください。

1. **アクション > ネットワーク**メニューから**帯域幅の管理**を選択してください。**帯域幅の管理**ダイアログが開きます。
**注記**  
インスタンスタイプが帯域幅の重み付けの設定をサポートしていない場合、そのメニュー項目は無効になります。

1. インスタンスを更新するオプションを選択し、**変更**を選択して設定を保存します。

------
#### [ AWS CLI ]

**帯域幅の重み付けを更新するには**  
指定したインスタンスのネットワーク帯域幅の重み付けをさらに増やすには、[modify-instance-network-performance-options](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-network-performance-options.html) コマンドを使用します。

```
aws ec2 modify-instance-network-performance-options \
    --instance-id i-1234567890abcdef0 \
    --bandwidth-weighting=vpc-1
```

次の の例では指定されたインスタンスに対してより高い EBS 帯域幅の重み付けを設定します。

```
aws ec2 modify-instance-network-performance-options \
    --instance-id i-1234567890abcdef0 \
    --bandwidth-weighting=ebs-1
```

------
#### [ PowerShell ]

**帯域幅の重み付けを更新するには**  
指定したインスタンスのネットワーク帯域幅の重み付けをさらに増やすには、[Edit-EC2InstanceNetworkPerformanceOption](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceNetworkPerformanceOption.html) コマンドレットを使用します。

```
Edit-EC2InstanceNetworkPerformanceOption `
    -InstanceId i-1234567890abcdef0 `
    -BandwidthWeighting vpc-1
```

次の の例では指定されたインスタンスに対してより高い EBS 帯域幅の重み付けを設定します。

```
Edit-EC2InstanceNetworkPerformanceOption `
    -InstanceId i-1234567890abcdef0 `
    -BandwidthWeighting ebs-1
```

------

## ネットワークパフォーマンス
<a name="config-bw-network-impact"></a>

次の表では、`default`、`vpc-1`、`ebs-1` の設定で達成できるネットワークパフォーマンスを Gbps で示しています。


| インスタンスタイプ |  **`default`**(ベースライン/バースト)  |  **`vpc-1`**(ベースライン/バースト)  |  **`ebs-1`**(ベースライン/バースト)  | 
| --- | --- | --- | --- | 
| c8a.medium | 0.52 / 12.5 | 0.65 / 12.5 | 0.438 / 10.0 | 
| c8a.large | 0.937/12.5 | 1.172 / 12.5 | 0.774 / 10.0 | 
| c8a.xlarge | 1.875 / 12.5 | 2.344 / 12.5 | 1.562 / 10.0 | 
| c8a.2xlarge | 3.75 / 15.0 | 4.688 / 15.0 | 3.125 / 12.5 | 
| c8a.4xlarge | 7.5/15.0 | 9.375 / 15.0 | 6.25 / 12.5 | 
| c8a.8xlarge | 15.0 | 18.75 | 12.5 | 
| c8a.12xlarge | 22.5 | 28.125 | 18.75 | 
| c8a.16xlarge | 30.0 | 37.5 | 25.0 | 
| c8a.24xlarge | 40.0 | 50.0 | 32.5 | 
| c8a.48xlarge | 75.0 | 93.75 | 60.0 | 
| c8a.metal-24xl | 40.0 | 50.0 | 32.5 | 
| c8a.metal-48xl | 75.0 | 93.75 | 60.0 | 
| c8g.medium | 0.52 / 12.5 | 0.65 / 12.5 | 0.441 / 10.0 | 
| c8g.large | 0.937 / 12.5 | 1.171 / 12.5 | 0.779 / 10.0 | 
| c8g.xlarge | 1.875 / 12.5 | 2.344 / 12.5 | 1.562 / 10.0 | 
| c8g.2xlarge | 3.75 / 15.0 | 4.688 / 15.0 | 3.125 / 12.5 | 
| c8g.4xlarge | 7.5 / 15.0 | 9.375 / 15.0 | 6.25 / 12.5 | 
| c8g.8xlarge | 15.0 | 18.75 | 12.5 | 
| c8g.12xlarge | 22.5 | 28.125 | 18.75 | 
| c8g.16xlarge | 30.0 | 37.5 | 25.0 | 
| c8g.24xlarge | 40.0 | 50.0 | 32.5 | 
| c8g.48xlarge | 50.0 | 62.5 | 40.0 | 
| c8g.metal-24xl | 40.0 | 50.0 | 32.5 | 
| c8g.metal-48xl | 50.0 | 62.5 | 40.0 | 
| c8gd.medium | 0.52 / 12.5 | 0.65 / 12.5 | 0.441 / 10.0 | 
| c8gd.large | 0.937 / 12.5 | 1.171 / 12.5 | 0.779 / 10.0 | 
| c8gd.xlarge | 1.875 / 12.5 | 2.344 / 12.5 | 1.562 / 10.0 | 
| c8gd.2xlarge | 3.75 / 15.0 | 4.688 / 15.0 | 3.125 / 12.5 | 
| c8gd.4xlarge | 7.5 / 15.0 | 9.375 / 15.0 | 6.25 / 12.5 | 
| c8gd.8xlarge | 15.0 | 18.75 | 12.5 | 
| c8gd.12xlarge | 22.5 | 28.125 | 18.75 | 
| c8gd.16xlarge | 30.0 | 37.5 | 25.0 | 
| c8gd.24xlarge | 40.0 | 50.0 | 32.5 | 
| c8gd.48xlarge | 50.0 | 62.5 | 40.0 | 
| c8gd.metal-24xl | 40.0 | 50.0 | 32.5 | 
| c8gd.metal-48xl | 50.0 | 62.5 | 40.0 | 
| c8i.large | 0.937/12.5 | 1.172 / 12.5 | 0.774 / 10.0 | 
| c8i.xlarge | 1.875 / 12.5 | 2.344 / 12.5 | 1.562 / 10.0 | 
| c8i.2xlarge | 3.75 / 15.0 | 4.688 / 15.0 | 3.125 / 12.5 | 
| c8i.4xlarge | 7.5/15.0 | 9.375 / 15.0 | 6.25 / 12.5 | 
| c8i.8xlarge | 15.0 | 18.75 | 12.5 | 
| c8i.12xlarge | 22.5 | 28.125 | 18.75 | 
| c8i.16xlarge | 30.0 | 37.5 | 25.0 | 
| c8i.24xlarge | 40.0 | 50.0 | 32.5 | 
| c8i.32xlarge | 50.0 | 62.5 | 40.0 | 
| c8i.48xlarge | 75.0 | 93.75 | 60.0 | 
| c8i.96xlarge | 100.0 | 125.0 | 80.0 | 
| c8i.metal-48xl | 75.0 | 93.75 | 60.0 | 
| c8i.metal-96xl | 100.0 | 125.0 | 80.0 | 
| c8id.large | 0.937/12.5 | 1.172 / 12.5 | 0.774 / 10.0 | 
| c8id.xlarge | 1.875 / 12.5 | 2.344 / 12.5 | 1.562 / 10.0 | 
| c8id.2xlarge | 3.75 / 15.0 | 4.688 / 15.0 | 3.125 / 12.5 | 
| c8id.4xlarge | 7.5/15.0 | 9.375 / 15.0 | 6.25 / 12.5 | 
| c8id.8xlarge | 15.0 | 18.75 | 12.5 | 
| c8id.12xlarge | 22.5 | 28.125 | 18.75 | 
| c8id.16xlarge | 30.0 | 37.5 | 25.0 | 
| c8id.24xlarge | 40.0 | 50.0 | 32.5 | 
| c8id.32xlarge | 50.0 | 62.5 | 40.0 | 
| c8id.48xlarge | 75.0 | 93.75 | 60.0 | 
| c8id.96xlarge | 100.0 | 125.0 | 80.0 | 
| c8id.metal-48xl | 75.0 | 93.75 | 60.0 | 
| c8id.metal-96xl | 100.0 | 125.0 | 80.0 | 
| c8i-flex.large | 0.468 / 12.5 | 0.585 / 12.5 | 0.389 / 10.0 | 
| c8i-flex.xlarge | 0.937/12.5 | 1.172 / 12.5 | 0.779 / 10.0 | 
| c8i-flex.2xlarge | 1.875 / 15.0 | 2.344 / 15.0 | 1.562 / 12.5 | 
| c8i-flex.4xlarge | 3.75 / 15.0 | 4.688 / 15.0 | 3.125 / 12.5 | 
| c8i-flex.8xlarge | 7.5/15.0 | 9.375 / 18.75 | 6.25 / 12.5 | 
| c8i-flex.12xlarge | 11.25 / 22.5 | 14.063 / 28.125 | 9.375 / 18.75 | 
| c8i-flex.16xlarge | 15.0 / 30.0 | 18.75 / 37.5 | 12.5 / 25.0 | 
| m8a.medium | 0.52 / 12.5 | 0.65 / 12.5 | 0.438 / 10.0 | 
| m8a.large | 0.937/12.5 | 1.172 / 12.5 | 0.774 / 10.0 | 
| m8a.xlarge | 1.875 / 12.5 | 2.344 / 12.5 | 1.562 / 10.0 | 
| m8a.2xlarge | 3.75 / 15.0 | 4.688 / 15.0 | 3.125 / 12.5 | 
| m8a.4xlarge | 7.5/15.0 | 9.375 / 15.0 | 6.25 / 12.5 | 
| m8a.8xlarge | 15.0 | 18.75 | 12.5 | 
| m8a.12xlarge | 22.5 | 28.125 | 18.75 | 
| m8a.16xlarge | 30.0 | 37.5 | 25.0 | 
| m8a.24xlarge | 40.0 | 50.0 | 32.5 | 
| m8a.48xlarge | 75.0 | 93.75 | 60.0 | 
| m8a.metal-24xl | 40.0 | 50.0 | 32.5 | 
| m8a.metal-48xl | 75.0 | 93.75 | 60.0 | 
| m8g.medium | 0.52 / 12.5 | 0.65 / 12.5 | 0.441 / 10.0 | 
| m8g.large | 0.937 / 12.5 | 1.171 / 12.5 | 0.779 / 10.0 | 
| m8g.xlarge | 1.875 / 12.5 | 2.344 / 12.5 | 1.562 / 10.0 | 
| m8g.2xlarge | 3.75 / 15.0 | 4.688 / 15.0 | 3.125 / 12.5 | 
| m8g.4xlarge | 7.5 / 15.0 | 9.375 / 15.0 | 6.25 / 12.5 | 
| m8g.8xlarge | 15.0 | 18.75 | 12.5 | 
| m8g.12xlarge | 22.5 | 28.125 | 18.75 | 
| m8g.16xlarge | 30.0 | 37.5 | 25.0 | 
| m8g.24xlarge | 40.0 | 50.0 | 32.5 | 
| m8g.48xlarge | 50.0 | 62.5 | 40.0 | 
| m8g.metal-24xl | 40.0 | 50.0 | 32.5 | 
| m8g.metal-48xl | 50.0 | 62.5 | 40.0 | 
| m8gd.medium | 0.52 / 12.5 | 0.65 / 12.5 | 0.441 / 10.0 | 
| m8gd.large | 0.937 / 12.5 | 1.171 / 12.5 | 0.779 / 10.0 | 
| m8gd.xlarge | 1.875 / 12.5 | 2.344 / 12.5 | 1.562 / 10.0 | 
| m8gd.2xlarge | 3.75 / 15.0 | 4.688 / 15.0 | 3.125 / 12.5 | 
| m8gd.4xlarge | 7.5 / 15.0 | 9.375 / 15.0 | 6.25 / 12.5 | 
| m8gd.8xlarge | 15.0 | 18.75 | 12.5 | 
| m8gd.12xlarge | 22.5 | 28.125 | 18.75 | 
| m8gd.16xlarge | 30.0 | 37.5 | 25.0 | 
| m8gd.24xlarge | 40.0 | 50.0 | 32.5 | 
| m8gd.48xlarge | 50.0 | 62.5 | 40.0 | 
| m8gd.metal-24xl | 40.0 | 50.0 | 32.5 | 
| m8gd.metal-48xl | 50.0 | 62.5 | 40.0 | 
| m8i.large | 0.937/12.5 | 1.172 / 12.5 | 0.774 / 10.0 | 
| m8i.xlarge | 1.875 / 12.5 | 2.344 / 12.5 | 1.562 / 10.0 | 
| m8i.2xlarge | 3.75 / 15.0 | 4.688 / 15.0 | 3.125 / 12.5 | 
| m8i.4xlarge | 7.5/15.0 | 9.375 / 15.0 | 6.25 / 12.5 | 
| m8i.8xlarge | 15.0 | 18.75 | 12.5 | 
| m8i.12xlarge | 22.5 | 28.125 | 18.75 | 
| m8i.16xlarge | 30.0 | 37.5 | 25.0 | 
| m8i.24xlarge | 40.0 | 50.0 | 32.5 | 
| m8i.32xlarge | 50.0 | 62.5 | 40.0 | 
| m8i.48xlarge | 75.0 | 93.75 | 60.0 | 
| m8i.96xlarge | 100.0 | 125.0 | 80.0 | 
| m8i.metal-48xl | 75.0 | 93.75 | 60.0 | 
| m8i.metal-96xl | 100.0 | 125.0 | 80.0 | 
| m8id.large | 0.937/12.5 | 1.172 / 12.5 | 0.774 / 10.0 | 
| m8id.xlarge | 1.875 / 12.5 | 2.344 / 12.5 | 1.562 / 10.0 | 
| m8id.2xlarge | 3.75 / 15.0 | 4.688 / 15.0 | 3.125 / 12.5 | 
| m8id.4xlarge | 7.5/15.0 | 9.375 / 15.0 | 6.25 / 12.5 | 
| m8id.8xlarge | 15.0 | 18.75 | 12.5 | 
| m8id.12xlarge | 22.5 | 28.125 | 18.75 | 
| m8id.16xlarge | 30.0 | 37.5 | 25.0 | 
| m8id.24xlarge | 40.0 | 50.0 | 32.5 | 
| m8id.32xlarge | 50.0 | 62.5 | 40.0 | 
| m8id.48xlarge | 75.0 | 93.75 | 60.0 | 
| m8id.96xlarge | 100.0 | 125.0 | 80.0 | 
| m8id.metal-48xl | 75.0 | 93.75 | 60.0 | 
| m8id.metal-96xl | 100.0 | 125.0 | 80.0 | 
| m8i-flex.large | 0.468 / 12.5 | 0.585 / 12.5 | 0.389 / 10.0 | 
| m8i-flex.xlarge | 0.937/12.5 | 1.172 / 12.5 | 0.779 / 10.0 | 
| m8i-flex.2xlarge | 1.875 / 15.0 | 2.344 / 15.0 | 1.562 / 12.5 | 
| m8i-flex.4xlarge | 3.75 / 15.0 | 4.688 / 15.0 | 3.125 / 12.5 | 
| m8i-flex.8xlarge | 7.5/15.0 | 9.375 / 18.75 | 6.25 / 12.5 | 
| m8i-flex.12xlarge | 11.25 / 22.5 | 14.063 / 28.125 | 9.375 / 18.75 | 
| m8i-flex.16xlarge | 15.0 / 30.0 | 18.75 / 37.5 | 12.5 / 25.0 | 
| r8a.medium | 0.52 / 12.5 | 0.65 / 12.5 | 0.438 / 10.0 | 
| r8a.large | 0.937/12.5 | 1.172 / 12.5 | 0.774 / 10.0 | 
| r8a.xlarge | 1.875 / 12.5 | 2.344 / 12.5 | 1.562 / 10.0 | 
| r8a.2xlarge | 3.75 / 15.0 | 4.688 / 15.0 | 3.125 / 12.5 | 
| r8a.4xlarge | 7.5/15.0 | 9.375 / 15.0 | 6.25 / 12.5 | 
| r8a.8xlarge | 15.0 | 18.75 | 12.5 | 
| r8a.12xlarge | 22.5 | 28.125 | 18.75 | 
| r8a.16xlarge | 30.0 | 37.5 | 25.0 | 
| r8a.24xlarge | 40.0 | 50.0 | 32.5 | 
| r8a.48xlarge | 75.0 | 93.75 | 60.0 | 
| r8a.metal-24xl | 40.0 | 50.0 | 32.5 | 
| r8a.metal-48xl | 75.0 | 93.75 | 60.0 | 
| r8g.medium | 0.52 / 12.5 | 0.65 / 12.5 | 0.441 / 10.0 | 
| r8g.large | 0.937 / 12.5 | 1.171 / 12.5 | 0.779 / 10.0 | 
| r8g.xlarge | 1.875 / 12.5 | 2.344 / 12.5 | 1.562 / 10.0 | 
| r8g.2xlarge | 3.75 / 15.0 | 4.688 / 15.0 | 3.125 / 12.5 | 
| r8g.4xlarge | 7.5 / 15.0 | 9.375 / 15.0 | 6.25 / 12.5 | 
| r8g.8xlarge | 15.0 | 18.75 | 12.5 | 
| r8g.12xlarge | 22.5 | 28.125 | 18.75 | 
| r8g.16xlarge | 30.0 | 37.5 | 25.0 | 
| r8g.24xlarge | 40.0 | 50.0 | 32.5 | 
| r8g.48xlarge | 50.0 | 62.5 | 40.0 | 
| r8g.metal-24xl | 40.0 | 50.0 | 32.5 | 
| r8g.metal-48xl | 50.0 | 62.5 | 40.0 | 
| r8gd.medium | 0.52 / 12.5 | 0.65 / 12.5 | 0.441 / 10.0 | 
| r8gd.large | 0.937 / 12.5 | 1.171 / 12.5 | 0.779 / 10.0 | 
| r8gd.xlarge | 1.875 / 12.5 | 2.344 / 12.5 | 1.562 / 10.0 | 
| r8gd.2xlarge | 3.75 / 15.0 | 4.688 / 15.0 | 3.125 / 12.5 | 
| r8gd.4xlarge | 7.5 / 15.0 | 9.375 / 15.0 | 6.25 / 12.5 | 
| r8gd.8xlarge | 15.0 | 18.75 | 12.5 | 
| r8gd.12xlarge | 22.5 | 28.125 | 18.75 | 
| r8gd.16xlarge | 30.0 | 37.5 | 25.0 | 
| r8gd.24xlarge | 40.0 | 50.0 | 32.5 | 
| r8gd.48xlarge | 50.0 | 62.5 | 40.0 | 
| r8gd.metal-24xl | 40.0 | 50.0 | 32.5 | 
| r8gd.metal-48xl | 50.0 | 62.5 | 40.0 | 
| r8i.large | 0.937 / 12.5 | 1.172 / 12.5 | 0.774 / 10.0 | 
| r8i.xlarge | 1.875 / 12.5 | 2.344 / 12.5 | 1.562 / 10.0 | 
| r8i.2xlarge | 3.75 / 15.0 | 4.688 / 15.0 | 3.125 / 12.5 | 
| r8i.4xlarge | 7.5 / 15.0 | 9.375 / 15.0 | 6.25 / 12.5 | 
| r8i.8xlarge | 15.0 | 18.75 | 12.5 | 
| r8i.12xlarge | 22.5 | 28.125 | 18.75 | 
| r8i.16xlarge | 30.0 | 37.5 | 25.0 | 
| r8i.24xlarge | 40.0 | 50.0 | 32.5 | 
| r8i.32xlarge | 50.0 | 62.5 | 40.0 | 
| r8i.48xlarge | 75.0 | 93.75 | 60.0 | 
| r8i.96xlarge | 100.0 | 125.0 | 80.0 | 
| r8i.metal-48xl | 75.0 | 93.75 | 60.0 | 
| r8i.metal-96xl | 100.0 | 125.0 | 80.0 | 
| r8id.large | 0.937/12.5 | 1.172 / 12.5 | 0.774 / 10.0 | 
| r8id.xlarge | 1.875 / 12.5 | 2.344 / 12.5 | 1.562 / 10.0 | 
| r8id.2xlarge | 3.75 / 15.0 | 4.688 / 15.0 | 3.125 / 12.5 | 
| r8id.4xlarge | 7.5/15.0 | 9.375 / 15.0 | 6.25 / 12.5 | 
| r8id.8xlarge | 15.0 | 18.75 | 12.5 | 
| r8id.12xlarge | 22.5 | 28.125 | 18.75 | 
| r8id.16xlarge | 30.0 | 37.5 | 25.0 | 
| r8id.24xlarge | 40.0 | 50.0 | 32.5 | 
| r8id.32xlarge | 50.0 | 62.5 | 40.0 | 
| r8id.48xlarge | 75.0 | 93.75 | 60.0 | 
| r8id.96xlarge | 100.0 | 125.0 | 80.0 | 
| r8id.metal-48xl | 75.0 | 93.75 | 60.0 | 
| r8id.metal-96xl | 100.0 | 125.0 | 80.0 | 
| r8i-flex.large | 0.468 / 12.5 | 0.585 / 12.5 | 0.389 / 10.0 | 
| r8i-flex.xlarge | 0.937 / 12.5 | 1.172 / 12.5 | 0.779 / 10.0 | 
| r8i-flex.2xlarge | 1.875 / 15.0 | 2.344 / 15.0 | 1.562 / 12.5 | 
| r8i-flex.4xlarge | 3.75 / 15.0 | 4.688 / 15.0 | 3.125 / 12.5 | 
| r8i-flex.8xlarge | 7.5 / 15.0 | 9.375 / 18.75 | 6.25 / 12.5 | 
| r8i-flex.12xlarge | 11.25 / 22.5 | 14.063 / 28.125 | 9.375 / 18.75 | 
| r8i-flex.16xlarge | 15.0 / 30.0 | 18.75 / 37.5 | 12.5 / 25.0 | 
| x8g.medium | 0.52 / 12.5 | 0.65 / 12.5 | 0.441 / 10.0 | 
| x8g.large | 0.937 / 12.5 | 1.171 / 12.5 | 0.779 / 10.0 | 
| x8g.xlarge | 1.875 / 12.5 | 2.344 / 12.5 | 1.562 / 10.0 | 
| x8g.2xlarge | 3.75 / 15.0 | 4.688 / 15.0 | 3.125 / 12.5 | 
| x8g.4xlarge | 7.5 / 15.0 | 9.375 / 15.0 | 6.25 / 12.5 | 
| x8g.8xlarge | 15.0 | 18.75 | 12.5 | 
| x8g.12xlarge | 22.5 | 28.125 | 18.75 | 
| x8g.16xlarge | 30.0 | 37.5 | 25.0 | 
| x8g.24xlarge | 40.0 | 50.0 | 32.5 | 
| x8g.48xlarge | 50.0 | 62.5 | 40.0 | 
| x8g.metal-24xl | 40.0 | 50.0 | 32.5 | 
| x8g.metal-48xl | 50.0 | 62.5 | 40.0 | 
| x8aedz.large | 1.562 / 18.75 | 1.953 / 18.75 | 1.249 / 15.0 | 
| x8aedz.xlarge | 3.125 / 18.75 | 3.907 / 18.75 | 2.5 / 15.0 | 
| x8aedz.3xlarge | 9.375 / 18.75 | 11.719 / 18.75 | 7.5/15.0 | 
| x8aedz.6xlarge | 18.75 | 23.438 | 15.0 | 
| x8aedz.12xlarge | 37.5 | 46.875 | 30.0 | 
| x8aedz.24xlarge | 75.0 | 93.75 | 60.0 | 
| x8aedz.metal-12xl | 37.5 | 46.875 | 30.0 | 
| x8aedz.metal-24xl | 75.0 | 93.75 | 60.0 | 
| x8i.large | 0.937/12.5 | 1.172 / 12.5 | 0.774 / 10.0 | 
| x8i.xlarge | 1.875 / 12.5 | 2.344 / 12.5 | 1.562 / 10.0 | 
| x8i.2xlarge | 3.75 / 15.0 | 4.688 / 15.0 | 3.125 / 12.5 | 
| x8i.4xlarge | 7.5/15.0 | 9.375 / 15.0 | 6.25 / 12.5 | 
| x8i.8xlarge | 15.0 | 18.75 | 12.5 | 
| x8i.12xlarge | 22.5 | 28.125 | 18.75 | 
| x8i.16xlarge | 30.0 | 37.5 | 25.0 | 
| x8i.24xlarge | 40.0 | 50.0 | 32.5 | 
| x8i.32xlarge | 50.0 | 62.5 | 40.0 | 
| x8i.48xlarge | 75.0 | 93.75 | 60.0 | 
| x8i.64xlarge | 80.0 | 100.0 | 62.5 | 
| x8i.96xlarge | 100.0 | 125.0 | 80.0 | 
| x8i.metal-48xl | 75.0 | 93.75 | 60.0 | 
| x8i.metal-96xl | 100.0 | 125.0 | 80.0 | 

## Amazon EBS パフォーマンス
<a name="config-bw-ebs-impact"></a>

次の表では、`default`、`vpc-1`、`ebs-1` の設定で達成できる Amazon EBS のパフォーマンスを Gbps で示しています。


| インスタンスタイプ |  **`default`**(ベースライン/バースト)  |  **`vpc-1`**(ベースライン/バースト)  |  **`ebs-1`**(ベースライン/バースト)  | 
| --- | --- | --- | --- | 
| c8a.medium | 0.325 / 10.0 | 0.195 / 6.25 | 0.407 / 10.0 | 
| c8a.large | 0.65 / 10.0 | 0.415 / 6.25 | 0.813 / 10.0 | 
| c8a.xlarge | 1.25 / 10.0 | 0.781 / 6.25 | 1.563 / 10.0 | 
| c8a.2xlarge | 2.5 / 10.0 | 1.562 / 6.25 | 3.125 / 10.0 | 
| c8a.4xlarge | 5.0 / 10.0 | 3.125 / 6.25 | 6.25 / 10.0 | 
| c8a.8xlarge | 10.0 | 6.25 | 12.5 | 
| c8a.12xlarge | 15.0 | 9.375 | 18.75 | 
| c8a.16xlarge | 20.0 | 12.5 | 25.0 | 
| c8a.24xlarge | 30.0 | 20.0 | 37.5 | 
| c8a.48xlarge | 60.0 | 41.25 | 75.0 | 
| c8a.metal-24xl | 30.0 | 20.0 | 37.5 | 
| c8a.metal-48xl | 60.0 | 41.25 | 75.0 | 
| c8g.medium | 0.315 / 10.0 | 0.185 / 6.25 | 0.394 / 10.0 | 
| c8g.large | 0.63 / 10.0 | 0.396 / 6.25 | 0.788 / 10.0 | 
| c8g.xlarge | 1.25 / 10.0 | 0.781 / 6.25 | 1.563 / 10.0 | 
| c8g.2xlarge | 2.5 / 10.0 | 1.562 / 6.25 | 3.125 / 10.0 | 
| c8g.4xlarge | 5.0 / 10.0 | 3.125 / 6.25 | 6.25 / 10.0 | 
| c8g.8xlarge | 10.0 | 6.25 | 12.5 | 
| c8g.12xlarge | 15.0 | 9.375 | 18.75 | 
| c8g.16xlarge | 20.0 | 12.5 | 25.0 | 
| c8g.24xlarge | 30.0 | 20.0 | 37.5 | 
| c8g.48xlarge | 40.0 | 27.5 | 50.0 | 
| c8g.metal-24xl | 30.0 | 20.0 | 37.5 | 
| c8g.metal-48xl | 40.0 | 27.5 | 50.0 | 
| c8gd.medium | 0.315 / 10.0 | 0.185 / 6.25 | 0.394 / 10.0 | 
| c8gd.large | 0.63 / 10.0 | 0.396 / 6.25 | 0.788 / 10.0 | 
| c8gd.xlarge | 1.25 / 10.0 | 0.781 / 6.25 | 1.563 / 10.0 | 
| c8gd.2xlarge | 2.5 / 10.0 | 1.562 / 6.25 | 3.125 / 10.0 | 
| c8gd.4xlarge | 5.0 / 10.0 | 3.125 / 6.25 | 6.25 / 10.0 | 
| c8gd.8xlarge | 10.0 | 6.25 | 12.5 | 
| c8gd.12xlarge | 15.0 | 9.375 | 18.75 | 
| c8gd.16xlarge | 20.0 | 12.5 | 25.0 | 
| c8gd.24xlarge | 30.0 | 20.0 | 37.5 | 
| c8gd.48xlarge | 40.0 | 27.5 | 50.0 | 
| c8gd.metal-24xl | 30.0 | 20.0 | 37.5 | 
| c8gd.metal-48xl | 40.0 | 27.5 | 50.0 | 
| c8i.large | 0.65 / 10.0 | 0.415 / 6.25 | 0.813 / 10.0 | 
| c8i.xlarge | 1.25 / 10.0 | 0.781 / 6.25 | 1.563 / 10.0 | 
| c8i.2xlarge | 2.5 / 10.0 | 1.562 / 6.25 | 3.125 / 10.0 | 
| c8i.4xlarge | 5.0 / 10.0 | 3.125 / 6.25 | 6.25 / 10.0 | 
| c8i.8xlarge | 10.0 | 6.25 | 12.5 | 
| c8i.12xlarge | 15.0 | 9.375 | 18.75 | 
| c8i.16xlarge | 20.0 | 12.5 | 25.0 | 
| c8i.24xlarge | 30.0 | 20.0 | 37.5 | 
| c8i.32xlarge | 40.0 | 27.5 | 50.0 | 
| c8i.48xlarge | 60.0 | 41.25 | 75.0 | 
| c8i.96xlarge | 80.0 | 55.0 | 100.0 | 
| c8i.metal-48xl | 60.0 | 41.25 | 75.0 | 
| c8i.metal-96xl | 80.0 | 55.0 | 100.0 | 
| c8id.large | 0.65 / 10.0 | 0.415 / 6.25 | 0.813 / 10.0 | 
| c8id.xlarge | 1.25 / 10.0 | 0.781 / 6.25 | 1.563 / 10.0 | 
| c8id.2xlarge | 2.5 / 10.0 | 1.562 / 6.25 | 3.125 / 10.0 | 
| c8id.4xlarge | 5.0 / 10.0 | 3.125 / 6.25 | 6.25 / 10.0 | 
| c8id.8xlarge | 10.0 | 6.25 | 12.5 | 
| c8id.12xlarge | 15.0 | 9.375 | 18.75 | 
| c8id.16xlarge | 20.0 | 12.5 | 25.0 | 
| c8id.24xlarge | 30.0 | 20.0 | 37.5 | 
| c8id.32xlarge | 40.0 | 27.5 | 50.0 | 
| c8id.48xlarge | 60.0 | 41.25 | 75.0 | 
| c8id.96xlarge | 80.0 | 55.0 | 100.0 | 
| c8id.metal-48xl | 60.0 | 41.25 | 75.0 | 
| c8id.metal-96xl | 80.0 | 55.0 | 100.0 | 
| c8i-flex.large | 0.315 / 10.0 | 0.198 / 6.25 | 0.394 / 10.0 | 
| c8i-flex.xlarge | 0.63 / 10.0 | 0.395 / 6.25 | 0.788 / 10.0 | 
| c8i-flex.2xlarge | 1.25 / 10.0 | 0.781 / 6.25 | 1.563 / 10.0 | 
| c8i-flex.4xlarge | 2.5 / 10.0 | 1.562 / 6.25 | 3.125 / 10.0 | 
| c8i-flex.8xlarge | 5.0 / 10.0 | 3.125 / 6.25 | 6.25 / 12.5 | 
| c8i-flex.12xlarge | 7.5 / 15.0 | 4.687 / 9.375 | 9.375 / 18.75 | 
| c8i-flex.16xlarge | 10.0 / 20.0 | 6.25 / 12.5 | 12.5 / 25.0 | 
| m8a.medium | 0.325 / 10.0 | 0.195 / 6.25 | 0.407 / 10.0 | 
| m8a.large | 0.65 / 10.0 | 0.415 / 6.25 | 0.813 / 10.0 | 
| m8a.xlarge | 1.25 / 10.0 | 0.781 / 6.25 | 1.563 / 10.0 | 
| m8a.2xlarge | 2.5 / 10.0 | 1.562 / 6.25 | 3.125 / 10.0 | 
| m8a.4xlarge | 5.0 / 10.0 | 3.125 / 6.25 | 6.25 / 10.0 | 
| m8a.8xlarge | 10.0 | 6.25 | 12.5 | 
| m8a.12xlarge | 15.0 | 9.375 | 18.75 | 
| m8a.16xlarge | 20.0 | 12.5 | 25.0 | 
| m8a.24xlarge | 30.0 | 20.0 | 37.5 | 
| m8a.48xlarge | 60.0 | 41.25 | 75.0 | 
| m8a.metal-24xl | 30.0 | 20.0 | 37.5 | 
| m8a.metal-48xl | 60.0 | 41.25 | 75.0 | 
| m8g.medium | 0.315 / 10.0 | 0.185 / 6.25 | 0.394 / 10.0 | 
| m8g.large | 0.63 / 10.0 | 0.396 / 6.25 | 0.788 / 10.0 | 
| m8g.xlarge | 1.25 / 10.0 | 0.781 / 6.25 | 1.563 / 10.0 | 
| m8g.2xlarge | 2.5 / 10.0 | 1.562 / 6.25 | 3.125 / 10.0 | 
| m8g.4xlarge | 5.0 / 10.0 | 3.125 / 6.25 | 6.25 / 10.0 | 
| m8g.8xlarge | 10.0 | 6.25 | 12.5 | 
| m8g.12xlarge | 15.0 | 9.375 | 18.75 | 
| m8g.16xlarge | 20.0 | 12.5 | 25.0 | 
| m8g.24xlarge | 30.0 | 20.0 | 37.5 | 
| m8g.48xlarge | 40.0 | 27.5 | 50.0 | 
| m8g.metal-24xl | 30.0 | 20.0 | 37.5 | 
| m8g.metal-48xl | 40.0 | 27.5 | 50.0 | 
| m8gd.medium | 0.315 / 10.0 | 0.185 / 6.25 | 0.394 / 10.0 | 
| m8gd.large | 0.63 / 10.0 | 0.396 / 6.25 | 0.788 / 10.0 | 
| m8gd.xlarge | 1.25 / 10.0 | 0.781 / 6.25 | 1.563 / 10.0 | 
| m8gd.2xlarge | 2.5 / 10.0 | 1.562 / 6.25 | 3.125 / 10.0 | 
| m8gd.4xlarge | 5.0 / 10.0 | 3.125 / 6.25 | 6.25 / 10.0 | 
| m8gd.8xlarge | 10.0 | 6.25 | 12.5 | 
| m8gd.12xlarge | 15.0 | 9.375 | 18.75 | 
| m8gd.16xlarge | 20.0 | 12.5 | 25.0 | 
| m8gd.24xlarge | 30.0 | 20.0 | 37.5 | 
| m8gd.48xlarge | 40.0 | 27.5 | 50.0 | 
| m8gd.metal-24xl | 30.0 | 20.0 | 37.5 | 
| m8gd.metal-48xl | 40.0 | 27.5 | 50.0 | 
| m8i.large | 0.65 / 10.0 | 0.415 / 6.25 | 0.813 / 10.0 | 
| m8i.xlarge | 1.25 / 10.0 | 0.781 / 6.25 | 1.563 / 10.0 | 
| m8i.2xlarge | 2.5 / 10.0 | 1.562 / 6.25 | 3.125 / 10.0 | 
| m8i.4xlarge | 5.0 / 10.0 | 3.125 / 6.25 | 6.25 / 10.0 | 
| m8i.8xlarge | 10.0 | 6.25 | 12.5 | 
| m8i.12xlarge | 15.0 | 9.375 | 18.75 | 
| m8i.16xlarge | 20.0 | 12.5 | 25.0 | 
| m8i.24xlarge | 30.0 | 20.0 | 37.5 | 
| m8i.32xlarge | 40.0 | 27.5 | 50.0 | 
| m8i.48xlarge | 60.0 | 41.25 | 75.0 | 
| m8i.96xlarge | 80.0 | 55.0 | 100.0 | 
| m8i.metal-48xl | 60.0 | 41.25 | 75.0 | 
| m8i.metal-96xl | 80.0 | 55.0 | 100.0 | 
| m8id.large | 0.65 / 10.0 | 0.415 / 6.25 | 0.813 / 10.0 | 
| m8id.xlarge | 1.25 / 10.0 | 0.781 / 6.25 | 1.563 / 10.0 | 
| m8id.2xlarge | 2.5 / 10.0 | 1.562 / 6.25 | 3.125 / 10.0 | 
| m8id.4xlarge | 5.0 / 10.0 | 3.125 / 6.25 | 6.25 / 10.0 | 
| m8id.8xlarge | 10.0 | 6.25 | 12.5 | 
| m8id.12xlarge | 15.0 | 9.375 | 18.75 | 
| m8id.16xlarge | 20.0 | 12.5 | 25.0 | 
| m8id.24xlarge | 30.0 | 20.0 | 37.5 | 
| m8id.32xlarge | 40.0 | 27.5 | 50.0 | 
| m8id.48xlarge | 60.0 | 41.25 | 75.0 | 
| m8id.96xlarge | 80.0 | 55.0 | 100.0 | 
| m8id.metal-48xl | 60.0 | 41.25 | 75.0 | 
| m8id.metal-96xl | 80.0 | 55.0 | 100.0 | 
| m8i-flex.large | 0.315 / 10.0 | 0.198 / 6.25 | 0.394 / 10.0 | 
| m8i-flex.xlarge | 0.63 / 10.0 | 0.395 / 6.25 | 0.788 / 10.0 | 
| m8i-flex.2xlarge | 1.25 / 10.0 | 0.781 / 6.25 | 1.563 / 10.0 | 
| m8i-flex.4xlarge | 2.5 / 10.0 | 1.562 / 6.25 | 3.125 / 10.0 | 
| m8i-flex.8xlarge | 5.0 / 10.0 | 3.125 / 6.25 | 6.25 / 12.5 | 
| m8i-flex.12xlarge | 7.5 / 15.0 | 4.687 / 9.375 | 9.375 / 18.75 | 
| m8i-flex.16xlarge | 10.0 / 20.0 | 6.25 / 12.5 | 12.5 / 25.0 | 
| r8a.medium | 0.325 / 10.0 | 0.195 / 6.25 | 0.407 / 10.0 | 
| r8a.large | 0.65 / 10.0 | 0.415 / 6.25 | 0.813 / 10.0 | 
| r8a.xlarge | 1.25 / 10.0 | 0.781 / 6.25 | 1.563 / 10.0 | 
| r8a.2xlarge | 2.5 / 10.0 | 1.562 / 6.25 | 3.125 / 10.0 | 
| r8a.4xlarge | 5.0 / 10.0 | 3.125 / 6.25 | 6.25 / 10.0 | 
| r8a.8xlarge | 10.0 | 6.25 | 12.5 | 
| r8a.12xlarge | 15.0 | 9.375 | 18.75 | 
| r8a.16xlarge | 20.0 | 12.5 | 25.0 | 
| r8a.24xlarge | 30.0 | 20.0 | 37.5 | 
| r8a.48xlarge | 60.0 | 41.25 | 75.0 | 
| r8a.metal-24xl | 30.0 | 20.0 | 37.5 | 
| r8a.metal-48xl | 60.0 | 41.25 | 75.0 | 
| r8g.medium | 0.315 / 10.0 | 0.185 / 6.25 | 0.394 / 10.0 | 
| r8g.large | 0.63 / 10.0 | 0.396 / 6.25 | 0.788 / 10.0 | 
| r8g.xlarge | 1.25 / 10.0 | 0.781 / 6.25 | 1.563 / 10.0 | 
| r8g.2xlarge | 2.5 / 10.0 | 1.562 / 6.25 | 3.125 / 10.0 | 
| r8g.4xlarge | 5.0 / 10.0 | 3.125 / 6.25 | 6.25 / 10.0 | 
| r8g.8xlarge | 10.0 | 6.25 | 12.5 | 
| r8g.12xlarge | 15.0 | 9.375 | 18.75 | 
| r8g.16xlarge | 20.0 | 12.5 | 25.0 | 
| r8g.24xlarge | 30.0 | 20.0 | 37.5 | 
| r8g.48xlarge | 40.0 | 27.5 | 50.0 | 
| r8g.metal-24xl | 30.0 | 20.0 | 37.5 | 
| r8g.metal-48xl | 40.0 | 27.5 | 50.0 | 
| r8gd.medium | 0.315 / 10.0 | 0.185 / 6.25 | 0.394 / 10.0 | 
| r8gd.large | 0.63 / 10.0 | 0.396 / 6.25 | 0.788 / 10.0 | 
| r8gd.xlarge | 1.25 / 10.0 | 0.781 / 6.25 | 1.563 / 10.0 | 
| r8gd.2xlarge | 2.5 / 10.0 | 1.562 / 6.25 | 3.125 / 10.0 | 
| r8gd.4xlarge | 5.0 / 10.0 | 3.125 / 6.25 | 6.25 / 10.0 | 
| r8gd.8xlarge | 10.0 | 6.25 | 12.5 | 
| r8gd.12xlarge | 15.0 | 9.375 | 18.75 | 
| r8gd.16xlarge | 20.0 | 12.5 | 25.0 | 
| r8gd.24xlarge | 30.0 | 20.0 | 37.5 | 
| r8gd.48xlarge | 40.0 | 27.5 | 50.0 | 
| r8gd.metal-24xl | 30.0 | 20.0 | 37.5 | 
| r8gd.metal-48xl | 40.0 | 27.5 | 50.0 | 
| r8i.large | 0.65 / 10.0 | 0.415 / 6.25 | 0.813 / 10.0 | 
| r8i.xlarge | 1.25 / 10.0 | 0.781 / 6.25 | 1.563 / 10.0 | 
| r8i.2xlarge | 2.5 / 10.0 | 1.562 / 6.25 | 3.125 / 10.0 | 
| r8i.4xlarge | 5.0 / 10.0 | 3.125 / 6.25 | 6.25 / 10.0 | 
| r8i.8xlarge | 10.0 | 6.25 | 12.5 | 
| r8i.12xlarge | 15.0 | 9.375 | 18.75 | 
| r8i.16xlarge | 20.0 | 12.5 | 25.0 | 
| r8i.24xlarge | 30.0 | 20.0 | 37.5 | 
| r8i.32xlarge | 40.0 | 27.5 | 50.0 | 
| r8i.48xlarge | 60.0 | 41.25 | 75.0 | 
| r8i.96xlarge | 80.0 | 55.0 | 100.0 | 
| r8i.metal-48xl | 60.0 | 41.25 | 75.0 | 
| r8i.metal-96xl | 80.0 | 55.0 | 100.0 | 
| r8id.large | 0.65 / 10.0 | 0.415 / 6.25 | 0.813 / 10.0 | 
| r8id.xlarge | 1.25 / 10.0 | 0.781 / 6.25 | 1.563 / 10.0 | 
| r8id.2xlarge | 2.5 / 10.0 | 1.562 / 6.25 | 3.125 / 10.0 | 
| r8id.4xlarge | 5.0 / 10.0 | 3.125 / 6.25 | 6.25 / 10.0 | 
| r8id.8xlarge | 10.0 | 6.25 | 12.5 | 
| r8id.12xlarge | 15.0 | 9.375 | 18.75 | 
| r8id.16xlarge | 20.0 | 12.5 | 25.0 | 
| r8id.24xlarge | 30.0 | 20.0 | 37.5 | 
| r8id.32xlarge | 40.0 | 27.5 | 50.0 | 
| r8id.48xlarge | 60.0 | 41.25 | 75.0 | 
| r8id.96xlarge | 80.0 | 55.0 | 100.0 | 
| r8id.metal-48xl | 60.0 | 41.25 | 75.0 | 
| r8id.metal-96xl | 80.0 | 55.0 | 100.0 | 
| r8i-flex.large | 0.315 / 10.0 | 0.198 / 6.25 | 0.394 / 10.0 | 
| r8i-flex.xlarge | 0.63 / 10.0 | 0.395 / 6.25 | 0.788 / 10.0 | 
| r8i-flex.2xlarge | 1.25 / 10.0 | 0.781 / 6.25 | 1.563 / 10.0 | 
| r8i-flex.4xlarge | 2.5 / 10.0 | 1.562 / 6.25 | 3.125 / 10.0 | 
| r8i-flex.8xlarge | 5.0 / 10.0 | 3.125 / 6.25 | 6.25 / 12.5 | 
| r8i-flex.12xlarge | 7.5 / 15.0 | 4.687 / 9.375 | 9.375 / 18.75 | 
| r8i-flex.16xlarge | 10.0 / 20.0 | 6.25 / 12.5 | 12.5 / 25.0 | 
| x8g.medium | 0.315 / 10.0 | 0.185 / 6.25 | 0.394 / 10.0 | 
| x8g.large | 0.63 / 10.0 | 0.396 / 6.25 | 0.788 / 10.0 | 
| x8g.xlarge | 1.25 / 10.0 | 0.781 / 6.25 | 1.563 / 10.0 | 
| x8g.2xlarge | 2.5 / 10.0 | 1.562 / 6.25 | 3.125 / 10.0 | 
| x8g.4xlarge | 5.0 / 10.0 | 3.125 / 6.25 | 6.25 / 10.0 | 
| x8g.8xlarge | 10.0 | 6.25 | 12.5 | 
| x8g.12xlarge | 15.0 | 9.375 | 18.75 | 
| x8g.16xlarge | 20.0 | 12.5 | 25.0 | 
| x8g.24xlarge | 30.0 | 20.0 | 37.5 | 
| x8g.48xlarge | 40.0 | 27.5 | 50.0 | 
| x8g.metal-24xl | 30.0 | 20.0 | 37.5 | 
| x8g.metal-48xl | 40.0 | 27.5 | 50.0 | 
| x8aedz.large | 1.25 / 15.0 | 0.859 / 10.312 | 1.563 / 15.0 | 
| x8aedz.xlarge | 2.5 / 15.0 | 1.718 / 10.312 | 3.125 / 15.0 | 
| x8aedz.3xlarge | 7.5/15.0 | 5.156 / 10.312 | 9.375 / 15.0 | 
| x8aedz.6xlarge | 15.0 | 10.312 | 18.75 | 
| x8aedz.12xlarge | 30.0 | 20.625 | 37.5 | 
| x8aedz.24xlarge | 60.0 | 41.25 | 75.0 | 
| x8aedz.metal-12xl | 30.0 | 20.625 | 37.5 | 
| x8aedz.metal-24xl | 60.0 | 41.25 | 75.0 | 
| x8i.large | 0.65 / 10.0 | 0.415 / 6.25 | 0.813 / 10.0 | 
| x8i.xlarge | 1.25 / 10.0 | 0.781 / 6.25 | 1.563 / 10.0 | 
| x8i.2xlarge | 2.5 / 10.0 | 1.562 / 6.25 | 3.125 / 10.0 | 
| x8i.4xlarge | 5.0 / 10.0 | 3.125 / 6.25 | 6.25 / 10.0 | 
| x8i.8xlarge | 10.0 | 6.25 | 12.5 | 
| x8i.12xlarge | 15.0 | 9.375 | 18.75 | 
| x8i.16xlarge | 20.0 | 12.5 | 25.0 | 
| x8i.24xlarge | 30.0 | 20.0 | 37.5 | 
| x8i.32xlarge | 40.0 | 27.5 | 50.0 | 
| x8i.48xlarge | 60.0 | 41.25 | 75.0 | 
| x8i.64xlarge | 70.0 | 50.0 | 87.5 | 
| x8i.96xlarge | 80.0 | 55.0 | 100.0 | 
| x8i.metal-48xl | 60.0 | 41.25 | 75.0 | 
| x8i.metal-96xl | 80.0 | 55.0 | 100.0 | 

## インスタンスの帯域幅をモニタリングします。
<a name="monitor-instance-bandwidth"></a>

CloudWatch メトリクスを使用して、インスタンスのネットワーク帯域幅と送受信されたパケットをモニタリングできます。Elastic Network Adapter (ENA) ドライバーが提供するネットワークパフォーマンスメトリクスを使用して、トラフィックが Amazon EC2 がインスタンスレベルで定義するネットワーク許容量を超えるかモニタリングできます。

Amazon EC2 がインスタンスのメトリクスデータを CloudWatch に送信するときに、1 分単位か 5 分単位かを設定できます。CloudWatch インスタンスメトリクスでは許容量を超え、パケットがドロップされたことがネットワークパフォーマンスメトリクスに表示されることがあります。これはインスタンスのネットワークリソースに対する需要が短時間で急増し (マイクロバーストと呼ばれる)、CloudWatch メトリクスがこのようなマイクロ秒単位の急増を反映するのに十分な粒度を持っていない場合に発生します。

**詳細情報**
+ [インスタンスメトリクス](viewing_metrics_with_cloudwatch.md#ec2-cloudwatch-metrics)
+ [ネットワークパフォーマンスのモニタリング](monitoring-network-performance-ena.md)

# Amazon EC2 インスタンスでの拡張ネットワーキング
<a name="enhanced-networking"></a>

拡張ネットワーキングでは、シングルルート I/O 仮想化 (SR-IOV) を使用して、における高性能ネットワーキング機能が提供されます。SR-IOV は、従来の仮想化ネットワークインターフェイスと比較し、I/O パフォーマンスが高く、CPU 利用率が低いデバイス仮想化の手法です。拡張ネットワーキングは、より高い帯域幅、1 秒あたりのパケット (PPS) のより高いパフォーマンス、常により低いインスタンス間レイテンシーを実現します。拡張ネットワーキングは追加料金なしで使用できます。

各インスタンスタイプでサポートされているネットワーク速度については、[Amazon EC2インスタンスタイプ](https://aws.amazon.com/ec2/instance-types/)を参照してください。

次のいずれかのメカニズムを使用して、拡張ネットワークを有効にすることができます。

**Elastic Network Adapter (ENA)**  
Elastic Network Adapter (ENA) は、サポート対象のインスタンスタイプに対して最大 100 Gbps のネットワーク速度をサポートします。  
すべての [Nitro ベースのインスタンス](instance-types.md#instance-hypervisor-type)が ENA を使用してネットワーキングを強化しています。さらに、次の Xen ベースのインスタンスタイプは ENA (H1、I3、G3、`m4.16xlarge`、P2、P3、P3dn、R4) を使用しています。  
詳細については、「[EC2 インスタンスで ENA による拡張ネットワーキングを有効にする](enhanced-networking-ena.md)」を参照してください。

**Intel 82599 Virtual Function (VF) インターフェイス**  
Intel 82599 Virtual Function インターフェイスでは、サポートされているインスタンスタイプについて最大 10 Gbps のネットワーク速度がサポートされています。  
インスタンスタイプ C3、C4、D2、I2、M4 (m4.16xlarge を除く)、R3 では、拡張ネットワーキングに Intel 82599 VF インターフェイスが使用されます。  
詳細については、「[Intel 82599 VF インターフェイスを使用する拡張ネットワーキング](sriov-networking.md)」を参照してください。

**Topics**
+ [Elastic Network Adapter (ENA)](enhanced-networking-ena.md)
+ [ENA Express](ena-express.md)
+ [Intel 82599 VF](sriov-networking.md)
+ [ネットワークパフォーマンスのモニタリング](monitoring-network-performance-ena.md)
+ [Linux のネットワークレイテンシーを改善する](ena-improve-network-latency-linux.md)
+ [Nitro のパフォーマンスに関する考慮事項](ena-nitro-perf.md)
+ [Windows でのネットワークパフォーマンスを最適化する](enhanced-networking-os.md)

# EC2 インスタンスで ENA による拡張ネットワーキングを有効にする
<a name="enhanced-networking-ena"></a>

Amazon EC2 は、Elastic Network Adapter (ENA) を介してネットワーキング機能を提供します。拡張ネットワーキングを使用するには、必要な ENA ドライバーを定義した AMI を使用するか、必要な ENA ドライバーを手動でインストールする必要があります。その後、インスタンスで ENA サポートを有効にできます。

ENA ドライバーのリリースノートやインストール手順を確認するには、ご使用のインスタンスオペレーティングシステムプラットフォームに応じたタブを参照してください。

------
#### [ Linux ]

GitHub では、以下のドキュメントを参照できます。
+ GitHub で「[ENA Linux kernel driver release notes](https://github.com/amzn/amzn-drivers/blob/master/kernel/linux/ena/RELEASENOTES.md)」を確認してください。
+ インストール手順が含まれている ENA Linux カーネルドライバーの概要については、GitHub で「[Elastic Network Adapter (ENA) ファミリー用Linuxカーネルドライバ](https://github.com/amzn/amzn-drivers/blob/master/kernel/linux/ena/README.rst)」を参照してください。

------
#### [ Windows ]

このガイドの「**Manage device drivers**」セクションから、以下のドキュメントを確認できます。
+ [ENA Windows ドライバーのバージョンリリースを追跡する](ena-driver-releases-windows.md).
+ [EC2 Windows インスタンスに ENA ドライバーをインストールする](ena-adapter-driver-install-upgrade-win.md).

------

Nitro ベースのインスタンスの場合、拡張ネットワーキング機能はインスタンスタイプが実装する Nitro のバージョンによって異なります。

インスタンスのネットワーク仕様を確認するには、インスタンスタイプのインスタンスファミリーリンクを選択してください。適用されるインスタンスファミリーがわからない場合は、「*Amazon EC2 インスタンスタイプ*」ガイドの「[Naming conventions](https://docs.aws.amazon.com/ec2/latest/instancetypes/instance-type-names.html)」を参照してください。
+ [高速コンピューティングインスタンスのネットワーク仕様](https://docs.aws.amazon.com/ec2/latest/instancetypes/ac.html#ac_network)
+ [コンピューティング最適化インスタンスのネットワーク仕様](https://docs.aws.amazon.com/ec2/latest/instancetypes/co.html#co_network)
+ [汎用インスタンスのネットワーク仕様](https://docs.aws.amazon.com/ec2/latest/instancetypes/gp.html#gp_network)
+ [ハイパフォーマンスコンピューティングインスタンスのネットワーク仕様](https://docs.aws.amazon.com/ec2/latest/instancetypes/hpc.html#hpc_network)
+ [メモリ最適化インスタンスのネットワーク仕様](https://docs.aws.amazon.com/ec2/latest/instancetypes/mo.html#mo_network)
+ [ストレージ最適化インスタンスのネットワーク仕様](https://docs.aws.amazon.com/ec2/latest/instancetypes/so.html#so_network)

**Topics**
+ [ENA を使用した拡張ネットワーキングの前提条件](#ena-requirements)
+ [拡張ネットワーキングが有効化されているかどうかのテスト](test-enhanced-networking-ena.md)
+ [インスタンスでの拡張ネットワーキングの有効化](enabling_enhanced_networking.md)
+ [ENA キュー](ena-queues.md)
+ [Linux での ENA カーネルドライバーのトラブルシューティング](troubleshooting-ena.md)
+ [エラスティックネットワークアダプタ Windows ドライバーのトラブルシューティング](troubleshoot-ena-driver.md)

## ENA を使用した拡張ネットワーキングの前提条件
<a name="ena-requirements"></a>

ENA を使用した拡張ネットワーキングを準備するには、次のようにインスタンスをセットアップします。
+ [Nitro ベースのインスタンス](instance-types.md#instance-hypervisor-type)を起動します。
+ インスタンスがインターネットに接続されていることを確認します。
+ 保持する必要がある重要なデータがインスタンスにある場合、インスタンスから AMI を作成してそのデータをバックアップする必要があります。`enaSupport` 属性を有効にすると共に、ENA カーネルドライバーを更新すると、互換性のないインスタンスがレンダリングされたり、オペレーティングシステムに接続できなくなったりする可能性があります。最近のバックアップがある場合はこれが発生してもデータは保持されます。
+ **Linux インスタンス** – インスタンスに対して ENA 拡張ネットワーキングが自動的に有効化されるように、サポートされているバージョンの Linux カーネルとサポートされているディストリビューションを使用してインスタンスを起動します。詳細については、[ENA Linux Kernel Driver リリースノート](https://github.com/amzn/amzn-drivers/blob/master/kernel/linux/ena/RELEASENOTES.md)を参照してください。
+ **Windows インスタンス** – インスタンスで Windows Server 2008 R2 SP1 を実行している場合は、[SHA-2 コード署名サポートが更新](https://support.microsoft.com/en-us/help/4474419/sha-2-code-signing-support-update)されていることを確認します。
+ 選択した任意のコンピュータ、できればローカルのデスクトップまたはノートパソコンで、AWS マネジメントコンソール から [AWS CloudShell](https://console.aws.amazon.com/cloudshell) を使用するか、[AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html) もしくは [AWS Tools for Windows PowerShell](https://docs.aws.amazon.com/powershell/latest/userguide/) をインストールし設定します。詳細については[Amazon EC2 へのアクセス](concepts.md#access-ec2)もしくは [AWS CloudShell ユーザーガイド](https://docs.aws.amazon.com/cloudshell/latest/userguide/welcome.html)を参照してください。拡張ネットワーキングは、Amazon EC2 コンソールから管理することはできません。

# 拡張ネットワーキングが有効化されているかどうかのテスト
<a name="test-enhanced-networking-ena"></a>

インスタンスまたは AMI で拡張ネットワーキングが有効になっているかどうかをテストできます。

**インスタンス属性**  
`enaSupport` インスタンス属性の値を確認します。

------
#### [ AWS CLI ]

[https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html) コマンドを使用します。

```
aws ec2 describe-instances \
    --instance-ids i-1234567890abcdef0 \
    --query "Reservations[].Instances[].EnaSupport"
```

拡張ネットワーキングが有効になっている場合、出力は次のようになります。

```
[
    true
]
```

------
#### [ PowerShell ]

[https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Instance.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Instance.html) コマンドレットを使用します。

```
(Get-EC2Instance -InstanceId i-1234567890abcdef0).Instances.EnaSupport
```

拡張ネットワーキングが有効になっている場合、出力は次のようになります。

```
True
```

------

**イメージ属性**  
`enaSupport` イメージ属性の値を確認します。

------
#### [ AWS CLI ]

[https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html) コマンドを使用します。

```
aws ec2 describe-images \
    --image-id ami-0abcdef1234567890 \
    --query "Images[].EnaSupport"
```

拡張ネットワーキングが有効になっている場合、出力は次のようになります。

```
[
    true
]
```

------
#### [ PowerShell ]

[https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Image.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Image.html) コマンドレットを使用します。

```
(Get-EC2Image -ImageId ami-0abcdef1234567890).EnaSupport
```

拡張ネットワーキングが有効になっている場合、出力は次のようになります。

```
True
```

------

**Linux ネットワークインターフェイスドライバー**  
以下のコマンドを使用して、`ena` カーネルドライバーが特定のインターフェイスで使用されていることを確認し、チェックするインターフェイス名に置き換えます。単一のインターフェイス (デフォルト) を使用している場合は`eth0` です。Linux ディストリビューションが予測可能なネットワーク名をサポートしている場合、これは `ens5` のような名前である可能性があります。詳細については、[インスタンスでの拡張ネットワーキングの有効化](enabling_enhanced_networking.md) の RHEL、SUSE、および CentOS のセクションを展開します。

以下の例では、リストされているドライバーは `vif` であるため、`ena` カーネルドライバーはロードされません。

```
[ec2-user ~]$ ethtool -i eth0
driver: vif
version:
firmware-version:
bus-info: vif-0
supports-statistics: yes
supports-test: no
supports-eeprom-access: no
supports-register-dump: no
supports-priv-flags: no
```

この例では、`ena` カーネルドライバーが最小推奨バージョンでロードされています。このインスタンスでは拡張ネットワーキングが適切に設定されています。

```
[ec2-user ~]$ ethtool -i eth0
driver: ena
version: 1.5.0g
firmware-version:
expansion-rom-version:
bus-info: 0000:00:05.0
supports-statistics: yes
supports-test: no
supports-eeprom-access: no
supports-register-dump: no
supports-priv-flags: no
```

# インスタンスでの拡張ネットワーキングの有効化
<a name="enabling_enhanced_networking"></a>

使用する手順はインスタンスのオペレーティングシステムによって異なります。

## Amazon Linux
<a name="enable-enhanced-networking-ena-AL"></a>

拡張ネットワーキングには ENA 搭載のカーネルドライバーが必要であり、Amazon Linux 向け AMI であれば、そうしたドライバーが含まれ、ENA にも対応しています。したがって、サポートされるインスタンスタイプで HVM バージョンの Amazon Linux を使用してインスタンスを起動した場合、拡張ネットワーキングは既にインスタンスで有効になっています。詳細については、「[拡張ネットワーキングが有効化されているかどうかのテスト](test-enhanced-networking-ena.md)」を参照してください。

## Ubuntu
<a name="enhanced-networking-ena-ubuntu"></a>

拡張ネットワーキングには ENA 搭載のカーネルドライバーが必要であり、最新の Ubuntu HVM AMI であれば、そうしたドライバーが含まれ、ENA にも対応しています。したがって、サポートされるインスタンスタイプで最新の Ubuntu HVM AMI を使用してインスタンスを起動した場合、拡張ネットワーキングは既にインスタンスで有効になっています。詳細については、[拡張ネットワーキングが有効化されているかどうかのテスト](test-enhanced-networking-ena.md)を参照してください。

以前の AMI を使用してインスタンスを起動した場合、まだ拡張ネットワーキングが有効になっていなければ、`linux-aws` カーネルパッケージをインストールして最新の拡張ネットワーキングドライバーを取得して、必要な属性を更新できます。

**`linux-aws` カーネルパッケージをインストールするには (Ubuntu 16.04 以降)**  
Ubuntu 16.04 および 18.04 には、Ubuntu カスタムカーネル (`linux-aws` カーネルパッケージ) が付属しています。別のカーネルを使用するには、[サポート](https://console.aws.amazon.com/support) にお問い合わせください。<a name="ubuntu-enhanced-networking-ena-procedure"></a>

**`linux-aws` カーネルパッケージをインストールするには (Ubuntu Trusty 14.04)**

1. <a name="ubuntu-enhanced-networking-ena-start-step"></a>インスタンスに接続します。

1. パッケージキャッシュおよびパッケージを更新します。

   ```
   ubuntu:~$ sudo apt-get update && sudo apt-get upgrade -y linux-aws
   ```
**重要**  
更新プロセス中に `grub` をインストールするよう求められた場合は、`/dev/xvda` のインストール先として `grub` を使用し、現在のバージョンの `/boot/grub/menu.lst` を保持することを選択してください。

1. [EBS-backed インスタンス] ローカルコンピュータから、Amazon EC2 コンソールまたは次のいずれかのコマンドを使用して、インスタンスを停止します。[https://docs.aws.amazon.com/cli/latest/reference/ec2/stop-instances.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/stop-instances.html) (AWS CLI)、[https://docs.aws.amazon.com/powershell/latest/reference/items/Stop-EC2Instance.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Stop-EC2Instance.html) (AWS Tools for Windows PowerShell)。

   [Instance store-backed インスタンス] インスタンスを停止して属性を変更することはできません。代わりに、この手順に進んでください: [Ubuntu で拡張ネットワーキングを有効にするには (Instance store-backed インスタンス)](#enhanced-networking-ena-instance-store-ubuntu)。

1. ローカルコンピュータから、次のいずれかのコマンドを使用して拡張ネットワーキングの属性を有効化します。
   + [https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-attribute.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-attribute.html) (AWS CLI)

     ```
     aws ec2 modify-instance-attribute --instance-id i-1234567890abcdef0 --ena-support
     ```
   + [https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceAttribute.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceAttribute.html) (Windows PowerShell 用のツール）

     ```
     Edit-EC2InstanceAttribute -InstanceId i-1234567890abcdef0 -EnaSupport $true
     ```

1. (オプション) [Amazon EBS-backed AMI を作成する](creating-an-ami-ebs.md)の説明に従って、インスタンスから AMI を作成します。AMI は、インスタンスから拡張ネットワーキング `enaSupport` 属性を継承します。このため、この AMI を使用することで、拡張ネットワーキングがデフォルトで有効になっている別のインスタンスを起動できます。

1. ローカルコンピュータから、Amazon EC2 コンソールまたは次のいずれかのコマンドを使用して、インスタンスを開始します。[https://docs.aws.amazon.com/cli/latest/reference/ec2/start-instances.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/start-instances.html) (AWS CLI)、[https://docs.aws.amazon.com/powershell/latest/reference/items/Start-EC2Instance.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Start-EC2Instance.html) (AWS Tools for Windows PowerShell)。<a name="enhanced-networking-ena-instance-store-ubuntu"></a>

**Ubuntu で拡張ネットワーキングを有効にするには (Instance store-backed インスタンス)**

インスタンスを停止するステップまで、前の手順に従います。[Amazon S3-backed AMI を作成する](creating-an-ami-instance-store.md)に記述されているように、新しい AMI を作成します。AMI を登録するときに拡張ネットワーキング属性を有効にしてください。
+ [https://docs.aws.amazon.com/cli/latest/reference/ec2/register-image.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/register-image.html) (AWS CLI)

  ```
  aws ec2 register-image --ena-support ...
  ```
+ [https://docs.aws.amazon.com/powershell/latest/reference/items/Register-EC2Image.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Register-EC2Image.html) (AWS Tools for Windows PowerShell)

  ```
  Register-EC2Image -EnaSupport $true ...
  ```

## RHEL、SUSE、CentOS
<a name="enhanced-networking-ena-linux"></a>

拡張ネットワーキングには ENA 搭載のカーネルドライバーが必要であり、Red Hat Enterprise Linux、SUSE Linux Enterprise Server、および CentOS 用の最新の AMI であれば、そうしたドライバーが含まれ、ENA にも対応しています。したがって、サポートされるインスタンスタイプで最新の AMI を使用してインスタンスを起動した場合、拡張ネットワーキングは既にインスタンスで有効になっています。詳細については、[拡張ネットワーキングが有効化されているかどうかのテスト](test-enhanced-networking-ena.md)を参照してください。

次の手順では、Amazon Linux AMI または Ubuntu 以外の Linux ディストリビューションで拡張ネットワーキングを有効にするための一般的なステップを説明します。コマンドの詳細な構文、ファイルの場所、パッケージやツールのサポートなどの詳細については、使用する Linux ディストリビューションのドキュメントを参照してください。

**Linux で拡張ネットワーキングを有効化するには**

1. <a name="other-linux-enhanced-networking-ena-start-step"></a>インスタンスに接続します。

1. [https://github.com/amzn/amzn-drivers](https://github.com/amzn/amzn-drivers) の GitHub からインスタンスで `ena` カーネルドライバーのソースコードのクローンを作成します。(SUSE Linux Enterprise Server 12 SP2 以降には、デフォルトで ENA 2.02 が含まれているため、ENA ドライバーをダウンロードしてコンパイルする必要はありません。SUSE Linux Enterprise Server 12 SP2 以降では、必要なドライバーバージョンを標準カーネルに追加するためリクエストを申請する必要があります。) 

   ```
   git clone https://github.com/amzn/amzn-drivers
   ```

1. インスタンスで `ena` カーネルドライバーをコンパイルし、インストールします。これらの手順は Linux ディストリビューションによって異なります。Red Hat Enterprise Linux でのカーネルドライバーのコンパイルの詳細については、「[RHEL を実行する Amazon EC2 インスタンスに拡張ネットワークサポート用の最新の ENS ドライバーをインストールする方法](https://repost.aws/knowledge-center/install-ena-driver-rhel-ec2)」を参照してください。

1. **sudo depmod** コマンドを実行して、カーネルドライバーの依存関係を更新します。

1. <a name="other-linux-enhanced-networking-ena-stop-step"></a>起動時に新しいカーネルドライバーがロードされるように、インスタンスの `initramfs` を更新します。例えば、ディストリビューションで **dracut** がサポートされる場合、次のコマンドを使用できます。

   ```
   dracut -f -v
   ```

1. <a name="predictable-network-names-ena"></a>システムがデフォルトで予測可能なネットワークインターフェイス名を使用するかどうかを確認します。**systemd** または **udev** のバージョン 197 以上を使用するシステムの場合、イーサネットデバイスの名前を変更でき、単一ネットワークインターフェイスの名前が `eth0` になることは保証されません。この動作はインスタンスに接続する際に問題の原因となる可能性があります。詳細と他の設定オプションについては、freedesktop.org ウェブサイトで[Predictable Network Interface Names/](https://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames/)を参照してください。

   1. 次のコマンドを使用して、RPM ベースのシステムで **systemd** または **udev** のバージョンを確認できます。

      ```
      rpm -qa | grep -e '^systemd-[0-9]\+\|^udev-[0-9]\+'
      systemd-208-11.el7_0.2.x86_64
      ```

      上記の Red Hat Enterprise Linux 7 の例では**systemd** のバージョンは 208 であるため、予測可能なネットワークインターフェイス名は無効になっている必要があります。

   1. `net.ifnames=0` オプションを `GRUB_CMDLINE_LINUX` の `/etc/default/grub` 行に追加することによって、予測可能なネットワークインターフェイス名を無効にします。

      ```
      sudo sed -i '/^GRUB\_CMDLINE\_LINUX/s/\"$/\ net\.ifnames\=0\"/' /etc/default/grub
      ```

   1. grub の設定ファイルを再ビルドします。

      ```
      sudo grub2-mkconfig -o /boot/grub2/grub.cfg
      ```

1. [EBS-backed インスタンス] ローカルコンピュータから、Amazon EC2 コンソールまたは次のいずれかのコマンドを使用して、インスタンスを停止します。[https://docs.aws.amazon.com/cli/latest/reference/ec2/stop-instances.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/stop-instances.html) (AWS CLI)、[https://docs.aws.amazon.com/powershell/latest/reference/items/Stop-EC2Instance.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Stop-EC2Instance.html) (AWS Tools for Windows PowerShell)。

   [Instance store-backed インスタンス] インスタンスを停止して属性を変更することはできません。代わりに、この手順に進んでください: [Linux で拡張ネットワーキングを有効にするには (Instance store-backed インスタンス)](#other-linux-enhanced-networking-ena-instance-store)。

1. ローカルコンピュータから、次のいずれかのコマンドを使用して拡張ネットワーキングの `enaSupport` 属性を有効化します。
   + [https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-attribute.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-attribute.html) (AWS CLI)

     ```
     aws ec2 modify-instance-attribute --instance-id i-1234567890abcdef0 --ena-support
     ```
   + [https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceAttribute.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceAttribute.html) (Windows PowerShell 用のツール）

     ```
     Edit-EC2InstanceAttribute -InstanceId i-1234567890abcdef0 -EnaSupport $true
     ```

1. (オプション) [Amazon EBS-backed AMI を作成する](creating-an-ami-ebs.md)の説明に従って、インスタンスから AMI を作成します。AMI は、インスタンスから拡張ネットワーキング `enaSupport` 属性を継承します。このため、この AMI を使用することで、拡張ネットワーキングがデフォルトで有効になっている別のインスタンスを起動できます。

   インスタンスオペレーティングシステムに `/etc/udev/rules.d/70-persistent-net.rules` が含まれている場合にはAMI を作成する前にそれを削除する必要があります。このファイルには元のインスタンスのイーサネットアダプターの MAC アドレスが保存されています。別のインスタンスがこのファイルを使用して起動した場合、オペレーティングシステムがそのデバイスを検出できなくなり、`eth0` が失敗して、起動に関する問題が発生することがあります。このファイルは次の起動サイクルで再び生成され、AMI から起動されるインスタンスごとに独自のバージョンが作成されます。

1. ローカルコンピュータから、Amazon EC2 コンソールまたは次のいずれかのコマンドを使用して、インスタンスを開始します。[https://docs.aws.amazon.com/cli/latest/reference/ec2/start-instances.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/start-instances.html) (AWS CLI)、[https://docs.aws.amazon.com/powershell/latest/reference/items/Start-EC2Instance.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Start-EC2Instance.html) (AWS Tools for Windows PowerShell)。

1. (オプション) インスタンスに接続し、カーネルドライバーがインストールされていることを確認します。

   拡張ネットワーキングを有効にした後にインスタンスに接続できない場合、[Linux での ENA カーネルドライバーのトラブルシューティング](troubleshooting-ena.md)を参照してください。<a name="other-linux-enhanced-networking-ena-instance-store"></a>

**Linux で拡張ネットワーキングを有効にするには (Instance store-backed インスタンス)**

インスタンスを停止するステップまで、前の手順に従います。[Amazon S3-backed AMI を作成する](creating-an-ami-instance-store.md)に記述されているように、新しい AMI を作成します。AMI を登録するときに拡張ネットワーキング属性を有効にしてください。
+ [https://docs.aws.amazon.com/cli/latest/reference/ec2/register-image.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/register-image.html) (AWS CLI)

  ```
  aws ec2 register-image --ena-support ...
  ```
+ [https://docs.aws.amazon.com/powershell/latest/reference/items/Register-EC2Image.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Register-EC2Image.html) (AWS Tools for Windows PowerShell)

  ```
  Register-EC2Image -EnaSupport ...
  ```

## DKMS を備えた Ubuntu
<a name="enhanced-networking-ena-ubuntu-dkms"></a>

この方法は、テストおよびフィードバックのみを目的としています。本番稼働用デプロイによる使用を目的としていません。本番稼働デプロイについては、[Ubuntu](#enhanced-networking-ena-ubuntu)を参照してください。

**重要**  
DKMS を使用すると、サブスクリプションのサポート契約が無効になります。本稼働環境では使用しないでください。

**Ubuntu で ENA を使用した拡張ネットワーキングを有効にするには (EBS-backed インスタンス)**

1. [Ubuntu](#enhanced-networking-ena-ubuntu) のステップ 1 および 2 を行います。

1. `build-essential` パッケージをインストールしてカーネルドライバーと `dkms` パッケージをコンパイルし、カーネルが更新されるたびに `ena` カーネルドライバーが再構築されるようにします。

   ```
   ubuntu:~$ sudo apt-get install -y build-essential dkms
   ```

1. [https://github.com/amzn/amzn-drivers](https://github.com/amzn/amzn-drivers) の GitHub からインスタンスで `ena` カーネルドライバーのソースのクローンを作成します。

   ```
   ubuntu:~$ git clone https://github.com/amzn/amzn-drivers
   ```

1. `amzn-drivers` パッケージを `/usr/src/` ディレクトリに移動して、カーネルの更新のたびに DKMS がこのパッケージを見つけて構築できるようにします。ソースコードのバージョン番号 (現在のバージョン番号はリリースノートにあります) をディレクトリ名に付加します。例えば、バージョン `1.0.0` は以下のようになります。

   ```
   ubuntu:~$ sudo mv amzn-drivers /usr/src/amzn-drivers-1.0.0
   ```

1. 以下の値を使用して DKMS 設定ファイルを作成し、`ena` のバージョンに置き換えます。

   ファイルを作成します。

   ```
   ubuntu:~$ sudo touch /usr/src/amzn-drivers-1.0.0/dkms.conf
   ```

   ファイルを編集し、次の値を追加します。

   ```
   ubuntu:~$ sudo vim /usr/src/amzn-drivers-1.0.0/dkms.conf
   PACKAGE_NAME="ena"
   PACKAGE_VERSION="1.0.0"
   CLEAN="make -C kernel/linux/ena clean"
   MAKE="make -C kernel/linux/ena/ BUILD_KERNEL=${kernelver}"
   BUILT_MODULE_NAME[0]="ena"
   BUILT_MODULE_LOCATION="kernel/linux/ena"
   DEST_MODULE_LOCATION[0]="/updates"
   DEST_MODULE_NAME[0]="ena"
   AUTOINSTALL="yes"
   ```

1. DKMS を使用して、インスタンスで `ena` カーネルドライバーを追加、構築、インストールします。

   DKMS にカーネルドライバーを追加します。

   ```
   ubuntu:~$ sudo dkms add -m amzn-drivers -v 1.0.0
   ```

   **dkms** コマンドでカーネルドライバーを構築します。

   ```
   ubuntu:~$ sudo dkms build -m amzn-drivers -v 1.0.0
   ```

   **dkms** を使用してカーネルドライバーをインストールします。

   ```
   ubuntu:~$ sudo dkms install -m amzn-drivers -v 1.0.0
   ```

1. 起動時に正しいカーネルドライバーがロードされるように、`initramfs` を再構築します。

   ```
   ubuntu:~$ sudo update-initramfs -u -k all
   ```

1. [拡張ネットワーキングが有効化されているかどうかのテスト](test-enhanced-networking-ena.md) から modinfo ena コマンドを使用して、`ena` カーネルドライバーがインストールされていることを確認します。

   ```
   ubuntu:~$ modinfo ena
   filename:	   /lib/modules/3.13.0-74-generic/updates/dkms/ena.ko
   version:		1.0.0
   license:		GPL
   description:	Elastic Network Adapter (ENA)
   author:		 Amazon.com, Inc. or its affiliates
   srcversion:	 9693C876C54CA64AE48F0CA
   alias:		  pci:v00001D0Fd0000EC21sv*sd*bc*sc*i*
   alias:		  pci:v00001D0Fd0000EC20sv*sd*bc*sc*i*
   alias:		  pci:v00001D0Fd00001EC2sv*sd*bc*sc*i*
   alias:		  pci:v00001D0Fd00000EC2sv*sd*bc*sc*i*
   depends:
   vermagic:	   3.13.0-74-generic SMP mod_unload modversions
   parm:		   debug:Debug level (0=none,...,16=all) (int)
   parm:		   push_mode:Descriptor / header push mode (0=automatic,1=disable,3=enable)
   		  0 - Automatically choose according to device capability (default)
   		  1 - Don't push anything to device memory
   		  3 - Push descriptors and header buffer to device memory (int)
   parm:		   enable_wd:Enable keepalive watchdog (0=disable,1=enable,default=1) (int)
   parm:		   enable_missing_tx_detection:Enable missing Tx completions. (default=1) (int)
   parm:		   numa_node_override_array:Numa node override map
   (array of int)
   parm:		   numa_node_override:Enable/Disable numa node override (0=disable)
   (int)
   ```

1. [Ubuntu](#enhanced-networking-ena-ubuntu) のステップ 3 に進みます。

## Windows の拡張ネットワーキングの有効化
<a name="enable-enhanced-networking-ena-windows"></a>

インスタンスを起動し、すでに拡張ネットワーキングが有効になっていない場合、必要なネットワークアダプタードライバーをダウンロードしてインスタンスにインストールし、拡張ネットワーキングを有効にするように `enaSupport` インスタンス属性を設定する必要があります。

**拡張ネットワーキングを有効にするには**

1. インスタンスに接続してローカル管理者としてログインします。

1. [Windows Server 2016 と 2019 のみ] 以下の EC2Launch PowerShell スクリプトを実行して、ドライバーのインストール後にインスタンスを設定します。

   ```
   PS C:\> C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\InitializeInstance.ps1 -Schedule
   ```

1. インスタンスから、次のようにドライバーをインストールします。

   1. インスタンスに最新のドライバーを[ダウンロード](https://s3.amazonaws.com/ec2-windows-drivers-downloads/ENA/Latest/AwsEnaNetworkDriver.zip)します。

   1. zip アーカイブを展開します。

   1. `install.ps1` PowerShell スクリプトを実行してドライバーをインストールします。
**注記**  
実行ポリシーエラーが発生した場合は、ポリシーを `Unrestricted` に設定します (デフォルトでは、`Restricted` または `RemoteSigned` に設定されています)。コマンドラインで、`Set-ExecutionPolicy -ExecutionPolicy Unrestricted` を実行し、次に PowerShell スクリプト `install.ps1` を再度実行します。

1. ローカルコンピュータから、Amazon EC2 コンソールまたは次のいずれかのコマンドを使用して、インスタンスを停止します。[https://docs.aws.amazon.com/cli/latest/reference/ec2/stop-instances.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/stop-instances.html) (AWS CLI)/[https://docs.aws.amazon.com/powershell/latest/reference/items/Stop-EC2Instance.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Stop-EC2Instance.html)、 (AWS Tools for Windows PowerShell)。

1. 次のように、インスタンスの ENA サポートを有効にします。

   1. ローカルコンピュータから、次のいずれかのコマンドを実行して、インスタンスの EC2 インスタンス ENA サポート属性を確認します。属性が有効になっていない場合、出力は「[]」 または空白です。`EnaSupport`はデフォルトで `false` に設定されます。
      + [https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html) (AWS CLI)

        ```
        aws ec2 describe-instances --instance-ids i-1234567890abcdef0 --query "Reservations[].Instances[].EnaSupport"
        ```
      + [https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Instance.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Instance.html) (Windows PowerShell 用のツール）

        ```
        (Get-EC2Instance -InstanceId i-1234567890abcdef0).Instances.EnaSupport
        ```

   1. ENA サポートを有効にするには、次のいずれかのコマンドを実行します:
      + [https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-attribute.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-attribute.html) (AWS CLI)

        ```
        aws ec2 modify-instance-attribute --instance-id i-1234567890abcdef0 --ena-support
        ```
      + [https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceAttribute.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceAttribute.html) (AWS Tools for Windows PowerShell)

        ```
        Edit-EC2InstanceAttribute -InstanceId i-1234567890abcdef0 -EnaSupport $true
        ```

      インスタンスを再開するときに問題が発生した場合は、次のいずれかのコマンドを使用して ENA サポートを無効にすることもできます。
      + [https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-attribute.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-attribute.html) (AWS CLI)

        ```
        aws ec2 modify-instance-attribute --instance-id i-1234567890abcdef0 --no-ena-support
        ```
      + [https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceAttribute.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceAttribute.html) (AWS Tools for Windows PowerShell)

        ```
        Edit-EC2InstanceAttribute -InstanceId i-1234567890abcdef0 -EnaSupport $false
        ```

   1. 前述のように **describe-instances** または **Get-EC2Instance** を使用して、属性が `true` に設定されていることを確認します。次のような出力が表示されます。

      ```
      [
      	true
      ]
      ```

1. ローカルコンピュータから、Amazon EC2 コンソールまたは次のいずれかのコマンドを使用して、インスタンスを開始します。[https://docs.aws.amazon.com/cli/latest/reference/ec2/start-instances.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/start-instances.html) (AWS CLI)、[https://docs.aws.amazon.com/powershell/latest/reference/items/Start-EC2Instance.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Start-EC2Instance.html) (AWS Tools for Windows PowerShell)。

1. インスタンスで、次のように ENA ドライバーがインストールされて有効であることを検証します。

   1. ネットワークアイコンを右クリックして、[**Open Network and Sharing Center**] を選択してください。

   1. イーサネットアダプター ([**Ethernet 2**] など) を選択してください。

   1. [**Details**] を選択してください。[**Network Connection Details**] で、[**Description**] が [**Amazon Elastic Network Adapter**] であることを確認します。

1. (オプション) インスタンスから AMI を作成します。AMI は、インスタンスから `enaSupport` 属性を継承します。したがって、この AMI を使用して、ENA がデフォルトで有効になっている別のインスタンスを起動できます。

# ENA キュー
<a name="ena-queues"></a>

ENA キューは、インスタンスのタイプとサイズに基づくデフォルトの静的制限を用いてネットワークインターフェイスに割り当てられます。サポートされているインスタンスタイプでは、これらのキューを Elastic Network Interface (ENI) 全体に動的に割り当てることができます。インスタンスあたりのキューの合計数はインスタンスのタイプとサイズによって異なりますが、ENI キューは、ENI とインスタンスの最大キュー数に到達するまで複数の ENI に設定できます。

柔軟な ENA キューの割り当てはリソース配分を最適化するため、vCPU を最大限に活用できます。通常、ネットワークパフォーマンスの高いワークロードには複数の ENA キューが必要です。特定のワークロードニーズに応じてキュー数を調整することで、ネットワークパフォーマンスと 1 秒あたりのパケット数 (PPS) をファインチューニングできます。例えば、ネットワーク集約型アプリケーションには CPU 集約型アプリケーションよりも多くのキューが必要になる場合があります。

**Topics**
+ [サポートされているインスタンス](#supported-instances)
+ [キュー数の変更](#modify)

## サポートされているインスタンス
<a name="supported-instances"></a>

以下のインスタンスは、複数の ENA キューの動的な割り当てをサポートしています。

### 汎用
<a name="supported-instances-ena-queues-gp"></a>


| インスタンスタイプ | インターフェイスあたりのデフォルトの ENA キュー | インターフェイスあたりの最大 ENA キュー | インスタンスあたりの最大 ENA キュー | 
| --- | --- | --- | --- | 
| M6i | 
| m6i.large | 2 | 2 | 6 | 
| m6i.xlarge | 4 | 4 | 16 | 
| m6i.2xlarge | 8 | 8 | 32 | 
| m6i.4xlarge | 8 | 16 | 64 | 
| m6i.8xlarge | 8 | 32 | 64 | 
| m6i.12xlarge | 8 | 32 | 64 | 
| m6i.16xlarge | 8 | 32 | 120 | 
| m6i.24xlarge | 8 | 32 | 120 | 
| m6i.32xlarge | 8 | 32 | 120 | 
| M6id | 
| m6id.large | 2 | 2 | 6 | 
| m6id.xlarge | 4 | 4 | 16 | 
| m6id.2xlarge | 8 | 8 | 32 | 
| m6id.4xlarge | 8 | 16 | 64 | 
| m6id.8xlarge | 8 | 32 | 64 | 
| m6id.12xlarge | 8 | 32 | 64 | 
| m6id.16xlarge | 8 | 32 | 120 | 
| m6id.24xlarge | 8 | 32 | 120 | 
| m6id.32xlarge | 8 | 32 | 120 | 
| M6idn | 
| m6idn.large | 2 | 2 | 6 | 
| m6idn.xlarge | 4 | 4 | 16 | 
| m6idn.2xlarge | 8 | 8 | 32 | 
| m6idn.4xlarge | 8 | 16 | 64 | 
| m6idn.8xlarge | 16 | 32 | 128 | 
| m6idn.12xlarge | 16 | 32 | 128 | 
| m6idn.16xlarge | 16 | 32 | 240 | 
| m6idn.24xlarge | 32 | 32 | 480 | 
| m6idn.32xlarge | 32 | 32 | 512 \$1 | 
| M6in | 
| m6in.large | 2 | 2 | 6 | 
| m6in.xlarge | 4 | 4 | 16 | 
| m6in.2xlarge | 8 | 8 | 32 | 
| m6in.4xlarge | 8 | 16 | 64 | 
| m6in.8xlarge | 16 | 32 | 128 | 
| m6in.12xlarge | 16 | 32 | 128 | 
| m6in.16xlarge | 16 | 32 | 240 | 
| m6in.24xlarge | 32 | 32 | 480 | 
| m6in.32xlarge | 32 | 32 | 512 \$1 | 
| M8a | 
| m8a.medium | 1 | 1 | 3 | 
| m8a.large | 2 | 2 | 6 | 
| m8a.xlarge | 4 | 4 | 16 | 
| m8a.2xlarge | 8 | 8 | 32 | 
| m8a.4xlarge | 8 | 16 | 64 | 
| m8a.8xlarge | 8 | 32 | 128 | 
| m8a.12xlarge | 16 | 64 | 192 | 
| m8a.16xlarge | 16 | 64 | 256 | 
| m8a.24xlarge | 16 | 128 | 384 | 
| m8a.48xlarge | 32 | 128 | 768 | 
| m8a.metal-24xl | 16 | 128 | 384 | 
| m8a.metal-48xl | 32 | 128 | 768 | 
| M8azn | 
| m8azn.medium | 1 | 1 | 3 | 
| m8azn.large | 2 | 2 | 8 | 
| m8azn.xlarge | 4 | 4 | 16 | 
| m8azn.3xlarge | 4 | 16 | 48 | 
| m8azn.6xlarge | 8 | 32 | 96 | 
| m8azn.12xlarge | 8 | 64 | 192 | 
| m8azn.24xlarge | 16 | 128 | 384 | 
| m8azn.metal-12xl | 8 | 64 | 192 | 
| m8azn.metal-24xl | 16 | 128 | 384 | 
| M8gb | 
| m8gb.medium | 1 | 1 | 2 | 
| m8gb.large | 2 | 2 | 6 | 
| m8gb.xlarge | 4 | 4 | 16 | 
| m8gb.2xlarge | 8 | 8 | 32 | 
| m8gb.4xlarge | 8 | 16 | 64 | 
| m8gb.8xlarge | 8 | 32 | 128 | 
| m8gb.12xlarge | 16 | 64 | 192 | 
| m8gb.16xlarge | 16 | 64 | 256 | 
| m8gb.24xlarge | 16 | 128 | 384 | 
| m8gb.48xlarge | 32 | 128 | 768 \$1 | 
| m8gb.metal-24xl | 32 | 128 | 768 | 
| m8gb.metal-48xl | 32 | 128 | 768 \$1 | 
| M8gn | 
| m8gn.medium | 1 | 1 | 2 | 
| m8gn.large | 2 | 2 | 6 | 
| m8gn.xlarge | 4 | 4 | 16 | 
| m8gn.2xlarge | 8 | 8 | 32 | 
| m8gn.4xlarge | 8 | 16 | 64 | 
| m8gn.8xlarge | 8 | 32 | 128 | 
| m8gn.12xlarge | 16 | 64 | 192 | 
| m8gn.16xlarge | 16 | 64 | 256 | 
| m8gn.24xlarge | 16 | 128 | 384 | 
| m8gn.48xlarge | 32 | 128 | 768 \$1 | 
| m8gn.metal-24xl | 32 | 128 | 768 | 
| m8gn.metal-48xl | 32 | 128 | 768 \$1 | 
| M8i | 
| m8i.large | 2 | 2 | 6 | 
| m8i.xlarge | 4 | 4 | 16 | 
| m8i.2xlarge | 8 | 8 | 32 | 
| m8i.4xlarge | 8 | 16 | 64 | 
| m8i.8xlarge | 8 | 32 | 128 | 
| m8i.12xlarge | 16 | 64 | 192 | 
| m8i.16xlarge | 16 | 64 | 256 | 
| m8i.24xlarge | 16 | 128 | 384 | 
| m8i.32xlarge | 16 | 128 | 512 | 
| m8i.48xlarge | 32 | 128 | 768 | 
| m8i.96xlarge | 32 | 128 | 1536 | 
| m8i.metal-48xl | 32 | 128 | 768 | 
| m8i.metal-96xl | 32 | 128 | 1536 | 
| M8id | 
| m8id.large | 2 | 2 | 6 | 
| m8id.xlarge | 4 | 4 | 16 | 
| m8id.2xlarge | 8 | 8 | 32 | 
| m8id.4xlarge | 8 | 16 | 64 | 
| m8id.8xlarge | 8 | 32 | 128 | 
| m8id.12xlarge | 16 | 64 | 192 | 
| m8id.16xlarge | 16 | 64 | 256 | 
| m8id.24xlarge | 16 | 128 | 384 | 
| m8id.32xlarge | 16 | 128 | 512 | 
| m8id.48xlarge | 32 | 128 | 768 | 
| m8id.96xlarge | 32 | 128 | 1536 | 
| m8id.metal-48xl | 32 | 128 | 768 | 
| m8id.metal-96xl | 32 | 128 | 1536 | 
| M8i-flex | 
| m8i-flex.large | 1 | 1 | 3 | 
| m8i-flex.xlarge | 2 | 2 | 8 | 
| m8i-flex.2xlarge | 4 | 4 | 16 | 
| m8i-flex.4xlarge | 4 | 8 | 32 | 
| m8i-flex.8xlarge | 4 | 16 | 64 | 
| m8i-flex.12xlarge | 8 | 32 | 96 | 
| m8i-flex.16xlarge | 8 | 32 | 128 | 

**注記**  
\$1 これらのインスタンスタイプには複数のネットワークカードが搭載されています。他のインスタンスタイプには単一のネットワークカードが搭載されています。詳細については、「[ネットワークカード](using-eni.md#network-cards)」を参照してください。

### コンピューティングの最適化
<a name="supported-instances-ena-queues-co"></a>


| インスタンスタイプ | インターフェイスあたりのデフォルトの ENA キュー | インターフェイスあたりの最大 ENA キュー | インスタンスあたりの最大 ENA キュー | 
| --- | --- | --- | --- | 
| C6i | 
| c6i.large | 2 | 2 | 6 | 
| c6i.xlarge | 4 | 4 | 16 | 
| c6i.2xlarge | 8 | 8 | 32 | 
| c6i.4xlarge | 8 | 16 | 64 | 
| c6i.8xlarge | 8 | 32 | 64 | 
| c6i.12xlarge | 8 | 32 | 64 | 
| c6i.16xlarge | 8 | 32 | 120 | 
| c6i.24xlarge | 8 | 32 | 120 | 
| c6i.32xlarge | 8 | 32 | 120 | 
| C6id | 
| c6id.large | 2 | 2 | 6 | 
| c6id.xlarge | 4 | 4 | 16 | 
| c6id.2xlarge | 8 | 8 | 32 | 
| c6id.4xlarge | 8 | 16 | 64 | 
| c6id.8xlarge | 8 | 32 | 64 | 
| c6id.12xlarge | 8 | 32 | 64 | 
| c6id.16xlarge | 8 | 32 | 120 | 
| c6id.24xlarge | 8 | 32 | 120 | 
| c6id.32xlarge | 8 | 32 | 120 | 
| C6in | 
| c6in.large | 2 | 2 | 6 | 
| c6in.xlarge | 4 | 4 | 16 | 
| c6in.2xlarge | 8 | 8 | 32 | 
| c6in.4xlarge | 8 | 16 | 64 | 
| c6in.8xlarge | 16 | 32 | 128 | 
| c6in.12xlarge | 16 | 32 | 128 | 
| c6in.16xlarge | 16 | 32 | 240 | 
| c6in.24xlarge | 32 | 32 | 480 | 
| c6in.32xlarge | 32 | 32 | 512 \$1 | 
| C8a | 
| c8a.medium | 1 | 1 | 3 | 
| c8a.large | 2 | 2 | 6 | 
| c8a.xlarge | 4 | 4 | 16 | 
| c8a.2xlarge | 8 | 8 | 32 | 
| c8a.4xlarge | 8 | 16 | 64 | 
| c8a.8xlarge | 8 | 32 | 128 | 
| c8a.12xlarge | 16 | 64 | 192 | 
| c8a.16xlarge | 16 | 64 | 256 | 
| c8a.24xlarge | 16 | 128 | 384 | 
| c8a.48xlarge | 32 | 128 | 768 | 
| c8a.metal-24xl | 16 | 128 | 384 | 
| c8a.metal-48xl | 32 | 128 | 768 | 
| C8gb | 
| c8gb.medium | 1 | 1 | 2 | 
| c8gb.large | 2 | 2 | 6 | 
| c8gb.xlarge | 4 | 4 | 16 | 
| c8gb.2xlarge | 8 | 8 | 32 | 
| c8gb.4xlarge | 8 | 16 | 64 | 
| c8gb.8xlarge | 8 | 32 | 128 | 
| c8gb.12xlarge | 16 | 64 | 192 | 
| c8gb.16xlarge | 16 | 64 | 256 | 
| c8gb.24xlarge | 16 | 128 | 384 | 
| c8gb.48xlarge | 32 | 128 | 768 \$1 | 
| c8gb.metal-24xl | 32 | 128 | 768 | 
| c8gb.metal-48xl | 32 | 128 | 768 \$1 | 
| C8gn | 
| c8gn.medium | 1 | 1 | 2 | 
| c8gn.large | 2 | 2 | 6 | 
| c8gn.xlarge | 4 | 4 | 16 | 
| c8gn.2xlarge | 8 | 8 | 32 | 
| c8gn.4xlarge | 8 | 16 | 64 | 
| c8gn.8xlarge | 8 | 32 | 128 | 
| c8gn.12xlarge | 16 | 64 | 192 | 
| c8gn.16xlarge | 16 | 64 | 256 | 
| c8gn.24xlarge | 16 | 128 | 384 | 
| c8gn.48xlarge | 32 | 128 | 768 \$1 | 
| c8gn.metal-24xl | 32 | 128 | 768 | 
| c8gn.metal-48xl | 32 | 128 | 768 \$1 | 
| C8i | 
| c8i.large | 2 | 2 | 6 | 
| c8i.xlarge | 4 | 4 | 16 | 
| c8i.2xlarge | 8 | 8 | 32 | 
| c8i.4xlarge | 8 | 16 | 64 | 
| c8i.8xlarge | 8 | 32 | 128 | 
| c8i.12xlarge | 16 | 64 | 192 | 
| c8i.16xlarge | 16 | 64 | 256 | 
| c8i.24xlarge | 16 | 128 | 384 | 
| c8i.32xlarge | 16 | 128 | 512 | 
| c8i.48xlarge | 32 | 128 | 768 | 
| c8i.96xlarge | 32 | 128 | 1536 | 
| c8i.metal-48xl | 32 | 128 | 768 | 
| c8i.metal-96xl | 32 | 128 | 1536 | 
| C8id | 
| c8id.large | 2 | 2 | 6 | 
| c8id.xlarge | 4 | 4 | 16 | 
| c8id.2xlarge | 8 | 8 | 32 | 
| c8id.4xlarge | 8 | 16 | 64 | 
| c8id.8xlarge | 8 | 32 | 128 | 
| c8id.12xlarge | 16 | 64 | 192 | 
| c8id.16xlarge | 16 | 64 | 256 | 
| c8id.24xlarge | 16 | 128 | 384 | 
| c8id.32xlarge | 16 | 128 | 512 | 
| c8id.48xlarge | 32 | 128 | 768 | 
| c8id.96xlarge | 32 | 128 | 1536 | 
| c8id.metal-48xl | 32 | 128 | 768 | 
| c8id.metal-96xl | 32 | 128 | 1536 | 
| C8i-flex | 
| c8i-flex.large | 1 | 1 | 3 | 
| c8i-flex.xlarge | 2 | 2 | 8 | 
| c8i-flex.2xlarge | 4 | 4 | 16 | 
| c8i-flex.4xlarge | 4 | 8 | 32 | 
| c8i-flex.8xlarge | 4 | 16 | 64 | 
| c8i-flex.12xlarge | 8 | 32 | 96 | 
| c8i-flex.16xlarge | 8 | 32 | 128 | 

**注記**  
\$1 これらのインスタンスタイプには複数のネットワークカードが搭載されています。他のインスタンスタイプには単一のネットワークカードが搭載されています。詳細については、「[ネットワークカード](using-eni.md#network-cards)」を参照してください。

### メモリ最適化
<a name="supported-instances-ena-queues-mo"></a>


| インスタンスタイプ | インターフェイスあたりのデフォルトの ENA キュー | インターフェイスあたりの最大 ENA キュー | インスタンスあたりの最大 ENA キュー | 
| --- | --- | --- | --- | 
| R6i | 
| r6i.large | 2 | 2 | 6 | 
| r6i.xlarge | 4 | 4 | 16 | 
| r6i.2xlarge | 8 | 8 | 32 | 
| r6i.4xlarge | 8 | 16 | 64 | 
| r6i.8xlarge | 8 | 32 | 64 | 
| r6i.12xlarge | 8 | 32 | 64 | 
| r6i.16xlarge | 8 | 32 | 120 | 
| r6i.24xlarge | 8 | 32 | 120 | 
| r6i.32xlarge | 8 | 32 | 120 | 
| R6id | 
| r6id.large | 2 | 2 | 6 | 
| r6id.xlarge | 4 | 4 | 16 | 
| r6id.2xlarge | 8 | 8 | 32 | 
| r6id.4xlarge | 8 | 16 | 64 | 
| r6id.8xlarge | 8 | 32 | 64 | 
| r6id.12xlarge | 8 | 32 | 64 | 
| r6id.16xlarge | 8 | 32 | 120 | 
| r6id.24xlarge | 8 | 32 | 120 | 
| r6id.32xlarge | 8 | 32 | 120 | 
| R6idn | 
| r6idn.large | 2 | 2 | 6 | 
| r6idn.xlarge | 4 | 4 | 16 | 
| r6idn.2xlarge | 8 | 8 | 32 | 
| r6idn.4xlarge | 8 | 16 | 64 | 
| r6idn.8xlarge | 16 | 32 | 128 | 
| r6idn.12xlarge | 16 | 32 | 128 | 
| r6idn.16xlarge | 16 | 32 | 240 | 
| r6idn.24xlarge | 32 | 32 | 480 | 
| r6idn.32xlarge | 32 | 32 | 512 \$1 | 
| R6in | 
| r6in.large | 2 | 2 | 6 | 
| r6in.xlarge | 4 | 4 | 16 | 
| r6in.2xlarge | 8 | 8 | 32 | 
| r6in.4xlarge | 8 | 16 | 64 | 
| r6in.8xlarge | 16 | 32 | 128 | 
| r6in.12xlarge | 16 | 32 | 128 | 
| r6in.16xlarge | 16 | 32 | 240 | 
| r6in.24xlarge | 32 | 32 | 480 | 
| r6in.32xlarge | 32 | 32 | 512 \$1 | 
| R8a | 
| r8a.medium | 1 | 1 | 3 | 
| r8a.large | 2 | 2 | 6 | 
| r8a.xlarge | 4 | 4 | 16 | 
| r8a.2xlarge | 8 | 8 | 32 | 
| r8a.4xlarge | 8 | 16 | 64 | 
| r8a.8xlarge | 8 | 32 | 128 | 
| r8a.12xlarge | 16 | 64 | 192 | 
| r8a.16xlarge | 16 | 64 | 256 | 
| r8a.24xlarge | 16 | 128 | 384 | 
| r8a.48xlarge | 32 | 128 | 768 | 
| r8a.metal-24xl | 16 | 128 | 384 | 
| r8a.metal-48xl | 32 | 128 | 768 | 
| R8gb | 
| r8gb.medium | 1 | 1 | 2 | 
| r8gb.large | 2 | 2 | 6 | 
| r8gb.xlarge | 4 | 4 | 16 | 
| r8gb.2xlarge | 8 | 8 | 32 | 
| r8gb.4xlarge | 8 | 16 | 64 | 
| r8gb.8xlarge | 8 | 32 | 128 | 
| r8gb.12xlarge | 16 | 64 | 192 | 
| r8gb.16xlarge | 16 | 64 | 256 | 
| r8gb.24xlarge | 16 | 128 | 384 | 
| r8gb.48xlarge | 32 | 128 | 768 \$1 | 
| r8gb.metal-24xl | 32 | 128 | 768 | 
| r8gb.metal-48xl | 32 | 128 | 768 \$1 | 
| R8gn | 
| r8gn.medium | 1 | 1 | 2 | 
| r8gn.large | 2 | 2 | 6 | 
| r8gn.xlarge | 4 | 4 | 16 | 
| r8gn.2xlarge | 8 | 8 | 32 | 
| r8gn.4xlarge | 8 | 16 | 64 | 
| r8gn.8xlarge | 8 | 32 | 128 | 
| r8gn.12xlarge | 16 | 64 | 192 | 
| r8gn.16xlarge | 16 | 64 | 256 | 
| r8gn.24xlarge | 16 | 128 | 384 | 
| r8gn.48xlarge | 32 | 128 | 768 \$1 | 
| r8gn.metal-24xl | 32 | 128 | 768 | 
| r8gn.metal-48xl | 32 | 128 | 768 \$1 | 
| R8i | 
| r8i.large | 2 | 2 | 6 | 
| r8i.xlarge | 4 | 4 | 16 | 
| r8i.2xlarge | 8 | 8 | 32 | 
| r8i.4xlarge | 8 | 16 | 64 | 
| r8i.8xlarge | 8 | 32 | 128 | 
| r8i.12xlarge | 16 | 64 | 192 | 
| r8i.16xlarge | 16 | 64 | 256 | 
| r8i.24xlarge | 16 | 128 | 384 | 
| r8i.32xlarge | 16 | 128 | 512 | 
| r8i.48xlarge | 32 | 128 | 768 | 
| r8i.96xlarge | 32 | 128 | 1536 | 
| r8i.metal-48xl | 32 | 128 | 768 | 
| r8i.metal-96xl | 32 | 128 | 1536 | 
| R8id | 
| r8id.large | 2 | 2 | 6 | 
| r8id.xlarge | 4 | 4 | 16 | 
| r8id.2xlarge | 8 | 8 | 32 | 
| r8id.4xlarge | 8 | 16 | 64 | 
| r8id.8xlarge | 8 | 32 | 128 | 
| r8id.12xlarge | 16 | 64 | 192 | 
| r8id.16xlarge | 16 | 64 | 256 | 
| r8id.24xlarge | 16 | 128 | 384 | 
| r8id.32xlarge | 16 | 128 | 512 | 
| r8id.48xlarge | 32 | 128 | 768 | 
| r8id.96xlarge | 32 | 128 | 1536 | 
| r8id.metal-48xl | 32 | 128 | 768 | 
| r8id.metal-96xl | 32 | 128 | 1536 | 
| R8i-flex | 
| r8i-flex.large | 1 | 1 | 3 | 
| r8i-flex.xlarge | 2 | 2 | 8 | 
| r8i-flex.2xlarge | 4 | 4 | 16 | 
| r8i-flex.4xlarge | 4 | 8 | 32 | 
| r8i-flex.8xlarge | 4 | 16 | 64 | 
| r8i-flex.12xlarge | 8 | 32 | 96 | 
| r8i-flex.16xlarge | 8 | 32 | 128 | 
| X8aedz | 
| x8aedz.large | 2 | 2 | 8 | 
| x8aedz.xlarge | 4 | 4 | 16 | 
| x8aedz.3xlarge | 4 | 16 | 48 | 
| x8aedz.6xlarge | 8 | 32 | 96 | 
| x8aedz.12xlarge | 8 | 64 | 192 | 
| x8aedz.24xlarge | 16 | 128 | 384 | 
| x8aedz.metal-12xl | 8 | 64 | 192 | 
| x8aedz.metal-24xl | 16 | 128 | 384 | 
| X8i | 
| x8i.large | 2 | 2 | 6 | 
| x8i.xlarge | 4 | 4 | 16 | 
| x8i.2xlarge | 8 | 8 | 32 | 
| x8i.4xlarge | 8 | 16 | 64 | 
| x8i.8xlarge | 8 | 32 | 128 | 
| x8i.12xlarge | 16 | 64 | 192 | 
| x8i.16xlarge | 16 | 64 | 256 | 
| x8i.24xlarge | 16 | 128 | 384 | 
| x8i.32xlarge | 16 | 128 | 512 | 
| x8i.48xlarge | 32 | 128 | 768 | 
| x8i.64xlarge | 32 | 128 | 1024 | 
| x8i.96xlarge | 32 | 128 | 1536 | 
| x8i.metal-48xl | 32 | 128 | 768 | 
| x8i.metal-96xl | 32 | 128 | 1536 | 

**注記**  
\$1 これらのインスタンスタイプには複数のネットワークカードが搭載されています。他のインスタンスタイプには単一のネットワークカードが搭載されています。詳細については、「[ネットワークカード](using-eni.md#network-cards)」を参照してください。

## キュー数の変更
<a name="modify"></a>

ENA キューの数は、AWS マネジメントコンソールまたは AWS CLI を使用して変更できます。AWS マネジメントコンソールでは、各 **[ネットワークインターフェイス]** 設定に ENA キューの設定があります。

AWS CLI を使用して ENA キューの数を変更するには、次のコマンドのいずれかを使用します。キュー数を変更する前に、以下のコマンドを使用して現在のキュー数を確認してください。

```
aws ec2 describe-instances --instance-id i-1234567890abcdef0
```

**注記**  
ENA キューの数を変更する前に、インスタンスを停止しておく必要があります。
ENA キューの値は、2 のべき乗 (1、2、4、8、16、32 など) にする必要があります。
単一の ENI に割り当てるキューの数は、インスタンスで利用できる vCPU の数を超えない必要があります。

`[attach-network-interface](https://docs.aws.amazon.com/cli/latest/reference/ec2/attach-network-interface.html)`

以下の例では、ENI に 32 個の ENA キューが設定されます。

```
aws ec2 attach-network-interface \
  --network-interface-id eni-001aa1bb223cdd4e4 \
  --instance-id i-1234567890abcdef0 \
  --device-index 1 \
  --ena-queue-count 32
```

`[run-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html)`

以下の例では、3 個の ENI にそれぞれ 2 個の ENA キューが設定されます。

```
aws ec2 run-instances \
  --image-id ami-12ab3c30 \
  --instance-type c6i.large \
  --min-count 1 \
  --max-count 1 \
  --network-interfaces \
    "[{\"DeviceIndex\":0,\"SubnetId\":\"subnet-123456789012a345a\",\"EnaQueueCount\":2},
      {\"DeviceIndex\":1,\"SubnetId\":\"subnet-123456789012a345a\",\"EnaQueueCount\":2},
      {\"DeviceIndex\":2,\"SubnetId\":\"subnet-123456789012a345a\",\"EnaQueueCount\":2}]"
```

`[modify-network-interface-attribute](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-network-interface-attribute.html)`

以下の例では、ENI に 32 個の ENA キューが設定されます。

```
aws ec2 modify-network-interface-attribute \
--network-interface-id eni-1234567890abcdef0 \
--attachment AttachmentId=eni-attach-12345678,EnaQueueCount=32
```

以下の例では、ENA 数がデフォルト値にリセットされます。

```
aws ec2 modify-network-interface-attribute \
--network-interface-id eni-1234567890abcdef0 \
--attachment AttachmentId=eni-attach-12345678,DefaultEnaQueueCount=true
```

# Linux での ENA カーネルドライバーのトラブルシューティング
<a name="troubleshooting-ena"></a>

Elastic Network Adapter (ENA) は、オペレーティング システムのヘルスを向上し、予期しないハードウェア動作や障害による長期的な停止の可能性を減らすように設計されています。ENA アーキテクチャでは、デバイスやドライバーの障害がシステムに対して可能な限り透過的に保持されます。このトピックでは、ENA のトラブルシューティングについて説明します。

インスタンスに接続できない場合は、まず[接続に関する問題のトラブルシューティング](#ena-connectivity-issues)セクションを参照してください。

第 6 世代のインスタンスタイプに移行した後にパフォーマンスの低下が発生した場合は、記事「[ネットワークのパフォーマンスを最大限に引き出すには、EC2 インスタンスを第 6 世代インスタンスに移行する前、何をする必要がありますか?](https://repost.aws/knowledge-center/migrate-to-gen6-ec2-instance)」を参照してください。

インスタンスに接続できる場合、このトピックの以降のセクションに記載されている障害検出/復旧メカニズムを使用して診断情報を収集することができます。

**Topics**
+ [接続に関する問題のトラブルシューティング](#ena-connectivity-issues)
+ [キープアライブメカニズム](#ena-keep-alive)
+ [読み取りタイムアウトの登録](#register-read-timeout-ena)
+ [統計](#statistics-ena)
+ [syslog のドライバーエラーログ](#driver-error-logs-ena)
+ [最適とは言えない構成に関する通知](#ts-ena-sub-opt-config-notification)

## 接続に関する問題のトラブルシューティング
<a name="ena-connectivity-issues"></a>

拡張ネットワーキングを有効化しているときに接続が失われると、`ena` モジュールとインスタンスの現在実行中のカーネルの互換性が保たれない可能性があります。これは、特定のカーネルバージョンのモジュールをインストール (**dkms** を使用しないか、不適切な設定の **dkms.conf** ファイルを使用) したため、インスタンスカーネルが更新された場合に発生します。起動時にロードされるインスタンスカーネルにより、`ena` モジュールが正しくインストールされない場合、インスタンスがネットワークアダプタを認識せず、インスタンスが到達不可能になります。

PV インスタンスまたは AMI で拡張ネットワーキングを有効にすると、お使いのインスタンスにも到達できなくなります。

ENA を使用して拡張ネットワーキングを有効した後インスタンスが到達不可能になった場合、インスタンスの `enaSupport` 属性を無効にすると、ストックネットワークアダプタにフォールバックできます。

**ENA を使用して拡張ネットワーキングを無効にするには (EBS-backed インスタンス)**

1. ローカルコンピュータから、Amazon EC2 コンソール、[stop-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/stop-instances.html) コマンド (AWS CLI)、[Stop-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/Stop-EC2Instance.html) コマンドレット (AWS Tools for PowerShell) のいずれかを使用して、インスタンスを停止します。

1. ローカルコンピュータから、[modify-instance-attribute](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-attribute.html) コマンドを `--no-ena-support`オプションと共に使用するか、[Edit-EC2InstanceAttribute](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceAttribute.html) コマンドレットを `-EnaSupport $false` パラメータ共に使用して、拡張ネットワーキング属性を無効にします。

1. ローカルコンピュータから、Amazon EC2 コンソール、[start-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/start-instances.html) コマンド、[Start-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/Start-EC2Instance.html) コマンドレットのいずれかを使用して、インスタンスを停止します。

1. (オプション) インスタンスに接続し、`ena`のステップに従って、現在のカーネルバージョンを使用して [EC2 インスタンスで ENA による拡張ネットワーキングを有効にする](enhanced-networking-ena.md) モジュールの再インストールを試みます。<a name="disable-enhanced-networking-ena-instance-store"></a>

**ENA を使用して拡張ネットワーキングを無効にするには (Instance store-backed インスタンス)**

1. 「[Amazon S3-backed AMI を作成する](creating-an-ami-instance-store.md)」の説明に従って、新しい AMI を作成します。

1. AMI を登録するときは、[stop-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/stop-instances.html) コマンド (AWS CLI) に `--no-ena-support` オプションを、または [Register-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Register-EC2Image.html) コマンドレットに `-EnaSupport $false` パラメータを、必ず含めます。

## キープアライブメカニズム
<a name="ena-keep-alive"></a>

ENA デバイスは、キープアライブイベントを一定の速度 (通常は 1 秒に 1 回) で送信します。ENA ドライバーは、これらのキープアライブメッセージの存在を確認するウォッチドッグメカニズムを実装します。メッセージが存在する場合、ウォッチドッグが再実装されます。存在しない場合、ドライバーはデバイスで障害が発生したと判断し、次の処理を行います。
+ 現在の統計を syslog にダンプする
+ ENA デバイスをリセットする
+ ENA のドライバー状態をリセットする

上記のリセット手順を実行すると、トラフィックが短時間失われる可能性がありますが (TCP 接続は回復可能です)、ユーザーに影響は及びません。

ENA デバイスは、キープアライブ通知を送信しないことによりデバイスリセット手順を間接的にリクエストすることがあります。例えば、ENA デバイスが回復不可能な設定をロードした後に不明な状態になった場合などです。

リセット手順の例を以下に示します。

```
[18509.800135] ena 0000:00:07.0 eth1: Keep alive watchdog timeout. // The watchdog process initiates a reset
[18509.815244] ena 0000:00:07.0 eth1: Trigger reset is on		
[18509.825589] ena 0000:00:07.0 eth1: tx_timeout: 0 // The driver logs the current statistics
[18509.834253] ena 0000:00:07.0 eth1: io_suspend: 0
[18509.842674] ena 0000:00:07.0 eth1: io_resume: 0
[18509.850275] ena 0000:00:07.0 eth1: wd_expired: 1
[18509.857855] ena 0000:00:07.0 eth1: interface_up: 1
[18509.865415] ena 0000:00:07.0 eth1: interface_down: 0
[18509.873468] ena 0000:00:07.0 eth1: admin_q_pause: 0
[18509.881075] ena 0000:00:07.0 eth1: queue_0_tx_cnt: 0
[18509.888629] ena 0000:00:07.0 eth1: queue_0_tx_bytes: 0
[18509.895286] ena 0000:00:07.0 eth1: queue_0_tx_queue_stop: 0
.......
........
[18511.280972] ena 0000:00:07.0 eth1: free uncompleted tx skb qid 3 idx 0x7 // At the end of the down process, the driver discards incomplete packets.
[18511.420112] [ENA_COM: ena_com_validate_version] ena device version: 0.10 //The driver begins its up process
[18511.420119] [ENA_COM: ena_com_validate_version] ena controller version: 0.0.1 implementation version 1
[18511.420127] [ENA_COM: ena_com_admin_init] ena_defs : Version:[b9692e8] Build date [Wed Apr  6 09:54:21 IDT 2016]
[18512.252108] ena 0000:00:07.0: Device watchdog is Enabled
[18512.674877] ena 0000:00:07.0: irq 46 for MSI/MSI-X
[18512.674933] ena 0000:00:07.0: irq 47 for MSI/MSI-X
[18512.674990] ena 0000:00:07.0: irq 48 for MSI/MSI-X
[18512.675037] ena 0000:00:07.0: irq 49 for MSI/MSI-X
[18512.675085] ena 0000:00:07.0: irq 50 for MSI/MSI-X
[18512.675141] ena 0000:00:07.0: irq 51 for MSI/MSI-X
[18512.675188] ena 0000:00:07.0: irq 52 for MSI/MSI-X
[18512.675233] ena 0000:00:07.0: irq 53 for MSI/MSI-X
[18512.675279] ena 0000:00:07.0: irq 54 for MSI/MSI-X
[18512.772641] [ENA_COM: ena_com_set_hash_function] Feature 10 isn't supported
[18512.772647] [ENA_COM: ena_com_set_hash_ctrl] Feature 18 isn't supported
[18512.775945] ena 0000:00:07.0: Device reset completed successfully // The reset process is complete
```

## 読み取りタイムアウトの登録
<a name="register-read-timeout-ena"></a>

ENA アーキテクチャでは、Memory Mapped I/O (MMIO) の読み取りオペレーションの限定的に使用することが推奨されます。MMIO レジスタには、初期化手順中のみ ENA デバイスドライバーがアクセスします。

ドライバーログ (**dmesg** 出力にあります) が読み取りオペレーションの失敗を示している場合、互換性のないドライバーまたは適切にコンパイルされていないドライバー、ビジー状態のハードウェアドライバー、ハードウェア障害が原因の可能性があります。

読み取りオペレーションの失敗を示すログエントリが断続的に発生する場合は、問題とみなさないでください。この場合はドライバーによって再試行されます。ただし、読み取りの失敗を含むログエントリが連続して発生する場合は、ドライバーまたはハードウェアの問題を示しています。

タイムアウトによる読み取りオペレーション失敗を示すドライバーログエントリの例を以下に示します。

```
[ 47.113698] [ENA_COM: ena_com_reg_bar_read32] reading reg failed for timeout. expected: req id[1] offset[88] actual: req id[57006] offset[0] 
[ 47.333715] [ENA_COM: ena_com_reg_bar_read32] reading reg failed for timeout. expected: req id[2] offset[8] actual: req id[57007] offset[0] 
[ 47.346221] [ENA_COM: ena_com_dev_reset] Reg read32 timeout occurred
```

## 統計
<a name="statistics-ena"></a>

ネットワークパフォーマンスが不十分な場合やレイテンシーの問題がある場合、デバイス統計情報を取得して調査する必要があります。これらの統計は、以下に示すように **ethtool** を使用して取得できます。

```
[ec2-user ~]$ ethtool -S ethN
NIC statistics:
	tx_timeout: 0
	suspend: 0
	resume: 0
	wd_expired: 0
	interface_up: 1
	interface_down: 0
	admin_q_pause: 0
	bw_in_allowance_exceeded: 0
	bw_out_allowance_exceeded: 0
	pps_allowance_exceeded: 0
	conntrack_allowance_available: 450878
	conntrack_allowance_exceeded: 0
	linklocal_allowance_exceeded: 0
	queue_0_tx_cnt: 4329
	queue_0_tx_bytes: 1075749
	queue_0_tx_queue_stop: 0
	...
```

次のコマンド出力パラメータの説明を以下に示します。

`tx_timeout`: *N*  
Netdev ウォッチドッグがアクティブになった回数。

`suspend`: *N*  
ドライバーが停止操作を実行した回数。

`resume`: *N*  
ドライバーが再開操作を実行した回数。

`wd_expired`: *N*  
ドライバーが直近 3 秒以内にキープアライブイベントを受け取らなかった回数。

`interface_up`: *N*  
ENA インターフェイスが起動された回数。

`interface_down`: *N*  
ENA インターフェイスが停止された回数。

`admin_q_pause`: *N*  
管理キューが実行状態で見つからなかった回数。

`bw_in_allowance_exceeded`: *N*  
インバウンド集計帯域幅がインスタンスの最大値を超えたためにキューまたはドロップされたパケットの数。

`bw_out_allowance_exceeded`: *N*  
アウトバウンド集計帯域幅がインスタンスの最大値を超えたためにキューまたはドロップされたパケットの数。

`pps_allowance_exceeded`: *N*  
双方向 PPS がインスタンスの最大値を超えたためにキューまたはドロップされたパケットの数。\$1

`conntrack_allowance_available`: *N*  
そのインスタンスタイプの Connections Tracked 許容量に達する前にインスタンスが確立できる接続トラッキング数。Nitro ベースのインスタンスでのみ使用できます。FreeBSD インスタンスまたは DPDK 環境ではサポートされません。

`conntrack_allowance_exceeded`: *N*  
接続トラッキングがインスタンスの最大数を超え、新しい接続を確立できなかったためにドロップされたパケットの数。これにより、インスタンスとの間で送受信されるトラフィックのパケット損失が発生する可能性があります。

`linklocal_allowance_exceeded`: *N*  
ローカルプロキシサービスへのトラフィックの PPS がネットワークインターフェイスの最大値を超えたためにドロップされたパケットの数。これは、Amazon DNS サービス、インスタンスメタデータサービス、および Amazon Time Sync Service へのトラフィックに影響しますが、カスタム DNS リゾルバーへのトラフィックには影響しません。

`queue_N_tx_cnt`: *N*  
このキューの送信パケット数。

`queue_N_tx_bytes`: *N*  
このキューの送信バイト数。

`queue_N_tx_queue_stop`: *N*  
キュー *N* がいっぱいになって停止された回数。

`queue_N_tx_queue_wakeup`: *N*  
停止後にキュー *N* が再開された回数。

`queue_N_tx_dma_mapping_err`: *N*  
直接メモリアクセスエラーの数。この値が 0 の場合は、システムリソースが低いことを示しています。

`queue_N_tx_linearize`: *N*  
このキューに SKB 線形化が試行された回数。

`queue_N_tx_linearize_failed`: *N*  
このキューで SKB 線形化が失敗した回数。

`queue_N_tx_napi_comp`: *N*  
`napi` ハンドラーがこのキューの `napi_complete` を呼び出した回数。

`queue_N_tx_tx_poll`: *N*  
`napi` ハンドラーがこのキューにスケジュールされた回数。

`queue_N_tx_doorbells`: *N*  
このキューの送信ドアベルの数。

`queue_N_tx_prepare_ctx_err`: *N*  
このキューで `ena_com_prepare_tx` が失敗した回数。

`queue_N_tx_bad_req_id`: *N*  
このキューの `req_id` が無効です。有効な `req_id` は 0、マイナス `queue_size`、マイナス 1 です。

`queue_N_tx_llq_buffer_copy`: *N*  
このキューの llq エントリよりもヘッダーサイズが大きいパケットの数。

`queue_N_tx_missed_tx`: *N*  
このキューの未処理のパケット数。

`queue_N_tx_unmask_interrupt`: *N*  
このキューで tx 割り込みがマスク解除された回数。

`queue_N_rx_cnt`: *N*  
このキューで受信したパケット数。

`queue_N_rx_bytes`: *N*  
このキューの受信バイト数。

`queue_N_rx_rx_copybreak_pkt`: *N*  
rx キューが、このキューの rx\$1copybreak パケットサイズより小さいパケットを受信した回数。

`queue_N_rx_csum_good`: *N*  
rx キューが、チェックサムをチェックし、このキューに対して正しいパケットを受信した回数。

`queue_N_rx_refil_partial`: *N*  
ドライバーが rx キューの空いている部分にこのキューのバッファーを補充できなかった回数。この値が 0 でない場合、メモリリソースが低いことを示しています。

`queue_N_rx_bad_csum`: *N*  
`rx` キューに、このキューの不良なチェックサムがあった回数 (rx チェックサムオフロードがサポートされている場合のみ)。

`queue_N_rx_page_alloc_fail`: *N*  
このキューのページ割り当てに失敗した回数。この値が 0 でない場合、メモリリソースが低いことを示しています。

`queue_N_rx_skb_alloc_fail`: *N*  
このキューの SKB 割り当てに失敗した回数。この値が 0 でない場合、システムリソースが低いことを示しています。

`queue_N_rx_dma_mapping_err`: *N*  
直接メモリアクセスエラーの数。この値が 0 の場合は、システムリソースが低いことを示しています。

`queue_N_rx_bad_desc_num`: *N*  
パケットあたりのバッファーが多すぎます。この値が 0 でない場合、バッファーの使用量が非常に少ないことを示しています。

`queue_N_rx_bad_req_id`: *N*  
このキューの req\$1id は無効です。有効な req\$1id は [0, queue\$1size - 1 ] です。

`queue_N_rx_empty_rx_ring`: *N*  
このキューの rx キューが空だった回数。

`queue_N_rx_csum_unchecked`: *N*  
rx キューが、このキューに対してチェックサムがチェックされなかったパケットを受信した回数。

`queue_N_rx_xdp_aborted`: *N*  
XDP パケットが XDP\$1ABORT として分類された回数。

`queue_N_rx_xdp_drop`: *N*  
XDP パケットが XDP\$1DROP として分類された回数。

`queue_N_rx_xdp_pass`: *N*  
XDP パケットが XDP\$1PASS として分類された回数。

`queue_N_rx_xdp_tx`: *N*  
XDP パケットが XDP\$1TX として分類された回数。

`queue_N_rx_xdp_invalid`: *N*  
パケットの XDP リターンコードが無効な回数。

`queue_N_rx_xdp_redirect`: *N*  
XDP パケットが XDP\$1REDIRECT として分類された回数。

`queue_N_xdp_tx_cnt`: *N*  
このキューの送信パケット数。

`queue_N_xdp_tx_bytes`: *N*  
このキューの送信バイト数。

`queue_N_xdp_tx_queue_stop`: *N*  
このキューがいっぱいになって停止した回数。

`queue_N_xdp_tx_queue_wakeup`: *N*  
停止後にこのキューが再開された回数。

`queue_N_xdp_tx_dma_mapping_err`: *N*  
直接メモリアクセスエラーの数。この値が 0 の場合は、システムリソースが低いことを示しています。

`queue_N_xdp_tx_linearize`: *N*  
このキューに XDP バッファ線形化が試行された回数。

`queue_N_xdp_tx_linearize_failed`: *N*  
このキューで XDP バッファ線形化が失敗した回数。

`queue_N_xdp_tx_napi_comp`: *N*  
このキューで napi ハンドラーが napi\$1complete を呼び出した回数。

`queue_N_xdp_tx_tx_poll`: *N*  
このキューで napi ハンドラーがスケジュールされた回数。

`queue_N_xdp_tx_doorbells`: *N*  
このキューの送信ドアベルの数。

`queue_N_xdp_tx_prepare_ctx_err`: *N*  
このキューで ena\$1com\$1prepare\$1tx が失敗した回数。この値は、常に 0 になる必要があります。そうでない場合はドライバーログを参照してください。

`queue_N_xdp_tx_bad_req_id`: *N*  
このキューの req\$1id は無効です。有効な req\$1id は [0, queue\$1size - 1 ] です。

`queue_N_xdp_tx_llq_buffer_copy`: *N*  
このキューの llq バッファコピーを使用してヘッダーをコピーしたパケット数。

`queue_N_xdp_tx_missed_tx`: *N*  
tx キューエントリがこのキューの完了タイムアウトを逃した回数。

`queue_N_xdp_tx_unmask_interrupt`: *N*  
このキューで tx 割り込みがマスク解除された回数。

`ena_admin_q_aborted_cmd`: *N*  
中断された管理コマンドの数。これは、通常自動リカバリ手順中に発生します。

`ena_admin_q_submitted_cmd`: *N*  
管理者キューのドアベルの数。

`ena_admin_q_completed_cmd`: *N*  
管理者キューの完了数。

`ena_admin_q_out_of_space`: *N*  
ドライバーが新しい管理コマンドの送信を試みたが、キューがいっぱいであった回数。

`ena_admin_q_no_completion`: *N*  
ドライバーが管理コマンドの完了を取得しなかった回数。

## syslog のドライバーエラーログ
<a name="driver-error-logs-ena"></a>

ENA ドライバーは、システム起動時にログメッセージを **syslog** に書き込みます。問題が発生した場合、これらのログを調べてエラーを探すことができます。システム起動時に ENA ドライバーにより **syslog** に記録される情報の例と、特定のメッセージの注釈の一部を以下に示します。

```
Jun  3 22:37:46 ip-172-31-2-186 kernel: [  478.416939] [ENA_COM: ena_com_validate_version] ena device version: 0.10
Jun  3 22:37:46 ip-172-31-2-186 kernel: [  478.420915] [ENA_COM: ena_com_validate_version] ena controller version: 0.0.1 implementation version 1
Jun  3 22:37:46 ip-172-31-2-186 kernel: [  479.256831] ena 0000:00:03.0: Device watchdog is Enabled
Jun  3 22:37:46 ip-172-31-2-186 kernel: [  479.672947] ena 0000:00:03.0: creating 8 io queues. queue size: 1024
Jun  3 22:37:46 ip-172-31-2-186 kernel: [  479.680885] [ENA_COM: ena_com_init_interrupt_moderation] Feature 20 isn't supported  // Interrupt moderation is not supported by the device
Jun  3 22:37:46 ip-172-31-2-186 kernel: [  479.691609] [ENA_COM: ena_com_get_feature_ex] Feature 10 isn't supported // RSS HASH function configuration is not supported by the device
Jun  3 22:37:46 ip-172-31-2-186 kernel: [  479.694583] [ENA_COM: ena_com_get_feature_ex] Feature 18 isn't supported //RSS HASH input source configuration is not supported by the device 
Jun  3 22:37:46 ip-172-31-2-186 kernel: [  479.697433] [ENA_COM: ena_com_set_host_attributes] Set host attribute isn't supported
Jun  3 22:37:46 ip-172-31-2-186 kernel: [  479.701064] ena 0000:00:03.0 (unnamed net_device) (uninitialized): Cannot set host attributes
Jun  3 22:37:46 ip-172-31-2-186 kernel: [  479.704917] ena 0000:00:03.0: Elastic Network Adapter (ENA) found at mem f3000000, mac addr 02:8a:3c:1e:13:b5 Queues 8
Jun  3 22:37:46 ip-172-31-2-186 kernel: [  480.805037] EXT4-fs (xvda1): re-mounted. Opts: (null)
Jun  3 22:37:46 ip-172-31-2-186 kernel: [  481.025842] NET: Registered protocol family 10
```

**無視可能なエラー**  
システムのエラーログに記録される可能性がある以下のエラーは、Elastic Network Adapter では無視できます。

ホスト属性の設定がサポートされない  
ホスト属性は、このデバイスではサポートされていません。

rx キューのバッファの割り当てに失敗した  
これは復元可能なエラーであり、エラーがスローされたときにメモリプレッシャーの問題が発生した可能性があることを示します。

機能* X *はサポートされていない  
言及されている機能は、Elastic Network Adapter ではサポートされていません。*X* に指定できる値は、以下のとおりです。  
+ 10: RSS ハッシュ関数設定は、このデバイスではサポートされていません。
+ 12: RSS 間接テーブル設定は、このデバイスではサポートされていません。
+ 18: RSS ハッシュ入力設定は、このデバイスではサポートされていません。
+ 20: 割り込みモデレーションは、このデバイスではサポートされていません。
+ 27: Elastic Network Adapter ドライバーは、snmpd によるイーサネット機能のポーリングをサポートしていません。

AENQ の設定に失敗した  
Elastic Network Adapter では、AENQ 設定がサポートされていません。

サポートされていない AENQ のイベントを設定しようとしている  
このエラーは、Elastic Network Adapter によりサポートされていない AENQ イベントグループを設定しようとしたことを示しています。

## 最適とは言えない構成に関する通知
<a name="ts-ena-sub-opt-config-notification"></a>

ENA デバイスは、変更可能なドライバー内の最適ではない構成設定を検出します。デバイスは ENA ドライバーに通知し、コンソールに警告を記録します。次の例は、警告メッセージの形式を示しています。

```
Sub-optimal configuration notification code: 1. Refer to AWS ENA documentation for additional details and mitigation options.
```

次のリストは、通知コードの詳細と、最適ではない構成が検出された場合の推奨アクションを示しています。
+ **コード 1: ワイド LLQ 設定の ENA Express は推奨されません**

  ENA Express ENI はワイド LLQ で設定されています。この構成は最適とは言えず、ENA Express のパフォーマンスに影響を与える可能性があります。ENA Express ENI を使用するときは、次のようにワイド LLQ 設定を無効にすることをお勧めします。

  ```
  sudo rmmod ena && sudo modprobe ena force_large_llq_header=0
  ```

  ENA Express の最適な構成の詳細については、「[ENA Express を使用して EC2 インスタンス間のネットワークパフォーマンスを高める](ena-express.md)」を参照してください。
+ **コード 2: Tx キューの深さが最適ではない ENA Express ENI は推奨されません**

  ENA Express ENI が最適ではない Tx キューの深さで設定されています。この設定はENA Express のパフォーマンスに影響を与える可能性があります。ENA Express ENI を使用する際は次のようにすべての Tx キューをネットワークインターフェイスの最大値に拡大することをお勧めします。

  以下の **ethtool** コマンドを実行すると、LLQ サイズを調整できます。Wide-LLQ を制御、クエリ、有効化する方法の詳細については、Amazon Drivers GitHub リポジトリで、ENA 用 Linux カーネルドライバードキュメントの「[ラージローレイテンシーキュー (Large LLQ)](https://github.com/amzn/amzn-drivers/tree/master/kernel/linux/ena#large-low-latency-queue-large-llq)」トピックを参照してください。

  ```
  ethtool -g interface
  ```

  Tx キューを最大の深度に設定します。

  ```
  ethtool -G interface tx depth
  ```

  ENA Express の最適な構成の詳細については、「[ENA Express を使用して EC2 インスタンス間のネットワークパフォーマンスを高める](ena-express.md)」を参照してください。
+ **コード 3: 通常の LLQ サイズの ENA および Tx パケットトラフィックは、ヘッダーがサポートする最大サイズを超えています**

  デフォルトでは、ENA LLQ は最大 96 バイトの Tx パケットヘッダーサイズをサポートします。パケットヘッダーのサイズが 96 バイトを超えると、パケットはドロップされます。この問題を軽減するには、Wide-LLQ を有効にすることをお勧めします。これにより、サポートされる Tx パケットヘッダーサイズが最大 224 バイトに増加します。

  ただし、Wide-LLQ を有効にすると、Tx リングの最大サイズは 1000 エントリから 512 エントリに減少します。Wide-LLQ は Nitro v4 以降のすべてのインスタンスタイプでデフォルトで有効になっています。
  + Nitro v4 インスタンスタイプのデフォルトの最大 Wide-LLQ Tx リングサイズは 512 エントリで、これを変更することはできません。
  + Nitro v5 インスタンスタイプのデフォルトの最大 Wide-LLQ Tx リングサイズは 512 エントリで、最大 1000 エントリまで増加できます。

  以下の **ethtool** コマンドを実行すると、LLQ サイズを調整できます。Wide-LLQ を制御、クエリ、有効化する方法の詳細については、Amazon Drivers GitHub リポジトリで、ENA 用 Linux カーネルドライバードキュメントの「[ラージローレイテンシーキュー (Large LLQ)](https://github.com/amzn/amzn-drivers/tree/master/kernel/linux/ena#large-low-latency-queue-large-llq)」トピックを参照してください。

  Tx キューの最大深度を特定します。

  ```
  ethtool -g interface
  ```

  Tx キューを最大の深度に設定します。

  ```
  ethtool -G interface tx depth
  ```

# エラスティックネットワークアダプタ Windows ドライバーのトラブルシューティング
<a name="troubleshoot-ena-driver"></a>

エラスティックネットワークアダプタ (ENA) はオペレーティングシステムのヘルスを向上し、Windows インスタンスのオペレーションを中断させる可能性のある予期しないハードウェア動作や障害を減らすように設計されています。ENA アーキテクチャではデバイスやドライバーの障害がオペレーティングシステムに対して可能な限り透過的に保持されます。

## インスタンスの診断情報を収集する
<a name="ts-ena-drv-collect-diagnostics"></a>

Windows オペレーティングシステム (OS) ツールを開く手順はインスタンスにインストールされている OS のバージョンによって異なります。以下のセクションでは**[Run]** (実行) ダイアログでツールを開きます。このツールはすべての OS バージョンで同じ動作をします。ただし、これらのツールには任意の方法を使用してアクセスできます。

**[Run] (実行) ダイアログにアクセスする**
+ Windows ロゴのキーの組み合わせを使用する: `Windows` \$1 `R`
+ 検索バーを使用する:
  + 検索バーに「`run`」と入力してください。
  + 検索結果から **[Run]** (実行) アプリケーションを選択してください。

一部の手順ではプロパティまたはコンテキスト依存アクションにアクセスするためにコンテキストメニューが必要です。OS のバージョンとハードウェアに応じて、いくつかの方法があります。

**コンテキストメニューにアクセスする**
+ マウスを使用する: 項目を右クリックしてコンテキストメニューを表示します。
+ キーボードを使用する:
  + お使いの OS のバージョンに応じて、`Shift` \$1 `F10`、または `Ctrl` \$1 `Shift` \$1 `F10` を使用します。
  + キーボードにコンテキストキー (ボックス内の 3 本の水平線) がある場合は目的の項目を選択し、コンテキストキーを押します。

インスタンスに接続できる場合は次の方法を使用してトラブルシューティング用の診断情報を収集します。

### ENA デバイスのステータスを確認する
<a name="ts-ena-diagnostics-device-mgr"></a>

Windows デバイスマネージャーを使用して ENA Windows ドライバーのステータスを確認するには次の手順に従います。

1. 前のセクションで説明されているいずれかの方法を使用して **[Run]** (実行) ダイアログを開きます。

1. Windows デバイスマネージャーを開くには**[Run]** (実行) ボックスに `devmgmt.msc` と入力してください。

1. [**OK**] を選択してください。デバイスマネージャーウィンドウが開きます。

1. **[ネットワークアダプター]** の左側にある矢印を選択してリストを展開します。

1. 名前を選択するか、**[Amazonエラスティックネットワークアダプター]** のコンテキストメニューを開き、**[プロパティ]** を選択してください。これにより、**[Amazon エラスティックネットワークアダプタ のプロパティ]** ダイアログが開きます。

1. **[全般]** タブに「このデバイスは正常に動作しています」というメッセージが表示されていることを確認します。

### ドライバーイベントメッセージを調査する
<a name="ts-ena-diagnostics-event-log"></a>

Windows イベントビューアーを使用して ENA Windows ドライバーイベントログを確認するには次の手順を実行します。

1. 前のセクションで説明されているいずれかの方法を使用して **[Run]** (実行) ダイアログを開きます。

1. Windows イベントビューアーを開くには**[Run]** (実行) ボックスに `eventvwr.msc` と入力してください。

1. [**OK**] を選択してください。これにより、イベントビューアー ウィンドウが開きます。

1. **[Windows Logs]** (Windows ログ) メニューを展開し、**[System]** (システム) を選択してください。

1. **[アクションs]** (アクション) の右上のパネルで、**[Filter Current Log]** (現在のログをフィルター) を選択してください。これにより、フィルタリングダイアログが表示されます。

1. **[Event sources]** (イベントソース) ボックスに `ena` と入力してください。これにより、ENA Windows ドライバーによって生成されたイベントに結果が制限されます。

1. [**OK**] を選択してください。これにより、フィルターされたイベントログの結果がウィンドウの詳細セクションに表示されます。

1. 詳細をドリルダウンするにはリストからイベントメッセージを選択してください。

次の例はWindows イベントビューアーのシステムイベントリスト内の ENA ドライバーイベントを示しています。

![\[例: Windows イベントビューアーのシステムメッセージリストに表示される ENA ドライバーイベント。\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/ena-event-viewer-example.png)


#### イベントメッセージの概要
<a name="ts-ena-diagnostics-event-messages"></a>

次の表に、ENA Windows ドライバーが生成するイベントメッセージを示します。


**Input**  

| Event ID | ENA ドライバーイベントの説明 | タイプ | 
| --- | --- | --- | 
| 5001 | ハードウェアのリソースが不足しています | エラー | 
| 5002 | アダプタがハードウェアエラーを検出しました | エラー | 
| 5005 | タイムリーに完了しなかった NDIS 操作でアダプタがタイムアウトしました | エラー | 
| 5032 | アダプタがデバイスをリセットできませんでした | エラー | 
| 5200 | アダプタが初期化されました | 情報 | 
| 5201 | アダプタが停止されました | 情報 | 
| 5202 | アダプタが一時停止されました | 情報 | 
| 5203 | アダプタが再起動されました | 情報 | 
| 5204 | アダプタがシャットダウンされました | 情報 | 
| 5205 | アダプタがリセットされました | エラー | 
| 5206 | アダプタが突然取り外されました | エラー | 
| 5208 | アダプタ初期化ルーチンが失敗しました | エラー | 
| 5210 | アダプタが内部問題を検出し、正常に回復しました | エラー | 

### パフォーマンスメトリクスを確認する
<a name="ts-ena-diagnostics-perf-metrics"></a>

ENA Windows ドライバーはメトリクスが有効になっているインスタンスからネットワークパフォーマンスメトリクスを発行します。ネイティブのパフォーマンスモニターアプリケーションを使用して、インスタンスのメトリクスを表示および有効化できます。ENA Windows ドライバーが生成するメトリクスの詳細については[EC2 インスタンスでの ENA 設定のネットワークパフォーマンスのモニタリング](monitoring-network-performance-ena.md)を参照してください。

ENA メトリクスが有効で、Amazon CloudWatch エージェントがインストールされているインスタンスではCloudWatch は Windows パフォーマンスモニターのカウンターに関連付けられているメトリクスと ENA の高度なメトリクスを収集します。これらのメトリクスはEC2 インスタンスでデフォルトで有効になっているメトリクスに加えて収集されます。これらのメトリクスの詳細については「Amazon CloudWatch ユーザーガイド」**の[「CloudWatch エージェントにより収集されるメトリクス」](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/metrics-collected-by-CloudWatch-agent.html)を参照してください。

**注記**  
パフォーマンスメトリクスはENA ドライバーのバージョン 2.4.0 以降 (バージョン 2.2.3 でも使用可能) で使用できます。ENA ドライバーのバージョン 2.2.4 は第 6 世代 EC2 インスタンスでパフォーマンスが低下する可能性があるためロールバックされました。新バージョンに更新されていることを確認するため、ドライバーを最新バージョンにアップグレードすることをお勧めします。

パフォーマンスメトリクスを使用できる方法には次のようなものがあります。
+ インスタンスのパフォーマンスの問題をトラブルシューティングします。
+ ワークロードに適したインスタンスサイズを選択してください。
+ スケーリングアクティビティをプロアクティブに計画します。
+ アプリケーションをベンチマークして、インスタンスで使用可能なパフォーマンスを最大化するかどうかを判断します。

**更新レート**  
デフォルトではドライバーは 1 秒間隔でメトリクスを更新します。ただし、メトリクスを取得するアプリケーションはポーリングに別の間隔を使用する場合があります。更新間隔はデバイスマネージャーで、ドライバーの詳細プロパティを使用して変更できます。

ENA Windows ドライバーのメトリクスの更新間隔を変更するには次の手順を実行します。

1. 前のセクションで説明されているいずれかの方法を使用して **[Run]** (実行) ダイアログを開きます。

1. Windows デバイスマネージャーを開くには**[Run]** (実行) ボックスに `devmgmt.msc` と入力してください。

1. [**OK**] を選択してください。デバイスマネージャーウィンドウが開きます。

1. **[ネットワークアダプター]** の左側にある矢印を選択してリストを展開します。

1. 名前を選択するか、**[Amazonエラスティックネットワークアダプター]** のコンテキストメニューを開き、**[プロパティ]** を選択してください。これにより、**[Amazon エラスティックネットワークアダプタ のプロパティ]** ダイアログが開きます。

1. ポップアップウィンドウで **[Advanced]** (詳細) タブを開きます。

1. **[Property]** (プロパティ) リストから、**[Metrics Refresh Interval]** (メトリクス更新間隔) を選択して値を変更します。

1. 終了したら、**[OK]** を選択してください。

## 最適とは言えない設定に関する通知を確認する
<a name="ts-ena-win-sub-opt-config-notification"></a>

ENA デバイスは変更可能なドライバー内の最適ではない構成設定を検出します。デバイスは ENA ドライバーに通知し、イベント通知をログに記録します。Windows イベントビューアーで最適でないイベントを確認するには

1. 前のセクションで説明されているいずれかの方法を使用して **[Run]** (実行) ダイアログを開きます。

1. Windows イベントビューアーを開くには**[Run]** (実行) ボックスに `eventvwr.msc` と入力してください。

1. [**OK**] を選択してください。これにより、イベントビューアー ウィンドウが開きます。

1. **[Windows Logs]** (Windows ログ) メニューを展開し、**[System]** (システム) を選択してください。

1. **[アクションs]** (アクション) の右上のパネルで、**[Filter Current Log]** (現在のログをフィルター) を選択してください。これにより、フィルタリングダイアログが表示されます。

1. **[Event sources]** (イベントソース) ボックスに `ena` と入力してください。これにより、ENA Windows ドライバーによって生成されたイベントに結果が制限されます。

1. [**OK**] を選択してください。これにより、フィルターされたイベントログの結果がウィンドウの詳細セクションに表示されます。

ID `59000` のイベントは最適ではない設定に関する検出結果を通知します。イベントを右クリックして **[イベントのプロパティ]** を選択すると詳細ビューが開きます。または**[表示]** メニューから **[プレビューペイン]** を選択すると、同じ詳細を表示できます。

![\[例: Windows イベントビューアーのプレビューペインに表示されるシステムイベント ID 59000。\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/ena-sub-opt-event-general.png)


イベントコードを表示するには**[詳細]** タブを開きます。**[バイナリデータ: 単語]** セクションでは最後の単語がコードです。

![\[例: [バイナリデータ] セクションの最後の単語が強調表示されます。\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/ena-sub-opt-event-detail.png)


次のリストは通知コードの詳細と、最適ではない構成が検出された場合の推奨アクションを示しています。
+ **コード `1`: ワイド LLQ 構成の ENA Express は推奨されません。**

  ENA Express ENI はワイド LLQ で設定されています。この構成は最適とは言えず、ENA Express のパフォーマンスに影響を与える可能性があります。ENA Express ENI を使用するときは次のようにワイド LLQ 設定を無効にすることをお勧めします。

  1. Windows デバイスマネージャーを開くには**[Run]** (実行) ボックスに `devmgmt.msc` と入力してください。

  1. [**OK**] を選択してください。デバイスマネージャーウィンドウが開きます。

  1. **[Network adapters]** (ネットワークアダプタ) の左側にある矢印を選択してリストを展開します。

  1. `Amazon Elastic Network Adapter` のデバイスプロパティを開きます。

  1. そこから、**[詳細設定]** タブを開いて変更を加えます。

  1. **[LLQ ヘッダーサイズポリシー]** プロパティを選択し、その値を `Normal (128 Bytes)` に設定します。

  1. **OK** を選択して変更を保存します。
+ **コード `2`: Tx キューの深さが最適ではない ENA Express ENI は推奨されません**

  ENA Express ENI が最適ではない Tx キューの深さで設定されています。この設定はENA Express のパフォーマンスに影響を与える可能性があります。ENA Express ENI を使用する際は次のようにすべての Tx キューをネットワークインターフェイスの最大値に拡大することをお勧めします。

  これらのステップに従って、Tx キューを最大の深さまで拡大します:

  1. Windows デバイスマネージャーを開くには**[Run]** (実行) ボックスに `devmgmt.msc` と入力してください。

  1. [**OK**] を選択してください。デバイスマネージャーウィンドウが開きます。

  1. **[Network adapters]** (ネットワークアダプタ) の左側にある矢印を選択してリストを展開します。

  1. `Amazon Elastic Network Adapter` のデバイスプロパティを開きます。

  1. そこから、**[詳細設定]** タブを開いて変更を加えます。

  1. **[送信バッファ]** プロパティを選択し、サポートされている最大値にその値を設定します。

  1. **OK** を選択して変更を保存します。

## ENA アダプタのリセット
<a name="ts-ena-drv-reset"></a>

リセットプロセスはENA Windows ドライバーがアダプタのエラーを検出し、アダプタを異常としてマークすると開始されます。ドライバー自体をリセットできないため、アダプタのヘルスステータスを確認し、ENA Windows ドライバーのリセットハンドルを呼び出すのはオペレーティングシステムによって異なります。リセットプロセスでは短時間、トラフィック損失が発生することがあります。ただし、TCP 接続は回復できるはずです。

ENA アダプタはキープアライブ通知の送信に失敗して、間接的にデバイスのリセット手順を要求することもあります。例えば、ENA アダプタが回復不可能な設定をロードした後に不明な状態になった場合、ENA アダプタがキープアライブ通知の送信を停止することがあります。

**ENA アダプタのリセットの一般的な原因**
+ キープアライブメッセージが見つからない

  ENA アダプタはキープアライブイベントを一定の速度 (通常は 1 秒に 1 回) で送信します。ENA Windows ドライバーはこれらのキープアライブメッセージの存在を定期的に確認するウォッチドッグメカニズムを実装します。前回チェックしてから新しいメッセージを 1 つ以上検出すると、成功した結果が記録されます。それ以外の場合、ドライバーはデバイスに障害が発生したと結論付け、リセットシーケンスを開始します。
+ パケットが送信キューにスタックしている

  ENA アダプタはパケットが送信キューを予期したとおりに流れていることを確認します。ENA Windows ドライバーはパケットがスタックしているかどうかを検出し、パケットがスタックしている場合はリセットシーケンスを開始します。
+ Memory Mapped I/O (MMIO) レジスターの読み取りタイムアウト

  Memory Mapped I/O (MMIO) の読み取りオペレーションを制限するために、ENA Windows ドライバーは初期化およびリセットプロセス中にのみ MMIO レジスターにアクセスします。ドライバーがタイムアウトを検出すると、実行中のプロセスに応じて、次のいずれかのアクションが実行されます。
  + 初期化中にタイムアウトが検出されると、フローが失敗し、Windows デバイスマネージャーで ENA アダプタによってドライバーに黄色の感嘆符が表示されます。
  + リセット中にタイムアウトが検出されると、フローは失敗します。その後、OS は ENA アダプタの突然の取り外しを開始し、取り外したアダプタを停止して起動することで回復します。ネットワークインターフェイスカード (NIC) の突然の取り外しの詳細については*「Microsoft Windows ハードウェア開発者向けドキュメント」*の[「NIC の突然の取り外しの処理」](https://learn.microsoft.com/en-us/windows-hardware/drivers/network/handling-the-surprise-removal-of-a-nic)を参照してください。

## トラブルシューティングシナリオ
<a name="ts-ena-drv-scenarios"></a>

ENA Windows ドライバーで発生する可能性のある問題のトラブルシューティングには以下のシナリオが役立ちます。最新バージョンがない場合はENA ドライバーのアップグレードから始めることをお勧めします。Windows OS のバージョン用の最新のドライバーを検索するには[ENA Windows ドライバーのバージョンリリースを追跡する](ena-driver-releases-windows.md)を参照してください。

### 予期しない ENA ドライバーのバージョンがインストールされました
<a name="ts-ena-drv-sc-unexpected-vsn"></a>

#### 説明
<a name="ts-ena-drv-sc-unexpected-vsn-descr"></a>

特定のバージョンの ENA ドライバーをインストールするステップを実行すると、Windows デバイスマネージャーはWindows が別のバージョンの ENA ドライバーをインストールしたことを表示します。

#### 原因
<a name="ts-ena-drv-sc-unexpected-vsn-cause"></a>

ドライバーパッケージのインストールを実行すると、Windows は開始前にローカル[ドライバーストア](https://learn.microsoft.com/en-us/windows-hardware/drivers/install/driver-store)内の特定のデバイスのために、有効なすべてのドライバーパッケージをランク付けします。その後、ランクの値が最も低いパッケージが最適なものとして選択されます。これはインストールする予定のパッケージとは異なる場合があります。デバイスドライバーパッケージの選択プロセスの詳細についてはMicrosoft ドキュメントウェブサイトの[「Windows がデバイスのドライバーパッケージを選択する方法」](https://learn.microsoft.com/en-us/windows-hardware/drivers/install/how-windows-selects-a-driver-for-a-device)を参照してください。

#### ソリューション
<a name="ts-ena-drv-sc-unexpected-vsn-solution"></a>

選択したドライバーパッケージバージョンを Windows が確実にインストールするようにするには[PnPUtil](https://learn.microsoft.com/en-us/windows-hardware/drivers/devtest/pnputil) コマンドラインツールを使用して、ドライバーストアから下位ランクのドライバーパッケージを削除します。

ENA ドライバーを更新するには次のステップを実行します。

1. インスタンスに接続してローカル管理者としてログインします。

1. 「[ENA デバイスのステータスを確認する](#ts-ena-diagnostics-device-mgr)」セクションの説明に従って、[Device Manager] (デバイスマネージャー) プロパティウィンドウを開きます。これにより、**[Amazon エラスティックネットワークアダプタ のプロパティ]** ウィンドウの **[全般]** タブが開きます。

1. **[Driver]** (ドライバー) タブを開きます。

1. [**更新 Driver**] を選択してください。これにより、**[ドライバーソフトウェアを更新 - Amazon エラスティックネットワークアダプタ]** ダイアログボックスが開きます。

   1. **[ドライバーソフトウェアをどのように検索しますか?]** セクションで、**[コンピュータを参照してドライバーソフトウェアを探す]** を選択してください。

   1. **[コンピュータ上のドライバーソフトウェアを参照]** ページで、検索バーの下にある **[コンピュータ上のデバイスドライバーのリストから選択]** を選択してください。

   1. **[このハードウェア用にインストールするデバイスドライバーを選択]** ページで、**[ディスク使用...]** を選択してください。

   1. **[ディスクからインストール]** ウィンドウで、ドロップダウンリストからファイルの場所の横にある **[参照...]** を選択してください。

   1. ターゲット ENA ドライバーパッケージをダウンロードした場所に移動します。`ena.inf` という名前のファイルを選択し、**[開く]** を選択してください。

   1. インストールを開始するには**[OK]**、**[次へ]** の順に選択してください。

1. インストーラーがインスタンスを自動的に再起動しない場合は**Restart-Computer** PowerShell コマンドレットを実行します。

   ```
   PS C:\> Restart-Computer
   ```

### ENA ドライバーのデバイス警告
<a name="ts-ena-drv-sc-device-warn"></a>

#### 説明
<a name="ts-ena-drv-sc-device-warn-descr"></a>

デバイスマネージャーの **[Network adapters]** (ネットワークアダプタ) セクションの ENA アダプタアイコンには警告記号 (感嘆符が入った黄色の三角形) が表示されます。

次の例はWindows デバイスマネージャーで警告アイコンが表示された ENA アダプタを示しています。

![\[例: Windows デバイスマネージャーに表示された、警告アイコンが付いた ENA アダプタ。\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/ena-adapter-device-mgr-warn.png)


#### 原因
<a name="ts-ena-drv-sc-device-warn-cause"></a>

このデバイスの警告は一般に、環境の問題によって引き起こされ、さらに調査が必要になる可能性があり、根本的な原因を特定するために消去プロセスが必要になることがよくあります。デバイス エラーの完全なリストについては、Microsoft ドキュメントの [Device Manager Error Messages](https://learn.microsoft.com/en-us/windows-hardware/drivers/install/device-manager-error-messages) を参照してください。

#### ソリューション
<a name="ts-ena-drv-sc-device-warn-solution"></a>

このデバイス警告の解決策は根本原因によって異なります。ここで説明する消去プロセスには単純な解決策がある可能性のある最も一般的な問題を特定して解決するためのいくつかの基本的なステップが含まれています。これらのステップで問題が解決しない場合は追加の根本原因分析が必要です。

一般的な問題を特定して解決するには次のステップを実行します。

1. 

**デバイスを停止して起動する**

   「[ENA デバイスのステータスを確認する](#ts-ena-diagnostics-device-mgr)」セクションの説明に従って、[Device Manager] (デバイスマネージャー) プロパティウィンドウを開きます。これにより、**[Amazon エラスティックネットワークアダプタ Properties]** (Amazon エラスティックネットワークアダプタ のプロパティ) ウィンドウの **[General]** (全般) タブが開きます。その **[Device status]** (デバイスの状態) にエラーコードと短いメッセージが表示されます。

   1. **[Driver]** (ドライバー) タブを開きます。

   1. **[Disable Device]** (デバイスを無効にする) を選択し、表示される警告メッセージに対して **[Yes]** (はい) を選択してください。

   1. **[Enable Device]** (デバイスを有効にする) を選択してください。

1. 

**EC2 インスタンスを停止して起動する**

   依然としてデバイスマネージャーでアダプタに警告アイコンが表示されている場合は次のステップとして、EC2 インスタンスを停止して起動します。これにより、ほとんどの場合、別のハードウェアでインスタンスが再起動されます。

1. 

**インスタンスリソースの問題の可能性を調査する**

   EC2 インスタンスを停止して起動しても問題が解決しない場合はメモリ不足など、インスタンスのリソースの問題を示している可能性があります。

### アダプタのリセットによる接続タイムアウト (エラーコード 5007、5205)
<a name="ts-ena-drv-sc-conn"></a>

#### 説明
<a name="ts-ena-drv-sc-conn-descr"></a>

Windows イベントビューアーにはENA アダプタの併用で発生する、アダプタのタイムアウトイベントとリセットイベントが表示されます。メッセージは次の例のように表示されます。
+ **Event ID 5007 (イベント ID 5007)**: Amazon エラスティックネットワークアダプタ : Timed out during an operation. (操作中にタイムアウトしました。)
+ **Event ID 5205 (イベント ID 5205)**: Amazon エラスティックネットワークアダプタ : Adapter reset has been started. (アダプタのリセットが開始されました。)

アダプタのリセットにより、最小限のトラフィックの中断が発生します。複数回リセットされても、重大なネットワークの中断を引き起こすのは異常です。

#### 原因
<a name="ts-ena-drv-sc-conn-cause"></a>

この一連のイベントはENA Windows ドライバーが、応答しなくなった ENA アダプタのリセットを開始したことを示します。ただし、デバイスドライバーがこの問題を検出するために使用するメカニズムはCPU 0 の枯渇による誤検出の影響を受けます。

#### ソリューション
<a name="ts-ena-drv-sc-conn-solution"></a>

このようなエラーの組み合わせが頻繁に発生する場合はリソースの割り当てを調べて、どこを調整するのがよいか確認してください。

1. 前のセクションで説明されているいずれかの方法を使用して **[Run]** (実行) ダイアログを開きます。

1. Windows リソースモニターを開くには**[Run]** (実行) ボックスに `resmon` と入力してください。

1. [**OK**] を選択してください。これにより、[Resource Monitor] (リソースモニター) ウィンドウが開きます。

1. **[CPU]** タブを開きます。CPU ごとの使用率グラフは[Resource Monitor] (リソースモニター) ウィンドウの右側に表示されます。

1. CPU 0 の使用率レベルをチェックして、それらが高すぎるかどうかを確認します。

大きなインスタンスタイプ (16 vCPU より大きい) では ENA アダプタの CPU 0 を除外するように RSS を設定することをお勧めします。インスタンスタイプが小さい場合はRSS を設定するとエクスペリエンスが向上する可能性がありますが、使用可能なコア数が少なくなるため、CPU コアの制約がパフォーマンスに悪影響を及ぼさないようにするためのテストが必要です。

以下の例に示すように、**Set-NetAdapterRss** コマンドを使用して ENA アダプタの RSS を設定します。

```
Set-NetAdapterRss -name (Get-NetAdapter | Where-Object {$_.InterfaceDescription -like "*Elastic*"}).Name -Baseprocessorgroup 0 -BaseProcessorNumber 1
```

### 第 6 世代のインスタンスインフラストラクチャへの移行がパフォーマンスまたはアタッチメントに影響する
<a name="ts-ena-drv-6gen-instance-perf"></a>

#### 説明
<a name="ts-ena-drv-6gen-instance-perf-descr"></a>

第 6 世代の EC2 インスタンスに移行すると、ENA Windows ドライバーのバージョンを更新していない場合、パフォーマンスが低下したり、ENA アタッチメントエラーが発生したりする可能性があります。

#### 原因
<a name="ts-ena-drv-6gen-instance-perf-cause"></a>

インスタンスのオペレーティングシステム (OS) に基づき、第 6 世代の EC2 インスタンスタイプには次の ENA Windows ドライバーの最小バージョンが必要です。


**最小バージョン**  

| Windows サーバー バージョン | ENA ドライバーバージョン | 
| --- | --- | 
|  Windows サーバー 2008 R2  |  2.2.3 または 2.4.0  | 
|  Windows サーバー 2012 以降  |  2.2.3 以降  | 
|  Windows ワークステーション  |  2.2.3 以降  | 

#### ソリューション
<a name="ts-ena-drv-6gen-instance-perf-solution"></a>

第 6 世代の EC2 インスタンスにアップグレードする前に、起動する AMI に前の表に示したインスタンス OS に基づく互換性のあるドライバーがあることを確認してください。詳細についてはAWS re:Post「ナレッジセンター」の[「ネットワークのパフォーマンスを最大限に引き出すにはEC2 インスタンスを第 6 世代インスタンスに移行する前、何をする必要がありますか?」](https://repost.aws/knowledge-center/migrate-to-gen6-ec2-instance)を参照してください。

### Elastic Network Interface の最適でないパフォーマンス
<a name="ts-ena-drv-interface-perf"></a>

#### 説明
<a name="ts-ena-drv-interface-perf-descr"></a>

ENA インターフェイスが期待どおりに動作していません。

#### 原因
<a name="ts-ena-drv-interface-perf-cause"></a>

パフォーマンス問題の根本原因の分析は消去プロセスです。関連する変数が多すぎて一般的な原因を挙げることはできません。

#### ソリューション
<a name="ts-ena-drv-interface-perf-solution"></a>

根本原因の分析の最初のステップとして、期待どおりに動作していないインスタンスの診断情報を確認し、問題の原因となっている可能性のあるエラーがあるかどうかを判断します。詳細については「[インスタンスの診断情報を収集する](#ts-ena-drv-collect-diagnostics)」セクションを参照してください。

ネットワーキングが拡張されたインスタンスで最大のネットワークパフォーマンスを実現するにはデフォルトのオペレーティングシステムの設定を変更することが必要になる場合があります。いくつかの最適化 (チェックサムオフロードをオンにして RSS を有効にするなど) は公式の Windows AMI でデフォルトで設定されています。ENA アダプタに適用できるその他の最適化については「[ENA アダプタのパフォーマンス調整](#ts-ena-drv-perf-adj)」に示すパフォーマンス調整を参照してください。

慎重に作業を進め、デバイスプロパティの調整を、このセクションに記載されている内容や、AWS サポートチームが推奨する特定の変更に限定することをお勧めします。

ENA アダプタのプロパティを変更するには次のステップに従います。

1. 前のセクションで説明されているいずれかの方法を使用して **[Run]** (実行) ダイアログを開きます。

1. Windows デバイスマネージャーを開くには**[Run]** (実行) ボックスに `devmgmt.msc` と入力してください。

1. [**OK**] を選択してください。デバイスマネージャーウィンドウが開きます。

1. **[ネットワークアダプター]** の左側にある矢印を選択してリストを展開します。

1. 名前を選択するか、**[Amazonエラスティックネットワークアダプター]** のコンテキストメニューを開き、**[プロパティ]** を選択してください。これにより、**[Amazon エラスティックネットワークアダプタ のプロパティ]** ダイアログが開きます。

1. 変更するには**[詳細設定]** タブを開きます。

1. 完了したら、**[OK]** を選択して変更を保存します。

次の例はWindows デバイスマネージャーの ENA アダプタプロパティを示しています。

![\[例: Windows デバイスマネージャーに表示される ENA アダプタプロパティ。\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/ena-adapter-device-mgr-property.png)


##### ENA アダプタのパフォーマンス調整
<a name="ts-ena-drv-perf-adj"></a>

次の表に、ENA インターフェイスのパフォーマンスを向上させるために調整できるプロパティを示します。


**Input**  

| プロパティ | 説明 | デフォルトの値 | 調整 | 
| --- | --- | --- | --- | 
|  Receive Buffers  |  ソフトウェア受信キューのエントリ数を制御します。  |  1024  |  最大 8192 まで増やすことができます。  | 
|  Receive Side Scaling (RSS)  |  マルチプロセッサシステムの複数の CPU 間でネットワーク受信処理を効率的に配分できます。  |  有効  |  負荷を複数のプロセッサに分散させることができます。詳細については[EC2 Windows インスタンスでのネットワークパフォーマンスを最適化する](enhanced-networking-os.md)を参照してください。  | 
|  RSS キューの最大数  |  `RSS` が有効な場合に許可する RSS キューの最大数を設定します。  |  32  |  RSS キューの数はドライバーの初期化中に決定され、(特に) 次のような制限があります。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/troubleshoot-ena-driver.html) インスタンスとハードウェアの世代の制限に応じて、値を 1～32 に設定できます。詳細については[EC2 Windows インスタンスでのネットワークパフォーマンスを最適化する](enhanced-networking-os.md)を参照してください。  | 
|  Jumbo packet  |  ジャンボイーサネットフレーム (1500 バイトを超えるペイロード) の使用を有効にします。  |  無効 (ペイロードは 1500 バイト以下に制限されます)  |  値は最大 `9015` まで設定できます。これは 9001 バイトのペイロードに相当します。これがジャンボイーサネットフレームの最大ペイロードとなります。[ジャンボイーサネットフレームの使用に関する考慮事項](#ts-ena-drv-jumbo-frames)を参照してください。  | 

##### ジャンボイーサネットフレームの使用に関する考慮事項
<a name="ts-ena-drv-jumbo-frames"></a>

ジャンボフレームではパケットあたりのペイロードサイズを拡張し、パケットオーバーヘッド以外のパケットの割合を高めることによって、1500 バイトを超えるデータを送信できます。同じ量の使用可能なデータを少ないパケットで送信することができます。ただし次の場合にはトラフィックの MTU は最大 1500 に制限されます。
+ EC2 Classic 用の特定の AWS リージョン外部にあるトラフィック
+ 単一の VPC の外部にあるトラフィック
+ リージョン間 VPC ピアリング接続経由のトラフィック
+ VPN 接続経由のトラフィック
+ インターネットゲートウェイ経由のトラフィック

**注記**  
1500 バイトを超えるパケットはフラグメント化されます。IP ヘッダーに `Don't Fragment` フラグが設定されている場合、それらのパケットはドロップされます。  
ジャンボフレームを、インターネットバウンドトラフィックや VPC を出るトラフィックに使用する場合には慎重に行ってください。パケットは中間システムによってフラグメント化されるため、このトラフィックの速度が低下します。VPC から出るアウトバウンドトラフィックに影響を与えずに VPC 内でジャンボフレームを使用するには次のいずれかのオプションを試してください。  
ルートごとに MTU サイズを設定します。
異なる MTU サイズと異なるルートを持つ複数のネットワークインターフェイスを使用します。

**ジャンボフレームの推奨ユースケース**  
ジャンボフレームはVPC 内および VPC 間のトラフィックに役立ちます。次のユースケースにはジャンボフレームを使用することをお勧めします。
+ クラスタープレイスメントグループ内にコロケーションされたインスタンスでは考えられる最大のネットワークスループットを実現するうえでジャンボフレームが役立ちます。詳細については[Amazon EC2 インスタンスのプレイスメントグループ](placement-groups.md)を参照してください。
+ Direct Connect を経由した VPC とオンプレミスのネットワーク間のトラフィックにはジャンボフレームを使用できます。Direct Connect の使用、およびジャンボフレーム機能の検証の詳細についてはDirect Connect 「ユーザーガイド」**の[「プライベート仮想インターフェイスまたはトランジット仮想インターフェイスのネットワーク MTU の設定」](https://docs.aws.amazon.com/directconnect/latest/UserGuide/WorkingWithVirtualInterfaces.html#set-jumbo-frames-vif.html)を参照してください。
+ トランジットゲートウェイでサポートされる MTU サイズの詳細については[「Amazon VPC トランジットゲートウェイ」](https://docs.aws.amazon.com/vpc/latest/tgw/transit-gateway-quotas.html#mtu-quota)の*「トランジットゲートウェイ のクォータ」*を参照してください。

# ENA Express を使用して EC2 インスタンス間のネットワークパフォーマンスを高める
<a name="ena-express"></a>

ENA Express は、AWS スケーラブルで信頼性の高いデータグラム (SRD) テクノロジーを搭載しています。SRD は、動的ルーティングを使用してスループットを向上させ、テールレイテンシーを最小限に抑える高性能なネットワークトランスポートプロトコルです。ENA Express を使用すると、同じアベイラビリティゾーン内の 2 つの EC2 インスタンス間で通信できます。

**ENA Express の利点**
+ アベイラビリティーゾーン内で 1 つのフローで使用できる集約インスタンスの制限までの最大帯域幅を、5 Gbps から 25 Gbps に拡大します。
+ 特にネットワーク負荷が高い期間に、EC2 インスタンス間のネットワークトラフィックのテールレイテンシーを短縮します。
+ 混雑したネットワークパスを検出して回避します。
+ 受信側でのパケットの並べ替えや、必要とされるほとんどの再送信など、一部のタスクをネットワーク層で直接処理します。これにより、アプリケーション層が解放され、他の作業に充てることができるようになります。

**注記**  
アプリケーションが 1 秒間に大量のパケットを送受信し、ほとんどの場合、特にネットワークに輻輳がない時間帯にレイテンシーを最適化する必要がある場合は、[拡張ネットワーク](enhanced-networking.md) の方がネットワークに適している場合があります。
ローカルゾーン内で ENA Express トラフィックを送信することはできません。

インスタンスのネットワークインターフェイスアタッチメントで ENA Express を有効にした後、送信側インスタンスは受信側インスタンスとの通信を開始し、SRD は 送信側インスタンスと受信側インスタンスの両方で ENA Express が動作しているかどうかを検出します。ENA Express が動作している場合、通信に SRD 送信を使用できます。ENA Express が動作していない場合、通信は標準の ENA 送信にフォールバックします。

ネットワークトラフィックが少ない時間帯に、パケットが ENA Express を使用すると、パケットのレイテンシーがわずかに増加することがあります (数十マイクロ秒)。このような場合、特定のネットワークパフォーマンス特性を優先するアプリケーションには、次のような ENA Express の利点があります。
+ プロセスは、集約インスタンスの制限までの同じアベイラビリティゾーン内におけるシングルフローの最大帯域幅を 5 Gbps から 25 Gbps に拡大するという利点を得られます。例えば、特定のインスタンスタイプが最大 12.5 Gbps までサポートする場合、シングルフローの帯域幅も 12.5 Gbps までに制限されます。
+ 実行時間が長いプロセスでは、ネットワークが混雑している間のテールレイテンシーが減少するはずです。
+ プロセスには、ネットワークの応答時間をよりスムーズに、より標準的にディストリビューションできるという利点があります。

**Topics**
+ [ENA Express の仕組み](#ena-express-how-it-works)
+ [ENA Express でサポートされるインスタンスタイプ](#ena-express-supported-instance-types)
+ [Linux インスタンスの前提条件](#ena-express-prereq-linux)
+ [Linux インスタンスで ENA Express 設定のパフォーマンスをチューニングする](#ena-express-tune)
+ [EC2 インスタンスの ENA Express 設定を確認する](ena-express-list-view.md)
+ [ご使用の EC2 インスタンスに適した ENA Express を設定する](ena-express-configure.md)

## ENA Express の仕組み
<a name="ena-express-how-it-works"></a>

ENA Express は、AWS スケーラブルで信頼性の高いデータグラム (SRD) テクノロジーを搭載しています。各ネットワークフローのパケットをさまざまな AWS ネットワークパスに分散し、輻輳の兆候を検出すると配信を動的に調整します。また、受信側でのパケットの並べ替えも管理します。

ENA Express がネットワークトラフィックを意図したとおりに管理できるようにするには、送受信インスタンスと受信側インスタンス間の通信が次の要件をすべて満たしている必要があります。
+ 送信側と受信側の両方のインスタンスタイプがサポートされています。詳細については、[ENA Express でサポートされるインスタンスタイプ](#ena-express-supported-instance-types)の表を参照してください。
+ 送信側と受信側の両方のインスタンスに ENA Express が設定されている必要があります。設定に違いがあると、トラフィックがデフォルトで標準の ENA 送信になる状況が発生する可能性があります。発生し得る状況を次のシナリオで説明します。

  **シナリオ: 設定の違い**    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ena-express.html)

  この場合、2 つのインスタンスが ENA Express を有効にするので、両方のインスタンス間の TCP トラフィックで、ENA Express を使用できます。ただし、一方のインスタンスは UDP トラフィックに ENA Express を使用しないため、これら 2 つのインスタンス間の UDP 経由の通信には標準の ENA 送信が使用されます。
+ 送信側と受信側のインスタンスは同じアベイラビリティゾーンで実行する必要があります。
+ インスタンス間のネットワークパスには、ミドルウェアボックスを含めないようにしてください。ENA Express は現在、ミドルウェアボックスをサポートしていません。
+ (Linux インスタンスのみ) 帯域幅を最大限に活用するには、ドライバーバージョン 2.2.9 以降を使用します。
+ (Linux インスタンスのみ) メトリクスを生成するには、ドライバーバージョン 2.8 以降を使用します。

いずれかの要件が満たされていない場合、インスタンスは標準の TCP/UDP プロトコルを使用して通信しますが、SRD は使用しません。

インスタンスのネットワークドライバーが最適なパフォーマンスを発揮できるように構成するには、ENA ドライバーの推奨ベストプラクティスを確認してください。これらのベストプラクティスは ENA Express にも当てはまります。詳細については、GitHub ウェブサイトの「[ENA Linux ドライバーのベストプラクティスとパフォーマンス最適化ガイド](https://github.com/amzn/amzn-drivers/blob/master/kernel/linux/ena/ENA_Linux_Best_Practices.rst)」を参照してください。

**注記**  
Amazon EC2 では、インスタンスとそれにアタッチされたネットワークインターフェイスとの関係をアタッチメントと呼びます。ENA Express の設定がアタッチメントに適用されます。ネットワークインターフェースがインスタンスからデタッチされると、アタッチメントは存在しなくなり、そのアタッチメントに適用されていた ENA Express 設定は無効になります。ネットワークインターフェースが残っていても、インスタンスが終了した場合、同様になります。

送信側と受信側の両方のインスタンスでネットワークインターフェイスをアタッチできるように ENA Express を有効にすると、インスタンスが SRD テクノロジーで実現されるパフォーマンス向上を全面的に享受できることを、ENA Express メトリクスを使用して容易に確認できます。ENA Express のメトリクスに関する詳細は、[ENA Express のメトリクス](monitoring-network-performance-ena.md#network-performance-metrics-ena-express)を参照してください。

## ENA Express でサポートされるインスタンスタイプ
<a name="ena-express-supported-instance-types"></a>

次のインスタンスタイプが ENA Express をサポートしています。

------
#### [ General purpose ]


| インスタンスタイプ | アーキテクチャ | 
| --- | --- | 
| m6a.12xlarge | x86\$164 | 
| m6a.16xlarge | x86\$164 | 
| m6a.24xlarge | x86\$164 | 
| m6a.32xlarge | x86\$164 | 
| m6a.48xlarge | x86\$164 | 
| m6a.metal | x86\$164 | 
| m6i.8xlarge | x86\$164 | 
| m6i.12xlarge | x86\$164 | 
| m6i.16xlarge | x86\$164 | 
| m6i.24xlarge | x86\$164 | 
| m6i.32xlarge | x86\$164 | 
| m6i.metal | x86\$164 | 
| m6id.8xlarge | x86\$164 | 
| m6id.12xlarge | x86\$164 | 
| m6id.16xlarge | x86\$164 | 
| m6id.24xlarge | x86\$164 | 
| m6id.32xlarge | x86\$164 | 
| m6id.metal | x86\$164 | 
| m6idn.8xlarge | x86\$164 | 
| m6idn.12xlarge | x86\$164 | 
| m6idn.16xlarge | x86\$164 | 
| m6idn.24xlarge | x86\$164 | 
| m6idn.32xlarge | x86\$164 | 
| m6idn.metal | x86\$164 | 
| m6in.8xlarge | x86\$164 | 
| m6in.12xlarge | x86\$164 | 
| m6in.16xlarge | x86\$164 | 
| m6in.24xlarge | x86\$164 | 
| m6in.32xlarge | x86\$164 | 
| m6in.metal | x86\$164 | 
| m7a.12xlarge | x86\$164 | 
| m7a.16xlarge | x86\$164 | 
| m7a.24xlarge | x86\$164 | 
| m7a.32xlarge | x86\$164 | 
| m7a.48xlarge | x86\$164 | 
| m7a.metal-48xl | x86\$164 | 
| m7g.12xlarge | arm64 | 
| m7g.16xlarge | arm64 | 
| m7g.metal | arm64 | 
| m7gd.12xlarge | arm64 | 
| m7gd.16xlarge | arm64 | 
| m7gd.metal | arm64 | 
| m7i.12xlarge | x86\$164 | 
| m7i.16xlarge | x86\$164 | 
| m7i.24xlarge | x86\$164 | 
| m7i.48xlarge | x86\$164 | 
| m7i.metal-24xl | x86\$164 | 
| m7i.metal-48xl | x86\$164 | 
| m8a.16xlarge | x86\$164 | 
| m8a.24xlarge | x86\$164 | 
| m8a.48xlarge | x86\$164 | 
| m8a.metal-24xl | x86\$164 | 
| m8a.metal-48xl | x86\$164 | 
| m8azn.12xlarge | x86\$164 | 
| m8azn.24xlarge | x86\$164 | 
| m8azn.metal-12xl | x86\$164 | 
| m8azn.metal-24xl | x86\$164 | 
| m8g.12xlarge | arm64 | 
| m8g.16xlarge | arm64 | 
| m8g.24xlarge | arm64 | 
| m8g.48xlarge | arm64 | 
| m8g.metal-24xl | arm64 | 
| m8g.metal-48xl | arm64 | 
| m8gb.8xlarge | arm64 | 
| m8gb.12xlarge | arm64 | 
| m8gb.16xlarge | arm64 | 
| m8gb.24xlarge | arm64 | 
| m8gb.48xlarge | arm64 | 
| m8gb.metal-24xl | arm64 | 
| m8gb.metal-48xl | arm64 | 
| m8gd.12xlarge | arm64 | 
| m8gd.16xlarge | arm64 | 
| m8gd.24xlarge | arm64 | 
| m8gd.48xlarge | arm64 | 
| m8gd.metal-24xl | arm64 | 
| m8gd.metal-48xl | arm64 | 
| m8gn.8xlarge | arm64 | 
| m8gn.12xlarge | arm64 | 
| m8gn.16xlarge | arm64 | 
| m8gn.24xlarge | arm64 | 
| m8gn.48xlarge | arm64 | 
| m8gn.metal-24xl | arm64 | 
| m8gn.metal-48xl | arm64 | 
| m8i.24xlarge | x86\$164 | 
| m8i.32xlarge | x86\$164 | 
| m8i.48xlarge | x86\$164 | 
| m8i.96xlarge | x86\$164 | 
| m8i.metal-48xl | x86\$164 | 
| m8i.metal-96xl | x86\$164 | 
| m8id.24xlarge | x86\$164 | 
| m8id.32xlarge | x86\$164 | 
| m8id.48xlarge | x86\$164 | 
| m8id.96xlarge | x86\$164 | 
| m8id.metal-48xl | x86\$164 | 
| m8id.metal-96xl | x86\$164 | 

------
#### [ Compute optimized ]


| インスタンスタイプ | アーキテクチャ | 
| --- | --- | 
| c6a.12xlarge | x86\$164 | 
| c6a.16xlarge | x86\$164 | 
| c6a.24xlarge | x86\$164 | 
| c6a.32xlarge | x86\$164 | 
| c6a.48xlarge | x86\$164 | 
| c6a.metal | x86\$164 | 
| c6gn.4xlarge | arm64 | 
| c6gn.8xlarge | arm64 | 
| c6gn.12xlarge | arm64 | 
| c6gn.16xlarge | arm64 | 
| c6i.8xlarge | x86\$164 | 
| c6i.12xlarge | x86\$164 | 
| c6i.16xlarge | x86\$164 | 
| c6i.24xlarge | x86\$164 | 
| c6i.32xlarge | x86\$164 | 
| c6i.metal | x86\$164 | 
| c6id.8xlarge | x86\$164 | 
| c6id.12xlarge | x86\$164 | 
| c6id.16xlarge | x86\$164 | 
| c6id.24xlarge | x86\$164 | 
| c6id.32xlarge | x86\$164 | 
| c6id.metal | x86\$164 | 
| c6in.8xlarge | x86\$164 | 
| c6in.12xlarge | x86\$164 | 
| c6in.16xlarge | x86\$164 | 
| c6in.24xlarge | x86\$164 | 
| c6in.32xlarge | x86\$164 | 
| c6in.metal | x86\$164 | 
| c7a.12xlarge | x86\$164 | 
| c7a.16xlarge | x86\$164 | 
| c7a.24xlarge | x86\$164 | 
| c7a.32xlarge | x86\$164 | 
| c7a.48xlarge | x86\$164 | 
| c7a.metal-48xl | x86\$164 | 
| c7g.12xlarge | arm64 | 
| c7g.16xlarge | arm64 | 
| c7g.metal | arm64 | 
| c7gd.12xlarge | arm64 | 
| c7gd.16xlarge | arm64 | 
| c7gd.metal | arm64 | 
| c7gn.4xlarge | arm64 | 
| c7gn.8xlarge | arm64 | 
| c7gn.12xlarge | arm64 | 
| c7gn.16xlarge | arm64 | 
| c7gn.metal | arm64 | 
| c7i.12xlarge | x86\$164 | 
| c7i.16xlarge | x86\$164 | 
| c7i.24xlarge | x86\$164 | 
| c7i.48xlarge | x86\$164 | 
| c7i.metal-24xl | x86\$164 | 
| c7i.metal-48xl | x86\$164 | 
| c8a.16xlarge | x86\$164 | 
| c8a.24xlarge | x86\$164 | 
| c8a.48xlarge | x86\$164 | 
| c8a.metal-24xl | x86\$164 | 
| c8a.metal-48xl | x86\$164 | 
| c8g.12xlarge | arm64 | 
| c8g.16xlarge | arm64 | 
| c8g.24xlarge | arm64 | 
| c8g.48xlarge | arm64 | 
| c8g.metal-24xl | arm64 | 
| c8g.metal-48xl | arm64 | 
| c8gb.8xlarge | arm64 | 
| c8gb.12xlarge | arm64 | 
| c8gb.16xlarge | arm64 | 
| c8gb.24xlarge | arm64 | 
| c8gb.48xlarge | arm64 | 
| c8gb.metal-24xl | arm64 | 
| c8gb.metal-48xl | arm64 | 
| c8gd.12xlarge | arm64 | 
| c8gd.16xlarge | arm64 | 
| c8gd.24xlarge | arm64 | 
| c8gd.48xlarge | arm64 | 
| c8gd.metal-24xl | arm64 | 
| c8gd.metal-48xl | arm64 | 
| c8gn.8xlarge | arm64 | 
| c8gn.12xlarge | arm64 | 
| c8gn.16xlarge | arm64 | 
| c8gn.24xlarge | arm64 | 
| c8gn.48xlarge | arm64 | 
| c8gn.metal-24xl | arm64 | 
| c8gn.metal-48xl | arm64 | 
| c8i.24xlarge | x86\$164 | 
| c8i.32xlarge | x86\$164 | 
| c8i.48xlarge | x86\$164 | 
| c8i.96xlarge | x86\$164 | 
| c8i.metal-48xl | x86\$164 | 
| c8i.metal-96xl | x86\$164 | 
| c8id.24xlarge | x86\$164 | 
| c8id.32xlarge | x86\$164 | 
| c8id.48xlarge | x86\$164 | 
| c8id.96xlarge | x86\$164 | 
| c8id.metal-48xl | x86\$164 | 
| c8id.metal-96xl | x86\$164 | 

------
#### [ Memory optimized ]


| インスタンスタイプ | アーキテクチャ | 
| --- | --- | 
| r6a.12xlarge | x86\$164 | 
| r6a.16xlarge | x86\$164 | 
| r6a.24xlarge | x86\$164 | 
| r6a.32xlarge | x86\$164 | 
| r6a.48xlarge | x86\$164 | 
| r6a.metal | x86\$164 | 
| r6i.8xlarge | x86\$164 | 
| r6i.12xlarge | x86\$164 | 
| r6i.16xlarge | x86\$164 | 
| r6i.24xlarge | x86\$164 | 
| r6i.32xlarge | x86\$164 | 
| r6i.metal | x86\$164 | 
| r6id.8xlarge | x86\$164 | 
| r6id.12xlarge | x86\$164 | 
| r6id.16xlarge | x86\$164 | 
| r6id.24xlarge | x86\$164 | 
| r6id.32xlarge | x86\$164 | 
| r6id.metal | x86\$164 | 
| r6idn.8xlarge | x86\$164 | 
| r6idn.12xlarge | x86\$164 | 
| r6idn.16xlarge | x86\$164 | 
| r6idn.24xlarge | x86\$164 | 
| r6idn.32xlarge | x86\$164 | 
| r6idn.metal | x86\$164 | 
| r6in.8xlarge | x86\$164 | 
| r6in.12xlarge | x86\$164 | 
| r6in.16xlarge | x86\$164 | 
| r6in.24xlarge | x86\$164 | 
| r6in.32xlarge | x86\$164 | 
| r6in.metal | x86\$164 | 
| r7a.12xlarge | x86\$164 | 
| r7a.16xlarge | x86\$164 | 
| r7a.24xlarge | x86\$164 | 
| r7a.32xlarge | x86\$164 | 
| r7a.48xlarge | x86\$164 | 
| r7a.metal-48xl | x86\$164 | 
| r7g.12xlarge | arm64 | 
| r7g.16xlarge | arm64 | 
| r7g.metal | arm64 | 
| r7gd.12xlarge | arm64 | 
| r7gd.16xlarge | arm64 | 
| r7gd.metal | arm64 | 
| r7i.12xlarge | x86\$164 | 
| r7i.16xlarge | x86\$164 | 
| r7i.24xlarge | x86\$164 | 
| r7i.48xlarge | x86\$164 | 
| r7i.metal-24xl | x86\$164 | 
| r7i.metal-48xl | x86\$164 | 
| r7iz.8xlarge | x86\$164 | 
| r7iz.12xlarge | x86\$164 | 
| r7iz.16xlarge | x86\$164 | 
| r7iz.32xlarge | x86\$164 | 
| r7iz.metal-16xl | x86\$164 | 
| r7iz.metal-32xl | x86\$164 | 
| r8a.16xlarge | x86\$164 | 
| r8a.24xlarge | x86\$164 | 
| r8a.48xlarge | x86\$164 | 
| r8a.metal-24xl | x86\$164 | 
| r8a.metal-48xl | x86\$164 | 
| r8g.12xlarge | arm64 | 
| r8g.16xlarge | arm64 | 
| r8g.24xlarge | arm64 | 
| r8g.48xlarge | arm64 | 
| r8g.metal-24xl | arm64 | 
| r8g.metal-48xl | arm64 | 
| r8gb.8xlarge | arm64 | 
| r8gb.12xlarge | arm64 | 
| r8gb.16xlarge | arm64 | 
| r8gb.24xlarge | arm64 | 
| r8gb.48xlarge | arm64 | 
| r8gb.metal-24xl | arm64 | 
| r8gb.metal-48xl | arm64 | 
| r8gd.12xlarge | arm64 | 
| r8gd.16xlarge | arm64 | 
| r8gd.24xlarge | arm64 | 
| r8gd.48xlarge | arm64 | 
| r8gd.metal-24xl | arm64 | 
| r8gd.metal-48xl | arm64 | 
| r8gn.8xlarge | arm64 | 
| r8gn.12xlarge | arm64 | 
| r8gn.16xlarge | arm64 | 
| r8gn.24xlarge | arm64 | 
| r8gn.48xlarge | arm64 | 
| r8gn.metal-24xl | arm64 | 
| r8gn.metal-48xl | arm64 | 
| r8i.24xlarge | x86\$164 | 
| r8i.32xlarge | x86\$164 | 
| r8i.48xlarge | x86\$164 | 
| r8i.96xlarge | x86\$164 | 
| r8i.metal-48xl | x86\$164 | 
| r8i.metal-96xl | x86\$164 | 
| r8id.24xlarge | x86\$164 | 
| r8id.32xlarge | x86\$164 | 
| r8id.48xlarge | x86\$164 | 
| r8id.96xlarge | x86\$164 | 
| r8id.metal-48xl | x86\$164 | 
| r8id.metal-96xl | x86\$164 | 
| u7i-6tb.112xlarge | x86\$164 | 
| u7i-8tb.112xlarge | x86\$164 | 
| u7i-12tb.224xlarge | x86\$164 | 
| u7in-16tb.224xlarge | x86\$164 | 
| u7in-24tb.224xlarge | x86\$164 | 
| u7in-32tb.224xlarge | x86\$164 | 
| u7inh-32tb.480xlarge | x86\$164 | 
| x2idn.16xlarge | x86\$164 | 
| x2idn.24xlarge | x86\$164 | 
| x2idn.32xlarge | x86\$164 | 
| x2idn.metal | x86\$164 | 
| x2iedn.8xlarge | x86\$164 | 
| x2iedn.16xlarge | x86\$164 | 
| x2iedn.24xlarge | x86\$164 | 
| x2iedn.32xlarge | x86\$164 | 
| x2iedn.metal | x86\$164 | 
| x8g.12xlarge | arm64 | 
| x8g.16xlarge | arm64 | 
| x8g.24xlarge | arm64 | 
| x8g.48xlarge | arm64 | 
| x8g.metal-24xl | arm64 | 
| x8g.metal-48xl | arm64 | 
| x8aedz.24xlarge | x86\$164 | 
| x8aedz.metal-24xl | x86\$164 | 
| x8i.24xlarge | x86\$164 | 
| x8i.32xlarge | x86\$164 | 
| x8i.48xlarge | x86\$164 | 
| x8i.64xlarge | x86\$164 | 
| x8i.96xlarge | x86\$164 | 
| x8i.metal-48xl | x86\$164 | 
| x8i.metal-96xl | x86\$164 | 

------
#### [ Accelerated computing ]


| インスタンスタイプ | アーキテクチャ | 
| --- | --- | 
| g6.48xlarge | x86\$164 | 
| g6e.12xlarge | x86\$164 | 
| g6e.24xlarge | x86\$164 | 
| g6e.48xlarge | x86\$164 | 
| g7e.12xlarge | x86\$164 | 
| g7e.24xlarge | x86\$164 | 
| g7e.48xlarge | x86\$164 | 
| p5.4xlarge | x86\$164 | 
| p5.48xlarge | x86\$164 | 
| p5e.48xlarge | x86\$164 | 
| p5en.48xlarge | x86\$164 | 
| p6-b200.48xlarge | x86\$164 | 
| p6-b300.48xlarge | x86\$164 | 

------
#### [ Storage optimized ]


| インスタンスタイプ | アーキテクチャ | 
| --- | --- | 
| i4g.4xlarge | arm64 | 
| i4g.8xlarge | arm64 | 
| i4g.16xlarge | arm64 | 
| i4i.8xlarge | x86\$164 | 
| i4i.12xlarge | x86\$164 | 
| i4i.16xlarge | x86\$164 | 
| i4i.24xlarge | x86\$164 | 
| i4i.32xlarge | x86\$164 | 
| i4i.metal | x86\$164 | 
| i7i.12xlarge | x86\$164 | 
| i7i.16xlarge | x86\$164 | 
| i7i.24xlarge | x86\$164 | 
| i7i.48xlarge | x86\$164 | 
| i7i.metal-24xl | x86\$164 | 
| i7i.metal-48xl | x86\$164 | 
| i7ie.12xlarge | x86\$164 | 
| i7ie.18xlarge | x86\$164 | 
| i7ie.24xlarge | x86\$164 | 
| i7ie.48xlarge | x86\$164 | 
| i7ie.metal-24xl | x86\$164 | 
| i7ie.metal-48xl | x86\$164 | 
| i8g.12xlarge | arm64 | 
| i8g.16xlarge | arm64 | 
| i8g.24xlarge | arm64 | 
| i8g.48xlarge | arm64 | 
| i8g.metal-24xl | arm64 | 
| i8g.metal-48xl | arm64 | 
| i8ge.12xlarge | arm64 | 
| i8ge.18xlarge | arm64 | 
| i8ge.24xlarge | arm64 | 
| i8ge.48xlarge | arm64 | 
| i8ge.metal-24xl | arm64 | 
| i8ge.metal-48xl | arm64 | 
| im4gn.4xlarge | arm64 | 
| im4gn.8xlarge | arm64 | 
| im4gn.16xlarge | arm64 | 

------

## Linux インスタンスの前提条件
<a name="ena-express-prereq-linux"></a>

ENA Express を効果的に動作させるには、以下のように Linux インスタンスの設定を更新します。
+ インスタンスでジャンボフレームを使用している場合は、次のコマンドを実行して最大送信単位 (MTU) を `8900` に設定します。

  ```
  [ec2-user ~]$ sudo ip link set dev eth0 mtu 8900
  ```
+ 受信側 (Rx) のリングサイズを次のように大きくします。

  ```
  [ec2-user ~]$ ethtool -G device rx 8192
  ```
+ ENA Expressの帯域幅を最大化するには、TCP キュー制限を次のように設定します。

  1. TCP の小規模なキューの制限を 1 MB 以上に設定します。これにより、ソケット上で送信キューのデータが増えます。

     ```
     sudo sh -c 'echo 1048576 > /proc/sys/net/ipv4/tcp_limit_output_bytes'
     ```

  1. お使いの Linux ディストリビューションで eth デバイスのバイトキュー制限が有効になっている場合は、それを無効にしてください。これにより、デバイスキューの送信待ちのデータが増加します。

     ```
     sudo sh -c 'for txq in /sys/class/net/eth0/queues/tx-*; do echo max > ${txq}/byte_queue_limits/limit_min; done'
     ```
**注記**  
Amazon Linux ディストリビューションの ENA ドライバーは、デフォルトでバイトキュー制限を無効にします。
+ ENA Express TCP トラフィックの遅延を最小限に抑えるには、TCP 自動コーキング機能を無効にします。これにより、パケットオーバーヘッドがわずかに増加する可能性があります。

  ```
  sudo bash -c 'echo 0 > /proc/sys/net/ipv4/tcp_autocorking'
  ```

## Linux インスタンスで ENA Express 設定のパフォーマンスをチューニングする
<a name="ena-express-tune"></a>

Linux インスタンス構成で ENA Express の最適なパフォーマンスを確認するには、Amazon GitHub リポジトリにある次のスクリプトを実行します。

[https://github.com/amzn/amzn-ec2-ena-utilities/blob/main/ena-express/check-ena-express-settings.sh](https://github.com/amzn/amzn-ec2-ena-utilities/blob/main/ena-express/check-ena-express-settings.sh)

このスクリプトは一連のテストを実行し、推奨設定変更および必須設定変更を提案します。

# EC2 インスタンスの ENA Express 設定を確認する
<a name="ena-express-list-view"></a>

ENA Express 設定は、インスタンスまたはネットワークインターフェイスで確認できます。ENA Express 設定を更新するには、[ご使用の EC2 インスタンスに適した ENA Express を設定する](ena-express-configure.md)を参照してください。

------
#### [ Console ]

**ネットワークインターフェイスの ENA Express 設定を表示するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. 左側のナビゲーションペインで、**[ネットワークインターフェース]** を選択してください。

1. ネットワークインターフェイスを選択すると、そのインスタンスの詳細が表示されます。**[ネットワークインターフェース ID]** リンクを選択して詳細ページを開くか、リストの左側のチェックボックスを選択してページ下部の詳細ペインで詳細を表示できます。

1. **[詳細]** タブまたは詳細ページの **[ネットワークインターフェイスのアタッチメント]** セクションで、**[ENA Express]** と **[ENA Express UDP]** の設定を確認します。

**インスタンスの ENA Express 設定を表示するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. 左のナビゲーションペインで、**[インスタンス]** をクリックしてください。

1. インスタンスを選択すると、そのインスタンスの詳細が表示されます。**[インスタンス ID]** リンクを選択して詳細ページを開くことも、リストの左側のチェックボックスを選択してページ下部の詳細ペインに詳細を表示することもできます。

1. **[ネットワーキング]** タブの **[ネットワークインターフェース]** セクションを右にスクロールして **[ENA Express]** と **[ENA Express UDP]** の設定を確認します。

------
#### [ AWS CLI ]

**インスタンスの ENA Express 設定を取得するには**  
[https://docs.aws.amazon.com/cli/latest/reference/describe-instances.html](https://docs.aws.amazon.com/cli/latest/reference/describe-instances.html) コマンドを使用します。このコマンド例は、`--instance-ids` パラメータで指定された実行中の各インスタンスに接続されているネットワークインターフェイスの ENA Express 設定のリストを返します。

```
aws ec2 describe-instances \
    --instance-ids i-1234567890abcdef0 i-0598c7d356eba48d7 \
    --query 'Reservations[*].Instances[*].[InstanceId, NetworkInterfaces[*].Attachment.EnaSrdSpecification]'
```

以下は出力の例です。

```
[
    [
        [
            "i-1234567890abcdef0",
            [
                {
                    "EnaSrdEnabled": true,
                    "EnaSrdUdpSpecification": {
                        "EnaSrdUdpEnabled": false
                    }
                }
            ]
        ]
    ],
    [
        [
            "i-0598c7d356eba48d7",
            [
            {
                    "EnaSrdEnabled": true,
                    "EnaSrdUdpSpecification": {
                        "EnaSrdUdpEnabled": false
                    }
                }
            ]
        ]
    ]
]
```

**ネットワークインターフェイスの ENA Express 設定を取得するには**  
[https://docs.aws.amazon.com/cli/latest/reference/describe-network-interfaces.html](https://docs.aws.amazon.com/cli/latest/reference/describe-network-interfaces.html) コマンドを使用します。

```
aws ec2 describe-network-interfaces \
    --network-interface-ids eni-1234567890abcdef0 \
    --query NetworkInterfaces[].[NetworkInterfaceId,Attachment.EnaSrdSpecification]
```

以下は出力の例です。

```
[
    [
        "eni-1234567890abcdef0",
        {
            "EnaSrdEnabled": true,
            "EnaSrdUdpSpecification": {
                "EnaSrdUdpEnabled": false
            }
        }
    ]
]
```

------
#### [ PowerShell ]

**ネットワークインターフェイスの ENA Express 設定を取得するには**  
[https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2NetworkInterface.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2NetworkInterface.html) コマンドレットを使用します。

```
Get-EC2NetworkInterface `
    -NetworkInterfaceId eni-1234567890abcdef0 | `
Select-Object `
    Association, 
    NetworkInterfaceId, 
    OwnerId, 
    @{Name = 'AttachTime'; Expression = { $_.Attachment.AttachTime } },
    @{Name = 'AttachmentId'; Expression = { $_.Attachment.AttachmentId } },
    @{Name = 'DeleteOnTermination'; Expression = { $_.Attachment.DeleteOnTermination } },
    @{Name = 'NetworkCardIndex'; Expression = { $_.Attachment.NetworkCardIndex } },
    @{Name = 'InstanceId'; Expression = { $_.Attachment.InstanceId } },
    @{Name = 'InstanceOwnerId'; Expression = { $_.Attachment.InstanceOwnerId } },
    @{Name = 'Status'; Expression = { $_.Attachment.Status } },
    @{Name = 'EnaSrdEnabled'; Expression = { $_.Attachment.EnaSrdSpecification.EnaSrdEnabled } },
    @{Name = 'EnaSrdUdpEnabled'; Expression = { $_.Attachment.EnaSrdSpecification.EnaSrdUdpSpecification.EnaSrdUdpEnabled } }
```

以下は出力の例です。

```
Association         : 
NetworkInterfaceId  : eni-0d1234e5f6a78901b
OwnerId             : 111122223333
AttachTime          : 6/11/2022 1:13:11 AM
AttachmentId        : eni-attach-0d1234e5f6a78901b
DeleteOnTermination : True
NetworkCardIndex    : 0
InstanceId          : i-1234567890abcdef0
InstanceOwnerId     : 111122223333
Status              : attached
EnaSrdEnabled       : True
EnaSrdUdpEnabled    : False
```

------

# ご使用の EC2 インスタンスに適した ENA Express を設定する
<a name="ena-express-configure"></a>

ENA Express は、対応する EC2 インスタンスタイプに対して、追加のソフトウェアをインストールすることなく設定できます。詳細については、[ENA Express でサポートされるインスタンスタイプ](ena-express.md#ena-express-supported-instance-types)を参照してください。

------
#### [ Console ]

**ネットワークインターフェイスの ENA Express を管理するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. 左側のナビゲーションペインで、**[ネットワークインターフェース]** 　を選択してください。

1. インスタンスにアタッチされるネットワークインターフェースを指定します。**[ネットワークインターフェース ID]** リンクを選択して詳細ページを開くことも、リストの左側にあるチェックボックスを選択することもできます。

1. ページ右上の **[アクション]** メニューから **[ENA Express の管理]** を選択してください。これにより、選択したネットワークインターフェイス ID と現在の設定が表示された **[ENA Express の管理]** ダイアログが開きます。

   選択したネットワークインターフェースがインスタンスに接続されていない場合、このアクションはメニューに表示されません。

1. **[ENA Express]** を使用するには、**[有効化]** チェックボックスをオンにします。

1. ENA Express が有効になっている場合、UDP 設定を構成できます。**[ENA Express UDP]** を使用するには、**[有効化]** チェックボックスをオンにします。

1. 設定を保存するには **[保存]** を選択してください。

**インスタンスの ENA Express を管理するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. 左のナビゲーションペインで、**[インスタンス]** をクリックしてください。

1. 管理するインスタンスを選択してください。**[インスタンス ID]** を選択して詳細ページを開くか、リストの左側にあるチェックボックスを選択してください。

1. インスタンスに設定する**[ネットワークインターフェイス]** を選択してください。

1. ページ右上の **[アクション]** メニューから **[ENA Express の管理]** を選択してください。

1. インスタンスにアタッチされているネットワークインターフェイスに ENA Express を設定するには、**[ネットワークインターフェイス]** リストから選択してください。

1. 選択したネットワークインターフェイスアタッチメントに **[ENA Express]** を使用するには、**[有効化]** チェックボックスをオンにします。

1. ENA Express が有効になっている場合、UDP 設定を構成できます。**[ENA Express UDP]** を使用するには、**[有効化]** チェックボックスをオンにします。

1. 設定を保存するには **[保存]** を選択してください。

**ネットワークインターフェイスをアタッチする際に ENA Express を設定するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. 左側のナビゲーションペインで、**[ネットワークインターフェース]** を選択してください。

1. インスタンスにアタッチされていないネットワークインターフェイスを選択します (**[ステータス]** が **[利用可]** のもの)。**[ネットワークインターフェース ID]** リンクを選択して詳細ページを開くことも、リストの左側にあるチェックボックスを選択することもできます。

1. アタッチする **[インスタンス]** を選択してください。

1. ネットワークインターフェイスをインスタンスにアタッチした後に **[ENA Express]** を使用するには、**[有効化]** チェックボックスをオンにします。

1. ENA Express が有効になっている場合、UDP 設定を構成できます。**[ENA Express UDP]** を使用するには、**[有効化]** チェックボックスをオンにします。

1. ネットワークインターフェイスをインスタンスにアタッチし、ENA Express の設定を保存するには、**[アタッチ]** を選択してください。

------
#### [ AWS CLI ]

**ネットワークインターフェイスをアタッチする際に ENA Express を設定するには**  
次の例に示すように [https://docs.aws.amazon.com/cli/latest/reference/;attach-network-interface.html](https://docs.aws.amazon.com/cli/latest/reference/;attach-network-interface.html) コマンドを使用します。

**例 1: TCP トラフィックには ENA Express を使用するが、UDP トラフィックには使用しない**  
この例では、`EnaSrdEnabled` を `true` に設定し、`EnaSrdUdpEnabled` をデフォルトで `false` になるよう設定します。

```
aws ec2 attach-network-interface \
    --network-interface-id eni-1234567890abcdef0 \
    --instance-id i-1234567890abcdef0 \
    --device-index 1 \
    --ena-srd-specification 'EnaSrdEnabled=true'
```

**例 2: TCP トラフィックと UDP トラフィックの両方に ENA Express を使用する**  
この例では、`EnaSrdEnabled` と `EnaSrdUdpEnabled` の両方を `true` に設定します。

```
aws ec2 attach-network-interface \
    --network-interface-id eni-1234567890abcdef0 \
    --instance-id i-1234567890abcdef0 \
    --device-index 1 \
    --ena-srd-specification 'EnaSrdEnabled=true,EnaSrdUdpSpecification={EnaSrdUdpEnabled=true}'
```

**ネットワークインターフェイスアタッチメントの ENA Express 設定を更新するには**  
次の例に示すように [https://docs.aws.amazon.com/cli/latest/reference/modify-network-interface-attribute.html](https://docs.aws.amazon.com/cli/latest/reference/modify-network-interface-attribute.html) コマンドを使用します。

**例 1: TCP トラフィックには ENA Express を使用するが、UDP トラフィックには使用しない**  
この例では、`EnaSrdEnabled` を `true` に設定し、以前に設定したことがない場合は `EnaSrdUdpEnabled` をデフォルトで `false` になるよう設定します。

```
aws ec2 modify-network-interface-attribute \
    --network-interface-id eni-1234567890abcdef0 \
    --ena-srd-specification 'EnaSrdEnabled=true'
```

**例 2: TCP トラフィックと UDP トラフィックの両方に ENA Express を使用する**  
この例では、`EnaSrdEnabled` と `EnaSrdUdpEnabled` の両方を `true` に設定します。

```
aws ec2 modify-network-interface-attribute \
    --network-interface-id eni-1234567890abcdef0 \
    --ena-srd-specification 'EnaSrdEnabled=true,EnaSrdUdpSpecification={EnaSrdUdpEnabled=true}'
```

**例 3: UDP トラフィックでの ENA Express の使用を停止する**  
この例では、`EnaSrdUdpEnabled` を `false` に設定します。

```
aws ec2 modify-network-interface-attribute \
    --network-interface-id eni-1234567890abcdef0 \
    --ena-srd-specification 'EnaSrdUdpSpecification={EnaSrdUdpEnabled=false}'
```

------
#### [ PowerShell ]

**ネットワークインターフェイスをアタッチする際に ENA Express を設定するには**  
次の例に示すように、[https://docs.aws.amazon.com/powershell/latest/reference/items/Add-EC2NetworkInterface.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Add-EC2NetworkInterface.html) コマンドレットを使用します。

**例 1: TCP トラフィックには ENA Express を使用するが、UDP トラフィックには使用しない**  
この例では、`EnaSrdEnabled` を `true` に設定し、`EnaSrdUdpEnabled` をデフォルトで `false` になるよう設定します。

```
Add-EC2NetworkInterface `
    -NetworkInterfaceId eni-1234567890abcdef0 `
    -InstanceId i-1234567890abcdef0 `
    -DeviceIndex 1 `
    -EnaSrdSpecification_EnaSrdEnabled $true
```

**例 2: TCP トラフィックと UDP トラフィックの両方に ENA Express を使用する**  
この例では、`EnaSrdEnabled` と `EnaSrdUdpEnabled` の両方を `true` に設定します。

```
Add-EC2NetworkInterface `
    -NetworkInterfaceId eni-1234567890abcdef0 `
    -InstanceId i-1234567890abcdef0 `
    -DeviceIndex 1 `
    -EnaSrdSpecification_EnaSrdEnabled $true `
    -EnaSrdUdpSpecification_EnaSrdUdpEnabled $true
```

**ネットワークインターフェイスアタッチメントの ENA Express 設定を設定するには**  
次の例に示すように、[https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2NetworkInterfaceAttribute.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2NetworkInterfaceAttribute.html) コマンドレットを使用します。

**例 1: TCP トラフィックには ENA Express を使用するが、UDP トラフィックには使用しない**  
この例では、`EnaSrdEnabled` を `true` に設定し、以前に設定したことがない場合は `EnaSrdUdpEnabled` をデフォルトで `false` になるよう設定します。

```
Edit-EC2NetworkInterfaceAttribute `
    -NetworkInterfaceId eni-1234567890abcdef0 `
    -EnaSrdSpecification_EnaSrdEnabled $true ; 
Get-EC2NetworkInterface -NetworkInterfaceId eni-0123f4567890a1b23 | `
Select-Object `
    NetworkInterfaceId, 
    @{Name = 'EnaSrdEnabled'; Expression = { $_.Attachment.EnaSrdSpecification.EnaSrdEnabled }}, 
    @{Name = 'EnaSrdUdpEnabled'; Expression = { $_.Attachment.EnaSrdSpecification.EnaSrdUdpSpecification.EnaSrdUdpEnabled }} | `
Format-List
```

**例 2: TCP トラフィックと UDP トラフィックの両方に ENA Express を使用する**  
この例では、`EnaSrdEnabled` と `EnaSrdUdpEnabled` の両方を `true` に設定します。

```
Edit-EC2NetworkInterfaceAttribute `
    -NetworkInterfaceId eni-1234567890abcdef0 `
    -EnaSrdSpecification_EnaSrdEnabled $true `
    -EnaSrdSpecification_EnaSrdUdpSpecification_EnaSrdUdpEnabled $true ;
Get-EC2NetworkInterface -NetworkInterfaceId eni-1234567890abcdef0 | `
Select-Object `
    NetworkInterfaceId, 
    @{Name = 'EnaSrdEnabled'; Expression = { $_.Attachment.EnaSrdSpecification.EnaSrdEnabled }}, 
    @{Name = 'EnaSrdUdpEnabled'; Expression = { $_.Attachment.EnaSrdSpecification.EnaSrdUdpSpecification.EnaSrdUdpEnabled }} | `
Format-List
```

**例 3: UDP トラフィックでの ENA Express の使用を停止する**  
この例では、`EnaSrdUdpEnabled` を `false` に設定します。

```
Edit-EC2NetworkInterfaceAttribute `
    -NetworkInterfaceId eni-0123f4567890a1b23 `
    -EnaSrdSpecification_EnaSrdUdpSpecification_EnaSrdUdpEnabled $false ; 
Get-EC2NetworkInterface -NetworkInterfaceId eni-0123f4567890a1b23 | `
Select-Object `
    NetworkInterfaceId, 
    @{Name = 'EnaSrdEnabled'; Expression = { $_.Attachment.EnaSrdSpecification.EnaSrdEnabled }}, 
    @{Name = 'EnaSrdUdpEnabled'; Expression = { $_.Attachment.EnaSrdSpecification.EnaSrdUdpSpecification.EnaSrdUdpEnabled }} | `
Format-List
```

------

## 起動時に ENA Express を設定する
<a name="ena-express-configure-on-launch"></a>

インスタンスを起動するときに、以下のいずれかの方法を使用して ENA Express を直接設定できます。設定されているリンクをたどると、AWS マネジメントコンソールからこれらの方法を行う手順を確認できます。
+ **インスタンス起動ウィザード** – インスタンス起動ウィザードでは、起動時に ENA Express を設定できます。詳細については、インスタンス起動ウィザードの [ネットワーク設定](ec2-instance-launch-parameters.md#liw-network-settings)、「**Advanced network configuration**」を参照してください。
+ **起動テンプレート** – 起動テンプレートを使用すると、起動時に ENA Express を設定できます。詳細については、「[Amazon EC2 起動テンプレートを作成する](create-launch-template.md)」ページを参照し、**[ネットワーク設定]** セクションを展開して、**[高度なネットワーク設定]** を確認してください。

# Intel 82599 VF インターフェイスを使用する拡張ネットワーキング
<a name="sriov-networking"></a>

[Xen ベースのインスタンス](instance-types.md#instance-hypervisor-type) の場合、Intel 82599 仮想関数 (VF) インターフェイスは拡張ネットワーキング機能を提供します。インターフェイスは Intel `ixgbevf` ドライバーを使用します。

次のタブはインスタンスオペレーティングシステムにインストールされているネットワークアダプタードライバーを確認する方法を示しています。

------
#### [ Linux ]

**Linux ネットワークインターフェイスドライバー**  
次のコマンドを使用して、モジュールが特定のインターフェイスで使用されていることを確認し、確認するインターフェイス名に置き換えます。単一のインターフェイス (デフォルト) を使用している場合は`eth0` です。オペレーティングシステムで[予測可能なネットワーク名](#predictable-network-names-sriov)がサポートされている場合は`ens5` のような名前にすることができます。

次の例で、リストされているドライバーは `vif` であるため、`ixgbevf` モジュールはロードされていません。

```
[ec2-user ~]$ ethtool -i eth0
driver: vif
version:
firmware-version:
bus-info: vif-0
supports-statistics: yes
supports-test: no
supports-eeprom-access: no
supports-register-dump: no
supports-priv-flags: no
```

この例では`ixgbevf` モジュールがロードされます。このインスタンスでは拡張ネットワーキングが適切に設定されています。

```
[ec2-user ~]$ ethtool -i eth0
driver: ixgbevf
version: 4.0.3
firmware-version: N/A
bus-info: 0000:00:03.0
supports-statistics: yes
supports-test: yes
supports-eeprom-access: no
supports-register-dump: yes
supports-priv-flags: no
```

------
#### [ Windows ]

**Windows ネットワークアダプター**  
ドライバーがインストールされていることを確認するにはインスタンスに接続し、デバイス マネージャーを開きます。**[ネットワークアダプター]** の下に `Intel(R) 82599 Virtual Function` が表示されるはずです。

------

**Topics**
+ [拡張ネットワーキング用のインスタンスの準備](#ixgbevf-requirements)
+ [拡張ネットワーキングが有効化されているかどうかのテスト](#test-enhanced-networking)
+ [インスタンスでの拡張ネットワーキングの有効化](#enable-enhanced-networking)
+ [接続に関する問題のトラブルシューティング](#enhanced-networking-troubleshooting)

## 拡張ネットワーキング用のインスタンスの準備
<a name="ixgbevf-requirements"></a>

Intel 82599 VF インターフェイスを使用した拡張ネットワーキングを準備するには次のようにインスタンスをセットアップします。
+ インスタンスタイプが C3、C4、D2、I2、M4 (`m4.16xlarge` を除く)、R3 のいずれかであることを確認します。
+ インスタンスがインターネットに接続されていることを確認します。
+ 保持する必要がある重要なデータがインスタンスにある場合、インスタンスから AMI を作成してそのデータをバックアップする必要があります。`sriovNetSupport` 属性を有効にするとともに、カーネルおよびカーネルモジュールを更新すると、互換性のないインスタンスがレンダリングされたり、オペレーティングシステムに接続できなくなったりする可能性があります。最近のバックアップがある場合はこれが発生してもデータは保持されます。
+ **Linux インスタンス** – Linux カーネルバージョン 2.6.32 以降を使用して、HVM AMI からインスタンスを起動します。最新の Amazon Linux HVM AMI では拡張ネットワーキングに必要なモジュールがインストールされており、必要な属性も設定されています。したがって、最新の Amazon Linux HVM AMI を使用して、拡張ネットワーキングがサポートされている Amazon EBS–バック インスタンスを起動した場合はインスタンスで拡張ネットワーキングが既に有効化されています。
**警告**  
拡張ネットワーキングはHVM インスタンスでのみサポートされています。PV インスタンスで拡張ネットワーキングを有効にすると、このインスタンスに到達できなくなります。また、適切なモジュールまたはモジュールバージョンを使用せずにこの属性を設定すると、インスタンスにアクセスできなくなる場合があります。
+ **Windows インスタンス** – 64 ビット HVM AMI からインスタンスを起動します。Windows Server 2008 では拡張ネットワーキングを有効にできません。Windows Server 2012 R2 および Windows Server 2016 以降の AMI では拡張ネットワーキングが既に有効になっています。Windows Server 2012 R2 にはインテルドライバー 1.0.15.3 が含まれており、Pnputil.exe ユーティリティを使用してそのドライバーを最新のバージョンにアップグレードすることをお勧めします。
+ 選択した任意のコンピュータ、できればローカルのデスクトップまたはノートパソコンで、AWS マネジメントコンソール から [AWS CloudShell](https://console.aws.amazon.com/cloudshell) を使用するか、[AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html) もしくは [AWS Tools for Windows PowerShell](https://docs.aws.amazon.com/powershell/latest/userguide/) をインストールし設定します。詳細については[Amazon EC2 へのアクセス](concepts.md#access-ec2)もしくは [AWS CloudShell ユーザーガイド](https://docs.aws.amazon.com/cloudshell/latest/userguide/welcome.html)を参照してください。拡張ネットワーキングは、Amazon EC2 コンソールから管理することはできません。

## 拡張ネットワーキングが有効化されているかどうかのテスト
<a name="test-enhanced-networking"></a>

`sriovNetSupport` 属性がインスタンスまたはイメージに設定されていることを確認します。

------
#### [ AWS CLI ]

**インスタンス属性をチェックするには (sriovNetSupport)**  
次の [https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instance-attribute.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instance-attribute.html) コマンドを使用します。属性が設定されている場合、値は `simple` になります。

```
aws ec2 describe-instance-attribute \
    --instance-id i-1234567890abcdef0 \
    --attribute sriovNetSupport
```

**イメージ属性をチェックするには (sriovNetSupport)**  
次の [https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html) コマンドを使用します。属性が設定されている場合、値は `simple` になります。

```
aws ec2 describe-images \
    --image-id ami-0abcdef1234567890 \
    --query "Images[].SriovNetSupport"
```

------
#### [ PowerShell ]

**インスタンス属性をチェックするには (sriovNetSupport)**  
[https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2InstanceAttribute.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2InstanceAttribute.html) コマンドレットを使用します。属性が設定されている場合、値は `simple` になります。

```
Get-EC2InstanceAttribute `
    -InstanceId i-1234567890abcdef0 `
    -Attribute sriovNetSupport
```

**イメージ属性をチェックするには (sriovNetSupport)**  
次の [https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html) コマンドを使用します。属性が設定されている場合、値は `simple` になります。

```
(Get-EC2Image -ImageId ami-0abcdef1234567890).SriovNetSupport
```

------

## インスタンスでの拡張ネットワーキングの有効化
<a name="enable-enhanced-networking"></a>

使用する手順はインスタンスのオペレーティングシステムによって異なります。

**警告**  
拡張ネットワーキング属性はいったん有効にすると無効にする方法はありません。

### Amazon Linux
<a name="enable-amazon-linux"></a>

最新の Amazon Linux HVM AMI では拡張ネットワーキングに必要な `ixgbevf` モジュールがインストールされており、必要な `sriovNetSupport` 属性も設定されています。したがって、最新の Amazon Linux HVM AMI を使用してインスタンスタイプを起動した場合は拡張ネットワーキングが既にインスタンスに対して有効になっています。詳細については[拡張ネットワーキングが有効化されているかどうかのテスト](#test-enhanced-networking)を参照してください。

以前の Amazon Linux AMI を使用してインスタンスを起動し、まだ拡張ネットワーキングが有効になっていない場合、拡張ネットワーキングを有効にするには次の手順を実行します。

**拡張ネットワーキングを有効にするには**

1. <a name="amazon-linux-enhanced-networking-start-step"></a>インスタンスに接続します。

1. インスタンスから、次のコマンドを実行して、`ixgbevf` を含む最新のカーネルとカーネルモジュールでインスタンスを更新します。

   ```
   [ec2-user ~]$ sudo yum update
   ```

1. ローカルコンピュータから、Amazon EC2 コンソールまたは次のいずれかのコマンドを使用して、インスタンスを再起動します。[https://docs.aws.amazon.com/cli/latest/reference/ec2/reboot-instances.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/reboot-instances.html) (AWS CLI)、[https://docs.aws.amazon.com/powershell/latest/reference/items/Restart-EC2Instance.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Restart-EC2Instance.html) (AWS Tools for Windows PowerShell)。

1. <a name="amazon-linux-enhanced-networking-stop-step"></a>インスタンスに再接続し、`ixgbevf`の **modinfo ixgbevf** コマンドを使用して、[拡張ネットワーキングが有効化されているかどうかのテスト](#test-enhanced-networking) モジュールがインストールされ、最小推奨バージョンであることを確認します。

1. [EBS-backed インスタンス] ローカルコンピュータから、Amazon EC2 コンソールまたは次のいずれかのコマンドを使用して、インスタンスを停止します。[https://docs.aws.amazon.com/cli/latest/reference/ec2/stop-instances.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/stop-instances.html) (AWS CLI)、[https://docs.aws.amazon.com/powershell/latest/reference/items/Stop-EC2Instance.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Stop-EC2Instance.html) (AWS Tools for Windows PowerShell)。

   [Instance store-バック インスタンス] インスタンスを停止して属性を変更することはできません。代わりに、次の手順に進みます。

1. ローカルコンピュータから、次のいずれかのコマンドを使用して拡張ネットワーキングの属性を有効化します。

------
#### [ AWS CLI ]

   [https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-attribute.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-attribute.html) コマンドを次のように使用します。

   ```
   aws ec2 modify-instance-attribute \
       --instance-id i-1234567890abcdef0 \
       --sriov-net-support simple
   ```

------
#### [ PowerShell ]

   [https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceAttribute.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceAttribute.html) コマンドレットを次のように使用します。

   ```
   Edit-EC2InstanceAttribute `
       -InstanceId i-1234567890abcdef0 `
       -SriovNetSupport "simple"
   ```

------

1. (オプション) [Amazon EBS-backed AMI を作成する](creating-an-ami-ebs.md)の説明に従って、インスタンスから AMI を作成します。AMI はインスタンスから拡張ネットワーキング属性を継承します。このため、この AMI を使用することで、拡張ネットワーキングがデフォルトで有効になっている別のインスタンスを起動できます。

1. ローカルコンピュータから、Amazon EC2 コンソールまたは次のいずれかのコマンドを使用して、インスタンスを開始します。[https://docs.aws.amazon.com/cli/latest/reference/ec2/start-instances.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/start-instances.html) (AWS CLI)、[https://docs.aws.amazon.com/powershell/latest/reference/items/Start-EC2Instance.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Start-EC2Instance.html) (AWS Tools for Windows PowerShell)。

1. インスタンスに接続し、[拡張ネットワーキングが有効化されているかどうかのテスト](#test-enhanced-networking) の **ethtool -i eth*n*** コマンドを使用して、`ixgbevf` モジュールがインストールされ、ネットワークインターフェイスにロードされていることを確認します。

**拡張ネットワーキングを有効にするには (Instance store-バック インスタンス)**  
インスタンスを停止するステップまで、前の手順に従います。[Amazon S3-backed AMI を作成する](creating-an-ami-instance-store.md)に記述されているように、新しい AMI を作成します。AMI を登録するときに拡張ネットワーキング属性を有効にしてください。

------
#### [ AWS CLI ]

[https://docs.aws.amazon.com/cli/latest/reference/ec2/register-image.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/register-image.html) コマンドを次のように使用します。

```
aws ec2 register-image --sriov-net-support simple ...
```

------
#### [ PowerShell ]

[https://docs.aws.amazon.com/powershell/latest/reference/items/Register-EC2Image.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Register-EC2Image.html) を次のように使用します。

```
Register-EC2Image -SriovNetSupport "simple" ...
```

------

### Ubuntu
<a name="enhanced-networking-ubuntu"></a>

開始する前に、インスタンスで[拡張ネットワーキングがすでに有効になっているかどうかを確認](#test-enhanced-networking)します。

クイックスタート Ubuntu HVM AMI には拡張ネットワーキングに必要なドライバーが搭載されています。`ixgbevf` 2.16.4 より前のバージョンを使用している場合は`linux-aws` カーネルパッケージをインストールして最新の拡張ネットワーキングドライバーを取得できます。

以下の手順はUbuntu インスタンスで `ixgbevf` モジュールをコンパイルするための一般的なステップを示しています。<a name="ubuntu-enhanced-networking-procedure"></a>

**`linux-aws` カーネルパッケージをインストールするには**

1. <a name="ubuntu-enhanced-networking-start-step"></a>インスタンスに接続します。

1. パッケージキャッシュおよびパッケージを更新します。

   ```
   ubuntu:~$ sudo apt-get update && sudo apt-get upgrade -y linux-aws
   ```
**重要**  
更新プロセス中に `grub` をインストールするよう求められた場合は`/dev/xvda` のインストール先として `grub` を使用し、現在のバージョンの `/boot/grub/menu.lst` を保持することを選択してください。

### 他の Linux ディストリビューション
<a name="enhanced-networking-linux"></a>

開始する前に、インスタンスで[拡張ネットワーキングがすでに有効になっているかどうかを確認](#test-enhanced-networking)します。最新のクイックスタート HVM AMI には拡張ネットワーキングに必要なドライバーが含まれているため、追加ステップを実行する必要はありません。

次の手順ではAmazon Linux または Ubuntu 以外の Linux ディストリビューションで Intel 82599 VF インターフェイスを使用した拡張ネットワーキングを有効にする必要がある場合の一般的なステップを説明します。コマンドの詳細な構文、ファイルの場所、パッケージやツールのサポートなどの詳細については使用する Linux ディストリビューションのドキュメントを参照してください。

**Linux で拡張ネットワーキングを有効化するには**

1. <a name="other-linux-enhanced-networking-start-step"></a>インスタンスに接続します。

1. Sourceforge ([https://sourceforge.net/projects/e1000/files/ixgbevf%20stable/](https://sourceforge.net/projects/e1000/files/ixgbevf%20stable/)) からインスタンスに `ixgbevf` モジュールのソースをダウンロードします。

   `ixgbevf` の 2.16.4 より前のバージョン (バージョン 2.14.2 を含む) は一部の Linux ディストリビューション (特定のバージョンの Ubuntu など) では適切にビルドされません。

1. インスタンスで `ixgbevf` モジュールをコンパイルし、インストールします。
**警告**  
現在のカーネルに `ixgbevf` モジュールをコンパイルし、新しいカーネルをドライバを再構築しないで更新すると、システムは次回の再起動の際にディストリビューション固有の `ixgbevf` モジュールに戻る場合があります。これにより、ディストリビューション固有のバージョンが拡張ネットワーキングと互換性がない場合に、システムに接続できなくなります。

1. **sudo depmod** コマンドを実行して、モジュールの依存関係を更新します。

1. <a name="other-linux-enhanced-networking-stop-step"></a>起動時に新しいモジュールがロードされるように、インスタンスの `initramfs` を更新します。

1. <a name="predictable-network-names-sriov"></a>システムがデフォルトで予測可能なネットワークインターフェイス名を使用するかどうかを確認します。**systemd** または **udev** のバージョン 197 以上を使用するシステムの場合、イーサネットデバイスの名前を変更でき、単一ネットワークインターフェイスの名前が `eth0` になることは保証されません。この動作はインスタンスに接続する際に問題の原因となる可能性があります。詳細と他の設定オプションについてはfreedesktop.org ウェブサイトで[Predictable Network Interface Names/](https://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames/)を参照してください。

   1. 次のコマンドを使用して、RPM ベースのシステムで **systemd** または **udev** のバージョンを確認できます。

      ```
      [ec2-user ~]$ rpm -qa | grep -e '^systemd-[0-9]\+\|^udev-[0-9]\+'
      				systemd-208-11.el7_0.2.x86_64
      ```

      上記の Red Hat Enterprise Linux 7 の例では**systemd** のバージョンは 208 であるため、予測可能なネットワークインターフェイス名は無効になっている必要があります。

   1. `net.ifnames=0` オプションを `GRUB_CMDLINE_LINUX` の `/etc/default/grub` 行に追加することによって、予測可能なネットワークインターフェイス名を無効にします。

      ```
      [ec2-user ~]$ sudo sed -i '/^GRUB\_CMDLINE\_LINUX/s/\"$/\ net\.ifnames\=0\"/' /etc/default/grub
      ```

   1. grub の設定ファイルを再ビルドします。

      ```
      [ec2-user ~]$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg
      ```

1. [EBS-backed インスタンス] ローカルコンピュータから、Amazon EC2 コンソールまたは次のいずれかのコマンドを使用してインスタンスを停止します。[stop-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/stop-instances.html) (AWS CLI)/[https://docs.aws.amazon.com/powershell/latest/reference/items/Stop-EC2Instance.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Stop-EC2Instance.html))、 (AWS Tools for Windows PowerShell)。

   [Instance store-バック インスタンス] インスタンスを停止して属性を変更することはできません。代わりに、次の手順に進みます。

1. ローカルコンピュータから、次のいずれかのコマンドを使用して拡張ネットワーキングの属性を有効化します。

------
#### [ AWS CLI ]

   [https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-attribute.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-attribute.html) コマンドを次のように使用します。

   ```
   aws ec2 modify-instance-attribute \
       --instance-id i-1234567890abcdef0 -\
       -sriov-net-support simple
   ```

------
#### [ PowerShell ]

   [https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceAttribute.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceAttribute.html) コマンドレットを次のように使用します。

   ```
   Edit-EC2InstanceAttribute `
       -InstanceId i-1234567890abcdef0 `
       -SriovNetSupport "simple"
   ```

------

1. (オプション) [Amazon EBS-backed AMI を作成する](creating-an-ami-ebs.md)の説明に従って、インスタンスから AMI を作成します。AMI はインスタンスから拡張ネットワーキング属性を継承します。このため、この AMI を使用することで、拡張ネットワーキングがデフォルトで有効になっている別のインスタンスを起動できます。

   インスタンスオペレーティングシステムに `/etc/udev/rules.d/70-persistent-net.rules` が含まれている場合にはAMI を作成する前にそれを削除する必要があります。このファイルには元のインスタンスのイーサネットアダプターの MAC アドレスが保存されています。別のインスタンスがこのファイルを使用して起動した場合、オペレーティングシステムがそのデバイスを検出できなくなり、`eth0` が失敗して、起動に関する問題が発生することがあります。このファイルは次の起動サイクルで再び生成され、AMI から起動されるインスタンスごとに独自のバージョンが作成されます。

1. ローカルコンピュータから、Amazon EC2 コンソールまたは次のいずれかのコマンドを使用して、インスタンスを開始します。[https://docs.aws.amazon.com/cli/latest/reference/ec2/start-instances.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/start-instances.html) (AWS CLI)、[https://docs.aws.amazon.com/powershell/latest/reference/items/Start-EC2Instance.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Start-EC2Instance.html) (AWS Tools for Windows PowerShell)。

1. (オプション) インスタンスに接続し、モジュールがインストールされていることを確認します。

**拡張ネットワーキングを有効にするには (Instance store-バック インスタンス)**  
インスタンスを停止するステップまで、前の手順に従います。[Amazon S3-backed AMI を作成する](creating-an-ami-instance-store.md)に記述されているように、新しい AMI を作成します。AMI を登録するときに拡張ネットワーキング属性を有効にしてください。

------
#### [ AWS CLI ]

[https://docs.aws.amazon.com/cli/latest/reference/ec2/register-image.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/register-image.html) コマンドを次のように使用します。

```
aws ec2 register-image --sriov-net-support simple ...
```

------
#### [ PowerShell ]

[https://docs.aws.amazon.com/powershell/latest/reference/items/Register-EC2Image.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Register-EC2Image.html) を次のように使用します。

```
Register-EC2Image -SriovNetSupport "simple" ...
```

------

### Server
<a name="enable-windows"></a>

インスタンスを起動し、すでに拡張ネットワーキングが有効になっていない場合、必要なネットワークアダプタードライバーをダウンロードしてインスタンスにインストールし、拡張ネットワーキングを有効にするように `sriovNetSupport` インスタンス属性を設定する必要があります。この属性を有効にできるのはサポートされるインスタンスタイプのみです。詳細については「[Amazon EC2 インスタンスでの拡張ネットワーキング](enhanced-networking.md)」を参照してください。

**重要**  
Windows AMI の最新のドライバーアップデートを確認するにはAWS Windows AMI リファレンスの「[Windows AMI のバージョン履歴](https://docs.aws.amazon.com/ec2/latest/windows-ami-reference/ec2-windows-ami-version-history.html)」を参照してください。

**拡張ネットワーキングを有効にするには**

1. <a name="amazon-linux-enhanced-networking-start-step"></a>インスタンスに接続してローカル管理者としてログインします。

1. [Windows Server 2016 以降] ドライバーがインストールされたら以下の EC2 Launch PowerShell スクリプトを実行し、インスタンスを設定します。

   ```
   PS C:\> C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\InitializeInstance.ps1 -Schedule
   ```
**重要**  
管理者パスワードはインスタンス初期化 EC2 Launch スクリプトを有効にするとリセットされます。初期化タスクの設定で指定することで、管理者パスワードのリセットを無効にするように設定ファイルを変更できます。

1. インスタンスから、OS 用の Intel ネットワークアダプタードライバーをダウンロードします。
   + **[Windows Server 2022]**

     [ダウンロードページ](https://www.intel.com/content/www/us/en/download/706171/intel-network-adapter-driver-for-windows-server-2022.html)と`Wired_driver_version_x64.zip` のダウンロードを見てください。
   + **Windows Server 2019** Server バージョン 1809 以降を含む\$1

     [ダウンロードページ](https://www.intel.com/content/www/us/en/download/19372/intel-network-adapter-driver-for-windows-server-2019.html)と`Wired_driver_version_x64.zip` のダウンロードを見てください。
   + **Windows Server 2016** Server バージョン 1803 以前を含む\$1

     [ダウンロードページ](https://www.intel.com/content/www/us/en/download/18737/intel-network-adapter-driver-for-windows-server-2016.html)と`Wired_driver_version_x64.zip` のダウンロードを見てください。
   + **[Windows Server 2012 R2**

     [ダウンロードページ](https://www.intel.com/content/www/us/en/download/17480/intel-network-adapter-driver-for-windows-server-2012-r2.html)と`Wired_driver_version_x64.zip` のダウンロードを見てください。
   + **Windows Server 2012**

     [ダウンロードページ](https://www.intel.com/content/www/us/en/download/16789/intel-network-adapter-driver-for-windows-server-2012.html)と`Wired_driver_version_x64.zip` のダウンロードを見てください。
   + **Windows Server 2008 R2**

     [ダウンロードページ](https://www.intel.com/content/www/us/en/download/15590/intel-network-adapter-driver-for-windows-7-final-release.html)と`PROWinx64Legacy.exe` のダウンロードを見てください。

   \$1Server バージョン 1803 以前および 1809 以降はIntel のドライバーおよびソフトウェアのページでは特に扱われていません。

1. OS 用の Intel ネットワークアダプタードライバーをインストールします。
   + **Windows Server 2008 R2**

     1. **ダウンロード**フォルダで、`PROWinx64Legacy.exe` ファイルを見つけて、名前を `PROWinx64Legacy.zip` に変更します。

     1. `PROWinx64Legacy.zip` ファイルの内容を展開します。

     1. コマンドラインを開き、抽出されたフォルダに移動し、`pnputil` ユーティリティを使用して次のコマンドを実行して、ドライバーストアで INF ファイルを追加およびインストールします。

        ```
        C:\> pnputil -a PROXGB\Winx64\NDIS62\vxn62x64.inf
        ```
   + **Windows Server 2022、Windows Server 2019、Windows Server 2016、Windows Server 2012 R2、および Windows Server 2012**

     1. **ダウンロード**フォルダで、`Wired_driver_version_x64.zip` ファイルの内容を展開します。

     1. コマンドラインを開き、抽出されたフォルダに移動し、`pnputil` ユーティリティを使用して次のコマンドのいずれかを実行して、ドライバーストアで INF ファイルを追加およびインストールします。
        + Windows Server 2022

          ```
          pnputil -i -a PROXGB\Winx64\NDIS68\vxn68x64.inf
          ```
        + Windows Server 2019

          ```
          pnputil -i -a PROXGB\Winx64\NDIS68\vxn68x64.inf
          ```
        + Windows Server 2016

          ```
          pnputil -i -a PROXGB\Winx64\NDIS65\vxn65x64.inf
          ```
        + Windows Server 2012 R2

          ```
          pnputil -i -a PROXGB\Winx64\NDIS64\vxn64x64.inf
          ```
        + Windows Server 2012

          ```
          pnputil -i -a PROXGB\Winx64\NDIS63\vxn63x64.inf
          ```

1. ローカルコンピュータから、次のいずれかのコマンドを使用して拡張ネットワーキングの属性を有効化します。

------
#### [ AWS CLI ]

   [https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-attribute.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-attribute.html) コマンドを次のように使用します。

   ```
   aws ec2 modify-instance-attribute \
       --instance-id i-1234567890abcdef0 \
       --sriov-net-support simple
   ```

------
#### [ PowerShell ]

   [https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceAttribute.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceAttribute.html) コマンドレットを次のように使用します。

   ```
   Edit-EC2InstanceAttribute `
       -InstanceId i-1234567890abcdef0 `
       -SriovNetSupport "simple"
   ```

------

1. (オプション) [Amazon EBS-backed AMI を作成する](creating-an-ami-ebs.md)の説明に従って、インスタンスから AMI を作成します。AMI はインスタンスから拡張ネットワーキング属性を継承します。このため、この AMI を使用することで、拡張ネットワーキングがデフォルトで有効になっている別のインスタンスを起動できます。

1. ローカルコンピュータから、Amazon EC2 コンソールまたは次のいずれかのコマンドを使用して、インスタンスを開始します。[https://docs.aws.amazon.com/cli/latest/reference/ec2/start-instances.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/start-instances.html) (AWS CLI)、[https://docs.aws.amazon.com/powershell/latest/reference/items/Start-EC2Instance.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Start-EC2Instance.html) (AWS Tools for Windows PowerShell)。

## 接続に関する問題のトラブルシューティング
<a name="enhanced-networking-troubleshooting"></a>

拡張ネットワーキングを有効化しているときに接続が失われると、`ixgbevf` モジュールとカーネルの互換性が保たれない可能性があります。この場合、インスタンスの Linux ディストリビューションに含まれる `ixgbevf` モジュールのバージョンをインストールしてみます。

PV インスタンスまたは AMI で拡張ネットワーキングを有効にすると、お使いのインスタンスに到達できなくなります。

詳細については「[EC2 インスタンスで拡張ネットワーキングを有効化および設定する方法](https://repost.aws/knowledge-center/enable-configure-enhanced-networking)」を参照してください。

# EC2 インスタンスでの ENA 設定のネットワークパフォーマンスのモニタリング
<a name="monitoring-network-performance-ena"></a>

Elastic Network Adapter (ENA) ドライバーは、有効になっているインスタンスからネットワークパフォーマンスメトリクスを公開します。このようなメトリクスを使用して、インスタンスのパフォーマンスの問題のトラブルシューティング、ワークロードに適したインスタンスサイズの選択、スケーリングアクティビティの事前計画、およびアプリケーションのベンチマークにより、メトリクスがインスタンスで利用できるパフォーマンスを最大化するかどうかを判断できます。

Amazon EC2 は、インスタンスレベルでネットワーク最大値を定義し、インスタンスサイズ全体で一貫したネットワークパフォーマンスを含め、質の高いネットワークエクスペリエンスを実現します。AWS は、各インスタンスに次の最大値を提供します。
+ **帯域幅機能** - 各 EC2 インスタンスには、インスタンスタイプとサイズに基づいて、集計したインバウンドトラフィックとアウトバウンドトラフィックの最大帯域幅があります。インスタンスの一部は、ネットワーク I/O クレジットメカニズムを使用して、平均帯域幅使用率に基づいて、ネットワーク帯域幅を割り当てます。また、Amazon EC2 には、Direct Connect およびインターネットへのトラフィックに最大帯域幅があります。詳細については、「[Amazon EC2 インスタンスのネットワーク帯域幅](ec2-instance-network-bandwidth.md)」を参照してください。
+ **Packet-per-second (PPS) パフォーマンス** - 各 EC2 インスタンスには、インスタンスタイプとサイズに基づいて、最大 PPS パフォーマンスがあります。
+ **追跡された接続** - セキュリティグループは、確立された各接続を追跡し、リターンパケットが期待どおりに配信されることを確認します。インスタンスごとに追跡できる接続の最大数があります。詳細については、[Amazon EC2 セキュリティグループの接続の追跡](security-group-connection-tracking.md)を参照してください。
+ **リンクローカルサービスアクセス** - Amazon EC2 は、Amazon DNS サービス、インスタンスメタデータサービス、Amazon Time Sync Service などのローカルプロキシサービスへのトラフィックに対して、ネットワークインターフェイスごとに最大 PPS を提供します。

インスタンスのネットワークトラフィックが最大値を超えると、AWS はネットワークパケットをキューイングしてから破棄することによって、最大値を超えるトラフィックを調整します。ネットワークパフォーマンスメトリクスを使用して、トラフィックが最大値を超えるタイミングをモニタリングできます。これらのメトリクスは、ネットワークトラフィックへの影響、およびネットワークパフォーマンスの問題の可能性をリアルタイムで通知します。

**Topics**
+ [要件](#network-performance-metrics-requirements)
+ [ENA ドライバーのメトリクス](#network-performance-metrics)
+ [/ インスタンスのネットワークパフォーマンスメトリクスを表示します。](#view-network-performance-metrics)
+ [ENA Express のメトリクス](#network-performance-metrics-ena-express)
+ [ENA 用の DPDK ドライバーを備えたネットワークパフォーマンスメトリクス](#network-performance-metrics-dpdk)
+ [FreeBSD を実行しているインスタンスのメトリクス](#network-performance-metrics-freebsd)

## 要件
<a name="network-performance-metrics-requirements"></a>

**Linux インスタンス**
+ ENA ドライババージョン 2.2.10 以降をインストールします。インストールしたバージョンを検証するには、**ethtool** コマンドを使用します。次の例では、バージョンは最小要件を満たしています。

  ```
  [ec2-user ~]$ ethtool -i eth0 | grep version
  version: 2.2.10
  ```

  ENA ドライバーをアップグレードするには、[拡張ネットワーキング](enhanced-networking-ena.md)を参照してください。
+ これらのメトリクスを Amazon CloudWatch にインポートするには、CloudWatch エージェントをインストールします。詳細については、*Amazon CloudWatch ユーザーガイド*の[ネットワークパフォーマンスメトリクスの収集](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Agent-network-performance.html)を参照してください。
+ `conntrack_allowance_available` メトリクスをサポートするには、ENA ドライバーのバージョン 2.8.1 以降をインストールします。
+ エグレスフラグメント PPS の制限である 1024 を上書きするには、ENA ドライバーのバージョン 2.13.3 以降をインストールします。

**Windows インスタンス**
+ ENA ドライバーバージョン 2.2.2 以降をインストールします。インストールされているバージョンを確認するには、次のようにデバイスマネージャーを使用します。

  1. `devmgmt.msc` を実行して、デバイスマネージャを開きます。

  1. [**Network Adapters**] を展開します。

  1. [**Amazon Elastic Network Adapter**]、[**Properties**] を選択します。

  1. [**Driver**] タブで、[**Driver Version**] を探します。

  ENA ドライバーをアップグレードするには、[拡張ネットワーキング](enhanced-networking-ena.md)を参照してください。
+ これらのメトリクスを Amazon CloudWatch にインポートするには、CloudWatch エージェントをインストールします。詳細については、*Amazon CloudWatch ユーザーガイド*の[高度なネットワークメトリクスの収集](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Agent-network-performance.html)を参照してください。

## ENA ドライバーのメトリクス
<a name="network-performance-metrics"></a>

ENA ドライバーは、次のメトリクスをリアルタイムでインスタンスに配信します。前回のドライバーのリセット以降に、各ネットワークインターフェイスでキューまたはドロップされたパケットの累積数を示します。


| メトリクス | 説明 | 以下でサポートされます | 
| --- | --- | --- | 
| bw\$1in\$1allowance\$1exceeded |  インバウンド集計帯域幅がインスタンスの最大値を超えたためにキューまたはドロップされたパケットの数。  | すべてのインスタンスタイプ | 
| bw\$1out\$1allowance\$1exceeded |  アウトバウンド集計帯域幅がインスタンスの最大値を超えたためにキューまたはドロップされたパケットの数。  | すべてのインスタンスタイプ | 
| conntrack\$1allowance\$1exceeded |  接続トラッキングがインスタンスの最大数を超え、新しい接続を確立できなかったためにドロップされたパケットの数。これにより、インスタンスとの間で送受信されるトラフィックのパケット損失が発生する可能性があります。  | すべてのインスタンスタイプ | 
| conntrack\$1allowance\$1available | そのインスタンスタイプの Connections Tracked 許容量に達する前にインスタンスが確立できる接続トラッキング数。 | [Nitro ベースのインスタンス](instance-types.md#instance-hypervisor-type)のみ  | 
| linklocal\$1allowance\$1exceeded |  ローカルプロキシサービスへのトラフィックの PPS がネットワークインターフェイスの最大値を超えたためにドロップされたパケットの数。これは、Amazon DNS サービス、インスタンスメタデータサービス、および Amazon Time Sync Service へのトラフィックに影響しますが、カスタム DNS リゾルバーへのトラフィックには影響しません。  | すべてのインスタンスタイプ | 
| pps\$1allowance\$1exceeded |  双方向 PPS がインスタンスの最大値を超えたためにキューまたはドロップされたパケットの数。\$1  | すべてのインスタンスタイプ | 

\$1 ENA Linux ドライバーのバージョン 2.13.3 以降では、フラグメントプロキシモードの設定によっては、この制限にネットワークインターフェイスの 1024 PPS を超えるエグレスフラグメントドロップが含まれる場合があります。Linux ドライバーでフラグメントプロキシモードが有効になっている場合、エグレスフラグメントドロップは、通常であれば適用される 1024 PPS の制限を回避し、標準の PPS 許容値内でカウントされます。フラグメントプロキシモードはデフォルトで無効になっています。

## / インスタンスのネットワークパフォーマンスメトリクスを表示します。
<a name="view-network-performance-metrics"></a>

使用する手順は、インスタンスのオペレーティングシステムによって異なります。

### Linux インスタンス
<a name="view-network-performance-metrics-linux"></a>

メトリクスをお気に入りのツールに公開して、メトリクスデータを視覚化できます。例えば、CloudWatch エージェントを使用してメトリックスを Amazon CloudWatch に公開できます。エージェントにより、個々のメトリクスを選択し、公開を制御できます。

**ethtool** を使用して、次のように eth0 などの各ネットワークインターフェイスのメトリクスを取得することもできます。

```
[ec2-user ~]$ ethtool -S eth0
     bw_in_allowance_exceeded: 0
     bw_out_allowance_exceeded: 0
     pps_allowance_exceeded: 0
     conntrack_allowance_exceeded: 0
     linklocal_allowance_exceeded: 0
     conntrack_allowance_available: 136812
```

### Windows インスタンス
<a name="view-network-performance-metrics-windows"></a>

Windows パフォーマンスカウンターの任意のコンシューマーを使用して、メトリクスを表示できます。EnaPerfCounters マニフェストに従って、データを解析できます。これは、パフォーマンスカウンタープロバイダーとそのカウンターセットを定義する XML ファイルです。

**マニフェストをインストールするには**

ENA ドライバー 2.2.2 以降を含む AMI を使用してインスタンスを起動した場合、または ENA ドライバー 2.2.2 のドライバーパッケージにインストールスクリプトを使用した場合、マニフェストは既にインストールされています。マニフェストを手動でインストールするには、次の手順を実行します。

1. 次のコマンドを使用して、既存のマニフェストを削除します。

   ```
   unlodctr /m:EnaPerfCounters.man
   ```

1. マニフェストファイル `EnaPerfCounters.man` をドライバインストールパッケージから `%SystemRoot%\System32\drivers` にコピーします。

1. 次のコマンドを使用して、新しいマニフェストをインストールします。

   ```
   lodctr /m:EnaPerfCounters.man
   ```

**パフォーマンスモニタを使用してメトリクスを表示するには**

1. パフォーマンスモニタを開きます。

1. Ctrl\$1N キーを押して、新しいカウンターを追加します。

1. リストから [**ENA Packets Shaping**] を選択します。

1. モニタリングするインスタンスを選択し、[**Add**] を選択します。

1. [**OK**] を選択してください。

## ENA Express のメトリクス
<a name="network-performance-metrics-ena-express"></a>

ENA Express は、AWS Scalable Reliable Datagram (SRD) テクノロジーを搭載しています。SRD は、動的ルーティングを使用してスループットを向上させ、テールレイテンシーを最小限に抑える高性能なネットワークトランスポートプロトコルです。送信側と受信側の両方のインスタンスでネットワークインターフェイスをアタッチできるように ENA Express を有効にすると、インスタンスが SRD テクノロジーで実現されるパフォーマンス向上を全面的に享受できることを、ENA Express メトリクスを使用して容易に確認できます。例えば、次のようになります。
+ より多くの SRD 接続を確立するのに十分な容量があることを確認するために、リソースを評価します。
+ 対象となる送信パケットで SRD を使用できない原因となる潜在的な問題がある箇所を特定します。
+ インスタンスに SRD を使用する送信トラフィックの割合を計算します。
+ インスタンスに SRD を使用する受信トラフィックの割合を計算します。

**注記**  
メトリクスを生成するには、ドライバーバージョン 2.8 以降を使用してください。

ENA Express 用にフィルタリングされた Linux インスタンスのメトリクスのリストを表示するには、ネットワークインターフェイスで以下の **ethtool** コマンドを実行します (ここでは `eth0` として表示されています)。`ena_srd_mode` メトリクスの値に注意してください。

```
[ec2-user ~]$ ethtool -S eth0 | grep ena_srd
NIC statistics:
	ena_srd_mode: 1
	ena_srd_tx_pkts: 0
	ena_srd_eligible_tx_pkts: 0
	ena_srd_rx_pkts: 0
	ena_srd_resource_utilization: 0
```

次のメトリクスは、ENA Express が有効になっているすべてのインスタンスで利用できます。

**ena\$1srd\$1mode**  
ENA Express のどの機能が有効になっているかを説明します。値は次のとおりです。  
+ `0` = ENA Express がオフ、UDP がオフ
+ `1` = ENA Express がオン、UDP がオフ
+ `2` = ENA Express がオフ、UDP がオン
**注記**  
これは、ENA Express が最初に有効になっていて、UDP がそれを使用するように設定されている場合にのみ発生します。UDP トラフィックの以前の値は保持されます。
+ `3` = ENA Express がオン、UDP がオン

**ena\$1srd\$1eligible\$1tx\$1pkts**  
ネットワークの数。次のとおりです。  
+ 送信側と受信側の両方のインスタンスタイプがサポートされています。詳細については「[ENA Express でサポートされるインスタンスタイプ](ena-express.md#ena-express-supported-instance-types)」の表を参照してください。
+ 送信側と受信側の両方のインスタンスに ENA Express が設定されている必要があります。
+ 送信側と受信側のインスタンスは同じアベイラビリティゾーンで実行する必要があります。
+ インスタンス間のネットワークパスには、ミドルウェアボックスを含めないようにしてください。ENA Express は現在、ミドルウェアボックスをサポートしていません。
ENA Express の適格性メトリクスには、ソースと送信先の要件、および 2 つのエンドポイント間のネットワークが含まれます。対象となるパケットは、既にカウントされた後でも失格となる可能性があります。例えば、対象となるパケットが最大送信単位 (MTU) の制限を超えている場合、そのパケットはカウンターに適格として反映されますが、標準の ENA 送信にフォールバックします。

**ena\$1srd\$1tx\$1pkts**  
一定期間内に送信した SRD パケット数。

**ena\$1srd\$1rx\$1pkts**  
一定期間内に受信した SRD パケット数。

**ena\$1srd\$1resource\$1utilization**  
インスタンスが消費した同時 SRD 接続の最大許容メモリ使用量の割合。

パケット送信に SRD が使用されているかどうかを確認するには、対象パケットの数 (`ena_srd_eligible_tx_pkts` メトリクス) と特定の期間に送信された SRD パケットの数 (`ena_srd_tx_pkts` メトリクス) を比較します。

**エグレストラフィック (送信パケット)**  
エグレストラフィックが想定どおりに SRD を使用するようにするには、SRD 送信に適格なパケットの数 (`ena_srd_eligible_tx_pkts`) と、特定の期間に送信された SRD パケットの数 (`ena_srd_tx_pkts`) を比較します。

使用可能なパケット数と送信された SRD パケット数の差が大きい場合、リソース使用率の問題が原因である可能性が高いです。インスタンスにアタッチされたネットワークカードが最大リソースを使い果たしている場合、またはパケットが MTU 制限を超えている場合、適格なパケットでも SRD 経由で送信できないため、標準の ENA 送信にフォールバックする必要があります。ライブ移行中やライブサーバー更新中にもパケットがこのギャップに陥る可能性があります。根本原因を特定するには、追加のトラブルシューティングが必要です。

**注記**  
適格なパケット数と SRD パケット数のわずかな違いは無視してかまいません。これは、例えば、インスタンスが SRD トラフィック用に別のインスタンスへの接続を確立した場合に発生する可能性があります。

特定の期間における総エグレストラフィックの何パーセントで SRD が使用されているかを調べるには、送信された SRD パケット数 (`ena_srd_tx_pkts`) と、その期間にインスタンスに送信されたパケットの総数 (`NetworkPacketOut`) を比較します。

**イングレストラフィック (受信パケット)**  
総イングレストラフィックの何パーセントで SRD が使用されているかを調べるには、特定の期間に受信した SRD パケット数 (`ena_srd_rx_pkts`) と、その期間にインスタンスで受信されたパケットの総数 (`NetworkPacketIn`) を比較します。

**リソース使用率**  
リソース使用率は、1 つのインスタンスが一定時間に保持できる SRD の同時接続数に基づいています。リソース使用率メトリクス (`ena_srd_resource_utilization`) は、インスタンスの現在の使用率を追跡します。使用率が 100% に近づくと、パフォーマンスの問題が発生することが予想されます。ENA Express は SRD から標準の ENA 送信にフォールバックし、パケットドロップの可能性が高まります。リソース使用率が高い場合は、ネットワークパフォーマンスを向上させるためにインスタンスをスケールアウトする時期が来たと判断できます。

**注記**  
インスタンスのネットワークトラフィックが最大値を超えると、AWS はネットワークパケットをキューイングしてから破棄することによって、最大値を超えるトラフィックを調整します。

**永続的**  
エグレスメトリクスとイングレスメトリクスは、インスタンスで ENA Express が有効になっている間に発生します。ENA Express が非アクティブ化されるとメトリクスの発生しなくなりますが、インスタンスがまだ実行されている限り持続します。インスタンスが再起動または終了した場合、またはネットワークインターフェイスがインスタンスから切り離されると、メトリクスはリセットされます。

## ENA 用の DPDK ドライバーを備えたネットワークパフォーマンスメトリクス
<a name="network-performance-metrics-dpdk"></a>

ENA ドライババージョン 2.2.0 以降では、ネットワークメトリクスのレポートがサポートされています。DPDK 20.11 には ENA ドライバー 2.2.0 が含まれており、この機能をサポートする最初の DPDK バージョンです。

DPDK ドライバー v25.03 以降では、フラグメントプロキシモードがサポートされています。DPDK ドライバーでフラグメントプロキシモードが有効になっている場合、エグレスフラグメントドロップは、通常であれば適用される 1024 PPS の制限を回避し、標準の PPS 許容値内でカウントされます。フラグメントプロキシモードはデフォルトで無効になっています。

サンプルアプリケーションを使用して、DPDK 統計を表示できます。サンプルアプリケーションの対話型バージョンを開始するには、次のコマンドを実行します。

```
./app/dpdk-testpmd -- -i
```

この対話型セッションでは、コマンドを入力してポートの拡張統計情報を取得できます。次のコマンド例では、ポート 0 の統計情報を取得します。

```
show port xstats 0
```

次に、DPDK サンプルアプリケーションとの対話型セッションの例を示します。

```
[root@ip-192.0.2.0 build]# ./app/dpdk-testpmd -- -i
        EAL: Detected 4 lcore(s)
        EAL: Detected 1 NUMA nodes
        EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
        EAL: Selected IOVA mode 'PA'
        EAL: Probing VFIO support...
        EAL:   Invalid NUMA socket, default to 0
        EAL:   Invalid NUMA socket, default to 0
        EAL: Probe PCI driver: net_ena (1d0f:ec20) device: 0000:00:06.0
(socket 0)
        EAL: No legacy callbacks, legacy socket not created
        Interactive-mode selected
    
        Port 0: link state change event
        testpmd: create a new mbuf pool <mb_pool_0>: n=171456,
size=2176, socket=0
        testpmd: preferred mempool ops selected: ring_mp_mc
    
        Warning! port-topology=paired and odd forward ports number, the
last port will pair with itself.
    
        Configuring Port 0 (socket 0)
        Port 0: 02:C7:17:A2:60:B1
        Checking link statuses...
        Done
        Error during enabling promiscuous mode for port 0: Operation
not supported - ignore
        testpmd> show port xstats 0
        ###### NIC extended statistics for port 0
        rx_good_packets: 0
        tx_good_packets: 0
        rx_good_bytes: 0
        tx_good_bytes: 0
        rx_missed_errors: 0
        rx_errors: 0
        tx_errors: 0
        rx_mbuf_allocation_errors: 0
        rx_q0_packets: 0
        rx_q0_bytes: 0
        rx_q0_errors: 0
        tx_q0_packets: 0
        tx_q0_bytes: 0
        wd_expired: 0
        dev_start: 1
        dev_stop: 0
        tx_drops: 0
        bw_in_allowance_exceeded: 0
        bw_out_allowance_exceeded: 0
        pps_allowance_exceeded: 0
        conntrack_allowance_exceeded: 0
        linklocal_allowance_exceeded: 0
        rx_q0_cnt: 0
        rx_q0_bytes: 0
        rx_q0_refill_partial: 0
        rx_q0_bad_csum: 0
        rx_q0_mbuf_alloc_fail: 0
        rx_q0_bad_desc_num: 0
        rx_q0_bad_req_id: 0
        tx_q0_cnt: 0
        tx_q0_bytes: 0
        tx_q0_prepare_ctx_err: 0
        tx_q0_linearize: 0
        tx_q0_linearize_failed: 0
        tx_q0_tx_poll: 0
        tx_q0_doorbells: 0
        tx_q0_bad_req_id: 0
        tx_q0_available_desc: 1023
        testpmd>
```

サンプルアプリケーションとその使用による拡張統計情報の取得の詳細については、DPDK ドキュメントの[Testpmd アプリケーションユーザーガイド](https://doc.dpdk.org/guides/testpmd_app_ug/)を参照してください。

## FreeBSD を実行しているインスタンスのメトリクス
<a name="network-performance-metrics-freebsd"></a>

ENA FreeBSD ドライバーのバージョン 2.3.0 以降では、FreeBSD を実行しているインスタンスでのネットワークパフォーマンスメトリクスの収集をサポートしています。FreeBSD メトリクスの収集を有効にするには、次のコマンドを入力し、[*間隔*]を 1～3600 の値に設定します。FreeBSD メトリクスを収集する頻度を秒単位で特定します。

```
sysctl dev.ena.network_interface.eni_metrics.sample_interval=interval
```

例えば、次のコマンドは、ネットワークインターフェイス 1 の FreeBSD メトリクスを 10 秒ごとに収集するようにドライバーを設定します。

```
sysctl dev.ena.1.eni_metrics.sample_interval=10
```

FreeBSD メトリクスの収集をオフにするには、上記のコマンドを実行し、[*間隔*]を `0` に指定します。

FreeBSD メトリクスの収集を有効にすると、次のコマンドを実行することで、収集されたメトリクスの最新セットを取得できます。

```
sysctl dev.ena.network_interface.eni_metrics
```

# Linux ベースの EC2 インスタンスのネットワークレイテンシーを改善する
<a name="ena-improve-network-latency-linux"></a>

ネットワークレイテンシーとは、データのパケットが送信元から送信先に移動するまでにかかる時間です。ネットワークを介してデータを送信するアプリケーションは、快適なユーザーエクスペリエンスを提供するためにタイムリーな応答が不可欠です。ネットワークレイテンシーが長くなると、次のようなさまざまな問題が発生する可能性があります。
+ ウェブページのロードが遅い
+ ビデオストリーミングのタイムラグ
+ オンラインリソースへのアクセスが難しい

このセクションでは、Linux で実行される Amazon EC2 インスタンスのネットワークレイテンシーを改善するために実行できる手順の概要を説明します。最適なレイテンシーを実現するには、以下の手順に従ってインスタンス、カーネル、および ENA ドライバーの設定を行います。その他の設定ガイダンスについては、GitHub の「[ENA Linux ドライバーのベストプラクティスとパフォーマンス最適化ガイド](https://github.com/amzn/amzn-drivers/blob/master/kernel/linux/ena/ENA_Linux_Best_Practices.rst)」を参照してください。

**注記**  
手順と設定は、特定のネットワークハードウェア、インスタンスを起動した AMI、およびアプリケーションのユースケースによって若干異なる場合があります。変更を加える前に、ネットワークパフォーマンスを徹底的にテストおよびモニタリングして、望ましい結果が得られることを確認してください。

## データパケットのネットワークホップの数を減らす
<a name="ena-latency-reduce-hops"></a>

データパケットがルーター間を移動する（ホップする）たびにネットワークレイテンシーが増加します。通常、トラフィックが送信先に到達するには、複数のホップを経由する必要があります。Amazon EC2 インスタンスのネットワークホップを減らすには、次の 2 つの方法があります。
+ **クラスタープレイスメントグループ** – [クラスタープレイスメントグループ](placement-strategies.md#placement-groups-cluster)を指定すると、Amazon EC2 は、同じアベイラビリティーゾーン (AZ) 内の物理的に互いに近いインスタンスをよりタイトなパッキングで起動します。グループ内のインスタンスが物理的に近接していることにより、高速接続を利用できるため、レイテンシーは低く、単一フローのスループットは高くなります。
+ **専有ホスト** – [専有ホスト](dedicated-hosts-overview.md)はお客様専用の物理サーバーです。専有ホストを使用すると、インスタンスを起動して同じ物理サーバー上で実行できます。同じ専有ホストで実行されるインスタンス間では、余分なネットワークホップなしで通信できます。

## Linux カーネルの設定がレイテンシーに与える影響
<a name="ena-latency-kernel-config"></a>

Linux カーネル設定では、ネットワークレイテンシーを増減できます。レイテンシー最適化の目標を達成するには、ワークロードの特定の要件に応じて Linux カーネル設定を微調整することが重要です。

Linux カーネルには、ネットワークレイテンシーを減らすのに役立つ設定オプションが多数あります。最も影響の大きいオプションは次のとおりです。
+ **ビジーポーリングモードを有効にする** – ビジーポーリングモードを使用すると、ネットワーク受信パスのレーテンシーが減少します。ビジーポーリングモードを有効にすると、ソケットレイヤーコードはネットワークデバイスの受信キューを直接ポーリングできます。ビジーポーリングの欠点は、タイトなループで新しいデータをポーリングすることにより、ホストの CPU 使用率が高くなることです。すべてのインターフェイスでパケットを待機するマイクロ秒数を制御するグローバル設定は 2 つあります。

     
`busy_read`  
ソケット読み込み時の低レイテンシーのビジーポーリングタイムアウト。これにより、ソケット層がデバイスキューのパケットを読み取るまでのマイクロ秒数を制御します。**sysctl** コマンドを使用して機能をグローバルに有効にするには、Linux カーネル組織は 50 マイクロ秒の値を推奨しています。詳細については、「Linux カーネルユーザーおよび管理者ガイド」の「[busy\$1read](https://www.kernel.org/doc/html/v5.19/admin-guide/sysctl/net.html?highlight=busy_read)」を参照してください。  

  ```
  [ec2-user ~]$ sudo sysctl -w net.core.busy_read=50
  ```  
`busy_poll`  
ポーリングとセレクティングの低レイテンシーのビジーポーリングタイムアウト。これにより、イベント待ち時間のマイクロ秒数を制御します。推奨値は 50～100 マイクロ秒で、ポーリングするソケットの数によって異なります。追加するソケットが多いほど、数値は大きい必要があります。  

  ```
  [ec2-user ~]$ sudo sysctl -w net.core.busy_poll=50
  ```
+ **CPU 電源状態の設定 (C ステート)** – C ステートは非アクティブ時のコアのスリープレベルを制御します。C ステートを制御して、システムのレイテンシーとパフォーマンスを調整することができます。より深い C ステートでは、CPU は基本的に「スリープ」状態になり、起動してアクティブ状態に戻るまでリクエストに応答できません。コアをスリープ状態にするには時間がかかります。また、スリープ状態のコアによって、別のコアが高い周波数で動作するための余裕が生まれますが、そのスリープ状態にあるコアが再び稼働し処理を実行するのにも時間がかかります。

  例えば、ネットワークパケットの中断を処理するように割り当てられたコアがスリープ状態である場合、その中断の処理に遅延が生じる可能性があります。より深い C ステートを使用しないようにシステムを設定できます。ただし、この設定では、プロセッサの反応レイテンシーは短縮されますが、他のコアの Turbo Boost 用のヘッドルームも減少します。

  プロセッサーの反応レイテンシーを短縮するために、C ステートが深くなるのを制限できます。詳細については、「Amazon Linux 2 ユーザーガイド」の「[深い C ステートの制限による高パフォーマンスと低レイテンシー](https://docs.aws.amazon.com/linux/al2/ug/processor_state_control.html#c-states)」を参照してください。**

## 割り込みモデレーション
<a name="ena-latency-interrupt-moderation"></a>

ENA ネットワークドライバーを使用すると、インスタンスとネットワーク間の通信が可能になります。ドライバーはネットワークパケットを処理し、ネットワークスタックまたは Nitro Card に渡します。ネットワークパケットが受信されると、Nitro Card は割り込みを生成して CPU がソフトウェアにイベントを通知します。

割り込み  
割り込みは、デバイスまたはアプリケーションがプロセッサに送信する信号です。割り込みは、イベントが発生したこと、または即時の注意を要する条件が満たされたことをプロセッサに通知します。割り込みにより、ネットワークインターフェイスからのデータ受信、ハードウェアイベントの処理、他のデバイスからのリクエストの処理など、時間的制約のあるタスクを処理できます。

割り込みモデレーション  
割り込みモデレーションは、割り込みを集約または遅延させることにより、デバイスが生成する割り込みの数を減らす手法です。割り込みモデレーションの目的は、多数の割り込みの処理に伴うオーバーヘッドを削減することによってシステムパフォーマンスを向上させることです。割り込みが多すぎると CPU 使用率が高くなり、スループットに悪影響を及ぼします。一方、割り込みが少なすぎると、レイテンシーが長くなります。

動的割り込みモデレーション  
動的割り込みモデレーションは、現在のシステム負荷とトラフィックパターンに基づいて割り込みレートを動的に調整する、割り込みモデレーションの拡張形です。割り込みオーバーヘッドの削減と、1 秒あたりのパケット数 (つまり帯域幅) とのバランスをとることを目的としています。  
動的割り込みモデレーションは、一部の AMI ではデフォルトで有効になっています (ただし、すべての AMI で有効または無効にできます)。

ネットワークレイテンシーを最小限に抑えるために、割り込みモデレーションを無効にする必要があることがあります。ただし、これによって割り込み処理のオーバーヘッドが増加する可能性もあります。レイテンシーの低減とオーバーヘッドの最小化とのバランス点を見つけることが重要です。`ethtool` コマンドは割り込みモデレーションの設定に役立ちます。デフォルトでは、`rx-usecs` は `20` に設定され、`tx-usecs` は `64` に設定されています。

現在の割り込み変更設定を取得するには、次のコマンドを使用します。

```
[ec2-user ~]$ ethtool -c interface | egrep "rx-usecs:|tx-usecs:|Adaptive RX"
Adaptive RX: on  TX: off
rx-usecs: 20
tx-usecs: 64
```

割り込み変更および動的割り込みモデレーションを無効にするには、次のコマンドを使用します。

```
[ec2-user ~]$ sudo ethtool -C interface adaptive-rx off rx-usecs 0 tx-usecs 0
```

# Nitro System のパフォーマンスチューニングに関する考慮事項
<a name="ena-nitro-perf"></a>

Nitro System は、AWS が構築した、高パフォーマンス、高可用性、高度なセキュリティを実現するハードウェアとソフトウェアコンポーネントのコレクションです。Nitro System は、ベアメタルのような機能を備えることで、仮想化オーバーヘッドを排除するとともに、ホストハードウェアへのフルアクセスを要求するワークロードをサポートします。詳細については、「[AWS Nitro System](https://aws.amazon.com/ec2/nitro/)」を参照してください。

現行世代の EC2 インスタンスタイプはすべて、ネットワークパケット処理を EC2 Nitro カードで実行します。このトピックでは、Nitro Card でのハイレベルなパケット処理、パケット処理のパフォーマンスに影響するネットワークアーキテクチャおよび設定の一般的側面、Nitro ベースインスタンスのパフォーマンスを最大化するために実行できるアクションについて説明します。

Nitro Card は、仮想プライベートクラウド (VPC) に必要な、すべての入出力 (I/O) インターフェイスを処理します。ネットワーク上で情報を送受信するすべてのコンポーネントで、Nitro Card は I/O トラフィック用の自己完結型のコンピューティングデバイスとして機能します。このコンピューティングデバイスは、顧客のワークロードを実行するシステムメインボードとは物理的に分離されています。

## Nitro Card でのネットワークパケットフロー
<a name="ena-nitro-perf-network-flow"></a>

Nitro System 上に構築された EC2 インスタンスには、1 秒あたりのパケット数 (PPS) スループットレートで測定されるよりも高速なパケット処理を可能にする、ハードウェアアクセラレーション機能があります。Nitro Card が新しいフローの初期評価を行うと、セキュリティグループ、アクセスコントロールリスト、ルートテーブルエントリなど、フロー内のすべてのパケットについて同じ情報が保存されます。同じフローの追加のパケットを処理する場合、保存した情報を使用することで、それらのパケットのオーバーヘッドを減らすことができます。

接続速度は 1 秒あたりの接続数 (CPS) で測定されます。新しい接続が発生するたびに、追加の処理オーバーヘッドが必要になるため、ワークロード能力の予測でそれを考慮する必要があります。ワークロードを設計するときは、CPS と PPS の両方のメトリクスを考慮することが重要です。

**接続の確立方法**  
Nitro ベースのインスタンスと別のエンドポイントとの間で接続が確立されると、Nitro Card は 2 つのエンドポイント間で送受信される最初のパケットのフルフローを評価します。同じフローの後続のパケットについては、通常、完全な再評価は不要です。ただし、例外がいくつかあります。例外に関する詳細は、「[ハードウェアアクセラレーションを使用しないパケット](#ena-nitro-perf-exceptions)」を参照してください。

以下のプロパティは、2 つのエンドポイントとそれらの間のパケットフローを定義します。これら 5 つのプロパティを総合して、5 タプルフローと呼びます。
+ [Source IP] (送信元 IP)
+ ソースポート
+ 送信先 IP
+ 発信先ポート
+ 通信プロトコル

パケットフローの方向は、イングレス (インバウンド) とエグレス (アウトバウンド) と呼びます。以下は、エンドツーエンドのネットワークパケットフローの概要を示したものです。
+ **イングレス** — Nitro Card は、受信ネットワークパケットを処理するとき、パケットをステートフルファイアウォールルールとアクセス制御リストに照らして評価します。接続を追跡し、測定し、必要に応じてその他アクションを実行します。次に、パケットをホスト CPU 上の宛先に転送します。
+ **エグレス** — Nitro Card は、アウトバウンドネットワークパケットを処理するとき、リモートインターフェイスの宛先を検索し、さまざまな VPC 機能を評価し、レート制限を適用して、適用されるその他アクションを実行します。次に、パケットをネットワーク上の次のホップの宛先に転送します。

## 最適なパフォーマンスが得られるようにネットワークを設計する
<a name="ena-nitro-perf-overall-design"></a>

Nitro System のパフォーマンス機能を活用するには、ネットワーク処理のニーズを理解し、そしてそれらのニーズが Nitro リソースのワークロードにどのように影響するかを理解する必要があります。そうすれば、ネットワーク環境に最適なパフォーマンスを実現するように、設計することができます。インフラストラクチャ設定とアプリケーションワークロードの設計および構成は、パケット処理と接続速度の両方に影響を与える可能性があります。例えば、DNS サービス、ファイアウォール、仮想ルーターなど、アプリケーションの接続確立率が高いと、接続が確立された後にのみ発生するハードウェアアクセラレーションを利用できる機会が減ります。

アプリケーションとインフラストラクチャの構成を設定し、ワークロードを効率化して、ネットワークパフォーマンスを改善することができます。ただし、すべてのパケットがアクセラレーションの対象となるわけではありません。Nitro System は、新しい接続や、アクセラレーションの対象ではないパケットには、ネットワークフローをすべて使用します。

本セクションの残りの部分では、パケットが可能な限り高速パス内を流れるようにするための、アプリケーションとインフラストラクチャの、設計上の考慮事項に焦点を当てます。

### Nitro システムのネットワーク設計に関して考慮すべき事項
<a name="ena-nitro-perf-considerations"></a>

インスタンスのネットワークトラフィックを設定するときは、PPS のパフォーマンスに影響するさまざまな側面を考慮する必要があります。フローが確立されると、定期的に送受信されるパケットの大半が、アクセラレーションの対象になります。ただし、インフラストラクチャ設計とパケットフローが引き続きプロトコル標準を満たすようにするため、いくつかの例外が存在します。

Nitro Card から最高のパフォーマンスを引き出すには、使用しているインフラストラクチャとアプリケーションに関する以下の設定の詳細の、長所と短所を慎重に検討する必要があります。

#### インフラストラクチャの考慮事項
<a name="ena-nitro-perf-infra-considerations"></a>

インフラストラクチャの設定は、パケットフローと処理効率に影響を及ぼす可能性があります。以下は、重要な考慮事項の一覧です。

**非対称ネットワークインターフェイス構成**  
セキュリティグループは、接続追跡を使用して、インスタンスに出入りするトラフィックの情報を追跡します。トラフィックが特定のネットワークインターフェースからインスタンスに入り、別のネットワークインターフェースから外に出る、非対称ルーティングでは、フローを追跡した場合に、インスタンスが達成できるピークパフォーマンスが低下する可能性があります。セキュリティグループの接続トラッキング、追跡されない接続、自動的に追跡される接続の詳細については、「[Amazon EC2 セキュリティグループの接続の追跡](security-group-connection-tracking.md)」を参照してください。

**ネットワークドライバー**  
ネットワークドライバーは、定期的に更新されリリースされています。ドライバーが古くなっていると、パフォーマンスが大幅に低下する可能性があります。最新のパッチを適用して、最新世代のドライバーのみで利用できるアクセラレーションパス機能などのパフォーマンス強化を活用できるよう、ドライバーを常に最新状態に保つようにします。旧世代のドライバーでは、アクセラレーションパス機能はサポートされていません。  
アクセラレーションパス機能を利用するため、最新の ENA ドライバーをインスタンスにインストールすることが推奨されます。  
**Linux インスタンス** – ENA Linux ドライバー 2.2.9 以降。Amazon Drivers GitHub リポジトリから ENA Linux ドライバーをインストールまたは更新するには、readme ファイルの「[ドライバーのコンパイル](https://github.com/amzn/amzn-drivers/tree/master/kernel/linux/ena#driver-compilation)」のセクションを参照してください。  
**Windows インスタンス** – ENA Windows ドライバー 2.0.0 以降。ENA Windows ドライバーをインストールまたは更新するには、「[EC2 Windows インスタンスに ENA ドライバーをインストールする](ena-adapter-driver-install-upgrade-win.md)」を参照してください。

**エンドポイント間の距離**  
同じアベイラビリティーゾーン内の 2 つのインスタンス間の接続は、リージョン間の接続よりも 1 秒あたりで多くのパケットを処理できます。これは、アプリケーション層での TCP ウィンドウ処理により、いつでも送信できるデータの量が決定されるためです。インスタンス間の距離が長いとレイテンシーが長くなり、エンドポイントで処理できるパケットの数が減少します。

**バイトキュー制限 (BQL)**  
BQL は、Nitro Card に渡されるバイト数を制限してキューイングを減らす機能です。BQL は、ENA ドライバー、Amazon Linux オペレーティングシステム、およびほとんどの Linux ディストリビューションでデフォルトで無効になっています。BQL とフラグメントプロキシの上書きの両方が有効になっている場合、すべてのフラグメントが処理される前に Nitro に渡されるバイト数が制限されることにより、パフォーマンスが低下する可能性があります。

#### アプリケーションの設計に関する考慮事項
<a name="ena-nitro-perf-app-design"></a>

アプリケーションの設計と構成には、処理効率に影響する要素がいくつか存在します。以下は、重要な考慮事項の一覧です。

**バケットサイズ**  
パケットサイズを大きくすると、インスタンスがネットワーク上で送受信できるデータのスループットが増加します。Amazon EC2 では 9001 バイトのジャンボフレームがサポートされますが、他のサービスでは異なる制限が適用される場合があります。パケットサイズを小さくすると、パケットの処理速度は上がりますが、パケット数が PPS の許容値を超えたときに達成される最大帯域幅が、減少する可能性があります。  
パケットのサイズがネットワークホップの最大転送単位 (MTU) を超えると、パス上のルーターがパケットをフラグメント化する可能性があります。生成されたパケットフラグメントは例外とみなされ、通常は標準速度 (高速ではない) で処理されます。これにより、パフォーマンスにばらつきが生じる可能性があります。ただし、フラグメントプロキシモード設定を使用して、アウトバウンドフラグメントパケットの標準の動作を上書きできます。詳細については、「[Nitro System でのネットワークパフォーマンスを最大化する](#ena-nitro-perf-maximize)」を参照してください。MTU を設定するときは、トポロジを評価することが推奨されます。

**プロトコルのトレードオフ**  
TCP のような信頼性の高いプロトコルは、UDP のような信頼性の低いプロトコルよりもオーバーヘッドが大きくなります。UDP トランスポートプロトコルの低いオーバーヘッドとシンプルなネットワーク処理により、PPS レートを高くすることができますが、信頼性の高いパケット配信が犠牲になります。アプリケーションにとって信頼性の高いパケット配信が重要でない場合は、UDP が適しているかもしれません。

**マイクロバースティング**  
マイクロバーストは、トラフィックが均等に分散されているときではなく、短時間で許容値を超えたときに発生します。通常これは、マイクロ秒単位で発生します。  
例えば、最大 10 Gbps を送信できるインスタンスがあり、アプリケーションが 10 Gb を 0.5 秒で送信するとします。このマイクロバーストは最初の 0.5 秒で許容値を超え、残りの時間には何も残りません。10 Gb を 1 秒以内に 送信したとしても、最初の 0.5 秒間に余裕があると、パケットがキューに入れられたりドロップされたりする可能性があります。  
Linux Traffic Control などのネットワークスケジューラを使用すると、スループットを調整でき、マイクロバーストによってパケットがキューに入れられたりドロップされたりすることを、防ぐことができます。

**フロー数**  
1 つのフローは、最大 10 Gbps をサポートするクラスタープレイスメントグループ内にある場合や、最大 25 Gbps をサポートする ENA Express を使用している場合を除いて、5 Gbps に制限されます。  
同様に、Nitro Card は、1 つのフローを使用する場合と比べて、複数のフローで、より多くのパケットを処理できます。インスタンスあたりの、ピークのパケット処理速度を達成するには、総帯域幅が 100 Gbps 以上のインスタンスで、100 フロー以上にすることが推奨されます。総帯域幅の容量が増えると、ピーク処理速度の達成に必要なフローの数も増えます。ベンチマークは、ネットワークのピーク速度を達成するために、どのような構成が必要かを判断するのに役立ちます。

**Elastic Network Adapter (ENA) キュー**  
ENA (Elastic Network Adapter) は、複数の受信 (Rx) キューと転送 (Tx) キュー (ENA キュー) を使用して、EC2 インスタンスのネットワークパフォーマンスとスケーラビリティを向上させます。これらのキューは、利用可能なキュー全体で送受信されるデータの負荷を分散させることで、ネットワークトラフィックを効率的に管理します。  
詳細については、「[ENA キュー](ena-queues.md)」を参照してください。

**特徴量処理のオーバーヘッド**  
トラフィックミラーリングや ENA Express などの機能では、処理オーバーヘッドが増加して、パケット処理の絶対的パフォーマンスが低下する可能性があります。パケットの処理速度は、機能の使用を制限したり、無効にしたりすることで上げることができます。

**状態を維持するための接続トラッキング**  
セキュリティグループは、接続トラッキングを使用して、インスタンスに出入りするトラフィックに関する情報を追跡します。接続トラッキングは、ネットワークトラフィックの各フローにルールを適用して、そのトラフィックが許可されているか拒否されているかを判定します。Nitro Card は、フロートラッキングを使用してフローの状態を維持します。適用されるセキュリティグループのルールが増えれば、フローを評価するための作業も増えます。  
トラフィックフローはすべて追跡されるわけではありません。セキュリティグループルールが [追跡されていない接続](security-group-connection-tracking.md#untracked-connections) で設定されている場合は、有効な応答パスが複数あるときに対称ルーティングを確保するため接続を自動的に追跡する場合を除いて、追加の作業は必要ありません。

#### ハードウェアアクセラレーションを使用しないパケット
<a name="ena-nitro-perf-exceptions"></a>

ハードウェアアクセラレーションは、すべてのパケットで利用できるわけではありません。これらの例外の処理には、ネットワークフローの状態を確認するために必要な、処理オーバーヘッドが伴います。ネットワークフローは、プロトコル標準を確実に満たし、VPC 設計の変更に従い、許可された宛先にのみパケットを送信する必要があります。ただし、オーバーヘッドはパフォーマンスを低下させます。

**パケットフラグメント**  
「**アプリケーションの考慮事項**」で述べたように、ネットワーク MTU を超えるパケットから発生するパケットフラグメントは、通常は例外として処理され、ハードウェアアクセラレーションを利用することはできません。ただし、ドライバーのバージョンによっては、フラグメントプロキシモードでエグレスフラグメントの制限を回避できます。詳細については、「[Nitro System でのネットワークパフォーマンスを最大化する](#ena-nitro-perf-maximize)」セクションで実行可能なアクションを確認してください。

**アイドル接続**  
接続がタイムアウト制限に達していなくても、接続に一定時間アクティビティがないと、システムはその優先順位を下げることができます。優先順位が下がった後にデータが入ってきた場合、システムは、再度接続するために、そのデータを例外として処理する必要があります。  
接続を管理するには、接続トラッキングタイムアウトを使用してアイドル接続を終了します。TCP キープアライブを使用して、アイドル接続を開放しておくこともできます。詳細については、「[アイドル接続追跡タイムアウト](security-group-connection-tracking.md#connection-tracking-timeouts)」を参照してください。

**VPC ミューテーション**  
セキュリティグループ、ルートテーブル、アクセスコントロールリストの更新は、すべて処理パスで再評価して、ルートエントリとセキュリティグループのルールが、想定どおりに適用されることを確認する必要があります。

**ICMP フロー**  
インターネット制御メッセージプロトコル (ICMP) は、ネットワーク通信の問題を診断する場合にネットワークデバイスで使用するネットワーク層プロトコルです。これらのパケットでは、常にフルフローが使用されます。

**非対称 L2 フロー**  
NitroV3 以前のプラットフォームでは、同一サブネット内の 2 つの ENI 間のトラフィックにおいて、片方の ENI がデフォルトゲートウェイルーターを使用し、もう片方が使用しない構成の場合、ハードウェアアクセラレーションは有効になりません。NitroV4 以降のプラットフォームでは、このシナリオにおいてハードウェアアクセラレーションが有効になります。NitroV3 以前のプラットフォームでのパフォーマンスを向上させるには、両方の ENI 間で使用されているデフォルトのゲートウェイルーター、またはそれらの ENI が異なるサブネットにあることを確認してください。

## Nitro System でのネットワークパフォーマンスを最大化する
<a name="ena-nitro-perf-maximize"></a>

Nitro システムのネットワークパフォーマンスは、ネットワーク設定を調整することで最大化できます。

**Topics**
+ [考慮事項](#considerations)
+ [PPS パフォーマンスの調整](#tuning)
+ [ENA キュー割り当てを設定する](#max-perf-ena-queues)
+ [Linux インスタンスのパフォーマンスを監視する](#monitoring)

### 考慮事項
<a name="considerations"></a>

設計上の決定や、インスタンスのネットワーク設定の調整を行う際には、ベストな結果が得られるよう、事前に以下の手順を実行しておくことが推奨されます。

1. [Nitro システムのネットワーク設計に関して考慮すべき事項](#ena-nitro-perf-considerations) をレビューして、パフォーマンスの向上に役立つアクションの、長所と短所を理解しておきます。

   Linux でのインスタンス設定に関するその他の考慮事項とベストプラクティスについては、GitHub の「[ENA Linux Driver Best Practices and Performance Optimization Guide](https://github.com/amzn/amzn-drivers/blob/master/kernel/linux/ena/ENA_Linux_Best_Practices.rst)」を参照してください。

1. ピーク時のアクティブフロー数でワークロードをベンチマークし、アプリケーションパフォーマンスのベースラインを決定します。パフォーマンスベースラインを使用すると、設定やアプリケーション設計のバリエーションをテストして、特にスケールアップやスケールアウトを計画している場合に、どの考慮事項が最も大きな影響を与えるかを判断することができます。

### PPS パフォーマンスの調整
<a name="tuning"></a>

以下は、システムのニーズに応じて PPS のパフォーマンスを調整する際に活用できるアクションの一覧です。
+ 2 つのインスタンス間の物理的な距離を短くします。送信側と受信側のインスタンスが同じアベイラビリティーゾーンにある場合や、クラスタープレイスメントグループを使用している場合は、パケットが 1 つのエンドポイントから別のエンドポイントに移動する際に必要になるホップの数を、減らすことができます。
+ [追跡されていない接続](security-group-connection-tracking.md#untracked-connections) を使用します。
+ ネットワークトラフィックには UDP プロトコルを使用します。
+ 総帯域幅が 100 Gbps 以上の EC2 インスタンスでは、Nitro Card 全体に処理を均等に分散するために、100 以上の個別のフローにワークロードを分散します。
+ EC2 インスタンスのエグレスフラグメント PPS 制限を克服するには、フラグメントプロキシモードを有効にします (これはドライバーのバージョンによってできる場合とできない場合があります)。この設定により、フラグメント化されたパケットが処理パスで評価されるようになるため、エグレス PPS 制限の 1024 を克服できます。ドライバーをロードするときは、次のいずれかのコマンドを実行して、フラグメントプロキシモードを有効または無効にします。

  **フラグメントプロキシモードを有効にする**

  ```
  sudo insmod ena.ko enable_frag_bypass=1
  ```

  **フラグメントプロキシモードを無効にする**

  ```
  sudo insmod ena.ko enable_frag_bypass=0
  ```

### ENA キュー割り当てを設定する
<a name="max-perf-ena-queues"></a>

サポートされているインスタンスタイプでは、これらのキューを Elastic Network Interface (ENI) 全体に動的に割り当てることができます。柔軟な ENA キューの割り当てはリソース配分を最適化するため、vCPU を最大限に活用できます。通常、ネットワークパフォーマンスの高いワークロードには複数の ENA キューが必要です。詳細については、「[ENA キュー](ena-queues.md)」を参照してください。

### Linux インスタンスのパフォーマンスを監視する
<a name="monitoring"></a>

Linux インスタンスの Ethtool メトリクスを使用することで、帯域幅、パケットレート、接続トラッキングなどの、インスタンスのネットワークパフォーマンス指標を監視することができます。詳細については、「[EC2 インスタンスでの ENA 設定のネットワークパフォーマンスのモニタリング](monitoring-network-performance-ena.md)」を参照してください。

# EC2 Windows インスタンスでのネットワークパフォーマンスを最適化する
<a name="enhanced-networking-os"></a>

ネットワーキングが拡張された Windows インスタンスで最良のネットワークパフォーマンスを実現するには、デフォルトのオペレーティングシステム設定を変更する必要がある場合があります。高いネットワークパフォーマンスを必要とするアプリケーションには、次の設定変更をお勧めします。その他の最適化 (チェックサムオフロードをオンにして RSS を有効にするなど) は、公式の Windows AMI で既に行われています。

**注記**  
TCP Chimney オフロードはほとんどのユースケースで無効にする必要があり、Windows Server 2016 では廃止されています。

これらのオペレーティングシステムの最適化に加えて、ネットワークトラフィックの最大送信単位 (MTU) も考慮し、ワークロードとネットワークアーキテクチャーに応じて調整する必要があります。詳細については、[EC2 インスタンスのネットワークの最大送信単位 (MTU)](network_mtu.md)を参照してください。

AWS では、99.9 パーセンタイルで 50us のクラスタープレイスメントグループで起動されたインスタンスと 200us のテールレイテンシーの間のラウンドトリップレイテンシーを定期的に測定しています。アプリケーションで一貫して低レイテンシーが必要な場合、Nitro System で構築された固定パフォーマンスインスタンスで最新バージョンの ENA ドライバーを使用することをお勧めします。

## 受信側スケーリング CPU アフィニティを設定する
<a name="windows-rss-cpu-affinity"></a>

受信側スケーリング (RSS) は、複数のプロセッサにネットワークトラフィック CPU 負荷を分配するために使用されます。デフォルトでは、公式 アマゾン Windows AMI は、RSS を有効にして設定され、RSS を許可します。ENA Elastic Network Interface では、最大 8 個の RSS キューを利用できます。RSS キューやその他のシステム処理の CPU アフィニティを定義することで、マルチコアシステムで CPU の負荷を分散することができ、より多くのネットワークトラフィックを処理できます。16 個を超える vCPU を備えたインスタンスタイプでは、`Set-NetAdapterRSS` PowerShell cmdlet を使用することをお勧めします。この cmdlet は、さまざまなシステムコンポーネントとの競合を防ぐために、すべての エラスティックネットワークインターフェイス の RSS 設定からブートプロセッサ (ハイパースレッディングが有効になっている場合は論理プロセッサ 0 と 1) を手動で除外します。

Windows はハイパースレッド対応であり、単一の Elastic Network Interface の RSS キューが常に異なる物理コアに配置されるようにします。したがって、ハイパースレッディングが無効になっていない限り、他の NIC との競合を完全に防ぐために、各 NIC の RSS 設定が 16 個の論理プロセッサの全体で分散されます。`Set-NetAdapterRss` cmdlet を使用すると、BaseProcessorGroup、BaseProcessorNumber、MaxProcessingGroup、MaxProcessorNumber、および NumaNode (オプション) の値を定義することによって、NIC ごとの有効な論理プロセッサの範囲を定義できます。 エラスティックネットワークインターフェイス 間の競合を完全に排除するのに十分な物理コアがない場合は、インターフェイスで想定されるワークロードに応じて、 エラスティックネットワークインターフェイス 範囲内の論理プロセッサの数を減らします (つまり、管理ネットワークインターフェイスが少量であれば、それほど多くの RSS キューを割り当てる必要はないということです)。また、前記のように、さまざまなコンポーネントを CPU 0 で実行する必要があるため、十分な vCPU が利用可能な場合は、すべての RSS 構成から除外することをお勧めします。

例えば、ハイパースレッディングが有効になっている NUMA ノードを 2 つ備えた 72 の vCPU インスタンスに Elastic Network Interface が 3 つある場合、以下のコマンドは 2 つの CPU 間でネットワーク負荷を重複なく分散させ、コア 0 の使用を完全に防ぎます。

```
Set-NetAdapterRss -Name NIC1 -BaseProcessorGroup 0 -BaseProcessorNumber 2 -MaxProcessorNumber 16 
Set-NetAdapterRss -Name NIC2 -BaseProcessorGroup 1 -BaseProcessorNumber 0 -MaxProcessorNumber 14 
Set-NetAdapterRss -Name NIC3 -BaseProcessorGroup 1 -BaseProcessorNumber 16 -MaxProcessorNumber 30
```

これらの設定は各ネットワークアダプターに対して永続的であることに注意してください。インスタンスの vCPU 数が異なるインスタンスにサイズ変更された場合は、有効になっている Elastic Network Interface ごとに RSS 設定を再評価する必要があります。コマンドレットの完全な Microsoft ドキュメントは、[Set-NetAdapterRss ](https://learn.microsoft.com/en-us/powershell/module/netadapter/set-netadapterrss)にあります。

SQL ワークロードに関する特記事項: 同じ CPU に対する I/O およびネットワークの競合を最小限に抑えるために、Elastic Network Interface RSS 構成と共に I/O スレッドアフィニティ設定を確認することをお勧めします。[affinity mask Server Configuration Option](https://learn.microsoft.com/en-us/sql/database-engine/configure-windows/affinity-mask-server-configuration-option)を参照してください。

# Amazon EC2 の AI/ML および HPC ワークロード用の Elastic Fabric Adapter
<a name="efa"></a>

Elastic Fabric Adapter (EFA) はAI、機械学習 (ML) およびハイパフォーマンスコンピューティング (HPC) のアプリケーションを高速化するために Amazon EC2 インスタンスにアタッチできるネットワークデバイスです。EFA ではAWS クラウドが提供するスケーラビリティ、柔軟性、伸縮性により、オンプレミス AI/ML または HPC クラスターのアプリケーションパフォーマンスを実現できます。

EFA ではクラウドベースの HPC システムで従来使用されていた TCP トランスポートよりも低く、一貫性の高いレイテンシーを提供し、高いスループットが得られます。AI/ML および HPC アプリケーションのスケーリングに不可欠なインスタンス間通信のパフォーマンスが向上します。既存の AWS ネットワークインフラストラクチャで動作するように最適化されており、アプリケーション要件に応じてスケールすることができます。

EFA は Libfabric と統合されており、AI および機械学習アプリケーション向けに Nvidia Collective Communications Library (NCCL) と NVIDIA Inference Xfer Library (NIXL)、および HPC アプリケーション向けに Open MPI 4.1 以降と Intel MPI 2019 Update 5 以降をサポートしています。NCCL と MPI は Libfabric 1.7.0 以降と統合されています。NIXL は Libfabric 1.21.0 以降と統合されています。

Nitro バージョン 4 以降でサポートされているほとんどのインスタンスタイプで、EFA は RDMA (リモートダイレクトメモリアクセス) 書き込みをサポートしています。RDMA 読み取りは、Nitro バージョン 4 以降のすべてのインスタンスでサポートされています。詳細については「[サポートされるインスタンスタイプ](#efa-instance-types)」を参照してください。

**Topics**
+ [EFA の基本](#efa-basics)
+ [サポートされているインターフェイスとライブラリ](#efa-mpi)
+ [サポートされるインスタンスタイプ](#efa-instance-types)
+ [サポートされるオペレーティングシステム](#efa-os)
+ [EFA の制限事項](#efa-limits)
+ [EFA 価格設定](#efa-pricing)
+ [EFAと MPI の開始方法](efa-start.md)
+ [EFAとNCCL の開始方法](efa-start-nccl.md)
+ [EFA と NIXL の開始方法](efa-start-nixl.md)
+ [ネットワーク帯域幅の最大化](efa-acc-inst-types.md)
+ [EFA を作成してアタッチする](create-efa.md)
+ [EFA をデタッチおよび削除する](detach-efa.md)
+ [EFA のモニタリング](efa-working-monitor.md)
+ [EFA インストーラを検証する](efa-verify.md)
+ [リリースノート](efa-changelog.md)

## EFA の基本
<a name="efa-basics"></a>

EFA デバイスは次の 2 つの方法で EC2 インスタンスにアタッチできます。

1. EFA デバイスと ENA デバイスの両方を作成する EFA と ENA の組み合わせとも呼ばれる従来の EFA インターフェイスを使用します。

1. EFA のみのインターフェイスを使用して、EFA デバイスのみを作成します。

EFA デバイスはScalable Reliable Datagram (SRD) プロトコルを介した組み込み OS バイパスや輻輳制御などの機能を提供します。EFA デバイス機能により、低レイテンシーで信頼性の高いトランスポート機能が可能になり、EFA インターフェイスが Amazon EC2 の HPC および ML アプリケーションのパフォーマンスを向上させることができます。一方、ENA デバイスは従来の IP ネットワークを提供します。

![\[従来の HPC ソフトウェアスタックと、EFA を使用するソフトウェアスタックの比較。\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/efa_stack.png)


従来、AI/ML アプリケーションは NCCL と NIXL (分散推論用) を使用します。HPC アプリケーションは、Message Passing Interface (MPI) を使用してシステムのネットワーク転送と連携します。AWS クラウドではアプリケーションが NCCL、NIXL または MPI と連携することを意味します。MPI はオペレーティングシステムの TCP/IP スタックと ENA デバイスドライバーを使用して、インスタンス間のネットワーク通信を行います。

従来の EFA (ENA を使用した EFA) または EFA 専用インターフェイスでは、AI/ML アプリケーションは NCCL と NIXL (分散推論用) を使用します。HPC アプリケーションは MPI を使用して Libfabric API と直接連携します。Libfabric API はオペレーティングシステムのカーネルをバイパスし、EFA デバイスと直接通信してパケットをネットワークに送ります。これにより、オーバーヘッドが削減され、AI/ML および HPC アプリケーションを効率的に実行できるようになります。

**注記**  
Libfabric はOpenFabrics Interface (OFI) フレームワークのコアコンポーネントで、OFI のユーザースペース API を定義およびエクスポートします。詳細については[Libfabric OpenFabrics](https://ofiwg.github.io/libfabric/)ウェブサイトを参照してください。

### ENA、EFA、EFA のみのネットワークインターフェイスの違い
<a name="efa-differences"></a>

Amazon EC2 では次の 2 種類のネットワークインターフェイスを提供しています。
+ **ENA** インターフェイスはVPC の IP ネットワークをサポートするために必要なすべての従来の IP ネットワークとルーティング機能を提供します。詳細については「[EC2 インスタンスで ENA による拡張ネットワーキングを有効にする](enhanced-networking-ena.md)」を参照してください。
+ **EFA** (EFA と ENA の組み合わせ) インターフェイスはIP ネットワーク用の ENA デバイスと、低レイテンシーで高スループット通信用の EFA デバイスの両方を提供します。
+ **EFA のみ**のインターフェイスは EFA デバイス機能のみをサポートし、従来の IP ネットワーク用の ENA デバイスはありません。

次の表はENA、EFA、および EFA のみのネットワークインターフェイスの比較を提示しています。


|  | ENA | EFA (EFA と ENA の組み合わせ) | EFA のみ | 
| --- | --- | --- | --- | 
| IP ネットワーク機能をサポート | はい | あり | なし | 
| IPv4 アドレスまたは IPv6 アドレスを割り当て可能 | あり | あり | なし | 
| インスタンスのプライマリネットワークインターフェイスとして使用可能 | あり | あり | なし | 
| インスタンスの ENI アタッチメント制限へのカウント | あり | はい | はい | 
| インスタンスタイプのサポート | すべての Nitro ベースのインスタンスタイプでサポートに対応 | [サポートされるインスタンスタイプ](#efa-instance-types) | [サポートされるインスタンスタイプ](#efa-instance-types) | 
| EC2 API のパラメータ命名 | interface | efa | efa-only | 
| EC2 コンソールのフィールド命名 | 選択なし | EFA と ENA の組み合わせ | EFA のみ | 

## サポートされているインターフェイスとライブラリ
<a name="efa-mpi"></a>

EFA は以下のインターフェイスとライブラリをサポートしています。
+ Open MPI 4.1 以降
+ Intel MPI 2019 Update 5 以降
+ NVIDIA Collective Communications Library (NCCL) 2.4.2 以降
+ NVIDIA Inference Xfer Library (NIXL) 1.0.0 以降
+ AWS Neuron SDK バージョン 2.3 以降

## サポートされるインスタンスタイプ
<a name="efa-instance-types"></a>

次のインスタンスタイプはすべて EFA をサポートしています。また、この表は、インスタンスタイプの RDMA 読み取りおよび RDMA 書き込みのサポートを示しています。

------
#### [ Nitro v6 ]


| インスタンスタイプ | RDMA 読み取りサポート | RDMA 書き込みサポート | 
| --- |--- |--- |
| 汎用 | 
| --- |
| m8a.48xlarge | Yes | Yes | 
| m8a.metal-48xl | Yes | Yes | 
| m8azn.24xlarge | Yes | Yes | 
| m8azn.metal-24xl | Yes | Yes | 
| m8gb.16xlarge | Yes | Yes | 
| m8gb.24xlarge | Yes | Yes | 
| m8gb.48xlarge | Yes | Yes | 
| m8gb.metal-24xl | Yes | Yes | 
| m8gb.metal-48xl | Yes | Yes | 
| m8gn.16xlarge | Yes | Yes | 
| m8gn.24xlarge | Yes | Yes | 
| m8gn.48xlarge | Yes | Yes | 
| m8gn.metal-24xl | Yes | Yes | 
| m8gn.metal-48xl | Yes | Yes | 
| m8i.48xlarge | Yes | Yes | 
| m8i.96xlarge | Yes | Yes | 
| m8i.metal-48xl | Yes | Yes | 
| m8i.metal-96xl | Yes | Yes | 
| m8id.48xlarge | Yes | Yes | 
| m8id.96xlarge | Yes | Yes | 
| m8id.metal-48xl | Yes | Yes | 
| m8id.metal-96xl | Yes | Yes | 
| コンピューティング最適化 | 
| --- |
| c8a.48xlarge | Yes | Yes | 
| c8a.metal-48xl | Yes | Yes | 
| c8gb.16xlarge | Yes | Yes | 
| c8gb.24xlarge | Yes | Yes | 
| c8gb.48xlarge | Yes | Yes | 
| c8gb.metal-24xl | Yes | Yes | 
| c8gb.metal-48xl | Yes | Yes | 
| c8gn.16xlarge | Yes | Yes | 
| c8gn.24xlarge | Yes | Yes | 
| c8gn.48xlarge | Yes | Yes | 
| c8gn.metal-24xl | Yes | Yes | 
| c8gn.metal-48xl | Yes | Yes | 
| c8i.48xlarge | Yes | Yes | 
| c8i.96xlarge | Yes | Yes | 
| c8i.metal-48xl | Yes | Yes | 
| c8i.metal-96xl | Yes | Yes | 
| c8id.48xlarge | Yes | Yes | 
| c8id.96xlarge | Yes | Yes | 
| c8id.metal-48xl | Yes | Yes | 
| c8id.metal-96xl | Yes | Yes | 
| メモリを最適化 | 
| --- |
| r8a.48xlarge | Yes | Yes | 
| r8a.metal-48xl | Yes | Yes | 
| r8gb.16xlarge | Yes | Yes | 
| r8gb.24xlarge | Yes | Yes | 
| r8gb.48xlarge | Yes | Yes | 
| r8gb.metal-24xl | Yes | Yes | 
| r8gb.metal-48xl | Yes | Yes | 
| r8gn.16xlarge | Yes | Yes | 
| r8gn.24xlarge | Yes | Yes | 
| r8gn.48xlarge | Yes | Yes | 
| r8gn.metal-24xl | Yes | Yes | 
| r8gn.metal-48xl | Yes | Yes | 
| r8i.48xlarge | Yes | Yes | 
| r8i.96xlarge | Yes | Yes | 
| r8i.metal-48xl | Yes | Yes | 
| r8i.metal-96xl | Yes | Yes | 
| r8id.48xlarge | Yes | Yes | 
| r8id.96xlarge | Yes | Yes | 
| r8id.metal-48xl | Yes | Yes | 
| r8id.metal-96xl | Yes | Yes | 
| x8aedz.24xlarge | Yes | Yes | 
| x8aedz.metal-24xl | Yes | Yes | 
| x8i.48xlarge | Yes | Yes | 
| x8i.64xlarge | Yes | Yes | 
| x8i.96xlarge | Yes | Yes | 
| x8i.metal-48xl | Yes | Yes | 
| x8i.metal-96xl | Yes | Yes | 
| ストレージの最適化 | 
| --- |
| i8ge.48xlarge | Yes | No | 
| i8ge.metal-48xl | Yes | No | 
| 高速コンピューティング | 
| --- |
| g7e.8xlarge | Yes | Yes | 
| g7e.12xlarge | Yes | Yes | 
| g7e.24xlarge | Yes | Yes | 
| g7e.48xlarge | Yes | Yes | 
| p6-b200.48xlarge | Yes | Yes | 
| p6-b300.48xlarge | Yes | Yes | 
| ハイパフォーマンスコンピューティング | 
| --- |
| hpc8a.96xlarge | Yes | Yes | 

------
#### [ Nitro v5 ]


| インスタンスタイプ | RDMA 読み取りサポート | RDMA 書き込みサポート | 
| --- |--- |--- |
| 汎用 | 
| --- |
| m8g.24xlarge | Yes | No | 
| m8g.48xlarge | Yes | No | 
| m8g.metal-24xl | Yes | No | 
| m8g.metal-48xl | Yes | No | 
| m8gd.24xlarge | No | No | 
| m8gd.48xlarge | No | No | 
| m8gd.metal-24xl | No | No | 
| m8gd.metal-48xl | No | No | 
| コンピューティング最適化 | 
| --- |
| c7gn.16xlarge | Yes | No | 
| c7gn.metal | Yes | No | 
| c8g.24xlarge | Yes | No | 
| c8g.48xlarge | Yes | No | 
| c8g.metal-24xl | Yes | No | 
| c8g.metal-48xl | Yes | No | 
| c8gd.24xlarge | No | No | 
| c8gd.48xlarge | No | No | 
| c8gd.metal-24xl | No | No | 
| c8gd.metal-48xl | No | No | 
| メモリを最適化 | 
| --- |
| r8g.24xlarge | No | No | 
| r8g.48xlarge | No | No | 
| r8g.metal-24xl | No | No | 
| r8g.metal-48xl | No | No | 
| r8gd.24xlarge | No | No | 
| r8gd.48xlarge | No | No | 
| r8gd.metal-24xl | No | No | 
| r8gd.metal-48xl | No | No | 
| x8g.24xlarge | No | No | 
| x8g.48xlarge | No | No | 
| x8g.metal-24xl | No | No | 
| x8g.metal-48xl | No | No | 
| ストレージの最適化 | 
| --- |
| i7ie.48xlarge | Yes | No | 
| i7ie.metal-48xl | Yes | No | 
| i8g.48xlarge | No | No | 
| i8g.metal-48xl | No | No | 
| 高速コンピューティング | 
| --- |
| p5en.48xlarge | Yes | Yes | 
| p6e-gb200.36xlarge | Yes | Yes | 
| trn2.3xlarge | Yes | Yes | 
| trn2.48xlarge | Yes | Yes | 
| trn2u.48xlarge | Yes | Yes | 
| ハイパフォーマンスコンピューティング | 
| --- |
| hpc7g.4xlarge | Yes | No | 
| hpc7g.8xlarge | Yes | No | 
| hpc7g.16xlarge | Yes | No | 

------
#### [ Nitro v4 ]


| インスタンスタイプ | RDMA 読み取りサポート | RDMA 書き込みサポート | 
| --- |--- |--- |
| 汎用 | 
| --- |
| m6a.48xlarge | Yes | Yes | 
| m6a.metal | Yes | Yes | 
| m6i.32xlarge | Yes | Yes | 
| m6i.metal | Yes | Yes | 
| m6id.32xlarge | Yes | Yes | 
| m6id.metal | Yes | Yes | 
| m6idn.32xlarge | Yes | Yes | 
| m6idn.metal | Yes | Yes | 
| m6in.32xlarge | Yes | Yes | 
| m6in.metal | Yes | Yes | 
| m7a.48xlarge | Yes | No | 
| m7a.metal-48xl | Yes | No | 
| m7g.16xlarge | Yes | No | 
| m7g.metal | Yes | No | 
| m7gd.16xlarge | Yes | No | 
| m7gd.metal | Yes | No | 
| m7i.48xlarge | Yes | No | 
| m7i.metal-48xl | Yes | No | 
| コンピューティング最適化 | 
| --- |
| c6a.48xlarge | Yes | Yes | 
| c6a.metal | Yes | Yes | 
| c6gn.16xlarge | Yes | Yes | 
| c6i.32xlarge | Yes | Yes | 
| c6i.metal | Yes | Yes | 
| c6id.32xlarge | Yes | Yes | 
| c6id.metal | Yes | Yes | 
| c6in.32xlarge | Yes | Yes | 
| c6in.metal | Yes | Yes | 
| c7a.48xlarge | Yes | No | 
| c7a.metal-48xl | Yes | No | 
| c7g.16xlarge | Yes | Yes | 
| c7g.metal | Yes | Yes | 
| c7gd.16xlarge | Yes | No | 
| c7gd.metal | Yes | No | 
| c7i.48xlarge | Yes | No | 
| c7i.metal-48xl | Yes | No | 
| メモリを最適化 | 
| --- |
| r6a.48xlarge | Yes | Yes | 
| r6a.metal | Yes | Yes | 
| r6i.32xlarge | Yes | Yes | 
| r6i.metal | Yes | Yes | 
| r6id.32xlarge | Yes | Yes | 
| r6id.metal | Yes | Yes | 
| r6idn.32xlarge | Yes | Yes | 
| r6idn.metal | Yes | Yes | 
| r6in.32xlarge | Yes | Yes | 
| r6in.metal | Yes | Yes | 
| r7a.48xlarge | No | No | 
| r7a.metal-48xl | No | No | 
| r7g.16xlarge | No | No | 
| r7g.metal | No | No | 
| r7gd.16xlarge | No | No | 
| r7gd.metal | No | No | 
| r7i.48xlarge | No | No | 
| r7i.metal-48xl | No | No | 
| r7iz.32xlarge | No | No | 
| r7iz.metal-32xl | No | No | 
| u7i-6tb.112xlarge | Yes | Yes | 
| u7i-8tb.112xlarge | Yes | Yes | 
| u7i-12tb.224xlarge | Yes | Yes | 
| u7in-16tb.224xlarge | Yes | Yes | 
| u7in-24tb.224xlarge | Yes | Yes | 
| u7in-32tb.224xlarge | Yes | Yes | 
| u7inh-32tb.480xlarge | Yes | Yes | 
| x2idn.32xlarge | Yes | Yes | 
| x2idn.metal | Yes | Yes | 
| x2iedn.32xlarge | Yes | Yes | 
| x2iedn.metal | Yes | Yes | 
| ストレージの最適化 | 
| --- |
| i4g.16xlarge | Yes | Yes | 
| i4i.32xlarge | Yes | Yes | 
| i4i.metal | Yes | Yes | 
| i7i.24xlarge | Yes | No | 
| i7i.48xlarge | Yes | No | 
| i7i.metal-48xl | Yes | No | 
| im4gn.16xlarge | Yes | Yes | 
| 高速コンピューティング | 
| --- |
| f2.48xlarge | Yes | Yes | 
| g6.8xlarge | Yes | Yes | 
| g6.12xlarge | Yes | Yes | 
| g6.16xlarge | Yes | Yes | 
| g6.24xlarge | Yes | Yes | 
| g6.48xlarge | Yes | Yes | 
| g6e.8xlarge | Yes | Yes | 
| g6e.12xlarge | Yes | Yes | 
| g6e.16xlarge | Yes | Yes | 
| g6e.24xlarge | Yes | Yes | 
| g6e.48xlarge | Yes | Yes | 
| gr6.8xlarge | Yes | Yes | 
| p5.4xlarge | Yes | Yes | 
| p5.48xlarge | Yes | Yes | 
| p5e.48xlarge | Yes | Yes | 
| trn1.32xlarge | Yes | Yes | 
| trn1n.32xlarge | Yes | Yes | 
| ハイパフォーマンスコンピューティング | 
| --- |
| hpc6a.48xlarge | Yes | Yes | 
| hpc6id.32xlarge | Yes | Yes | 
| hpc7a.12xlarge | Yes | No | 
| hpc7a.24xlarge | Yes | No | 
| hpc7a.48xlarge | Yes | No | 
| hpc7a.96xlarge | Yes | No | 

------
#### [ Nitro v3 ]


| インスタンスタイプ | RDMA 読み取りサポート | RDMA 書き込みサポート | 
| --- |--- |--- |
| 汎用 | 
| --- |
| m5dn.24xlarge | No | No | 
| m5dn.metal | No | No | 
| m5n.24xlarge | No | No | 
| m5n.metal | No | No | 
| m5zn.12xlarge | No | No | 
| m5zn.metal | No | No | 
| コンピューティング最適化 | 
| --- |
| c5n.9xlarge | No | No | 
| c5n.18xlarge | No | No | 
| c5n.metal | No | No | 
| メモリを最適化 | 
| --- |
| r5dn.24xlarge | No | No | 
| r5dn.metal | No | No | 
| r5n.24xlarge | No | No | 
| r5n.metal | No | No | 
| x2iezn.12xlarge | No | No | 
| x2iezn.metal | No | No | 
| ストレージの最適化 | 
| --- |
| i3en.12xlarge | No | No | 
| i3en.24xlarge | No | No | 
| i3en.metal | No | No | 
| 高速コンピューティング | 
| --- |
| dl1.24xlarge | Yes | No | 
| dl2q.24xlarge | No | No | 
| g4dn.8xlarge | No | No | 
| g4dn.12xlarge | No | No | 
| g4dn.16xlarge | No | No | 
| g4dn.metal | No | No | 
| g5.8xlarge | No | No | 
| g5.12xlarge | No | No | 
| g5.16xlarge | No | No | 
| g5.24xlarge | No | No | 
| g5.48xlarge | No | No | 
| inf1.24xlarge | No | No | 
| p3dn.24xlarge | No | No | 
| p4d.24xlarge | Yes | No | 
| p4de.24xlarge | Yes | No | 
| vt1.24xlarge | No | No | 
| 前の世代 | 
| --- |
| p3dn.24xlarge | No | No | 

------

**特定のリージョンで EFA をサポートする利用可能なインスタンスタイプを確認するには**  
利用可能なインスタンスタイプはリージョンごとに異なります。リージョンで EFA をサポートする使用可能なインスタンスタイプを確認するには`--region` パラメーターを指定して [describe-instance-types](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instance-types.html) コマンドを使用します。結果を EFA をサポートするインスタンスタイプにスコープする `--filters` パラメーターと、出力を `InstanceType` の値にスコープする `--query` パラメーターを含めます。

```
aws ec2 describe-instance-types \
    --region us-east-1  \
    --filters Name=network-info.efa-supported,Values=true \
    --query "InstanceTypes[*].[InstanceType]"  \
    --output text | sort
```

## サポートされるオペレーティングシステム
<a name="efa-os"></a>

オペレーティングシステムのサポートはプロセッサタイプによって異なります。次の表はサポートされているオペレーティングシステムを示しています。


| オペレーティングシステム | Intel/AMD (`x86_64`) インスタンスタイプ | AWS Graviton (`arm64`) インスタンスタイプ | 
| --- | --- | --- | 
| Amazon Linux 2023 | ✓ | ✓ | 
| Amazon Linux 2 | ✓ | ✓ | 
| RHEL 8 および 9 | ✓ | ✓ | 
| Debian 11、12、13 | ✓ | ✓ | 
| Rocky Linux 8 および 9 | ✓ | ✓ | 
| Ubuntu 22.04 と 24.04 | ✓ | ✓ | 
| SUSE Linux Enterprise 15 SP2 以降 | ✓ | ✓ | 
| OpenSUSE Leap 15.5 以降 | ✓ |  | 

**注記**  
リストされているオペレーティングシステムの一部は、Intel MPI でサポートされていない場合があります。Intel MPI を使用している場合は、[Intel MPI ドキュメント](https://www.intel.com/content/www/us/en/developer/articles/system-requirements/mpi-library-system-requirements.html)を参照してオペレーティングシステムのサポートを確認してください。

## EFA の制限事項
<a name="efa-limits"></a>

EFA には次の制限があります。
+ RDMA 書き込みは、すべてのインスタンスタイプでサポートされているわけではありません。詳細については「[サポートされるインスタンスタイプ](#efa-instance-types)」を参照してください。
+ P4d/P4de/DL1 インスタンスと他のインスタンスタイプ間の EFA トラフィック 1 は現在サポートされていません。
+ [複数のネットワークカードをサポートするインスタンスタイプ](using-eni.md#network-cards)はネットワークカードごとに 1 つの EFA で設定できます。その他のサポートされているインスタンスタイプはすべて、インスタンスごとに 1 つの EFA のみをサポートしています。
+ EFA がアタッチされている場合、`c7g.16xlarge`、`m7g.16xlarge`、および `r7g.16xlarge` のハードウェア専有インスタンスおよび専有ホストはサポートされません。
+ EFA トラフィック 1 はアベイラビリティーゾーンまたは VPC をまたがることはできません。これはEFA インターフェイスの ENA デバイスからの通常の IP トラフィックには適用されません。
+ EFA トラフィック 1 はルーティングできません。EFA インターフェイスの ENA デバイスからの通常の IP トラフィックはルーティング可能です。
+ EFA は AWS Outposts ではサポートされていません。
+ EFA (EFA と ENA の組み合わせ) インターフェイスの EFA デバイスは AWS Cloud Digital Interface Software Development Kit (AWS CDI SDK) ベースのアプリケーションでのみ Windows インスタンスでサポートされています。EFA (EFA と ENA の組み合わせ) インターフェイスを Windows インスタンスに非 CDI SDK ベースのアプリケーション用として接続すると、EFA デバイスの機能を追加せずに、ENA インターフェースとして機能します。EFA のみのインターフェイスはWindows または Linux で AWS CDI ベースのアプリケーションではサポートされていません。詳細については「[AWS Cloud Digital Interface Software Development Kit (AWS CDI SDK) ユーザーガイド](https://docs.aws.amazon.com/CDI-SDK/latest/ug/what-is.html)」を参照してください。

1*EFA トラフィック*とは、EFA (EFA および ENA の組み合わせ) または EFA 専用のインターフェイスのいずれかの EFA デバイスを介して配信されるトラフィックを指します。

## EFA 価格設定
<a name="efa-pricing"></a>

EFA はオプションの Amazon EC2 ネットワーキング機能として利用でき、サポートされているどのインスタンスでも追加費用なしで有効にできます。

# Amazon EC2 の HPC ワークロードに対して EFA と MPI の使用を開始する
<a name="efa-start"></a>

本チュートリアルはEFA と HPC ワークロードの MPI 対応インスタンスクラスターの起動に役立ちます。

**注記**  
`u7i-12tb.224xlarge`、`u7in-16tb.224xlarge`、`u7in-24tb.224xlarge`、および `u7in-32tb.224xlarge` インスタンスはOpen MPI では最大 128 の並列 MPI プロセスを実行でき、Intel MPI では最大 256 の並列 MPI プロセスを実行できます。

**Topics**
+ [ステップ 1: EFA 対応のセキュリティグループを準備する](#efa-start-security)
+ [ステップ 2: 一時インスタンスを作成する](#efa-start-tempinstance)
+ [ステップ 3: EFA ソフトウェアをインストールする](#efa-start-enable)
+ [ステップ 4: (*オプション*) Open MPI 5 を有効にする](#efa-start-ompi5)
+ [ステップ 5: (*オプション*) インテル MPI をインストールする](#efa-start-impi)
+ [ステップ 6: ptrace 保護を無効にする](#efa-start-ptrace)
+ [ステップ 7. インストールを確認する](#efa-start-test)
+ [ステップ 8: HPC アプリケーションをインストールする](#efa-start-hpc-app)
+ [ステップ 9: EFA 対応の AMI を作成する](#efa-start-ami)
+ [ステップ 10: クラスタープレイスメントグループで EFA 対応のインスタンスを作成する](#efa-start-instances)
+ [ステップ 11: 一時インスタンスを終了する](#efa-start-terminate)
+ [ステップ 12: パスワードレス SSH を有効にする](#efa-start-passwordless)

## ステップ 1: EFA 対応のセキュリティグループを準備する
<a name="efa-start-security"></a>

EFA にはセキュリティグループ自体とのインバウンドおよびアウトバウンドのトラフィックをすべて許可するセキュリティグループが必要です。以下の手順ではセキュリティグループを作成します。このセキュリティグループではセキュリティグループ自体とのすべてのインバウンドおよびアウトバウンドのトラフィックと、SSH 接続用の任意の IPv4 アドレスからのインバウンド SSH トラフィックを許可します。

**重要**  
このセキュリティグループはテストのみを目的としています。本番環境ではコンピュータの IP アドレスやローカルネットワークの IP アドレスの範囲など、接続元の IP アドレスからのトラフィックのみを許可するインバウンド SSH ルールを作成することをお勧めします。

その他のシナリオについては[さまざまなユースケースのセキュリティグループのルール](security-group-rules-reference.md)を参照してください。

**EFA 対応のセキュリティグループを作成するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで [**Security Groups**] (セキュリティグループ) を選択して、[**Create security group**] (セキュリティグループの作成) を選択してください。

1. [**Create security group**] (セキュリティグループの作成) ウィンドウで、以下を行います。

   1. [**セキュリティグループ名**] に、`EFA-enabled security group` のような、分かりやすいセキュリティグループ名を入力してください。

   1. (オプション) [**説明**] に、セキュリティグループの簡単な説明を入力してください。

   1. [**VPC**] で、EFA 対応のインスタンスを起動する VPC を選択してください。

   1. **[セキュリティグループの作成]** を選択してください。

1. 作成したセキュリティグループを選択し、**[Details]** (詳細) タブで **[Security group ID]** (セキュリティグループ ID) をコピーします。

1. セキュリティグループが選択された状態で、**[Actions]** (アクション)、**[Edit inbound rules]** (インバウンドルールの編集) の順に選択し、次の手順を実行します。

   1. [**Add rule**] を選択してください。

   1. [**Type**] で、[**All traffic**] を選択してください。

   1. **[Source type]** (送信元タイプ) で、**[Custom]** (カスタム) を選択し、コピーしたセキュリティグループ ID をフィールドに貼り付けます。

   1. [**ルールを追加**] を選択してください。

   1. **[タイプ]** で **SSH]** を選択してください。

   1. **[Source type]** (ソースタイプ) で、**[Anywhere-IPv4]** を選択してください。

   1. **[Save Rules]** (ルールの保存) を選択してください。

1. セキュリティグループが選択された状態で、**[Actions]** (アクション)、**[Edit outbound rules]** (アウトバウンドルールの編集) の順に選択し、次の手順を実行します。

   1. [**Add rule**] を選択してください。

   1. [**Type**] で、[**All traffic**] を選択してください。

   1. **[Destination type]** (送信先タイプ) で、**[Custom]** (カスタム) を選択し、コピーしたセキュリティグループ ID をフィールドに貼り付けます。

   1. **[Save Rules]** (ルールの保存) を選択してください。

## ステップ 2: 一時インスタンスを作成する
<a name="efa-start-tempinstance"></a>

EFA ソフトウェアコンポーネントのインストールおよび設定に使用する一時インスタンスを起動します。このインスタンスを使用して、EFA 対応のインスタンスを起動する EFA 対応の AMI を作成します。

**一時インスタンスを起動するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、**[Instances]** (インスタンス) を選択し、**[Launch Instances]** (インスタンスの起動) を選択して、新しいインスタンス起動ウィザードを開きます。

1. (*オプション*) **[Name and tags]** (名前とタグ) セクションで、`EFA-instance` などのインスタンス名を指定します。指定した名前はリソースタグとしてインスタンスに割り当てられます (`Name=EFA-instance`)。

1. **[Application and OS Images]** (アプリケーションと OS イメージ) セクションで、[サポートされるオペレーティングシステム](efa.md#efa-os)を選択してください。

1. **[Instance type]** (インスタンスタイプ) セクションで、[サポートされているインスタンスタイプ](efa.md#efa-instance-types)を選択してください。

1. **[Key pair]** (キーペア) セクションで、インスタンスに使用するキーペアを選択してください。

1. **[Network settings]** (ネットワーク設定) セクションで、**[Edit]** (編集) を選択し、次の操作を行います。

   1. [**サブネット**] で、インスタンスを起動するサブネットを選択してください。サブネットを選択しない場合、EFA のインスタンスを有効にすることはできません。

   1. **[Firewall (security groups)]** (ファイアウォール (セキュリティグループ)) の場合、**[Select existing security group]** (既存のセキュリティグループの選択) を選択し、前のステップで作成したセキュリティグループを選択してください。

   1. **[高度な設定]** セクションを展開します。

      **ネットワークインターフェイス 1** では**[ネットワークカードインデックス = 0]**、**[デバイスインデックス = 0]**、**[インターフェイスタイプ = EFA と ENA の組み合わせ]** を選択してください。

      (オプション) `p4d.24xlarge` または `p5.48xlarge` などのマルチカードインスタンスタイプを、必要な追加のネットワークインターフェイスごとに使用する場合は**[ネットワークインターフェイスの追加]** を選択し、**ネットワークカードインデックス**の場合は次の未使用インデックスを選択してから、**[デバイスインデックス = 1]**、**[インターフェイスタイプ = EFA と ENA の組み合わせ]** または **[EFA のみ]** を選択してください。

1. **[Storage]** (ストレージ) セクションで、必要に応じてボリュームを設定します。

1. 右側の **[合計mary]** (サマリー) パネルで、**[Launch instance]** (インスタンスの起動) を選択してください。

**注記**  
既に[アカウントのデフォルトとして IMDSv2 を設定](configuring-IMDS-new-instances.md#set-imdsv2-account-defaults)していない限り、一時インスタンスと[ステップ 9](#efa-start-ami) で作成する AMI に IMDSv2 の使用を必須化することを検討してください。IMDSv2 設定ステップの詳細については「[新規インスタンスのインスタンスメタデータオプションの設定](configuring-IMDS-new-instances.md)」を参照してください。

## ステップ 3: EFA ソフトウェアをインストールする
<a name="efa-start-enable"></a>

一時インスタンスで EFA をサポートするために必要な EFA 対応のカーネル、EFA ドライバー、Libfabric、および Open MPI スタックをインストールします。

このステップはEFA で Open MPI、Intel MPI、または Open MPI と Intel MPI のどれを使用するかによって異なります。

**注記**  
一部のオペレーティングシステムは、Intel MPI でサポートされていない場合があります。Intel MPI を使用している場合は、[Intel MPI ドキュメント](https://www.intel.com/content/www/us/en/developer/articles/system-requirements/mpi-library-system-requirements.html)を参照してオペレーティングシステムのサポートを確認してください。

**EFA ソフトウェアをインストールするには**

1. 起動したインスタンスに接続します。詳細については「[SSH を使用した Linux インスタンスへの接続](connect-to-linux-instance.md)」を参照してください。

1. すべてのソフトウェアパッケージが最新の状態であることを確認するため、インスタンスでソフトウェアの更新を実行します。このプロセスには数分かかることがあります。
   + Amazon Linux 2023、Amazon Linux 2、RHEL 8/9、Rocky Linux 8/9

     ```
     $ sudo yum update -y
     ```
   + Ubuntu と Debian

     ```
     $ sudo apt-get update && sudo apt-get upgrade -y
     ```
   + SUSE Linux Enterprise

     ```
     $ sudo zypper update -y
     ```

1. インスタンスを再起動して、そのインスタンスに再接続します。

1. EFA ソフトウェアのインストールファイルをダウンロードします。ソフトウェアのインストールファイルは圧縮された tar (`.tar.gz`) ファイルにパッケージ化されています。次のコマンドを使用して、*安定している*最新バージョンをダウンロードします。

   前述のコマンドのバージョン番号を `latest` に置き換えることで最新バージョンを取得することもできます。

   ```
   $ curl -O https://efa-installer.amazonaws.com/aws-efa-installer-1.47.0.tar.gz
   ```

1. (*オプション*) EFA tarball (`.tar.gz`) ファイルの認証と完全性を検証します。

   ソフトウェアパブリッシャーの ID を検証し、発行後にファイルの改変や破損がないことを確認するために、これを行うことをお勧めします。tar ファイルを検証しない場合はこの手順をスキップします。
**注記**  
代わりに、MD5 または SHA256 チェックサムを使用して tar ファイルを検証する場合は[チェックサムを使用した EFA インストーラの検証](efa-verify.md)を参照してください。

   1. パブリック GPG キーをダウンロードして、キーリングにインポートします。

      ```
      $ wget https://efa-installer.amazonaws.com/aws-efa-installer.key && gpg --import aws-efa-installer.key
      ```

      コマンドはキーの値を返します。次の手順で必要になるため、キーの値を書きとめておきます。

   1. GPG キーのフィンガープリントを検証します。次のコマンドを実行し、前のステップで作成したキーの値を指定します。

      ```
      $ gpg --fingerprint key_value
      ```

      コマンドは`4E90 91BC BB97 A96B 26B1 5E59 A054 80B1 DD2D 3CCC` と同じフィンガープリントを返します。フィンガープリントが一致しない場合はEFA インストールスクリプトを実行せず、サポート にお問い合わせください。

   1. 署名ファイルをダウンロードし、EFA tar ファイルの署名を検証します。

      ```
      $ wget https://efa-installer.amazonaws.com/aws-efa-installer-1.47.0.tar.gz.sig && gpg --verify ./aws-efa-installer-1.47.0.tar.gz.sig
      ```

      出力例を次に示します。

      ```
      gpg: Signature made Wed 29 Jul 2020 12:50:13 AM UTC using RSA key ID DD2D3CCC
      gpg: Good signature from "Amazon EC2 EFA <ec2-efa-maintainers@amazon.com>"
      gpg: WARNING: This key is not certified with a trusted signature!
      gpg:          There is no indication that the signature belongs to the owner.
      Primary key fingerprint: 4E90 91BC BB97 A96B 26B1  5E59 A054 80B1 DD2D 3CCC
      ```

      結果に `Good signature` が含まれ、フィンガープリントが前のステップで返されたフィンガープリントと一致する場合は次のステップに進みます。そうでない場合はEFA インストールスクリプトを実行せず、サポート にお問い合わせください。

1. 圧縮された `.tar.gz` ファイルからファイルを展開し、展開されたディレクトリに移動します。

   ```
   $ tar -xf aws-efa-installer-1.47.0.tar.gz && cd aws-efa-installer
   ```

1. EFA ソフトウェアをインストールします。使用するユースケースに応じて、以下のいずれかを実行します。
**注記**  
**EFA は SUSE Linux での NVIDIA GPUDirect をサポートしていません**。SUSE Linux を使用している場合はさらに kmod のインストールを防止する `--skip-kmod` オプションを指定する必要があります。デフォルトではSUSE Linux はツリー外のカーネルモジュールを許可しません。

------
#### [ Open MPI and Intel MPI ]

   EFA で Open MPI と Intel MPI を使用する場合はEFA ソフトウェアと共に Libfabric と Open MPI をインストールする必要があります。また、**「ステップ 5: (オプション) インテル MPI をインストールする」を完了する必要があります。**

   Libfabric および Open MPI と共に EFA ソフトウェアをインストールするには次のコマンドを実行します。

**注記**  
EFA 1.30.0 からは　Open MPI 4.1 と Open MPI 5 の両方がデフォルトでインストールされます。任意で、インストールする Open MPI のバージョンを指定できます。Open MPI 4.1 のみをインストールするには `--mpi=openmpi4` を含めてください。Open MPI 5 のみをインストールするには`--mpi=openmpi5` を含めてください。両方をインストールする場合は`--mpi` オプションを省略してください。

   ```
   $ sudo ./efa_installer.sh -y
   ```

   Libfabric は `/opt/amazon/efa` にインストールされます。Open MPI 4.1 は `/opt/amazon/openmpi` にインストールされます。Open MPI 5 は `/opt/amazon/openmpi5` にインストールされます。

------
#### [ Open MPI only ]

   EFA で Open MPI のみを使用する場合はEFA ソフトウェアと共に Libfabric と Open MPI をインストールする必要があります。また、**「ステップ 5: (オプション) インテル MPI をインストールする」はスキップできます**。Libfabric および Open MPI と共に EFA ソフトウェアをインストールするには次のコマンドを実行します。

**注記**  
EFA 1.30.0 からは　Open MPI 4.1 と Open MPI 5 の両方がデフォルトでインストールされます。任意で、インストールする Open MPI のバージョンを指定できます。Open MPI 4.1 のみをインストールするには `--mpi=openmpi4` を含めてください。Open MPI 5 のみをインストールするには`--mpi=openmpi5` を含めてください。両方をインストールする場合は`--mpi` オプションを省略してください。

   ```
   $ sudo ./efa_installer.sh -y
   ```

   Libfabric は `/opt/amazon/efa` にインストールされます。Open MPI 4.1 は `/opt/amazon/openmpi` にインストールされます。Open MPI 5 は `/opt/amazon/openmpi5` にインストールされます。

------
#### [ Intel MPI only ]

   EFA で Intel MPI のみを使用する場合はLibfabric および Open MPI を使用せずに EFA ソフトウェアをインストールできます。この場合、Intel MPI は埋め込まれている Libfabric を使用します。これを選択した場合は「**ステップ 5: (オプション) インテル MPI をインストールする」を完了する必要があります**。

   Libfabric および Open MPI を使用せずに EFA ソフトウェアをインストールするには次のコマンドを実行します。

   ```
   $ sudo ./efa_installer.sh -y --minimal
   ```

------

1. EFA インストーラーでインスタンスの再起動を求めるメッセージが表示された場合は再起動してからインスタンスに再接続します。それ以外の場合はインスタンスからログアウトし、再度ログインしてインストールを完了します。

1. 非圧縮 tarball と tarball 自体を削除してください。そうしないと、これらが作成する EFA 対応 AMI に含まれてしまい、サイズが増加します。

## ステップ 4: (*オプション*) Open MPI 5 を有効にする
<a name="efa-start-ompi5"></a>

**注記**  
このステップはOpen MPI 5 を使用する場合にのみ実行します。

EFA 1.30.0 からは　Open MPI 4.1 と Open MPI 5 の両方がデフォルトでインストールされます。あるいは、Open MPI 4.1 または Open MPI 5 のみをインストールするように選択することもできます。

「**ステップ 3: EFA ソフトウェアをインストールする**」で Open MPI 5 のインストールを選択し、これを使用する場合は次の手順を実行して有効にする必要があります。

**Open MPI 5 を有効にするには**

1. Open MPI 5 を PATH 環境変数に追加します。

   ```
   $ module load openmpi5
   ```

1. Open MPI 5 の使用が有効になっていることを確認します。

   ```
   $ which mpicc
   ```

   このコマンドは Open MPI 5 のインストールディレクトリ - `/opt/amazon/openmpi5` を返すはずです。

1. (*オプション*) インスタンスが起動するたびに Open MPI 5 が PATH 環境変数に追加されるようにするには次の操作を行います。

------
#### [ bash shell ]

   `module load openmpi5` を `/home/username/.bashrc` と `/home/username/.bash_profile` に追加します。

------
#### [ csh and tcsh shells ]

   `/home/username/.cshrc` に `module load openmpi5` を追加します。

------

Open MPI 5 を PATH 環境変数から削除する必要がある場合は次のコマンドを実行して、シェルスタートアップスクリプトからそのコマンドを削除します。

```
$ module unload openmpi5
```

## ステップ 5: (*オプション*) インテル MPI をインストールする
<a name="efa-start-impi"></a>

**重要**  
このステップはIntel MPI を使用する場合にのみ実行します。Open MPI のみを使用する場合はこのステップをスキップしてください。

Intel MPI を使用するには追加のインストールと環境変数設定が必要です。

**前提条件**  
以下のステップはsudo アクセス許可を持つユーザーが実行してください。

**Intel MPI をインストールするには**

1. インテル MPI のインストールスクリプトをダウンロードするには次の手順を実行します。

   1. [インテルのウェブサイト](https://www.intel.com/content/www/us/en/developer/articles/tool/oneapi-standalone-components.html#mpi)にアクセスします。

   1. ウェブページの「**Intel MPI Library**」(インテル MPI ライブラリ) セクションで、**Intel MPI Library for Linux** **Offline** インストーラのリンクを選択してください。

1. 前のステップでダウンロードしたインストールスクリプトを実行します。

   ```
   $ sudo bash installation_script_name.sh
   ```

1. インストーラで、**[Accept & install]** (承諾してインストール) を選択してください。

1. インテル Improvement Program を読み、適切なオプションを選択してから、**[Begin Installation]** (インストールを開始) を選択してください。

1. インストールが完了したら、[**Close**] を選択してください。

1. デフォルトではインテル MPI は埋め込まれている (内部) Libfabric を使用します。代わりに、EFA インストーラに同梱されている Libfabric を使用するようにインテル MPI を設定できます。通常、EFA インストーラにはインテル MPI よりも新しいバージョンの Libfabric が同梱されています。場合によってはEFA インストーラに同梱されている Libfabric はインテル MPI よりもパフォーマンスが高い場合があります。EFA インストーラに同梱されている Libfabric を使用するようにインテル MPI を設定するにはシェルに応じて次のいずれかを実行します。

------
#### [ bash shells ]

   次のステートメントを `/home/username/.bashrc` と `/home/username/.bash_profile` に追加します。

   ```
   export I_MPI_OFI_LIBRARY_INTERNAL=0
   ```

------
#### [ csh and tcsh shells ]

   次のステートメントを `/home/username/.cshrc` に追加します。

   ```
   setenv I_MPI_OFI_LIBRARY_INTERNAL 0
   ```

------

1. 次の**ソース**コマンドをシェルスクリプトに追加して、インストールディレクトリから `vars.sh` スクリプトを読み込み、インスタンスが開始するたびにコンパイラ環境をセットアップします。使用するシェルに応じて、以下のいずれかを実行します。

------
#### [ bash shells ]

   次のステートメントを `/home/username/.bashrc` と `/home/username/.bash_profile` に追加します。

   ```
   source /opt/intel/oneapi/mpi/latest/env/vars.sh
   ```

------
#### [ csh and tcsh shells ]

   次のステートメントを `/home/username/.cshrc` に追加します。

   ```
   source /opt/intel/oneapi/mpi/latest/env/vars.csh
   ```

------

1. デフォルトでは設定ミスにより EFA が使用できない場合、インテル MPI はデフォルトで TCP/IP ネットワークスタックを使用するため、アプリケーションのパフォーマンスが低下する可能性があります。`I_MPI_OFI_PROVIDER` を `efa` に設定することでこれを防ぐことができます。これにより、EFA が利用できない場合、インテル MPI は次のエラーで失敗します。

   ```
   Abort (XXXXXX) on node 0 (rank 0 in comm 0): Fatal error in PMPI_Init: OtherMPI error,
   MPIR_Init_thread (XXX)........:	
   MPID_Init (XXXX)..............:
   MPIDI_OFI_mpi_init_hook (XXXX):
   open_fabric (XXXX)............:
   find_provider (XXXX)..........:
   OFI fi_getinfo() failed (ofi_init.c:2684:find_provider:
   ```

   使用するシェルに応じて、以下のいずれかを実行します。

------
#### [ bash shells ]

   次のステートメントを `/home/username/.bashrc` と `/home/username/.bash_profile` に追加します。

   ```
   export I_MPI_OFI_PROVIDER=efa
   ```

------
#### [ csh and tcsh shells ]

   次のステートメントを `/home/username/.cshrc` に追加します。

   ```
   setenv I_MPI_OFI_PROVIDER efa
   ```

------

1. デフォルトではインテル MPI はデバッグ情報を出力しません。さまざまな詳細レベルを指定して、デバッグ情報を制御できます。可能な値は次のとおりです (提供される詳細の量の順): `0` (デフォルト)、`1`、`2`、`3`、`4`、`5`。レベル `1` 以上は `libfabric version` と `libfabric provider` を出力します。インテル MPI が内部 Libfabric を使用しているか、または EFA インストーラに同梱されている Libfabric を使用しているかを確認するために `libfabric version` を使用します。内部 Libfabric を使用している場合、バージョンのサフィックスは `impi` です。インテル MPI が EFA または TCP/IP ネットワークを使用しているかどうかを確認するために `libfabric provider` を使用します。EFA を使用している場合、値は `efa` です。TCP/IP を使用している場合、値は `tcp;ofi_rxm` です。

   デバッグ情報を有効にするには使用するシェルに応じて、次のいずれかを実行します。

------
#### [ bash shells ]

   次のステートメントを `/home/username/.bashrc` と `/home/username/.bash_profile` に追加します。

   ```
   export I_MPI_DEBUG=value
   ```

------
#### [ csh and tcsh shells ]

   次のステートメントを `/home/username/.cshrc` に追加します。

   ```
   setenv I_MPI_DEBUG value
   ```

------

1. デフォルトではインテル MPI はノード内通信にオペレーティングシステムの共有メモリ (`shm`) を使用し、ノード間通信にのみ Libfabric (`ofi`) を使用します。通常、この設定は最高のパフォーマンスを提供します。ただし、場合によってはインテル MPI shm ファブリックによって特定のアプリケーションが無期限にハングすることがあります。

   この問題を解決するために、インテル MPI がノード内通信とノード間通信の両方に Libfabric を使用するように強制できます。これを実行するには使用するシェルに応じて、次のいずれかを実行します。

------
#### [ bash shells ]

   次のステートメントを `/home/username/.bashrc` と `/home/username/.bash_profile` に追加します。

   ```
   export I_MPI_FABRICS=ofi
   ```

------
#### [ csh and tcsh shells ]

   次のステートメントを `/home/username/.cshrc` に追加します。

   ```
   setenv I_MPI_FABRICS ofi
   ```

------
**注記**  
EFA Libfabric プロバイダーはオペレーティングシステムの共有メモリをノード内通信に使用します。これは`I_MPI_FABRICS` を `ofi` に設定すると、デフォルトの `shm:ofi` 設定と同様のパフォーマンスが得られることを意味します。

1. インスタンスからログアウトしてからログインし直します。

Intel MPI が不要になった場合はシェル起動スクリプトから環境変数を削除してください。

## ステップ 6: ptrace 保護を無効にする
<a name="efa-start-ptrace"></a>

HPC アプリケーションのパフォーマンスを向上させるために、Libfabric はプロセスが同じインスタンスで実行されている場合、プロセス間通信にインスタンスのローカルメモリを使用します。

共有メモリ機能では*ptrace 保護*ではサポートされない Cross-Memory Attach (CMA) が使用されます。Ubuntu など、ptrace 保護がデフォルトで有効になっている Linux ディストリビューションを使用している場合は無効にする必要があります。Linux ディストリビューションで ptrace 保護がデフォルトで有効になっていない場合はこのステップをスキップします。

**ptrace 保護を無効にするには**  
次のいずれかを行ってください。
+ テストのために ptrace 保護を一時的に無効にするには次のコマンドを実行します。

  ```
  $ sudo sysctl -w kernel.yama.ptrace_scope=0
  ```
+ ptrace 保護を完全に無効にするには`kernel.yama.ptrace_scope = 0` を `/etc/sysctl.d/10-ptrace.conf` に追加してインスタンスを再起動します。

## ステップ 7. インストールを確認する
<a name="efa-start-test"></a>

**インストールが正常に完了したことを確認するには**

1. MPI が正常にインストールされていることを確認するには次のコマンドを実行します。

   ```
   $ which mpicc
   ```
   + Open MPI の場合、返されるパスには `/opt/amazon/` が含まれている必要があります。
   + Intel MPI の場合、返されるパスには `/opt/intel/` が含まれている必要があります。期待どおりの出力が得られない場合はIntel MPI `vars.sh` スクリプトをソースとしていることを確認してください。

1. EFA ソフトウェアコンポーネントと Libfabric が正常にインストールされたことを確認するには以下のコマンドを実行します。

   ```
   $ fi_info -p efa -t FI_EP_RDM
   ```

   コマンドによって、Libfabric の EFA インターフェイスに関する情報が返ります。以下の例はコマンド出力を示しています。

   ```
   provider: efa
       fabric: EFA-fe80::94:3dff:fe89:1b70
       domain: efa_0-rdm
       version: 2.0
       type: FI_EP_RDM
       protocol: FI_PROTO_EFA
   ```

## ステップ 8: HPC アプリケーションをインストールする
<a name="efa-start-hpc-app"></a>

HPC アプリケーションを一時インスタンスにインストールします。インストール手順は特定の HPC アプリケーションによって異なります。詳細については「Amazon Linux 2 ユーザーガイド」の「[AL2 インスタンスでのソフトウェアの管理](https://docs.aws.amazon.com/linux/al2/ug/managing-software.html)」を参照してください。 **

**注記**  
インストール手順についてはHPC アプリケーションのドキュメントを参照してください。

## ステップ 9: EFA 対応の AMI を作成する
<a name="efa-start-ami"></a>

必要なソフトウェアコンポーネントのインストール後、EFA 対応のインスタンスの起動に再利用できる AMI を作成します。

**一時インスタンスから AMI を作成するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、**[Instances]** (インスタンス) を選択してください。

1. 作成した一時インスタンスを選択し、[**アクション**]、[**イメージ**]、[**イメージの作成**] の順に選択してください。

1. [**イメージの作成**] で、次を行います。

   1. [**イメージ名**] に、の分かりやすい AMI 名を入力してください。

   1. (オプション) [**イメージの説明**] に、AMI の簡単な説明を入力してください。

   1. [**イメージを作成**] を選択してください。

1. ナビゲーションペインで **[AMI]** を選択してください。

1. リストで作成した AMI を探します。ステータスが `pending` から `available` に変わるまで待ってから、次のステップに進みます。

## ステップ 10: クラスタープレイスメントグループで EFA 対応のインスタンスを作成する
<a name="efa-start-instances"></a>

**ステップ 7** で作成した EFA 対応の AMI と、**ステップ 1** で作成した EFA 対応のセキュリティグループを使用して、EFA 対応のインスタンスをクラスタープレイスメントグループ内で起動します。

**注記**  
EFA 対応のインスタンスをクラスタープレイスメントグループに起動することは絶対的な要件ではありません。ただし、EFA 対応のインスタンスは 1 つのアベイラビリティーゾーン内の低レイテンシーグループに起動されるため、クラスタープレイスメントグループで実行することをお勧めします。
クラスターのインスタンスをスケールするときにキャパシティを使用できるようにするにはクラスタープレイスメントグループのキャパシティ予約を作成します。詳細については「[クラスタープレイスメントグループでのキャパシティ予約の操作](cr-cpg.md)」を参照してください。

**インスタンスを起動するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、**[Instances]** (インスタンス) を選択し、**[Launch Instances]** (インスタンスの起動) を選択して、新しいインスタンス起動ウィザードを開きます。

1. (*オプション*) **[Name and tags]** (名前とタグ) セクションで、`EFA-instance` などのインスタンス名を指定します。指定した名前はリソースタグとしてインスタンスに割り当てられます (`Name=EFA-instance`)。

1. **[Application and OS Images]** (アプリケーションと OS イメージ) セクションで、**[My AMI]** (マイ AMI) をクリックし、前のステップで作成した AMI を選択してください。

1. **[Instance type]** (インスタンスタイプ) セクションで、[サポートされているインスタンスタイプ](efa.md#efa-instance-types)を選択してください。

1. **[Key pair]** (キーペア) セクションで、インスタンスに使用するキーペアを選択してください。

1. **[Network settings]** (ネットワーク設定) セクションで、**[Edit]** (編集) を選択し、次の操作を行います。

   1. [**サブネット**] で、インスタンスを起動するサブネットを選択してください。サブネットを選択しない場合、EFA のインスタンスを有効にすることはできません。

   1. **[Firewall (security groups)]** (ファイアウォール (セキュリティグループ)) の場合、**[Select existing security group]** (既存のセキュリティグループの選択) を選択し、前のステップで作成したセキュリティグループを選択してください。

   1. **[高度な設定]** セクションを展開します。

      **ネットワークインターフェイス 1** では**[ネットワークカードインデックス = 0]**、**[デバイスインデックス = 0]**、**[インターフェイスタイプ = EFA と ENA の組み合わせ]** を選択してください。

      (*オプション*) `p4d.24xlarge` または `p5.48xlarge` などのマルチカードインスタンスタイプを、必要な追加のネットワークインターフェイスごとに使用する場合は**[ネットワークインターフェイスの追加]** を選択し、**ネットワークカードインデックス**の場合は次の未使用インデックスを選択してから、**[デバイスインデックス = 1]**、**[インターフェイスタイプ = EFA と ENA の組み合わせ]** または **[EFA のみ]** を選択してください。

1. (*オプション*) **[Storage]** (ストレージ) セクションで、必要に応じてボリュームを設定します。

1. **[Advanced details]** (高度な詳細) セクションの **[Placement group name]** (プレイスメントグループ名) で、インスタンスを起動するクラスタープレイスメントグループを選択してください。新しいクラスタープレイスメントグループを作成する必要がある場合は**[Create new placement group]** (新しいプレイスメントグループの作成) を選択してください。

1. 右側の **[合計mary]** (サマリー) パネルで、**[Number of instances]** (インスタンス数) に、起動する EFA 対応のインスタンスの数を入力し、**[Launch Instance]** (インスタンスの起動) を選択してください。

## ステップ 11: 一時インスタンスを終了する
<a name="efa-start-terminate"></a>

この時点で、[ステップ 2](#efa-start-tempinstance) で起動したインスタンスは不要になります。インスタンスを終了して、料金の発生を停止できます。

**一時インスタンスを終了するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、[**インスタンス**] を選択してください。

1. 作成した一時インスタンスを選択し、**[アクション]**、**[インスタンスの状態]**、**[インスタンスの終了 (削除)]** の順に選択してください。

1. 確認を求めるメッセージが表示されたら、**[終了 (削除)]** を選択してください。

## ステップ 12: パスワードレス SSH を有効にする
<a name="efa-start-passwordless"></a>

クラスター内のすべてのインスタンスでアプリケーションを実行できるようにするにはリーダーノードからメンバーノードへのパスワードなしの SSH アクセスを有効にする必要があります。リーダーノードはアプリケーションを実行するインスタンスです。クラスター内の残りのインスタンスはメンバーノードです。

**クラスター内のインスタンス間でパスワードなしの SSH を有効にするには**

1. クラスター内の 1 つのインスタンスをリーダーノードとして選択し、それに接続します。

1. リーダーノード上で `strictHostKeyChecking` を無効にし `ForwardAgent` を有効にします。任意のテキストエディタを使用して `~/.ssh/config` ファイルを開き、以下を追加します。

   ```
   Host *
       ForwardAgent yes
   Host *
       StrictHostKeyChecking no
   ```

1. RSA キーペアを生成します。

   ```
   $ ssh-keygen -t rsa -N "" -f ~/.ssh/id_rsa
   ```

   キーペアは`$HOME/.ssh/` ディレクトリで作成されます。

1. リーダーノードのプライベートキーの許可を変更します。

   ```
   $ chmod 600 ~/.ssh/id_rsa
   chmod 600 ~/.ssh/config
   ```

1. 任意のテキストエディタで `~/.ssh/id_rsa.pub` を開き、キーをコピーします。

1. クラスター内の各メンバーノードについて、次の操作を行います。

   1. インスタンスに接続します。

   1. 任意のテキストエディタで `~/.ssh/authorized_keys` を開き、前にコピーしたパブリックキーを追加します。

1. パスワードレス SSH が正常に機能していることをテストするにはリーダーノードに接続して、次のコマンドを実行します。

   ```
   $ ssh member_node_private_ip
   ```

   キーまたはパスワードの入力を求められずに、メンバーノードに接続できるはずです。

# Amazon EC2 の ML ワークロードに対して EFA と NCCL の使用を開始する
<a name="efa-start-nccl"></a>

NVIDIA Collective Communications Library (NCCL) は単一のノードまたは複数のノードの複数の GPU のための集合的な標準コミュニケーションルーチンのライブラリです。NCCL は各種の機械学習のワークロードをサポートするために、EFA、Libfabric、MPI と共に使用できます。詳細については[NCCL](https://developer.nvidia.com/nccl) のウェブサイトを参照してください。

**要件**
+ 高速コンピューティング P シリーズのインスタンスタイプのみがサポートされています。詳細については、「[Amazon EC2 の高速コンピューティングインスタンスの仕様](https://docs.aws.amazon.com/ec2/latest/instancetypes/ac.html#ac-sizes)」を参照してください。
+ Amazon Linux 2023、Amazon Linux 2、Ubuntu 24.04、Ubuntu 22.04 ベースの AMI のみがサポートされています。
+ NCCL EFA 以降のみが 2.4.2 でサポートされています。

AWS Deep Learning AMIs を使用して EFA および NCCL で機械学習ワークロードを実行する方法の詳細については、「*AWS Deep Learning AMIs デベロッパーガイド*」の「[DLAMI での EFA の使用](https://docs.aws.amazon.com/dlami/latest/devguide/tutorial-efa-using.html)」を参照してください。

**Topics**
+ [ステップ 1: EFA 対応のセキュリティグループを準備する](#nccl-start-base-setup)
+ [ステップ 2: 一時インスタンスを作成する](#nccl-start-base-temp)
+ [ステップ 3: Nvidia GPU ドライバー、Nvidia CUDA ツールキットおよび cuDNN をインストールする](#nccl-start-base-drivers)
+ [ステップ 4: GDRCopy をインストールする](#nccl-start-base-gdrcopy)
+ [ステップ 5: EFA ソフトウェアをインストールする](#nccl-start-base-enable)
+ [ステップ 6: NCCL をインストールする](#nccl-start-base-nccl)
+ [ステップ 7: NCCL テストをインストールする](#nccl-start-base-tests)
+ [ステップ 8: EFA と NCCL の設定をテストする](#nccl-start-base-test)
+ [ステップ 9: 機械学習アプリケーションをインストールする](#nccl-start-base-app)
+ [ステップ 10: EFA および NCCL 対応 AMI を作成する](#nccl-start-base-ami)
+ [ステップ 11: 一時インスタンスを終了する](#nccl-start-base-terminate)
+ [ステップ 12: クラスタープレイスメントグループで EFA および NCCL 対応のインスタンスを作成する](#nccl-start-base-cluster)
+ [ステップ 13: パスワードレス SSH を有効にする](#nccl-start-base-passwordless)

## ステップ 1: EFA 対応のセキュリティグループを準備する
<a name="nccl-start-base-setup"></a>

EFA にはセキュリティグループ自体とのインバウンドおよびアウトバウンドのトラフィックをすべて許可するセキュリティグループが必要です。以下の手順ではセキュリティグループを作成します。このセキュリティグループではセキュリティグループ自体とのすべてのインバウンドおよびアウトバウンドのトラフィックと、SSH 接続用の任意の IPv4 アドレスからのインバウンド SSH トラフィックを許可します。

**重要**  
このセキュリティグループはテストのみを目的としています。本番環境ではコンピュータの IP アドレスやローカルネットワークの IP アドレスの範囲など、接続元の IP アドレスからのトラフィックのみを許可するインバウンド SSH ルールを作成することをお勧めします。

その他のシナリオについては[さまざまなユースケースのセキュリティグループのルール](security-group-rules-reference.md)を参照してください。

**EFA 対応のセキュリティグループを作成するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで [**Security Groups**] (セキュリティグループ) を選択して、[**Create security group**] (セキュリティグループの作成) を選択してください。

1. [**Create security group**] (セキュリティグループの作成) ウィンドウで、以下を行います。

   1. [**セキュリティグループ名**] に、`EFA-enabled security group` のような、分かりやすいセキュリティグループ名を入力してください。

   1. (オプション) [**説明**] に、セキュリティグループの簡単な説明を入力してください。

   1. [**VPC**] で、EFA 対応のインスタンスを起動する VPC を選択してください。

   1. **[セキュリティグループの作成]** を選択してください。

1. 作成したセキュリティグループを選択し、**[Details]** (詳細) タブで **[Security group ID]** (セキュリティグループ ID) をコピーします。

1. セキュリティグループが選択された状態で、**[Actions]** (アクション)、**[Edit inbound rules]** (インバウンドルールの編集) の順に選択し、次の手順を実行します。

   1. [**Add rule**] を選択してください。

   1. [**Type**] で、[**All traffic**] を選択してください。

   1. **[Source type]** (送信元タイプ) で、**[Custom]** (カスタム) を選択し、コピーしたセキュリティグループ ID をフィールドに貼り付けます。

   1. [**ルールを追加**] を選択してください。

   1. **[タイプ]** で **SSH]** を選択してください。

   1. **[Source type]** (ソースタイプ) で、**[Anywhere-IPv4]** を選択してください。

   1. **[Save Rules]** (ルールの保存) を選択してください。

1. セキュリティグループが選択された状態で、**[Actions]** (アクション)、**[Edit outbound rules]** (アウトバウンドルールの編集) の順に選択し、次の手順を実行します。

   1. [**Add rule**] を選択してください。

   1. [**Type**] で、[**All traffic**] を選択してください。

   1. **[Destination type]** (送信先タイプ) で、**[Custom]** (カスタム) を選択し、コピーしたセキュリティグループ ID をフィールドに貼り付けます。

   1. **[Save Rules]** (ルールの保存) を選択してください。

## ステップ 2: 一時インスタンスを作成する
<a name="nccl-start-base-temp"></a>

EFA ソフトウェアコンポーネントのインストールおよび設定に使用する一時インスタンスを起動します。このインスタンスを使用して、EFA 対応のインスタンスを起動する EFA 対応の AMI を作成します。

**一時インスタンスを起動するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、**[Instances]** (インスタンス) を選択し、**[Launch Instances]** (インスタンスの起動) を選択して、新しいインスタンス起動ウィザードを開きます。

1. (*オプション*) **[Name and tags]** (名前とタグ) セクションで、`EFA-instance` などのインスタンス名を指定します。指定した名前はリソースタグとしてインスタンスに割り当てられます (`Name=EFA-instance`)。

1. **[アプリケーションと OS のイメージ]** セクションで、サポートされるオペレーティングシステムのいずれかに対応する AMI を選択してください。

1. **[インスタンスタイプ]** セクションで、サポートされているインスタンスタイプを選択してください。

1. **[Key pair]** (キーペア) セクションで、インスタンスに使用するキーペアを選択してください。

1. **[Network settings]** (ネットワーク設定) セクションで、**[Edit]** (編集) を選択し、次の操作を行います。

   1. [**サブネット**] で、インスタンスを起動するサブネットを選択してください。サブネットを選択しない場合、EFA のインスタンスを有効にすることはできません。

   1. **[Firewall (security groups)]** (ファイアウォール (セキュリティグループ)) の場合、**[Select existing security group]** (既存のセキュリティグループの選択) を選択し、前のステップで作成したセキュリティグループを選択してください。

   1. **[高度な設定]** セクションを展開します。

      **ネットワークインターフェイス 1** では**[ネットワークカードインデックス = 0]**、**[デバイスインデックス = 0]**、**[インターフェイスタイプ = EFA と ENA の組み合わせ]** を選択してください。

      (*オプション*) `p4d.24xlarge` または `p5.48xlarge` などのマルチカードインスタンスタイプを、必要な追加のネットワークインターフェイスごとに使用する場合は**[ネットワークインターフェイスの追加]** を選択し、**ネットワークカードインデックス**の場合は次の未使用インデックスを選択してから、**[デバイスインデックス = 1]**、**[インターフェイスタイプ = EFA と ENA の組み合わせ]** または **[EFA のみ]** を選択してください。

1. **[Storage]** (ストレージ) セクションで、必要に応じてボリュームを設定します。
**注記**  
Nvidia CUDA ツールキットには追加の 10 ～ 20 GiB のストレージをプロビジョニングする必要があります。十分な量のストレージをプロビジョニングしないと、Nvidia ドライバーと CUDA ツールキットをインストールしようとしたときに、`insufficient disk space` エラーが発生します。

1. 右側の **[合計mary]** (サマリー) パネルで、**[Launch instance]** (インスタンスの起動) を選択してください。

## ステップ 3: Nvidia GPU ドライバー、Nvidia CUDA ツールキットおよび cuDNN をインストールする
<a name="nccl-start-base-drivers"></a>

------
#### [ Amazon Linux 2023 and Amazon Linux 2 ]

**NVIDIA GPU ドライバー、NVIDIA CUDA ツールキットおよび cuDNN をインストールするには**

1. すべてのソフトウェアパッケージが最新の状態であることを確認するため、インスタンスでソフトウェアの更新を実行します。

   ```
   $ sudo yum upgrade -y && sudo reboot
   ```

   インスタンスの再起動後に、再接続します。

1. Nvidia GPU ドライバと Nvidia CUDA ツールキットをインストールするために必要なユーティリティをインストールします。

   ```
   $ sudo yum groupinstall 'Development Tools' -y
   ```

1. `nouveau` オープンソースドライバーを無効にします。

   1. 必要なユーティリティ、および現在実行しているカーネルのバージョン用のカーネルヘッダーパッケージをインストールします。

      ```
      $ sudo yum install -y wget kernel-devel-$(uname -r) kernel-headers-$(uname -r)
      ```

   1. `nouveau` 拒否リストファイルに `/etc/modprobe.d/blacklist.conf ` を追加します。

      ```
      $ cat << EOF | sudo tee --append /etc/modprobe.d/blacklist.conf
      blacklist vga16fb
      blacklist nouveau
      blacklist rivafb
      blacklist nvidiafb
      blacklist rivatv
      EOF
      ```

   1. `grub` ファイルに `GRUB_CMDLINE_LINUX="rdblacklist=nouveau"` を追加し、Grub 設定を再構成します。

      ```
      $ echo 'GRUB_CMDLINE_LINUX="rdblacklist=nouveau"' | sudo tee -a /etc/default/grub \
      && sudo grub2-mkconfig -o /boot/grub2/grub.cfg
      ```

1. インスタンスを再起動して、そのインスタンスに再接続します。

1. 必要なリポジトリを準備する

   1. EPEL リポジトリを有効にし、ディストリビューションを に設定します`rhel7`。

      ```
      $ sudo amazon-linux-extras install epel \
      && distribution='rhel7'
      ```

   1. CUDA ネットワークリポジトリを設定し、リポジトリキャッシュを更新します。

      ```
      $ ARCH=$( /bin/arch ) \
      && sudo yum-config-manager --add-repo http://developer.download.nvidia.com/compute/cuda/repos/$distribution/${ARCH}/cuda-$distribution.repo \
      && sudo yum clean expire-cache
      ```

   1. (*カーネルバージョン 5.10 のみ*) 以下の手順は、Amazon Linux 2 をカーネルバージョン 5.10 で使用している場合にのみ実行します。Amazon Linux 2 をカーネルバージョン 4.12 で使用している場合は以下の手順をスキップします。カーネルバージョンを確認するには**uname -r** を実行します。

      1. `/etc/dkms/nvidia.conf` という名前で Nvidia ドライバ設定ファイルを作成します。

         ```
         $ sudo mkdir -p /etc/dkms \
         && echo "MAKE[0]=\"'make' -j2 module SYSSRC=\${kernel_source_dir} IGNORE_XEN_PRESENCE=1 IGNORE_PREEMPT_RT_PRESENCE=1 IGNORE_CC_MISMATCH=1 CC=/usr/bin/gcc10-gcc\"" | sudo tee /etc/dkms/nvidia.conf
         ```

      1. (`p4d.24xlarge` と `p5.48xlarge` のみ) NVIDIA ドライバー設定ファイルをコピーします。

         ```
         $ sudo cp /etc/dkms/nvidia.conf /etc/dkms/nvidia-open.conf
         ```

1. NVIDIA GPU ドライバー、NVIDIA CUDA ツールキット、および cuDNN をインストールします。

   ```
   $ sudo yum clean all \
   && sudo yum -y install nvidia-driver-latest-dkms \
   && sudo yum -y install cuda-drivers-fabricmanager cuda libcudnn8-devel
   ```

1. インスタンスを再起動して、そのインスタンスに再接続します。

1. (`p4d.24xlarge` および `p5.48xlarge` のみ) NVIDIA Fabric Manager サービスを開始し、インスタンスの起動時に自動的に起動することを確認します。NVIDIA Fabric Manager はNV Switch Management に必要です。

   ```
   $ sudo systemctl enable nvidia-fabricmanager && sudo systemctl start nvidia-fabricmanager
   ```

1. インスタンスが起動するたびに CUDA パスが設定されていることを確認します。
   + *bash* シェルの場合、次のステートメントを `/home/username/.bashrc` と `/home/username/.bash_profile` に追加します。

     ```
     export PATH=/usr/local/cuda/bin:$PATH
     export LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64:$LD_LIBRARY_PATH
     ```
   + *tcsh* シェルの場合、次の文を `/home/username/.cshrc` に追加します。

     ```
     setenv PATH=/usr/local/cuda/bin:$PATH
     setenv LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64:$LD_LIBRARY_PATH
     ```

1. 以下のコマンドを実行して、Nvidia GPU ドライバが機能することを確認します。

   ```
   $ nvidia-smi -q | head
   ```

   このコマンドはNvidia GPU、Nvidia GPU ドライバ、Nvidia CUDA ツールキットの情報を返します。

------
#### [ Ubuntu 24.04 and Ubuntu 22.04 ]

**NVIDIA GPU ドライバー、NVIDIA CUDA ツールキットおよび cuDNN をインストールするには**

1. すべてのソフトウェアパッケージが最新の状態であることを確認するため、インスタンスでソフトウェアの更新を実行します。

   ```
   $ sudo apt-get update && sudo apt-get upgrade -y
   ```

1. Nvidia GPU ドライバと Nvidia CUDA ツールキットをインストールするために必要なユーティリティをインストールします。

   ```
   $ sudo apt-get update && sudo apt-get install build-essential -y
   ```

1. Nvidia GPU ドライバを使用するにはまず、`nouveau` オープンソースドライバを無効にする必要があります。

   1. 必要なユーティリティ、および現在実行しているカーネルのバージョン用のカーネルヘッダーパッケージをインストールします。

      ```
      $ sudo apt-get install -y gcc make linux-headers-$(uname -r)
      ```

   1. `nouveau` 拒否リストファイルに `/etc/modprobe.d/blacklist.conf ` を追加します。

      ```
      $ cat << EOF | sudo tee --append /etc/modprobe.d/blacklist.conf
      blacklist vga16fb
      blacklist nouveau
      blacklist rivafb
      blacklist nvidiafb
      blacklist rivatv
      EOF
      ```

   1. 任意のテキストエディタを使用して `/etc/default/grub` ファイルを開き、以下を追加します。

      ```
      GRUB_CMDLINE_LINUX="rdblacklist=nouveau"
      ```

   1. Grub 設定を再構築します。

      ```
      $ sudo update-grub
      ```

1. インスタンスを再起動して、そのインスタンスに再接続します。

1. CUDA リポジトリを追加し、Nvidia GPU ドライバー、NVIDIA CUDA ツールキット、および cuDNN をインストールします。
   + `p3dn.24xlarge`

     ```
     $ sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu2004/x86_64/7fa2af80.pub \
     && wget -O /tmp/deeplearning.deb http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu2004/x86_64/nvidia-machine-learning-repo-ubuntu2004_1.0.0-1_amd64.deb \
     && sudo dpkg -i /tmp/deeplearning.deb \
     && wget -O /tmp/cuda.pin https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin \
     && sudo mv /tmp/cuda.pin /etc/apt/preferences.d/cuda-repository-pin-600 \
     && sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/3bf863cc.pub \
     && sudo add-apt-repository 'deb http://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/ /' \
     && sudo apt update \
     && sudo apt install nvidia-dkms-535 \
     && sudo apt install -o Dpkg::Options::='--force-overwrite' cuda-drivers-535 cuda-toolkit-12-3 libcudnn8 libcudnn8-dev -y
     ```
   + `p4d.24xlarge` および `p5.48xlarge` 

     ```
     $ sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu2004/x86_64/7fa2af80.pub \
     && wget -O /tmp/deeplearning.deb http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu2004/x86_64/nvidia-machine-learning-repo-ubuntu2004_1.0.0-1_amd64.deb \
     && sudo dpkg -i /tmp/deeplearning.deb \
     && wget -O /tmp/cuda.pin https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin \
     && sudo mv /tmp/cuda.pin /etc/apt/preferences.d/cuda-repository-pin-600 \
     && sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/3bf863cc.pub \
     && sudo add-apt-repository 'deb http://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/ /' \
     && sudo apt update \
     && sudo apt install nvidia-kernel-open-535 \
     && sudo apt install -o Dpkg::Options::='--force-overwrite' cuda-drivers-535 cuda-toolkit-12-3 libcudnn8 libcudnn8-dev -y
     ```

1. インスタンスを再起動して、そのインスタンスに再接続します。

1. (`p4d.24xlarge` および `p5.48xlarge` のみ) NVIDIA Fabric Manager をインストールします。

   1. 前の手順でインストールした Nvidia カーネルモジュールのバージョンと一致する Nvidia Fabric Manager のバージョンをインストールする必要があります。

      Nvidia カーネルモジュールのバージョンを確認するには次のコマンドを実行します。

      ```
      $ cat /proc/driver/nvidia/version | grep "Kernel Module"
      ```

      出力例を次に示します。

      ```
      NVRM version: NVIDIA UNIX x86_64 Kernel Module  450.42.01  Tue Jun 15 21:26:37 UTC 2021
      ```

      上記の例ではメジャーバージョン `450` のカーネルモジュールがインストールされました。これはNvidia Fabric Manager のバージョン `450` をインストールする必要があることを意味します。

   1. Nvidia Fabric Manager をインストールする 次のコマンドを、前の手順で識別されたメジャーバージョンを指定して実行します。

      ```
      $ sudo apt install -o Dpkg::Options::='--force-overwrite' nvidia-fabricmanager-major_version_number
      ```

      例えば、メジャーバージョン `450` のカーネルモジュールがインストールされた場合、以下のコマンドを使用して、一致するバージョンの Nvidia Fabric Manager をインストールします。

      ```
      $ sudo apt install -o Dpkg::Options::='--force-overwrite' nvidia-fabricmanager-450
      ```

   1. サービスを開始し、インスタンスの起動時に自動的に起動することを確認します。NVIDIA Fabric Manager はNV Switch Management に必要です。

      ```
      $ sudo systemctl start nvidia-fabricmanager && sudo systemctl enable nvidia-fabricmanager
      ```

1. インスタンスが起動するたびに CUDA パスが設定されていることを確認します。
   + *bash* シェルの場合、次のステートメントを `/home/username/.bashrc` と `/home/username/.bash_profile` に追加します。

     ```
     export PATH=/usr/local/cuda/bin:$PATH
     export LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64:$LD_LIBRARY_PATH
     ```
   + *tcsh* シェルの場合、次の文を `/home/username/.cshrc` に追加します。

     ```
     setenv PATH=/usr/local/cuda/bin:$PATH
     setenv LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64:$LD_LIBRARY_PATH
     ```

1. 以下のコマンドを実行して、Nvidia GPU ドライバが機能することを確認します。

   ```
   $ nvidia-smi -q | head
   ```

   このコマンドはNvidia GPU、Nvidia GPU ドライバ、Nvidia CUDA ツールキットの情報を返します。

------

## ステップ 4: GDRCopy をインストールする
<a name="nccl-start-base-gdrcopy"></a>

GDRCopy をインストールして Libfabric のパフォーマンスを向上させます。GDRCopy の詳細については「[GDRCopy レポジトリ](https://github.com/NVIDIA/gdrcopy)」を参照してください。

------
#### [ Amazon Linux 2023 and Amazon Linux 2 ]

**GDRCopy をインストールするには**

1. 必要な依存ファイルをインストールします。

   ```
   $ sudo yum -y install dkms rpm-build make check check-devel subunit subunit-devel
   ```

1. GDRCopy パッケージをダウンロードして解凍します。

   ```
   $ wget https://github.com/NVIDIA/gdrcopy/archive/refs/tags/v2.4.tar.gz \
   && tar xf v2.4.tar.gz ; cd gdrcopy-2.4/packages
   ```

1. GDRCopy RPM パッケージをビルドします。

   ```
   $ CUDA=/usr/local/cuda ./build-rpm-packages.sh
   ```

1. GDRCopy RPM パッケージをインストールします。

   ```
   $ sudo rpm -Uvh gdrcopy-kmod-2.4-1dkms.noarch*.rpm \
   && sudo rpm -Uvh gdrcopy-2.4-1.x86_64*.rpm \
   && sudo rpm -Uvh gdrcopy-devel-2.4-1.noarch*.rpm
   ```

------
#### [ Ubuntu 24.04 and Ubuntu 22.04 ]

**GDRCopy をインストールするには**

1. 必要な依存ファイルをインストールします。

   ```
   $ sudo apt -y install build-essential devscripts debhelper check libsubunit-dev fakeroot pkg-config dkms
   ```

1. GDRCopy パッケージをダウンロードして解凍します。

   ```
   $ wget https://github.com/NVIDIA/gdrcopy/archive/refs/tags/v2.4.tar.gz \
   && tar xf v2.4.tar.gz \
   && cd gdrcopy-2.4/packages
   ```

1. GDRCopy RPM パッケージをビルドします。

   ```
   $ CUDA=/usr/local/cuda ./build-deb-packages.sh
   ```

1. GDRCopy RPM パッケージをインストールします。

   ```
   $ sudo dpkg -i gdrdrv-dkms_2.4-1_amd64.*.deb \
   && sudo dpkg -i libgdrapi_2.4-1_amd64.*.deb \
   && sudo dpkg -i gdrcopy-tests_2.4-1_amd64.*.deb \
   && sudo dpkg -i gdrcopy_2.4-1_amd64.*.deb
   ```

------

## ステップ 5: EFA ソフトウェアをインストールする
<a name="nccl-start-base-enable"></a>

一時インスタンスで EFA をサポートするために必要な EFA 対応のカーネル、EFA ドライバー、Libfabric、および Open MPI スタックをインストールします。

**EFA ソフトウェアをインストールするには**

1. 起動したインスタンスに接続します。詳細については「[SSH を使用した Linux インスタンスへの接続](connect-to-linux-instance.md)」を参照してください。

1. EFA ソフトウェアのインストールファイルをダウンロードします。ソフトウェアのインストールファイルは圧縮された tar (`.tar.gz`) ファイルにパッケージ化されています。次のコマンドを使用して、*安定している*最新バージョンをダウンロードします。

   前述のコマンドのバージョン番号を `latest` に置き換えることで最新バージョンを取得することもできます。

   ```
   $ curl -O https://efa-installer.amazonaws.com/aws-efa-installer-1.47.0.tar.gz
   ```

1. (*オプション*) EFA tarball (`.tar.gz`) ファイルの認証と完全性を検証します。

   ソフトウェアパブリッシャーの ID を検証し、発行後にファイルの改変や破損がないことを確認するために、これを行うことをお勧めします。tar ファイルを検証しない場合はこの手順をスキップします。
**注記**  
代わりに、MD5 または SHA256 チェックサムを使用して tar ファイルを検証する場合は[チェックサムを使用した EFA インストーラの検証](efa-verify.md)を参照してください。

   1. パブリック GPG キーをダウンロードして、キーリングにインポートします。

      ```
      $ wget https://efa-installer.amazonaws.com/aws-efa-installer.key && gpg --import aws-efa-installer.key
      ```

      コマンドはキーの値を返します。次の手順で必要になるため、キーの値を書きとめておきます。

   1. GPG キーのフィンガープリントを検証します。次のコマンドを実行し、前のステップで作成したキーの値を指定します。

      ```
      $ gpg --fingerprint key_value
      ```

      コマンドは`4E90 91BC BB97 A96B 26B1 5E59 A054 80B1 DD2D 3CCC` と同じフィンガープリントを返します。フィンガープリントが一致しない場合はEFA インストールスクリプトを実行せず、サポート にお問い合わせください。

   1. 署名ファイルをダウンロードし、EFA tar ファイルの署名を検証します。

      ```
      $ wget https://efa-installer.amazonaws.com/aws-efa-installer-1.47.0.tar.gz.sig && gpg --verify ./aws-efa-installer-1.47.0.tar.gz.sig
      ```

      出力例を次に示します。

      ```
      gpg: Signature made Wed 29 Jul 2020 12:50:13 AM UTC using RSA key ID DD2D3CCC
      gpg: Good signature from "Amazon EC2 EFA <ec2-efa-maintainers@amazon.com>"
      gpg: WARNING: This key is not certified with a trusted signature!
      gpg:          There is no indication that the signature belongs to the owner.
      Primary key fingerprint: 4E90 91BC BB97 A96B 26B1  5E59 A054 80B1 DD2D 3CCC
      ```

      結果に `Good signature` が含まれ、フィンガープリントが前のステップで返されたフィンガープリントと一致する場合は次のステップに進みます。そうでない場合はEFA インストールスクリプトを実行せず、サポート にお問い合わせください。

1. 圧縮された `.tar.gz` ファイルからファイルを展開し、展開されたディレクトリに移動します。

   ```
   $ tar -xf aws-efa-installer-1.47.0.tar.gz && cd aws-efa-installer
   ```

1. EFA ソフトウェアのインストールスクリプトを実行します。
**注記**  
EFA 1.30.0 からは　Open MPI 4.1 と Open MPI 5 の両方がデフォルトでインストールされます。Open MPI 5 が必要でない限り、Open MPI 4.1 のみをインストールすることをお勧めします。以下のコマンドは Open MPI 4.1 のみをインストールします。Open MPI 4.1 と Open MPI 5 をインストールする場合は `--mpi=openmpi4` を削除してください。

   ```
   $ sudo ./efa_installer.sh -y --mpi=openmpi4
   ```

   **Libfabric** は `/opt/amazon/efa` ディレクトリにインストールされます。**aws-ofi-nccl プラグイン**は `/opt/amazon/ofi-nccl` ディレクトリにインストールされます。**オープン MPI** は `/opt/amazon/openmpi` ディレクトリにインストールされます。

1. EFA インストーラーでインスタンスの再起動を求めるメッセージが表示された場合は再起動してからインスタンスに再接続します。それ以外の場合はインスタンスからログアウトし、再度ログインしてインストールを完了します。

1. EFA ソフトウェアコンポーネントが正常にインストールされたことを確認します。

   ```
   $ fi_info -p efa -t FI_EP_RDM
   ```

   コマンドによって、Libfabric の EFA インターフェイスに関する情報が返ります。以下の例はコマンド出力を示しています。
   + 単一のネットワークインターフェイスを持つ `p3dn.24xlarge`

     ```
     provider: efa
     fabric: EFA-fe80::94:3dff:fe89:1b70
     domain: efa_0-rdm
     version: 2.0
     type: FI_EP_RDM
     protocol: FI_PROTO_EFA
     ```
   + 複数のネットワークインターフェイスを持つ `p4d.24xlarge` および `p5.48xlarge`

     ```
     provider: efa
     fabric: EFA-fe80::c6e:8fff:fef6:e7ff
     domain: efa_0-rdm
     version: 111.0
     type: FI_EP_RDM
     protocol: FI_PROTO_EFA
     provider: efa
     fabric: EFA-fe80::c34:3eff:feb2:3c35
     domain: efa_1-rdm
     version: 111.0
     type: FI_EP_RDM
     protocol: FI_PROTO_EFA
     provider: efa
     fabric: EFA-fe80::c0f:7bff:fe68:a775
     domain: efa_2-rdm
     version: 111.0
     type: FI_EP_RDM
     protocol: FI_PROTO_EFA
     provider: efa
     fabric: EFA-fe80::ca7:b0ff:fea6:5e99
     domain: efa_3-rdm
     version: 111.0
     type: FI_EP_RDM
     protocol: FI_PROTO_EFA
     ```

## ステップ 6: NCCL をインストールする
<a name="nccl-start-base-nccl"></a>

NCCL をインストールします。NCCL に関する詳細については[NCCL repository](https://github.com/NVIDIA/nccl)を参照してください。

**NCCL をインストールするには**

1. `/opt` ディレクトリに移動します。

   ```
   $ cd /opt
   ```

1. 公式の NCCL リポジトリをインスタンスにクローンし、ローカルのクローンされたリポジトリに移動します。

   ```
   $ sudo git clone https://github.com/NVIDIA/nccl.git -b v2.23.4-1 && cd nccl
   ```

1. NCCL を構築およびインストールし、CUDA インストールディレクトリを指定します。

   ```
   $ sudo make -j src.build CUDA_HOME=/usr/local/cuda
   ```

## ステップ 7: NCCL テストをインストールする
<a name="nccl-start-base-tests"></a>

NCCL テストをインストールします。NCCL テストではNCCL が適切にインストールされていることを確認し、想定どおりに機能していることを確認できます。NCCL テストに関する詳細については[nccl-tests リポジトリ](https://github.com/NVIDIA/nccl-tests)を参照してください。

**NCCL テストをインストールするには**

1. ホームディレクトリに移動します。

   ```
   $ cd $HOME
   ```

1. 公式の nccl-tests リポジトリをインスタンスにクローンし、ローカルのクローンされたリポジトリに移動します。

   ```
   $ git clone https://github.com/NVIDIA/nccl-tests.git && cd nccl-tests
   ```

1. Libfabric ディレクトリを `LD_LIBRARY_PATH` 変数に追加します。
   + Amazon Linux 2023 および Amazon Linux 2

     ```
     $ export LD_LIBRARY_PATH=/opt/amazon/efa/lib64:$LD_LIBRARY_PATH
     ```
   + Ubuntu 24.04 と Ubuntu 22.04

     ```
     $ export LD_LIBRARY_PATH=/opt/amazon/efa/lib:$LD_LIBRARY_PATH
     ```

1. NCCL テストをインストールし、MPI、NCCL、CUDA インストールディレクトリを指定します。

   ```
   $ make MPI=1 MPI_HOME=/opt/amazon/openmpi NCCL_HOME=/opt/nccl/build CUDA_HOME=/usr/local/cuda
   ```

## ステップ 8: EFA と NCCL の設定をテストする
<a name="nccl-start-base-test"></a>

テストを実行し、EFA と NCCL に一時インスタンスが適切に設定されていることを確認します。

**EFA と NCCL 設定をテストするには**

1. テストを実行するホストを指定するホストファイルを作成します。以下のコマンドはインスタンス自体へのリファレンスを含む `my-hosts` と呼ばれるホストファイルを作成します。

------
#### [ IMDSv2 ]

   ```
   [ec2-user ~]$ TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` \
   && curl -H "X-aws-ec2-metadata-token: $TOKEN" -v http://169.254.169.254/latest/meta-data/local-ipv4 >> my-hosts
   ```

------
#### [ IMDSv1 ]

   ```
   [ec2-user ~]$ curl http://169.254.169.254/latest/meta-data/local-ipv4 >> my-hosts
   ```

------

1. テストを実行し、ホストファイル (`--hostfile`) と使用する GPU の数 (`-n`) を指定します。以下のコマンドはインスタンス自体の 8 つの GPU で `all_reduce_perf` テストを実行し、以下の環境変数を指定します。
   + `FI_EFA_USE_DEVICE_RDMA=1` — (`p4d.24xlarge` のみ) 片側転送および両側転送にデバイスの RDMA 機能を使用します。
   + `NCCL_DEBUG=INFO` – 詳細なデバッグ出力を有効にします。また、テストの開始時に NCCL バージョンのみをプリントするために `VERSION` を指定したり、エラーメッセージのみを受信するために `WARN` を指定したりすることもできます。

   NCCL テスト引数に関する詳細は公式の nccl-tests リポジトリの[NCCL Tests README](https://github.com/NVIDIA/nccl-tests/blob/master/README.md)を参照してください。
   + `p3dn.24xlarge`

     ```
     $ /opt/amazon/openmpi/bin/mpirun \
     -x LD_LIBRARY_PATH=/opt/nccl/build/lib:/usr/local/cuda/lib64:/opt/amazon/efa/lib:/opt/amazon/openmpi/lib:/opt/amazon/ofi-nccl/lib:$LD_LIBRARY_PATH \
     -x NCCL_DEBUG=INFO \
     --hostfile my-hosts -n 8 -N 8 \
     --mca pml ^cm --mca btl tcp,self --mca btl_tcp_if_exclude lo,docker0 --bind-to none \
     $HOME/nccl-tests/build/all_reduce_perf -b 8 -e 1G -f 2 -g 1 -c 1 -n 100
     ```
   + `p4d.24xlarge` および `p5.48xlarge` 

     ```
     $ /opt/amazon/openmpi/bin/mpirun \
     -x FI_EFA_USE_DEVICE_RDMA=1 \
     -x LD_LIBRARY_PATH=/opt/nccl/build/lib:/usr/local/cuda/lib64:/opt/amazon/efa/lib:/opt/amazon/openmpi/lib:/opt/amazon/ofi-nccl/lib:$LD_LIBRARY_PATH \
     -x NCCL_DEBUG=INFO \
     --hostfile my-hosts -n 8 -N 8 \
     --mca pml ^cm --mca btl tcp,self --mca btl_tcp_if_exclude lo,docker0 --bind-to none \
     $HOME/nccl-tests/build/all_reduce_perf -b 8 -e 1G -f 2 -g 1 -c 1 -n 100
     ```

1. `NCCL_DEBUG` ログが出力されるときに、EFA が NCCL の基盤となるプロバイダーとしてアクティブであることを確認できます。

   ```
   ip-192-168-2-54:14:14 [0] NCCL INFO NET/OFI Selected Provider is efa*
   ```

   `p4d.24xlarge` インスタンスの使用時に、次の追加情報が表示されます。

   ```
   ip-192-168-2-54:14:14 [0] NCCL INFO NET/OFI Running on P4d platform, Setting NCCL_TOPO_FILE environment variable to /home/ec2-user/install/plugin/share/aws-ofi-nccl/xml/p4d-24xl-topo.xml
   ```

## ステップ 9: 機械学習アプリケーションをインストールする
<a name="nccl-start-base-app"></a>

機械学習アプリケーションを一時インスタンスにインストールします。インストール手順はそれぞれの機械学習アプリケーションによって異なります。Linux インスタンスへのソフトウェアのインストールの詳細については「[Amazon Linux 2 インスタンスでのソフトウェアの管理](https://docs.aws.amazon.com/linux/al2/ug/managing-software.html)」を参照してください。

**注記**  
インストール手順については機械学習アプリケーションのドキュメントを参照してください。

## ステップ 10: EFA および NCCL 対応 AMI を作成する
<a name="nccl-start-base-ami"></a>

必要なソフトウェアコンポーネントのインストール後、EFA 対応のインスタンスの起動に再利用できる AMI を作成します。

**一時インスタンスから AMI を作成するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、[**インスタンス**] を選択してください。

1. 作成した一時インスタンスを選択し、[**アクション**]、[**イメージ**]、[**イメージの作成**] の順に選択してください。

1. [**イメージの作成**] で、次を行います。

   1. [**イメージ名**] に、の分かりやすい AMI 名を入力してください。

   1. (オプション) [**イメージの説明**] に、AMI の簡単な説明を入力してください。

   1. [**イメージを作成**] を選択してください。

1. ナビゲーションペインで **[AMI]** を選択してください。

1. リストで作成した AMI を探します。ステータスが `pending` から `available` に変わるまで待ってから、次のステップに進みます。

## ステップ 11: 一時インスタンスを終了する
<a name="nccl-start-base-terminate"></a>

この時点で、起動した一時インスタンスは不要になります。インスタンスを終了して、料金の発生を停止できます。

**一時インスタンスを終了するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、[**インスタンス**] を選択してください。

1. 作成した一時インスタンスを選択し、[**アクション**]、[**インスタンスの状態**]、[**インスタンスの終了**] の順に選択してください。

1. 確認を求めるメッセージが表示されたら、[**終了**] を選択してください。

## ステップ 12: クラスタープレイスメントグループで EFA および NCCL 対応のインスタンスを作成する
<a name="nccl-start-base-cluster"></a>

前に作成した EFA 対応の AMI と EFA 対応のセキュリティグループを使用して、EFA および NCCL 対応のインスタンスをクラスタープレイスメントグループ内で起動します。

**注記**  
EFA 対応のインスタンスをクラスタープレイスメントグループに起動することは絶対的な要件ではありません。ただし、EFA 対応のインスタンスは 1 つのアベイラビリティーゾーン内の低レイテンシーグループに起動されるため、クラスタープレイスメントグループで実行することをお勧めします。
クラスターのインスタンスをスケールするときにキャパシティを使用できるようにするにはクラスタープレイスメントグループのキャパシティ予約を作成します。詳細については[クラスタープレイスメントグループでのキャパシティ予約の操作](cr-cpg.md) を参照してください。

------
#### [ New console ]

**一時インスタンスを起動するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、**[Instances]** (インスタンス) を選択し、**[Launch Instances]** (インスタンスの起動) を選択して、新しいインスタンス起動ウィザードを開きます。

1. (*オプション*) **[Name and tags]** (名前とタグ) セクションで、`EFA-instance` などのインスタンス名を指定します。指定した名前はリソースタグとしてインスタンスに割り当てられます (`Name=EFA-instance`)。

1. **[Application and OS Images]** (アプリケーションと OS イメージ) セクションで、**[My AMI]** (マイ AMI) をクリックし、前のステップで作成した AMI を選択してください。

1. **[Instance type]** (インスタンスタイプ) セクションで、`p3dn.24xlarge` または `p4d.24xlarge` のいずれかを選択してください。

1. **[Key pair]** (キーペア) セクションで、インスタンスに使用するキーペアを選択してください。

1. **[Network settings]** (ネットワーク設定) セクションで、**[Edit]** (編集) を選択し、次の操作を行います。

   1. [**サブネット**] で、インスタンスを起動するサブネットを選択してください。サブネットを選択しない場合、EFA のインスタンスを有効にすることはできません。

   1. **[Firewall (security groups)]** (ファイアウォール (セキュリティグループ)) の場合、**[Select existing security group]** (既存のセキュリティグループの選択) を選択し、前のステップで作成したセキュリティグループを選択してください。

   1. **[高度な設定]** セクションを展開します。

      **ネットワークインターフェイス 1 **では**[ネットワークカードインデックス = 0]**、**[デバイスインデックス = 0]**、および**[インターフェイスタイプ = EFA と ENA の組み合わせ]** を選択してください。

      （オプション) `p4d.24xlarge` または `p5.48xlarge` などのマルチカードインスタンスタイプを使用している場合は必要な追加のネットワークインターフェイスごとに**[ネットワークインターフェイスの追加]** を選択し、**ネットワークカードインデックス**の場合は次の未使用インデックスを選択してから、**[デバイスインデックス = 1]**、**[インターフェイスタイプ = ENA を含む EFA]** または **[EFA のみ]** を選択してください。

1. (*オプション*) **[Storage]** (ストレージ) セクションで、必要に応じてボリュームを設定します。

1. **[Advanced details]** (高度な詳細) セクションの **[Placement group name]** (プレイスメントグループ名) で、インスタンスを起動するクラスタープレイスメントグループを選択してください。新しいクラスタープレイスメントグループを作成する必要がある場合は**[Create new placement group]** (新しいプレイスメントグループの作成) を選択してください。

1. 右側の **[合計mary]** (サマリー) パネルで、**[Number of instances]** (インスタンス数) に、起動する EFA 対応のインスタンスの数を入力し、**[Launch Instance]** (インスタンスの起動) を選択してください。

------
#### [ Old console ]

**EFA および NCCL 対応のインスタンスをクラスタープレイスメントグループに起動するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. [**インスタンスの作成**] を選択してください。

1. [**AMI の選択**] ページで、[**マイ AMI**] を選択し、前に作成した AMI を見つけて、[**選択**] をクリックしてください。

1. **[インスタンスタイプの選択]** ページで **[p3dn.24xlarge]** を選択し、**[次へ: インスタンスの詳細の設定]** を選択してください。

1. [**インスタンスの詳細設定**] ページで、以下を行います。

   1. [**インスタンス数**] に、起動する EFA および NCCL 対応のインスタンスの数を入力してください。

   1. [**ネットワーク**] および [**サブネット**] で、インスタンスを起動する VPC およびサブネットを選択してください。

   1. [**プレイスメントグループ**] で、[**インスタンスをプレイスメントグループに追加します**] チェックボックスをオンにします。

   1. [**プレイスメントグループ名**] で、[**新しいプレイスメントグループに追加する**] チェックボックスをオンにし、分かりやすいプレイスメントグループ名を入力してください。次に、[**プレイスメントグループ戦略**] で [**クラスター**] を選択してください。

   1. [**EFA**] で、[**有効化**] を選択してください。

   1. [**ネットワークインターフェイス**] セクションの [**eth0**] で、[**新しいネットワークインターフェイス**] を選択してください。必要に応じて、プライマリ IPv4 アドレスと 1 つ以上のセカンダリ IPv4 アドレスを指定できます。関連付けられている IPv6 CIDR ブロックを持つサブネットにインスタンスを起動する場合は必要に応じて、プライマリ IPv6 アドレスと 1 つ以上のセカンダリ IPv6 アドレスを指定できます。

   1. [**次の手順: ストレージの追加**] を選択してください。

1. [**ストレージの追加**] ページで、AMI が指定するボリューム (ルートデバイスボリュームなど) に加えて、インスタンスにアタッチするボリュームを指定します。次に、[**次の手順: タグの追加**] を選択してください。

1. [**Add Tags**] ページで、ユーザーフレンドリーな名前などを使ってインスタンスのタグを指定し、[**Next: Configure Security Group**] を選択してください。

1. [**セキュリティグループの設定**] ページの [**セキュリティグループの割り当て**] で、[**既存のセキュリティグループの選択**] を選択し、前に作成したセキュリティグループを選択してください。

1. [**Review and Launch**] を選択してください。

1. [**インスタンス作成の確認**] ページで設定を確認し、[**起動**] を選択してキーペアを選択し、インスタンスを起動します。

------

## ステップ 13: パスワードレス SSH を有効にする
<a name="nccl-start-base-passwordless"></a>

クラスター内のすべてのインスタンスでアプリケーションを実行できるようにするにはリーダーノードからメンバーノードへのパスワードなしの SSH アクセスを有効にする必要があります。リーダーノードはアプリケーションを実行するインスタンスです。クラスター内の残りのインスタンスはメンバーノードです。

**クラスター内のインスタンス間でパスワードなしの SSH を有効にするには**

1. クラスター内の 1 つのインスタンスをリーダーノードとして選択し、それに接続します。

1. リーダーノード上で `strictHostKeyChecking` を無効にし `ForwardAgent` を有効にします。任意のテキストエディタを使用して `~/.ssh/config` ファイルを開き、以下を追加します。

   ```
   Host *
       ForwardAgent yes
   Host *
       StrictHostKeyChecking no
   ```

1. RSA キーペアを生成します。

   ```
   $ ssh-keygen -t rsa -N "" -f ~/.ssh/id_rsa
   ```

   キーペアは`$HOME/.ssh/` ディレクトリで作成されます。

1. リーダーノードのプライベートキーの許可を変更します。

   ```
   $ chmod 600 ~/.ssh/id_rsa
   chmod 600 ~/.ssh/config
   ```

1. 任意のテキストエディタで `~/.ssh/id_rsa.pub` を開き、キーをコピーします。

1. クラスター内の各メンバーノードについて、次の操作を行います。

   1. インスタンスに接続します。

   1. 任意のテキストエディタで `~/.ssh/authorized_keys` を開き、前にコピーしたパブリックキーを追加します。

1. パスワードレス SSH が正常に機能していることをテストするにはリーダーノードに接続して、次のコマンドを実行します。

   ```
   $ ssh member_node_private_ip
   ```

   キーまたはパスワードの入力を求められずに、メンバーノードに接続できるはずです。

# Amazon EC2 の推論ワークロードに対して EFA と NIXL の使用を開始する
<a name="efa-start-nixl"></a>

NVIDIA Inference Xfer Library (NIXL) は、分散推論ワークロード専用に設計された、高スループットで低レイテンシーの通信ライブラリです。NIXL は、EFA および Libfabric とともに使用すれば、プリフィルノードとデコードノード間の KV キャッシュ転送をサポートでき、さまざまなストレージレイヤー間での KV キャッシュ移動を効率化できます。詳細については、[NIXL](https://github.com/ai-dynamo/nixl) のウェブサイトを参照してください。

**要件**
+ Ubuntu 24.04 と Ubuntu 22.04 ベースの AMI のみがサポートされています。
+ EFA は NIXL 1.0.0 以降のみをサポートしています。

**Topics**

## ステップ 1: EFA 対応のセキュリティグループを準備する
<a name="nixl-start-base-setup"></a>

EFA にはセキュリティグループ自体とのインバウンドおよびアウトバウンドのトラフィックをすべて許可するセキュリティグループが必要です。以下の手順ではセキュリティグループを作成します。このセキュリティグループではセキュリティグループ自体とのすべてのインバウンドおよびアウトバウンドのトラフィックと、SSH 接続用の任意の IPv4 アドレスからのインバウンド SSH トラフィックを許可します。

**重要**  
このセキュリティグループはテストのみを目的としています。本番環境ではコンピュータの IP アドレスやローカルネットワークの IP アドレスの範囲など、接続元の IP アドレスからのトラフィックのみを許可するインバウンド SSH ルールを作成することをお勧めします。

その他のシナリオについては[さまざまなユースケースのセキュリティグループのルール](security-group-rules-reference.md)を参照してください。

**EFA 対応のセキュリティグループを作成するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで [**Security Groups**] (セキュリティグループ) を選択して、[**Create security group**] (セキュリティグループの作成) を選択してください。

1. [**Create security group**] (セキュリティグループの作成) ウィンドウで、以下を行います。

   1. [**セキュリティグループ名**] に、`EFA-enabled security group` のような、分かりやすいセキュリティグループ名を入力してください。

   1. (オプション) [**説明**] に、セキュリティグループの簡単な説明を入力してください。

   1. [**VPC**] で、EFA 対応のインスタンスを起動する VPC を選択してください。

   1. **[セキュリティグループの作成]** を選択してください。

1. 作成したセキュリティグループを選択し、**[Details]** (詳細) タブで **[Security group ID]** (セキュリティグループ ID) をコピーします。

1. セキュリティグループが選択された状態で、**[Actions]** (アクション)、**[Edit inbound rules]** (インバウンドルールの編集) の順に選択し、次の手順を実行します。

   1. [**Add rule**] を選択してください。

   1. [**Type**] で、[**All traffic**] を選択してください。

   1. **[Source type]** (送信元タイプ) で、**[Custom]** (カスタム) を選択し、コピーしたセキュリティグループ ID をフィールドに貼り付けます。

   1. [**ルールを追加**] を選択してください。

   1. **[タイプ]** で **SSH]** を選択してください。

   1. **[Source type]** (ソースタイプ) で、**[Anywhere-IPv4]** を選択してください。

   1. **[Save Rules]** (ルールの保存) を選択してください。

1. セキュリティグループが選択された状態で、**[Actions]** (アクション)、**[Edit outbound rules]** (アウトバウンドルールの編集) の順に選択し、次の手順を実行します。

   1. [**Add rule**] を選択してください。

   1. [**Type**] で、[**All traffic**] を選択してください。

   1. **[Destination type]** (送信先タイプ) で、**[Custom]** (カスタム) を選択し、コピーしたセキュリティグループ ID をフィールドに貼り付けます。

   1. **[Save Rules]** (ルールの保存) を選択してください。

## ステップ 2: 一時インスタンスを作成する
<a name="nixl-start-base-temp"></a>

EFA ソフトウェアコンポーネントのインストールおよび設定に使用する一時インスタンスを起動します。このインスタンスを使用して、EFA 対応のインスタンスを起動する EFA 対応の AMI を作成します。

**一時インスタンスを起動するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、**[Instances]** (インスタンス) を選択し、**[Launch Instances]** (インスタンスの起動) を選択して、新しいインスタンス起動ウィザードを開きます。

1. (*オプション*) **[Name and tags]** (名前とタグ) セクションで、`EFA-instance` などのインスタンス名を指定します。指定した名前はリソースタグとしてインスタンスに割り当てられます (`Name=EFA-instance`)。

1. **[アプリケーションと OS のイメージ]** セクションで、サポートされるオペレーティングシステムのいずれかに対応する AMI を選択してください。[DLAMI リリースノートページ](https://docs.aws.amazon.com/dlami/latest/devguide/appendix-ami-release-notes)で、サポートされている DLAMI を選択することもできます。

1. **[インスタンスタイプ]** セクションで、サポートされているインスタンスタイプを選択してください。

1. **[Key pair]** (キーペア) セクションで、インスタンスに使用するキーペアを選択してください。

1. **[Network settings]** (ネットワーク設定) セクションで、**[Edit]** (編集) を選択し、次の操作を行います。

   1. [**サブネット**] で、インスタンスを起動するサブネットを選択してください。サブネットを選択しない場合、EFA のインスタンスを有効にすることはできません。

   1. **[Firewall (security groups)]** (ファイアウォール (セキュリティグループ)) の場合、**[Select existing security group]** (既存のセキュリティグループの選択) を選択し、前のステップで作成したセキュリティグループを選択してください。

   1. **[高度な設定]** セクションを展開します。

      **ネットワークインターフェイス 1** では**[ネットワークカードインデックス = 0]**、**[デバイスインデックス = 0]**、**[インターフェイスタイプ = EFA と ENA の組み合わせ]** を選択してください。

      (*オプション*) `p4d.24xlarge` または `p5.48xlarge` などのマルチカードインスタンスタイプを、必要な追加のネットワークインターフェイスごとに使用する場合は**[ネットワークインターフェイスの追加]** を選択し、**ネットワークカードインデックス**の場合は次の未使用インデックスを選択してから、**[デバイスインデックス = 1]**、**[インターフェイスタイプ = EFA と ENA の組み合わせ]** または **[EFA のみ]** を選択してください。

1. **[Storage]** (ストレージ) セクションで、必要に応じてボリュームを設定します。
**注記**  
Nvidia CUDA ツールキットには追加の 10 ～ 20 GiB のストレージをプロビジョニングする必要があります。十分な量のストレージをプロビジョニングしないと、Nvidia ドライバーと CUDA ツールキットをインストールしようとしたときに、`insufficient disk space` エラーが発生します。

1. 右側の **[合計mary]** (サマリー) パネルで、**[Launch instance]** (インスタンスの起動) を選択してください。

**重要**  
AMI に Nvidia GPU ドライバー、CUDA ツールキット、cuDNN がすでに含まれている場合、または非 GPU インスタンスを使用している場合は、ステップ 3 をスキップします。

## ステップ 3: Nvidia GPU ドライバー、Nvidia CUDA ツールキットおよび cuDNN をインストールする
<a name="nixl-start-base-drivers"></a>

**NVIDIA GPU ドライバー、NVIDIA CUDA ツールキットおよび cuDNN をインストールするには**

1. すべてのソフトウェアパッケージが最新の状態であることを確認するため、インスタンスでソフトウェアの更新を実行します。

   ```
   $ sudo apt-get update && sudo apt-get upgrade -y
   ```

1. Nvidia GPU ドライバと Nvidia CUDA ツールキットをインストールするために必要なユーティリティをインストールします。

   ```
   $ sudo apt-get install build-essential -y
   ```

1. Nvidia GPU ドライバを使用するにはまず、`nouveau` オープンソースドライバを無効にする必要があります。

   1. 必要なユーティリティ、および現在実行しているカーネルのバージョン用のカーネルヘッダーパッケージをインストールします。

      ```
      $ sudo apt-get install -y gcc make linux-headers-$(uname -r)
      ```

   1. `nouveau` 拒否リストファイルに `/etc/modprobe.d/blacklist.conf ` を追加します。

      ```
      $ cat << EOF | sudo tee --append /etc/modprobe.d/blacklist.conf
      blacklist vga16fb
      blacklist nouveau
      blacklist rivafb
      blacklist nvidiafb
      blacklist rivatv
      EOF
      ```

   1. 任意のテキストエディタを使用して `/etc/default/grub` ファイルを開き、以下を追加します。

      ```
      GRUB_CMDLINE_LINUX="rdblacklist=nouveau"
      ```

   1. Grub 設定を再構築します。

      ```
      $ sudo update-grub
      ```

1. インスタンスを再起動して、そのインスタンスに再接続します。

1. CUDA リポジトリを追加し、Nvidia GPU ドライバー、NVIDIA CUDA ツールキット、および cuDNN をインストールします。

   ```
   $ sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu2004/x86_64/7fa2af80.pub \
   && wget -O /tmp/deeplearning.deb http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu2004/x86_64/nvidia-machine-learning-repo-ubuntu2004_1.0.0-1_amd64.deb \
   && sudo dpkg -i /tmp/deeplearning.deb \
   && wget -O /tmp/cuda.pin https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin \
   && sudo mv /tmp/cuda.pin /etc/apt/preferences.d/cuda-repository-pin-600 \
   && sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/3bf863cc.pub \
   && sudo add-apt-repository 'deb http://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/ /' \
   && sudo apt update \
   && sudo apt install nvidia-dkms-535 \
   && sudo apt install -o Dpkg::Options::='--force-overwrite' cuda-drivers-535 cuda-toolkit-12-3 libcudnn8 libcudnn8-dev -y
   ```

1. インスタンスを再起動して、そのインスタンスに再接続します。

1. (`p4d.24xlarge` および `p5.48xlarge` のみ) NVIDIA Fabric Manager をインストールします。

   1. 前の手順でインストールした Nvidia カーネルモジュールのバージョンと一致する Nvidia Fabric Manager のバージョンをインストールする必要があります。

      Nvidia カーネルモジュールのバージョンを確認するには次のコマンドを実行します。

      ```
      $ cat /proc/driver/nvidia/version | grep "Kernel Module"
      ```

      出力例を次に示します。

      ```
      NVRM version: NVIDIA UNIX x86_64 Kernel Module  450.42.01  Tue Jun 15 21:26:37 UTC 2021
      ```

      上記の例ではメジャーバージョン `450` のカーネルモジュールがインストールされました。これはNvidia Fabric Manager のバージョン `450` をインストールする必要があることを意味します。

   1. Nvidia Fabric Manager をインストールする 次のコマンドを、前の手順で識別されたメジャーバージョンを指定して実行します。

      ```
      $ sudo apt install -o Dpkg::Options::='--force-overwrite' nvidia-fabricmanager-major_version_number
      ```

      例えば、メジャーバージョン `450` のカーネルモジュールがインストールされた場合、以下のコマンドを使用して、一致するバージョンの Nvidia Fabric Manager をインストールします。

      ```
      $ sudo apt install -o Dpkg::Options::='--force-overwrite' nvidia-fabricmanager-450
      ```

   1. サービスを開始し、インスタンスの起動時に自動的に起動することを確認します。NVIDIA Fabric Manager はNV Switch Management に必要です。

      ```
      $ sudo systemctl start nvidia-fabricmanager && sudo systemctl enable nvidia-fabricmanager
      ```

1. インスタンスが起動するたびに CUDA パスが設定されていることを確認します。
   + *bash* シェルの場合、次のステートメントを `/home/username/.bashrc` と `/home/username/.bash_profile` に追加します。

     ```
     export PATH=/usr/local/cuda/bin:$PATH
     export LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64:$LD_LIBRARY_PATH
     ```
   + *tcsh* シェルの場合、次の文を `/home/username/.cshrc` に追加します。

     ```
     setenv PATH=/usr/local/cuda/bin:$PATH
     setenv LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64:$LD_LIBRARY_PATH
     ```

1. 以下のコマンドを実行して、Nvidia GPU ドライバが機能することを確認します。

   ```
   $ nvidia-smi -q | head
   ```

   このコマンドはNvidia GPU、Nvidia GPU ドライバ、Nvidia CUDA ツールキットの情報を返します。

**重要**  
AMI にすでに GDRCopy が含まれている場合、または非 GPU インスタンスを使用している場合は、ステップ 4 をスキップします。

## ステップ 4: GDRCopy をインストールする
<a name="nixl-start-base-gdrcopy"></a>

GDRCopy をインストールして GPU ベースのプラットフォーム上で Libfabric のパフォーマンスを向上させます。GDRCopy の詳細については「[GDRCopy レポジトリ](https://github.com/NVIDIA/gdrcopy)」を参照してください。

**GDRCopy をインストールするには**

1. 必要な依存ファイルをインストールします。

   ```
   $ sudo apt -y install build-essential devscripts debhelper check libsubunit-dev fakeroot pkg-config dkms
   ```

1. GDRCopy パッケージをダウンロードして解凍します。

   ```
   $ wget https://github.com/NVIDIA/gdrcopy/archive/refs/tags/v2.4.tar.gz \
   && tar xf v2.4.tar.gz \
   && cd gdrcopy-2.4/packages
   ```

1. GDRCopy DEB パッケージをビルドします。

   ```
   $ CUDA=/usr/local/cuda ./build-deb-packages.sh
   ```

1. GDRCopy DEB パッケージをインストールします。

   ```
   $ sudo dpkg -i gdrdrv-dkms_2.4-1_amd64.*.deb \
   && sudo dpkg -i libgdrapi_2.4-1_amd64.*.deb \
   && sudo dpkg -i gdrcopy-tests_2.4-1_amd64.*.deb \
   && sudo dpkg -i gdrcopy_2.4-1_amd64.*.deb
   ```

**重要**  
AMI に最新の EFA インストーラがすでに含まれている場合は、ステップ 5 をスキップします。

## ステップ 5: EFA ソフトウェアをインストールする
<a name="nixl-start-base-enable"></a>

インスタンスで EFA をサポートするために必要な EFA 対応のカーネル、EFA ドライバー、Libfabric スタックをインストールします。

**EFA ソフトウェアをインストールするには**

1. 起動したインスタンスに接続します。詳細については「[SSH を使用した Linux インスタンスへの接続](connect-to-linux-instance.md)」を参照してください。

1. EFA ソフトウェアのインストールファイルをダウンロードします。ソフトウェアのインストールファイルは圧縮された tar (`.tar.gz`) ファイルにパッケージ化されています。次のコマンドを使用して、*安定している*最新バージョンをダウンロードします。

   ```
   $ curl -O https://efa-installer.amazonaws.com/aws-efa-installer-1.47.0.tar.gz
   ```

1. 圧縮された `.tar.gz` ファイルからファイルを展開してターボールを削除し、展開されたディレクトリに移動します。

   ```
   $ tar -xf aws-efa-installer-1.47.0.tar.gz && rm -rf aws-efa-installer-1.47.0.tar.gz && cd aws-efa-installer
   ```

1. EFA ソフトウェアのインストールスクリプトを実行します。

   ```
   $ sudo ./efa_installer.sh -y
   ```

   **Libfabric** は `/opt/amazon/efa` ディレクトリにインストールされます。

1. EFA インストーラーでインスタンスの再起動を求めるメッセージが表示された場合は再起動してからインスタンスに再接続します。それ以外の場合はインスタンスからログアウトし、再度ログインしてインストールを完了します。

1. EFA ソフトウェアコンポーネントが正常にインストールされたことを確認します。

   ```
   $ fi_info -p efa -t FI_EP_RDM
   ```

   コマンドによって、Libfabric の EFA インターフェイスに関する情報が返ります。以下の例はコマンド出力を示しています。
   + 単一のネットワークインターフェイスを持つ `p3dn.24xlarge`

     ```
     provider: efa
     fabric: EFA-fe80::94:3dff:fe89:1b70
     domain: efa_0-rdm
     version: 2.0
     type: FI_EP_RDM
     protocol: FI_PROTO_EFA
     ```
   + 複数のネットワークインターフェイスを持つ `p4d.24xlarge` および `p5.48xlarge`

     ```
     provider: efa
     fabric: EFA-fe80::c6e:8fff:fef6:e7ff
     domain: efa_0-rdm
     version: 111.0
     type: FI_EP_RDM
     protocol: FI_PROTO_EFA
     provider: efa
     fabric: EFA-fe80::c34:3eff:feb2:3c35
     domain: efa_1-rdm
     version: 111.0
     type: FI_EP_RDM
     protocol: FI_PROTO_EFA
     provider: efa
     fabric: EFA-fe80::c0f:7bff:fe68:a775
     domain: efa_2-rdm
     version: 111.0
     type: FI_EP_RDM
     protocol: FI_PROTO_EFA
     provider: efa
     fabric: EFA-fe80::ca7:b0ff:fea6:5e99
     domain: efa_3-rdm
     version: 111.0
     type: FI_EP_RDM
     protocol: FI_PROTO_EFA
     ```

## ステップ 6: NIXL をインストールする
<a name="nixl-start-base-nixl"></a>

NIXL をインストールします。NIXL の詳細については、[NIXL リポジトリ](https://github.com/ai-dynamo/nixl)を参照してください。

------
#### [ Pre-built distributions ]

**PyPI を使用して NIXL をインストールする方法**

1. 必要な依存ファイルをインストールします。

   ```
   $ sudo apt install pip
   ```

1. NIXL をインストールします。

   ```
   $ pip install nixl
   ```

------
#### [ Build from source ]

**ソースから NIXL をビルドしてインストールする方法**

1. 必要な依存ファイルをインストールします。

   ```
   $ sudo apt install cmake pkg-config meson pybind11-dev libaio-dev nvidia-cuda-toolkit pip libhwloc-dev \
   && pip install meson ninja pybind11
   ```

1. ホームディレクトリに移動します。

   ```
   $ cd $HOME
   ```

1. 公式の NIXL リポジトリをインスタンスにクローンし、ローカルのクローンされたリポジトリに移動します。

   ```
   $ sudo git clone https://github.com/ai-dynamo/nixl.git && cd nixl
   ```

1. NIXL を構築してインストールし、Libfabric インストールディレクトリへのパスを指定します。

   ```
   $ sudo meson setup . nixl --prefix=/usr/local/nixl -Dlibfabric_path=/opt/amazon/efa
   $ cd nixl && sudo ninja && sudo ninja install
   ```

------

## ステップ 7: NIXL Benchmark をインストールして EFA と NIXL 設定をテストする
<a name="nixl-start-base-tests"></a>

NIXL Benchmark をインストールし、テストを実行して EFA と NIXL に一時インスタンスが適切に設定されていることを確認します。NIXL Benchmark により、NIXL が適切にインストールされていることと、想定どおりに機能していることを確認できます。詳細については、[nixlbench リポジトリ](https://github.com/ai-dynamo/nixl/tree/main/benchmark/nixlbench)を参照してください。

NIXL Benchmark (nixlbench) では、クライアントとサーバー間の調整に ETCD が必要です。ETCD と NIXL を併用するには、ETCD サーバーとクライアント、および ETCD CPP API が必要です。

------
#### [ Build from Docker ]

**Docker を使用して NIXL Benchmark をインストールしてテストする方法**

1. 公式の NIXL リポジトリのクローンを作成してインスタンスに投入し、nixlbench ビルドディレクトリに移動します。

   ```
   $ git clone https://github.com/ai-dynamo/nixl.git
   $ cd nixl/benchmark/nixlbench/contrib
   ```

1. コンテナを構築します。

   ```
   $ ./build.sh
   ```

   Docker ビルドオプションの詳細については、[nixlbench リポジトリ](https://github.com/ai-dynamo/nixl/tree/main/benchmark/nixlbench)を参照してください。

1. Docker をインストールします。

   ```
   $ sudo apt install docker.io -y
   ```

1. 調整のために ETCD サーバーを起動します。

   ```
   $ docker run -d --name etcd-server \
       -p 2379:2379 -p 2380:2380 \
       quay.io/coreos/etcd:v3.5.18 \
       /usr/local/bin/etcd \
       --data-dir=/etcd-data \
       --listen-client-urls=http://0.0.0.0:2379 \
       --advertise-client-urls=http://0.0.0.0:2379 \
       --listen-peer-urls=http://0.0.0.0:2380 \
       --initial-advertise-peer-urls=http://0.0.0.0:2380 \
       --initial-cluster=default=http://0.0.0.0:2380
   ```

1. ETCD サーバーが実行されていることを確認します。

   ```
   $ curl -L http://localhost:2379/health
   ```

   正常な出力:

   ```
   {"health":"true"}
   ```

1. インスタンスの 2 つのターミナルを開きます。両方のターミナルで、以下のコマンドを実行してインストールを確認します。コマンドは、同じインスタンス上の ETCD サーバーを使用し、バックエンドとして Libfabric を使用し、GPU メモリを使用して動作します。

   ```
   $ docker run -it --gpus all --network host nixlbench:latest \
       nixlbench --etcd_endpoints http://localhost:2379 \
       --backend LIBFABRIC \
       --initiator_seg_type VRAM \
       --target_seg_type VRAM
   ```
**注記**  
GPU 以外のインスタンスには `VRAM` の代わりに `DRAM` 値を使用します。

------
#### [ Build from source ]

**重要**  
ステップ 6 で **[ソースからビルドする]** を選択した場合のみ、このタブに従います。

**NIXL Benchmark をインストールする方法**

1. 必要なシステム依存関係をインストールします。

   ```
   $ sudo apt install libgflags-dev
   ```

1. ETCD サーバーとクライアントをインストールします。

   ```
   $ sudo apt install -y etcd-server etcd-client
   ```

1. ETCD CPP API をインストールします。

   1. ETCD CPP API に必要な依存関係をインストールします。

      ```
      $ sudo apt install libboost-all-dev libssl-dev libgrpc-dev libgrpc++-dev libprotobuf-dev protobuf-compiler-grpc libcpprest-dev
      ```

   1. ETCD CPP API のクローンを作成してインストールします。

      ```
      $ cd $HOME
      $ git clone https://github.com/etcd-cpp-apiv3/etcd-cpp-apiv3.git
      $ cd etcd-cpp-apiv3
      $ mkdir build && cd build
      $ cmake ..
      $ sudo make -j$(nproc) && sudo make install
      ```

1. nixlbench をビルドしてインストールします。

   ```
   $ sudo meson setup . $HOME/nixl/benchmark/nixlbench -Dnixl_path=/usr/local/nixl/
   $ sudo ninja && sudo ninja install
   ```

**EFA と NIXL 設定をテストする方法**

1. インスタンスで ETCD サーバーを起動します。

   ```
   $ etcd --listen-client-urls "http://0.0.0.0:2379" \
       --advertise-client-urls "http://localhost:2379" &
   ```

1. ETCD サーバーが実行されていることを確認します。

   ```
   $ curl -L http://localhost:2379/health
   ```

   正常な出力:

   ```
   {"health":"true"}
   ```

1. インスタンスの 2 つのターミナルを開きます。両方のターミナルで、以下の手順に従って nixlbench を実行します。

   1. nixlbench がインストールされているディレクトリに移動します。

      ```
      $ cd /usr/local/nixlbench/bin/
      ```

   1. テストを実行し、バックエンド、ETCD サーバーのアドレス、イニシエータセグメントタイプを指定します。次のコマンドは、同じインスタンス上の ETCD サーバーを使用し、バックエンドとして Libfabric を使用し、GPU メモリを使用して動作します。環境変数により以下が設定されます。
      + `NIXL_LOG_LEVEL=INFO` — 詳細なデバッグ出力を有効にします。エラーメッセージのみを受信するように `WARN` を指定することもできます。
      + `LD_LIBRARY_PATH` — NIXL ライブラリのパスを設定します。

      NIXL Benchmark 引数の詳細については、公式の nixlbench リポジトリの [NIXLbench README](https://github.com/ai-dynamo/nixl/blob/main/benchmark/nixlbench/README.md) を参照してください。

      ```
      $ export NIXL_LOG_LEVEL=INFO
      $ export LD_LIBRARY_PATH=/usr/local/nixl/lib/$(gcc -dumpmachine):$LD_LIBRARY_PATH
      
      $ nixlbench --etcd-endpoints 'http://localhost:2379' \
          --backend 'LIBFABRIC' \
          --initiator_seg_type 'VRAM' \
          --target_seg_type 'VRAM'
      ```
**注記**  
GPU 以外のインスタンスには `VRAM` の代わりに `DRAM` 値を使用します。

------

## ステップ 8: 機械学習アプリケーションをインストールする
<a name="nixl-start-base-app"></a>

機械学習アプリケーションを一時インスタンスにインストールします。インストール手順はそれぞれの機械学習アプリケーションによって異なります。

**注記**  
インストール手順については機械学習アプリケーションのドキュメントを参照してください。

## ステップ 9: EFA および NIXL 対応 AMI を作成する
<a name="nixl-start-base-ami"></a>

必要なソフトウェアコンポーネントのインストール後、EFA 対応のインスタンスの起動に再利用できる AMI を作成します。

**一時インスタンスから AMI を作成するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、[**インスタンス**] を選択してください。

1. 作成した一時インスタンスを選択し、[**アクション**]、[**イメージ**]、[**イメージの作成**] の順に選択してください。

1. [**イメージの作成**] で、次を行います。

   1. [**イメージ名**] に、の分かりやすい AMI 名を入力してください。

   1. (オプション) [**イメージの説明**] に、AMI の簡単な説明を入力してください。

   1. [**イメージを作成**] を選択してください。

1. ナビゲーションペインで **[AMI]** を選択してください。

1. リストで作成した AMI を探します。ステータスが `pending` から `available` に変わるまで待ってから、次のステップに進みます。

## ステップ 10: 一時インスタンスを終了する
<a name="nixl-start-base-terminate"></a>

この時点で、起動した一時インスタンスは不要になります。インスタンスを終了して、料金の発生を停止できます。

**一時インスタンスを終了するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、[**インスタンス**] を選択してください。

1. 作成した一時インスタンスを選択し、[**アクション**]、[**インスタンスの状態**]、[**インスタンスの終了**] の順に選択してください。

1. 確認を求めるメッセージが表示されたら、[**終了**] を選択してください。

## ステップ 11: EFA および NIXL 対応インスタンスを起動する
<a name="nixl-start-base-cluster"></a>

**ステップ 9** で作成した EFA 対応の AMI と、**ステップ 1** で作成した EFA 対応のセキュリティグループを使用して、EFA および NIXL 対応インスタンスを起動します。

**EFA および NIXL 対応インスタンスを起動する方法**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、**[Instances]** (インスタンス) を選択し、**[Launch Instances]** (インスタンスの起動) を選択して、新しいインスタンス起動ウィザードを開きます。

1. (*オプション*) **[Name and tags]** (名前とタグ) セクションで、`EFA-instance` などのインスタンス名を指定します。指定した名前はリソースタグとしてインスタンスに割り当てられます (`Name=EFA-instance`)。

1. **[Application and OS Images]** (アプリケーションと OS イメージ) セクションで、**[My AMI]** (マイ AMI) をクリックし、前のステップで作成した AMI を選択してください。

1. **[インスタンスタイプ]** セクションで、サポートされているインスタンスタイプを選択してください。

1. **[Key pair]** (キーペア) セクションで、インスタンスに使用するキーペアを選択してください。

1. **[Network settings]** (ネットワーク設定) セクションで、**[Edit]** (編集) を選択し、次の操作を行います。

   1. [**サブネット**] で、インスタンスを起動するサブネットを選択してください。サブネットを選択しない場合、EFA のインスタンスを有効にすることはできません。

   1. **[ファイアウォール (セキュリティグループ)]** の場合、**[既存のセキュリティグループを選択]** を選択し、**ステップ 1**で作成したセキュリティグループを選択してください。

   1. **[高度な設定]** セクションを展開します。

      **ネットワークインターフェイス 1** では**[ネットワークカードインデックス = 0]**、**[デバイスインデックス = 0]**、**[インターフェイスタイプ = EFA と ENA の組み合わせ]** を選択してください。

      (*オプション*) `p4d.24xlarge` または `p5.48xlarge` などのマルチカードインスタンスタイプを、必要な追加のネットワークインターフェイスごとに使用する場合は**[ネットワークインターフェイスの追加]** を選択し、**ネットワークカードインデックス**の場合は次の未使用インデックスを選択してから、**[デバイスインデックス = 1]**、**[インターフェイスタイプ = EFA と ENA の組み合わせ]** または **[EFA のみ]** を選択してください。

1. (*オプション*) **[Storage]** (ストレージ) セクションで、必要に応じてボリュームを設定します。

1. 右側の **[合計mary]** (サマリー) パネルで、**[Number of instances]** (インスタンス数) に、起動する EFA 対応のインスタンスの数を入力し、**[Launch Instance]** (インスタンスの起動) を選択してください。

## ステップ 12: パスワードレス SSH を有効にする
<a name="nixl-start-base-passwordless"></a>

クラスター内のすべてのインスタンスでアプリケーションを実行できるようにするにはリーダーノードからメンバーノードへのパスワードなしの SSH アクセスを有効にする必要があります。リーダーノードはアプリケーションを実行するインスタンスです。クラスター内の残りのインスタンスはメンバーノードです。

**クラスター内のインスタンス間でパスワードなしの SSH を有効にするには**

1. クラスター内の 1 つのインスタンスをリーダーノードとして選択し、それに接続します。

1. リーダーノード上で `strictHostKeyChecking` を無効にし `ForwardAgent` を有効にします。任意のテキストエディタを使用して `~/.ssh/config` ファイルを開き、以下を追加します。

   ```
   Host *
       ForwardAgent yes
   Host *
       StrictHostKeyChecking no
   ```

1. RSA キーペアを生成します。

   ```
   $ ssh-keygen -t rsa -N "" -f ~/.ssh/id_rsa
   ```

   キーペアは`$HOME/.ssh/` ディレクトリで作成されます。

1. リーダーノードのプライベートキーの許可を変更します。

   ```
   $ chmod 600 ~/.ssh/id_rsa
   chmod 600 ~/.ssh/config
   ```

1. 任意のテキストエディタで `~/.ssh/id_rsa.pub` を開き、キーをコピーします。

1. クラスター内の各メンバーノードについて、次の操作を行います。

   1. インスタンスに接続します。

   1. 任意のテキストエディタで `~/.ssh/authorized_keys` を開き、前にコピーしたパブリックキーを追加します。

1. パスワードレス SSH が正常に機能していることをテストするにはリーダーノードに接続して、次のコマンドを実行します。

   ```
   $ ssh member_node_private_ip
   ```

   キーまたはパスワードの入力を求められずに、メンバーノードに接続できるはずです。

**重要**  
ステップ 7 に従った場合にのみ、ステップ 13 に従ってください。

## ステップ 13: インスタンス間で EFA と NIXL の設定をテストする
<a name="nixl-start-base-test-multi"></a>

テストを実行し、EFA と NIXL に対して一時インスタンスが適切に設定されていることを確認します。

------
#### [ Build from Docker ]

**Docker を使用してインスタンス間で EFA と NIXL の設定をテストする方法**

1. nixlbench ベンチマークを実行するためにホストを 2 つ選択します。最初のホストの IP アドレスをメタデータ交換用の ETCD サーバー IP として使用します。

1. ホスト 1 で ETCD サーバーを起動します。

   ```
   $ docker run -d --name etcd-server \
       -p 2379:2379 -p 2380:2380 \
       quay.io/coreos/etcd:v3.5.18 \
       /usr/local/bin/etcd \
       --data-dir=/etcd-data \
       --listen-client-urls=http://0.0.0.0:2379 \
       --advertise-client-urls=http://0.0.0.0:2379 \
       --listen-peer-urls=http://0.0.0.0:2380 \
       --initial-advertise-peer-urls=http://0.0.0.0:2380 \
       --initial-cluster=default=http://0.0.0.0:2380
   ```

1. ETCD サーバーが実行されていることを確認します。

   ```
   $ curl -L http://localhost:2379/health
   ```

   ```
   {"health":"true"}
   ```

1. ホスト 1 で nixlbench ベンチマークを実行します。

   ```
   $ docker run -it --gpus all --network host nixlbench:latest \
       nixlbench --etcd_endpoints http://localhost:2379 \
       --backend LIBFABRIC \
       --initiator_seg_type VRAM
   ```

1. ホスト 2 で nixlbench ベンチマークを実行します。

   ```
   $ docker run -it --gpus all --network host nixlbench:latest \
       nixlbench --etcd_endpoints http://ETCD_SERVER_IP:2379 \
       --backend LIBFABRIC \
       --initiator_seg_type VRAM
   ```

------
#### [ Build from source ]

**重要**  
ステップ 6 で **[ソースからビルドする]** を選択した場合のみ、このタブに従います。

**インスタンス間で EFA と NIXL の設定をテストする方法**

1. nixlbench ベンチマークを実行するためにホストを 2 つ選択します。最初のホストの IP アドレスをメタデータ交換用の ETCD サーバー IP として使用します。

1. ホスト 1 で ETCD サーバーを起動します。

   ```
   $ etcd --listen-client-urls "http://0.0.0.0:2379" \
       --advertise-client-urls "http://localhost:2379" &
   ```

1. ETCD サーバーが実行されていることを確認します。

   ```
   $ curl -L http://localhost:2379/health
   ```

   ```
   {"health":"true"}
   ```

1. ホスト 1 で nixlbench ベンチマークを実行します。

   ```
   $ export NIXL_LOG_LEVEL=INFO
   $ export LD_LIBRARY_PATH=$HOME/nixl/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH
   
   $ nixlbench \
       --etcd-endpoints http://localhost:2379 \
       --backend LIBFABRIC \
       --initiator_seg_type VRAM
   ```

1. ホスト 2 で nixlbench ベンチマークを実行します。

   ```
   $ export NIXL_LOG_LEVEL=INFO
   $ export LD_LIBRARY_PATH=$HOME/nixl/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH
   
   $ nixlbench \
       --etcd-endpoints http://ETCD_SERVER_IP:2379 \
       --backend LIBFABRIC \
       --initiator_seg_type VRAM
   ```

------

## ステップ 14: vLLM で提供される分散推論をテストする (*オプション*)
<a name="nixl-start-base-serve"></a>

NIXL をインストールしたら、LLM 推論を通じて NIXL を使用すると、vLLM、SGLang、TensorRT-LLM などのフレームワークを提供できます。

**vLLM を使用して推論ワークロードを提供する方法**

1. vLLM をインストールします。

   ```
   $ pip install vllm
   ```

1. NIXL を使用して vLLM サーバーを起動します。次のサンプルコマンドにより、NIXL ハンドシェイク接続、KV コネクタ、KV ロール、トランスポートバックエンド用として、プリフィル (プロデューサー) インスタンスが 1 つとデコード (コンシューマー) インスタンスが 1 つ作成されます。詳細な例とスクリプトについては、「[NIXLConnector 使用ガイド](https://github.com/vllm-project/vllm/blob/2d977a7a9ead3179fde9ed55d69393ef7b6cec47/docs/features/nixl_connector_usage.md)」を参照してください。

   NIXL を EFA とともに使用するには、セットアップとユースケースに基づいて環境変数を設定します。
   + プロデューサー (プリフィラー) の設定

     ```
     $ vllm serve your-application \
         --port 8200 \
         --enforce-eager \
         --kv-transfer-config '{"kv_connector":"NixlConnector","kv_role":"kv_both","kv_buffer_device":"cuda","kv_connector_extra_config":{"backends":["LIBFABRIC"]}}'
     ```
   + コンシューマー (デコーダー) の設定

     ```
     $ vllm serve your-application \
         --port 8200 \
         --enforce-eager \
         --kv-transfer-config '{"kv_connector":"NixlConnector","kv_role":"kv_both","kv_buffer_device":"cuda","kv_connector_extra_config":{"backends":["LIBFABRIC"]}}'
     ```

   前述のサンプル設定では、以下を設定します。
   + `kv_role` を `kv_both` に設定すると、コネクタがプロデューサーとコンシューマーの両方として機能する対称機能が有効になります。これにより、実験的なセットアップや、ロールの区別が事前に決定されていないシナリオに柔軟性が生まれます。
   + `kv_buffer_device` を `cuda` に設定すると、GPU メモリの使用が可能になります。
   + NIXL バックエンドを `LIBFABRIC` に設定すると、NIXL トラフィックが EFA を通過できるようになります。

# 複数のネットワークカードを使用して Amazon EC2 インスタンスのネットワーク帯域幅を最大化する
<a name="efa-acc-inst-types"></a>

EFA をサポートする多くのインスタンスタイプには複数のネットワークカードもあります。詳細については「[ネットワークカード](using-eni.md#network-cards)」を参照してください。これらのインスタンスタイプのいずれかで EFA を使用する予定がある場合は次の基本設定をお勧めします。
+ プライマリネットワークインターフェイス (ネットワークカードインデックス `0`、デバイスインデックス `0`) には、EFA インターフェイスを作成します。EFA のみのネットワークインターフェイスをプライマリネットワークインターフェイスとして使用することはできません。
+ ネットワークカードインデックス 0 が EFA をサポートする場合は、ネットワークカードインデックス `0`、デバイスインデックス `1` に EFA 専用ネットワークインターフェイスを作成します。
+ 追加される各ネットワークインターフェイスについては、ユースケース (ENA 帯域幅要件や IP アドレス空間など) に基づいて、EFA 専用ネットワークインターフェイスに次の未使用のネットワークカードインデックス、デバイスインデックス `0`、および/または EFA ネットワークインターフェイスにデバイスインデックス `1` を使用します。ユースケース例については「[P5 および P5e インスタンスの EFA 設定](#efa-for-p5)」を参照してください。

**注記**  
P5 インスタンスでは最大ネットワーク帯域幅を有効にするために、特定の方法でネットワークインターフェイスを設定する必要があります。詳細については「[P5 および P5e インスタンスの EFA 設定](#efa-for-p5)」を参照してください。

次の例はこれらの推奨事項に基づいてインスタンスを起動する方法を示しています。

------
#### [ Instance launch ]

**インスタンス起動ウィザードを使用したインスタンスの起動時に EFA を指定するには**

1. **[ネットワーク設定]** セクションで、**[編集]** をクリックしてください。

1. **高度なネットワーク設定**の拡張。

1. プライマリネットワークインターフェイス (ネットワークカードインデックス `0`、デバイスインデックス `0`) には、EFA インターフェイスを作成します。EFA のみのネットワークインターフェイスをプライマリネットワークインターフェイスとして使用することはできません。

1. ネットワークカードインデックス 0 が EFA をサポートする場合は、ネットワークカードインデックス `0`、デバイスインデックス `1` に EFA 専用ネットワークインターフェイスを作成します。

1. 追加される各ネットワークインターフェイスについては、ユースケース (ENA 帯域幅要件や IP アドレス空間など) に基づいて、EFA 専用ネットワークインターフェイスに次の未使用のネットワークカードインデックス、デバイスインデックス `0`、および/または EFA ネットワークインターフェイスにデバイスインデックス `1` を使用します。ユースケース例については「[P5 および P5e インスタンスの EFA 設定](#efa-for-p5)」を参照してください。

**[[run-instances]](https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html) コマンドを使用してインスタンスの起動中に EFA を指定するには**  
`--network-interfaces` では必要な数のネットワークインターフェイスを指定します。プライマリネットワークインターフェイスに `NetworkCardIndex=0`、`DeviceIndex=0`、`InterfaceType=interface` を指定します。ネットワークカードインデックス 0 が EFA をサポートする場合は、`NetworkCardIndex=0`、`DeviceIndex=1`、および `InterfaceType=efa-only` を指定します。追加のネットワークインターフェイスについては、`NetworkCardIndex` に次の未使用インデックス、`InterfaceType=efa-only` に `DeviceIndex=0`、および/または `InterfaceType=interface` に `DeviceIndex=1` を指定してください。

次のコマンドスニペットの例は32 の EFA デバイスおよび 1 つの ENA デバイスによるリクエストを示しています。

```
$ aws ec2 run-instances \
 --instance-type p5.48xlarge \
 --count 1 \
 --key-name key_pair_name \
 --image-id ami-0abcdef1234567890 \
 --network-interfaces "NetworkCardIndex=0,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=interface" \
"NetworkCardIndex=0,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=1,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=2,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=3,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=4,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=5,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=6,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=7,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=8,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=9,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=10,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=11,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=12,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=13,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=14,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=15,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=16,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=17,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=18,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=19,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=20,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=21,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=22,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=23,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=24,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=25,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=26,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=27,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=28,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=29,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=30,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=31,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only"
...
```

------
#### [ Launch templates ]

**Amazon EC2 コンソールを使用して起動テンプレートに EFA を追加するには**

1. **[ネットワーク設定]** セクションで **[高度なネットワーク設定]** を展開します。

1. プライマリネットワークインターフェイス (ネットワークカードインデックス `0`、デバイスインデックス `0`) には、EFA インターフェイスを作成します。EFA のみのネットワークインターフェイスをプライマリネットワークインターフェイスとして使用することはできません。

1. ネットワークカードインデックス 0 が EFA をサポートする場合は、ネットワークカードインデックス `0`、デバイスインデックス `1` に EFA 専用ネットワークインターフェイスを作成します。

1. 追加される各ネットワークインターフェイスについては、ユースケース (ENA 帯域幅要件や IP アドレス空間など) に基づいて、EFA 専用ネットワークインターフェイスに次の未使用のネットワークカードインデックス、デバイスインデックス `0`、および/または EFA ネットワークインターフェイスにデバイスインデックス `1` を使用します。ユースケース例については「[P5 および P5e インスタンスの EFA 設定](#efa-for-p5)」を参照してください。

**[[create-launch-template]](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-launch-template.html) コマンドを使用して起動テンプレートに EFA を追加するには**  
`NetworkInterfaces` では必要な数のネットワークインターフェイスを指定します。プライマリネットワークインターフェイスに `NetworkCardIndex=0`、`DeviceIndex=0`、`InterfaceType=interface` を指定します。ネットワークカードインデックス 0 が EFA をサポートする場合は、`NetworkCardIndex=0`、`DeviceIndex=1`、および `InterfaceType=efa-only` を指定します。追加のネットワークインターフェイスについては、`NetworkCardIndex` に次の未使用インデックス、`InterfaceType=efa-only` に `DeviceIndex=0`、および/または `InterfaceType=interface` に `DeviceIndex=1` を指定してください。

次のスニペットは設定可能な 32 のネットワークインターフェイスのうち 3 つのネットワークインターフェイスを使用した例を示しています。

```
"NetworkInterfaces":[
{
  "NetworkCardIndex":0,
  "DeviceIndex":0,
  "InterfaceType": "interface",
  "AssociatePublicIpAddress":false,
  "Groups":[
    "security_group_id"
  ],
  "DeleteOnTermination":true
},
{
  "NetworkCardIndex": 0,
  "DeviceIndex": 1,
  "InterfaceType": "efa-only",
  "AssociatePublicIpAddress":false,
  "Groups":[
    "security_group_id"
  ],
  "DeleteOnTermination":true
},
{
  "NetworkCardIndex": 1,
  "DeviceIndex": 0,
  "InterfaceType": "efa-only",
  "AssociatePublicIpAddress":false,
  "Groups":[
    "security_group_id"
  ],
  "DeleteOnTermination":true
},
{
  "NetworkCardIndex": 2,
  "DeviceIndex": 0,
  "InterfaceType": "efa-only",
  "AssociatePublicIpAddress":false,
  "Groups":[
    "security_group_id"
  ],
  "DeleteOnTermination":true
},
{
  "NetworkCardIndex": 3,
  "DeviceIndex": 0,
  "InterfaceType": "efa-only",
  "AssociatePublicIpAddress":false,
  "Groups":[
    "security_group_id"
  ],
  "DeleteOnTermination":true
}
...
```

------

## P5 および P5e インスタンスの EFA 設定
<a name="efa-for-p5"></a>

`p5.48xlarge` および `p5e.48xlarge` インスタンスは 32 個のネットワークカードをサポートします。ネットワーク帯域幅の合計キャパシティは 3,200 Gbps で、そのうち最大 800 Gbps を IP ネットワークトラフィックに使用できます。EFA ネットワークトラフィックと IP ネットワークトラフィックは同じ基盤となるリソースを共有するため、一方が使用する帯域幅は他方が利用できる帯域幅を減らします。つまり、総帯域幅が 3,200 Gbps を超えず、IP 帯域幅が 800 Gbps を超えない限り、EFA トラフィックと IP トラフィックの間でネットワーク帯域幅を任意の組み合わせで分散できます。例えば、IP 帯域幅で 400 Gbps を使用する場合、同時に最大 2,800 Gbps の EFA 帯域幅を実現できます。

**ユースケース 1: IP アドレスを保存し、潜在的な Linux IP の問題を回避する**

この設定では最大 3200 Gbps の EFA ネットワーク帯域幅と最大 100 Gbps の IP ネットワーク帯域幅を 1 つのプライベート IP アドレスで提供します。また、この設定はパブリック IP アドレスの自動割り当ての禁止や、インスタンスに複数のネットワークインターフェイスがある場合に発生する可能性のある IP ルーティングの課題 (ホスト名から IP アドレスへのマッピングの問題や送信元 IP アドレスの不一致) など、Linux IP の潜在的な問題を回避するのに役立ちます。
+ プライマリネットワークインターフェイス (ネットワークカードインデックス 0、デバイスインデックス 0) には、ENA インターフェイスを使用します。
+ ネットワークカードインデックス 0、デバイスインデックス 1 には、EFA 専用ネットワークインターフェイスを作成します。
+ 残りのネットワークインターフェイス (ネットワークカードインデックス 1～31、デバイスインデックス 0) には、EFA 専用ネットワークインターフェイスを使用します。

**ユースケース 2: 最大 EFA と IP ネットワーク帯域幅**

この設定では最大 3200 Gbps の EFA ネットワーク帯域幅と最大 800 Gbps の IP ネットワーク帯域幅を 8 つのプライベート IP アドレスで提供します。この設定ではパブリック IP アドレスを自動割り当てすることはできません。ただし、インターネット接続の起動後に、Elastic IP アドレスをプライマリネットワークインターフェイス (ネットワークカードインデックス 0、デバイスインデックス 0) にアタッチすることはできます。
+ プライマリネットワークインターフェイス (ネットワークカードインデックス 0、デバイスインデックス 0) には ENA ネットワークインターフェイスを使用します。
+ 残りのインターフェイスについては次の手順を実行します。
  + ネットワークカードインデックス 0、デバイスインデックス 1 に EFA 専用ネットワークインターフェイスを指定し、デバイスインデックス 1、2、3 にはデバイスインデックス 0 を使用します。
  + 次のネットワークカードインデックスサブセット**それぞれに** 1 つの ENA ネットワークインターフェイスと 4 つの EFA 専用ネットワークインターフェイスを指定し、ENA ネットワークインターフェイスにはデバイスインデックス 1、EFA 専用ネットワークインターフェイスにはデバイスインデックス 0 を使用します。
    + [4,5,6,7]
    + [8,9,10,11]
    + [12,13,14,15]
    + [16,17,18,19]
    + [20,21,22,23]
    + [24,25,26,27]
    + [28,29,30,31]

次の例ではこの設定を示します。

```
$ aws --region $REGION ec2 run-instances \
 --instance-type p5.48xlarge \
 --count 1 \
 --key-name key_pair_name \
 --image-id ami_id \
 --network-interfaces "NetworkCardIndex=0,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=interface" \
"NetworkCardIndex=0,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=1,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=2,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=3,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=4,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=interface" \
"NetworkCardIndex=4,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=5,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=6,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=7,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=8,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=interface" \
"NetworkCardIndex=8,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=9,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=10,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=11,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=12,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=interface" \
"NetworkCardIndex=12,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=13,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=14,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=15,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=16,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=interface" \
"NetworkCardIndex=16,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=17,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=18,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=19,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=20,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=interface" \
"NetworkCardIndex=20,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=21,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=22,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=23,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=24,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=interface" \
"NetworkCardIndex=24,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=25,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=26,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=27,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=28,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=interface" \
"NetworkCardIndex=28,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=29,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=30,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=31,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only"
...
```

## P6-B200 インスタンスの EFA 設定
<a name="efa-for-p6-b200"></a>

P6-B200 インスタンスのネットワーク帯域幅の総量は 3,200 Gbps であり、そのうち最大 1600 Gbps を ENA に使用できます。8 つの GPU と 8 つのネットワークカードがあり、各ネットワークカードは最大 400 Gbps の EFA 帯域幅と 200 Gbp の ENA 帯域幅をサポートします。EFA ネットワークトラフィックと ENA トラフィックは同じ基盤となるリソースを共有するため、一方で帯域幅を使用していれば、もう一方で使用できる帯域幅が減少します。

**ユースケース 1: IP アドレスを保存する**

この設定では、インスタンスごとに 1 個以上のプライベート IP アドレスを使用し、最大 3200 Gbp の EFA 帯域幅と 200 Gbp の ENA 帯域幅をサポートします。
+ プライマリネットワークインターフェイス (ネットワークカードインデックス 0、デバイスインデックス 0) には、ENA インターフェイスを使用します。
+ ネットワークカードインデックス 0、デバイスインデックス 1 には、EFA 専用ネットワークインターフェイスを作成します。
+ 残りの 7 個のネットワークカード (ネットワークカードインデックス 1～7、デバイスインデックス 0) には、EFA 専用のネットワークインターフェイスを使用します。

**ユースケース 2: 最大 EFA と EFA 帯域幅**

この設定では、インスタンスごとに 8 個以上のプライベート IP アドレスを使用し、最大 3200 Gbp の EFA 帯域幅と 1600 Gbp の ENA 帯域幅をサポートします。
+ プライマリネットワークインターフェイス (ネットワークカードインデックス 0、デバイスインデックス 0) には、ENA インターフェイスを使用します。
+ ネットワークカードインデックス 0、デバイスインデックス 1 には、EFA 専用ネットワークインターフェイスを作成します。
+ 残りの 7 個のネットワークカード (ネットワークカードインデックス 1～7) については、デバイスインデックス 0 で EFA 専用インターフェイスを作成し、デバイスインデックス 1 で ENA ネットワークインターフェイスを作成します。

## P6e-GB200 インスタンスの EFA 設定
<a name="efa-for-p6e"></a>

P6e-GB200 インスタンスは、最大 17 個のネットワークカードで設定できます。次の図は、P6e-GB200 インスタンスの物理ネットワークインターフェイスカード (NIC) のレイアウトと、ネットワークカードインデックス (NCI) のマッピングを示しています。

![\[P6e-GB200 インスタンスの物理ネットワークインターフェイスカード (NIC) とネットワークカードインデックス (NCI) のマッピング。\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/p6e.png)


プライマリ NCI (インデックス 0) は、最大 100 Gbps の ENA 帯域幅をサポートします。次のインデックスを持つ NCI は、EFA 専用ネットワークインターフェイスと 400 Gbps の EFA 帯域幅をサポートします: [1、3、5、7、9、11、13、15]。次のインデックスを持つ NCI は、最大 200 Gbps の ENA または EFA 帯域幅をサポートします: [2、4、6、8、10、12、14、16]。

次のグループの NCI は、ホスト上の基盤となる物理 NIC を共有します:
+ [1 および 2]
+ [3 および 4]
+ [5 および 6]
+ [7 および 8]
+ [9 および 10]
+ [11 および 12]
+ [13 および 14]
+ [15 および 16]

各物理 NIC は、最大 400 Gbps の帯域幅をサポートします。これらのグループの NCI は基盤となる同じ物理 NIC を共有するため、1 つが帯域幅を使用すると、他が利用できる帯域幅が減少します。例えば、NCI 2 が 200 Gbps の ENA 帯域幅を使用する場合、NCI 1 は同時に最大 200 Gbps の EFA 帯域幅を使用できます。

ホスト上の基盤となる各 GPU は、次の NCI ペアを介して直接トラフィックを送信できます。
+ [1 および 3]
+ [5 および 7]
+ [9 および 11]
+ [13 および 15]

各 GPU は、最大 400 Gbps の EFA 帯域幅をサポートします。これらのグループのネットワークカードは同じ GPU を共有するため、1 つが帯域幅を使用すると、他が利用できる帯域幅が減少します。例えば、NCI 1 が 200 Gbps の EFA 帯域幅を使用する場合、NCI 3 は同時に最大 200 Gbps の EFA 帯域幅を使用できます。したがって、EFA の最大パフォーマンスを実現するには、**次のいずれか**を実行して合計 1,600 Gbps の EFA 帯域幅を達成することをお勧めします。
+ EFA 専用ネットワークインターフェイスを各グループの 1 つの NCI のみに追加して、ネットワークインターフェイスあたり 400 Gbps (*4 つの EFA ネットワークインターフェイス x 400 Gbps*) を実現します。
+ EFA 専用ネットワークインターフェイスを各グループの各 NCI に追加して、ネットワークインターフェイスあたり 200 Gbps (*8 つの EFA ネットワークインターフェイス x 200 Gbps*) を実現します。

例えば、次の設定では、各 NCI グループで単一の EFA 専用ネットワークインターフェイスを使用して最大 1,600 Gbps の EFA 帯域幅を提供し、プライマリ NCI (インデックス 0) のみを使用して最大 100 Gbps の ENA ネットワーク帯域幅を提供します。
+ プライマリ NCI (ネットワークカードインデックス 0、デバイスインデックス 0) には ENA ネットワークインターフェイスを使用します。
+ EFA 専用ネットワークインターフェイスを以下に追加します。
  + NCI 1、デバイスインデックス 0
  + NCI 5、デバイスインデックス 0
  + NCI 9、デバイスインデックス 0
  + NCI 13、デバイスインデックス 0

## P6-B300 インスタンスの EFA 設定
<a name="efa-for-p6-b300"></a>

P6-B300 インスタンスの合計ネットワーク帯域幅キャパシティは、EFA トラフィックでは最大 6,400 Gbps、ENA トラフィックでは最大 3,870 Gbps です。これらのインスタンスには 8 の GPUと 17 のネットワークカードがあり、プライマリネットワークカードは最大 350 Gbps の帯域幅を持つ ENA ネットワークインターフェイスのみをサポートします。セカンダリネットワークカードは、最大 400 Gbps の EFA と最大 220 Gbps の ENA 帯域幅をサポートします。EFA ネットワークトラフィックと ENA トラフィックは同じ基盤となるリソースを共有するため、一方で帯域幅を使用していれば、もう一方で使用できる帯域幅が減少します。

![\[P6-B300 インスタンスの物理ネットワークインターフェイスカード (NIC) とネットワークカードインデックス (NCI) のマッピング。\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/p6-b300.png)


**ユースケース 1: IP アドレスを保存する**

この設定では、インスタンスごとに 1 つ以上のプライベート IP アドレスを使用し、最大 6,400 Gbp の EFA 帯域幅と最大 350 Gbp の ENA 帯域幅をサポートします。
+ プライマリネットワークインターフェイス (ネットワークカードインデックス 0、デバイスインデックス 0) には ENA ネットワークインターフェイスを使用します。
+ 残りのネットワークカード (ネットワークカードインデックス 1～16、デバイスインデックス 0) には、EFA 専用ネットワークインターフェイスを使用します。

```
--network-interfaces \
"NetworkCardIndex=0,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=interface" \
"NetworkCardIndex=1,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=2,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=3,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=4,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=5,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=6,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=7,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=8,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=9,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=10,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=11,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=12,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=13,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=14,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=15,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=16,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only"
```

**ユースケース 2: 最大 EFA と EFA 帯域幅**

この設定では、インスタンスごとに 17 以上のプライベート IP アドレスを使用し、最大 6,400 Gbp の EFA 帯域幅と最大 3,870 Gbp の ENA 帯域幅をサポートします。
+ プライマリネットワークインターフェイス (ネットワークカードインデックス 0、デバイスインデックス 0) では、ENA ネットワークインターフェイスを使用します。
+ 残りのネットワークカードについては、EFA 専用インターフェイス (ネットワークカードインデックス 1～16、デバイスインデックス 0) と ENA インターフェイス (ネットワークカードインデックス 1～16、デバイスインデックス 1) を作成します。

```
--network-interfaces \
"NetworkCardIndex=0,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=interface" \
"NetworkCardIndex=1,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=2,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=3,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=4,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=5,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=6,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=7,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=8,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=9,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=10,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=11,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=12,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=13,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=14,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=15,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=16,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa-only" \
"NetworkCardIndex=1,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=interface" \
"NetworkCardIndex=2,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=interface" \
"NetworkCardIndex=3,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=interface" \
"NetworkCardIndex=4,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=interface" \
"NetworkCardIndex=5,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=interface" \
"NetworkCardIndex=6,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=interface" \
"NetworkCardIndex=7,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=interface" \
"NetworkCardIndex=8,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=interface" \
"NetworkCardIndex=9,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=interface" \
"NetworkCardIndex=10,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=interface" \
"NetworkCardIndex=11,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=interface" \
"NetworkCardIndex=12,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=interface" \
"NetworkCardIndex=13,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=interface" \
"NetworkCardIndex=14,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=interface" \
"NetworkCardIndex=15,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=interface" \
"NetworkCardIndex=16,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=interface"
```

# Elastic Fabric Adapter を作成して Amazon EC2 インスタンスにアタッチする
<a name="create-efa"></a>

Amazon EC2 の他の Elastic Network Interface と同様に、EFA を作成して Amazon EC2 インスタンスにアタッチすることができます。ただし、Elastic Network Interface とは異なり、`running` 状態のインスタンスに対して EFA をアタッチまたはデタッチすることはできません。

**考慮事項**
+  EFA に関連付けられているセキュリティグループは変更することができます。OS バイパス機能を有効にするにはEFA が、セキュリティグループ自体との間のインバウンドおよびアウトバウンドのトラフィックをすべて許可するセキュリティグループのメンバーである必要があります。詳細については「[ステップ 1: EFA 対応のセキュリティグループを準備する](efa-start.md#efa-start-security)」を参照してください。

  Elastic Network Interface に関連付けられているセキュリティグループを変更するのと同じ方法で、EFA に関連付けられているセキュリティグループを変更します。詳細については「[ネットワークインターフェイス属性の変更](modify-network-interface-attributes.md)」を参照してください。
+ IP アドレスを Elastic Network Interface に割り当てるのと同じ方法で、Elastic IP (IPv4) および IPv6 アドレスを EFA (EFA と ENA の組み合わせ) ネットワークインターフェイスに割り当てます。詳細については「[IP アドレスの管理](managing-network-interface-ip-addresses.md)」を参照してください。

  EFA のみのネットワークインターフェイスに IP アドレスを割り当てることはできません。

**Topics**
+ [EFA の作成](#efa-create)
+ [停止したインスタンスへの EFA のアタッチ](#efa-attach)
+ [インスタンス起動時の EFA のアタッチ](#efa-launch)
+ [起動テンプレートへの EFA 追加](#efa-launch-template)

## EFA の作成
<a name="efa-create"></a>

EFA はVPC のサブネットに作成することができます。作成後に EFA を別のサブネットに移動することはできません。また、アタッチできるのは同じアベイラビリティーゾーンの停止したインスタンスに限ります。

------
#### [ Console ]

**EFA (EFA と ENA の組み合わせまたは ENA のみ) ネットワークインターフェイスを作成する方法**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで [**ネットワークインターフェース**] 選択し、それから[**ネットワークインターフェイス**]を選択します。

1. [**説明**] に、EFA の分かりやすい名前を入力してください。

1. [**サブネット**] で、EFA を作成するサブネットを選択してください。

1. **[インターフェイスタイプ]** で、次のオプションのいずれかを選択します。
   + **[EFA と ENA の組み合わせ]** – ENA デバイスおよび EFA デバイスの両方をサポートするネットワークインターフェイスを作成します。
   + **[EFA のみ]** – EFA デバイスのみを使用してネットワークインターフェイスを作成します。

1. (EFA と ENA の組み合わせのみ) ネットワークインターフェイスの IP アドレスおよびプレフィックスの割り当てを設定します。割り当てることができる IP アドレスおよびプレフィックスのタイプは、選択したサブネットによって異なります。IPv4 のみのサブネットの場合、IPv4 IP アドレスおよびプレフィックスのみを割り当てることができます。IPv6 のみのサブネットの場合、IPv6 IP アドレスおよびプレフィックスのみを割り当てることができます。デュアルスタックサブネットの場合、IPv4 および IPv6 の両方の IP アドレス、ならびにプレフィックスを割り当てることができます。
**注記**  
EFA のみのネットワークインターフェイスに IP アドレスを割り当てることはできません。

   1. **[プライベート IPv4 アドレス]** や **[IPv6 アドレス]** の場合、**[自動割り当て]** を選択し、Amazon EC2 が選択したサブネットから IP アドレスを自動的に割り当てるようにするか、**[カスタム]** を選択して割り当てる IP アドレスを手動で指定します。

   1. IPv6 アドレスを割り当てる場合、必要に応じて **[プライマリ IPv6 IP の割り当て]** を有効にできます。これにより、プライマリ IPv6 グローバルユニキャストアドレス (GUA) がネットワークインターフェイスに割り当てられます。プライマリ IPv6 アドレスを割り当てると、インスタンスまたは ENI へのトラフィックの中断を回避できます。詳細については、「[IPv6 アドレス](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-ip-addressing.html#vpc-ipv6-addresses)」を参照してください。

   1. **[IPv4 プレフィックス委任]** や **[IPv6 プレフィックス委任]** の場合、**[自動割り当て]** を選択し、Amazon EC2 がサブネットの CIDR ブロックからプレフィックスを自動的に割り当てるようにするか、**[カスタム]** を選択してサブネットの CIDR ブロックからプレフィックスを手動で指定します。プレフィックスを指定した場合、AWS は別のリソースにまだ割り当てられていないことを確認します。詳細については「[Amazon EC2 ネットワークインターフェイスのプレフィックス委任](ec2-prefix-eni.md)」を参照してください。

   1. (オプション) **アイドル接続の追跡タイムアウト**設定を構成します。詳細については「[アイドル接続追跡タイムアウト](security-group-connection-tracking.md#connection-tracking-timeouts)」を参照してください。
      + **[TCP 確立タイムアウト]** – 確立された状態のアイドル TCP 接続のタイムアウト時間 (秒単位)。最小: 60 秒。最大: 432000 秒 (5 日間)。デフォルト: 432000 秒。推奨: 432000 秒未満。
      + **[UDP タイムアウト]** – 1 つの方向または 1 つのリクエストレスポンストランザクションのみでトラフィックが発生した、アイドル UDP フローのタイムアウト時間 (秒単位)。最小: 30 秒。最大: 60 秒。デフォルト: 30 秒。
      + **[UDP ストリームタイムアウト]** – 複数のリクエストレスポンストランザクションが発生したストリームとして分類される、アイドル UDP フローのタイムアウト時間 (秒単位)。最小: 60 秒。最大: 180 秒 (3 分)。デフォルト: 180 秒。

1. [**Security groups**] で、1 つまたは複数のセキュリティグループを選択してください。

1. [**ネットワークインターフェイスの作成**] をクリックしてください。

------
#### [ AWS CLI ]

**EFA を作成するには**  
[create-network-interface](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-network-interface.html) コマンドを使用します。`--interface-type` では EFA ネットワークインターフェイス用の `efa` または EFA のみのネットワークインターフェイス用の `efa-only` を指定します。

```
aws ec2 create-network-interface \
    --subnet-id subnet-0abcdef1234567890 \
    --interface-type efa \
    --description "my efa"
```

------
#### [ PowerShell ]

**EFA を作成するには**  
[New-EC2NetworkInterface](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2NetworkInterface.html) コマンドレットを使用します。`-InterfaceType` では EFA ネットワークインターフェイス用の `efa` または EFA のみのネットワークインターフェイス用の `efa-only` を指定します。

```
New-EC2NetworkInterface `
    -SubnetId subnet-0abcdef1234567890 `
    -InterfaceType efa `
    -Description "my efa"
```

------

## 停止したインスタンスへの EFA のアタッチ
<a name="efa-attach"></a>

EFA はサポート対象の `stopped` 状態のインスタンスにアタッチすることができます。`running` 状態のインスタンスに EFA をアタッチすることはできません。サポートされるインスタンスタイプの詳細については[サポートされるインスタンスタイプ](efa.md#efa-instance-types)を参照してください。

ネットワークインターフェイスをインスタンスにアタッチするのと同じ方法で、EFA をインスタンスにアタッチできます。詳細については[ネットワークインターフェイスのアタッチ](network-interface-attachments.md#attach_eni)を参照してください。

## インスタンス起動時の EFA のアタッチ
<a name="efa-launch"></a>

------
#### [ AWS CLI ]

**インスタンス起動時に既存の EFA をアタッチするには**  
`--network-interfaces` オプションで [run-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html) コマンドを使用します。プライマリネットワークインターフェイスにはEFA ネットワークインターフェイス、`NetworkCardIndex=0`、`DeviceIndex=0` を指定します。複数の EFA ネットワークインターフェイスをアタッチするには、「[ネットワーク帯域幅の最大化](efa-acc-inst-types.md)」を参照してください。

```
--network-interfaces "NetworkCardIndex=0, \
    DeviceIndex=0, \
    NetworkInterfaceId=eni-1234567890abcdef0, \
    Groups=sg-1234567890abcdef0, \
    SubnetId=subnet-0abcdef1234567890"
```

**インスタンス起動時に新しい EFA をアタッチするには**  
`--network-interfaces` オプションで [run-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html) コマンドを使用します。プライマリネットワークインターフェイスには`NetworkCardIndex=0`、`DeviceIndex=0`、`InterfaceType=efa` を使用します。複数の EFA ネットワークインターフェイスをアタッチする場合は「[ネットワーク帯域幅の最大化](efa-acc-inst-types.md)」を参照してください。

```
--network-interfaces "NetworkCardIndex=0, \
    DeviceIndex=0, \
    InterfaceType=efa, \
    Groups=sg-1234567890abcdef0, \
    SubnetId=subnet-0abcdef1234567890"
```

------
#### [ PowerShell ]

**インスタンス起動時に既存の EFA をアタッチするには**  
`-NetworkInterfaces` パラメータで [New-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2Instance.html) コマンドレットを使用します。

```
-NetworkInterface $networkInterface
```

ネットワークインターフェイスを次のように定義します。

```
$networkInterface = New-Object Amazon.EC2.Model.InstanceNetworkInterfaceSpecification
$networkInterface.DeviceIndex = 0
$networkInterface.NetworkInterfaceId = "eni-1234567890abcdef0"
$networkInterface.Groups = @("sg-1234567890abcdef0")
$networkInterface.SubnetId = "subnet-0abcdef1234567890"
```

**インスタンス起動時に新しい EFA をアタッチするには**  
`-NetworkInterfaces` パラメータで [New-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2Instance.html) コマンドレットを使用します。

```
-NetworkInterface $networkInterface
```

ネットワークインターフェイスを次のように定義します。

```
$networkInterface = New-Object Amazon.EC2.Model.InstanceNetworkInterfaceSpecification
$networkInterface.DeviceIndex = 0
$networkInterface.InterfaceType = "efa"
$networkInterface.Groups = @("sg-1234567890abcdef0")
$networkInterface.SubnetId = "subnet-0abcdef1234567890"
```

------

## 起動テンプレートへの EFA 追加
<a name="efa-launch-template"></a>

EFA 対応のインスタンスの起動に必要な設定情報を含む起動テンプレートを作成できます。起動テンプレートではEFA と EFA のみのネットワークインターフェイスの両方を指定できます。EFA 対応の起動テンプレートを作成するには新しい起動テンプレートを作成し、サポート対象のインスタンスタイプ、EFA 対応の AMI、および EFA 対応のセキュリティグループを指定します。`NetworkInterfaces` にはアタッチする EFA ネットワークインターフェイスを指定します。プライマリネットワークインターフェイスには`NetworkCardIndex=0`、`DeviceIndex=0`、`InterfaceType=efa` を使用します。複数の EFA ネットワークインターフェイスをアタッチする場合は「[複数のネットワークカードを使用して Amazon EC2 インスタンスのネットワーク帯域幅を最大化する](efa-acc-inst-types.md)」を参照してください。

起動テンプレートを利用すると、[AWS](https://docs.aws.amazon.com/batch/latest/userguide/what-is-batch.html) や [AWS Batch](https://docs.aws.amazon.com/parallelcluster/latest/ug/what-is-aws-parallelcluster.html) など他の AWS ParallelCluster サービスで EFA 対応のインスタンスを起動できます。

起動テンプレートの作成の詳細については[Amazon EC2 起動テンプレートを作成する](create-launch-template.md)を参照してください。

# Amazon EC2 インスタンスから EFA をデタッチおよび削除する
<a name="detach-efa"></a>

Amazon EC2 インスタンスから EFA をデタッチしたり、Amazon EC2 の他の Elastic Network Interface と同じ方法で削除したりできます。

## EFA のデタッチ
<a name="efa-detach"></a>

EFA をインスタンスからデタッチするにはまずインスタンスを停止する必要があります。実行中状態のインスタンスから EFA をデタッチすることはできません。

インスタンスから Elastic Network Interface をデタッチするのと同じ方法で、EFA をインスタンスからデタッチします。詳細については「[ネットワークインターフェイスをデタッチする](network-interface-attachments.md#detach_eni)」を参照してください。

## EFA の削除
<a name="efa-delete"></a>

EFA を削除するにはまずインスタンスから削除する必要があります。インスタンスにアタッチされている場合はEFA を削除する必要があります。

Elastic Network Interface を削除するのと同じ方法で EFAs を削除します。詳細については「[ネットワークインターフェイスの削除](delete_eni.md)」を参照してください。

# Amazon EC2 で Elastic Fabric Adapter をモニタリングする
<a name="efa-working-monitor"></a>

Elastic Fabric Adapter のパフォーマンスをモニタリングするには次の機能を使用できます。

**Topics**
+ [Amazon EC2 インスタンスの EFA ドライバーメトリクス](#efa-driver-metrics)
+ [Amazon VPC フローログ](#efa-flowlog)
+ [Amazon CloudWatch](#efa-cloudwatch)

## Amazon EC2 インスタンスの EFA ドライバーメトリクス
<a name="efa-driver-metrics"></a>

Elastic Fabric Adapter (EFA) ドライバーは、EFA インターフェイスがアタッチされているインスタンスからリアルタイムで複数のメトリクスを発行します。このようなメトリクスを使用して、アプリケーションパフォーマンスとネットワーキングの問題のトラブルシューティング、ワークロードに適したクラスターサイズの選択、スケーリングアクティビティの事前計画、およびアプリケーションのベンチマークを実施して、メトリクスがインスタンスで利用できる EFA パフォーマンスを最大化するかどうかを判断できます。

**Topics**
+ [使用可能な EFA ドライバーメトリクス](#available-efa-metrics)
+ [インスタンスの EFA ドライバーメトリクスを取得する](#view-efa-driver-metrics)

### 使用可能な EFA ドライバーメトリクス
<a name="available-efa-metrics"></a>

EFA ドライバーは次のメトリクスをリアルタイムでインスタンスに発行します。これらは、インスタンスの起動以降または最後のドライバーのリセット以降に、アタッチされた EFA デバイスから送信、受信、再送信、またはドロップされた、エラー、接続イベント、パケットまたはバイトの累積数を提供します。


| メトリクス | 説明 | サポートされるインスタンスタイプ | 
| --- | --- | --- | 
| tx\$1bytes |  送信されたバイト数。 単位: バイト  | EFA をサポートしているすべてのインスタンスタイプ | 
| rx\$1bytes |  受信バイトの数。 単位: バイト  | EFA をサポートしているすべてのインスタンスタイプ | 
| tx\$1pkts |  送信されたパケットの数。 単位: 個  | EFA をサポートしているすべてのインスタンスタイプ | 
| rx\$1pkts |  受信されたパケットの数。 単位: 個  | EFA をサポートしているすべてのインスタンスタイプ | 
| rx\$1drops |  受信後にドロップされたパケットの数。 単位: 個  | EFA をサポートしているすべてのインスタンスタイプ | 
| send\$1bytes |  送信オペレーションを使用して送信されたバイト数。 単位: バイト  | EFA をサポートしているすべてのインスタンスタイプ | 
| recv\$1bytes |  送信オペレーションによって受信されたバイト数。 単位: バイト  | EFA をサポートしているすべてのインスタンスタイプ | 
| send\$1wrs |  送信オペレーションを使用して送信されたパケットの数。 単位: 個  | EFA をサポートしているすべてのインスタンスタイプ | 
| recv\$1wrs |  送信オペレーションによって受信されたパケットの数。 単位: 個  | EFA をサポートしているすべてのインスタンスタイプ | 
| rdma\$1write\$1wrs |  完了した rdma 書き込みオペレーションの数。 単位: 個  | EFA をサポートしているすべてのインスタンスタイプ | 
| rdma\$1read\$1wrs |  完了した rdma 読み取りオペレーションの数。 単位: 個  | EFA をサポートしているすべてのインスタンスタイプ | 
| rdma\$1write\$1bytes |  rdma 書き込みオペレーションを使用して他のインスタンスによって書き込まれたバイト数。 単位: バイト  | EFA をサポートしているすべてのインスタンスタイプ | 
| rdma\$1read\$1bytes |  rdma 読み取りオペレーションを使用して受信したバイト数。 単位: バイト  | EFA をサポートしているすべてのインスタンスタイプ | 
| rdma\$1write\$1wr\$1err |  ローカルエラーまたはリモートエラーが発生した rdma 書き込みオペレーションの数。 単位: 個  | EFA をサポートしているすべてのインスタンスタイプ | 
| rdma\$1read\$1wr\$1err |  ローカルエラーまたはリモートエラーが発生した rdma 読み取りオペレーションの数。 単位: 個  | EFA をサポートしているすべてのインスタンスタイプ | 
| rdma\$1read\$1resp\$1bytes |  rdma 読み取りオペレーションに応答して送信されたバイト数。 単位: バイト  | EFA をサポートしているすべてのインスタンスタイプ | 
| rdma\$1write\$1recv\$1bytes |  rdma 書き込みオペレーションによって受信されたバイト数。 単位: バイト  | EFA をサポートしているすべてのインスタンスタイプ | 
| retrans\$1bytes |  再送信された EFA SRD バイトの数。 単位: 個  | EFA をサポートする Nitro v4 以降のインスタンスタイプ | 
| retrans\$1pkts |  再送信された EFA SRD パケットの数。 単位: バイト  | EFA をサポートする Nitro v4 以降のインスタンスタイプ | 
| retrans\$1timeout\$1events |  EFA SRD トラフィックがタイムアウトしてネットワークパスが変更された回数。 単位: 個  | EFA をサポートする Nitro v4 以降のインスタンスタイプ | 
| impaired\$1remote\$1conn\$1events |  EFA SRD 接続が障害状態になり、スループットレートの制限が低減した回数。 単位: 個  | EFA をサポートする Nitro v4 以降のインスタンスタイプ | 
| unresponsive\$1remote\$1events |  EFA SRD リモート接続が応答しなかった回数。 単位: 個  | EFA をサポートする Nitro v4 以降のインスタンスタイプ | 

EFA をサポートするインスタンスタイプの詳細については、「[サポートされるインスタンスタイプ](efa.md#efa-instance-types)」を参照してください。

### インスタンスの EFA ドライバーメトリクスを取得する
<a name="view-efa-driver-metrics"></a>

[rdma-tool](https://man7.org/linux/man-pages/man8/rdma.8.html) コマンドラインツールを使用して、次のようにインスタンスにアタッチされたすべての EFA インターフェイスのメトリクスを取得できます。

```
$ rdma -p statistic show
link rdmap0s31/1 
    tx_bytes 0 
    tx_pkts 0 
    rx_bytes 0 
    rx_pkts 0 
    rx_drops 0 
    send_bytes 0 
    send_wrs 0 
    recv_bytes 0 
    recv_wrs 0 
    rdma_read_wrs 0 
    rdma_read_bytes 0 
    rdma_read_wr_err 0 
    rdma_read_resp_bytes 0 
    rdma_write_wrs 0 
    rdma_write_bytes 0 
    rdma_write_wr_err 0
    retrans_bytes 0
    retrans_pkts 0
    retrans_timeout_events 0
    unresponsive_remote_events 0
    impaired_remote_conn_events 0
```

または次のコマンドを使用して、インスタンスにアタッチされた各 EFA インターフェイスのメトリクスを sys ファイルから取得することもできます。

```
$ more /sys/class/infiniband/device_number/ports/port_number/hw_counters/* | cat
```

例

```
$ more /sys/class/infiniband/rdmap0s31/ports/1/hw_counters/* | cat
::::::::::::::
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/lifespan
::::::::::::::
12
::::::::::::::
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/rdma_read_bytes
::::::::::::::
0
::::::::::::::
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/rdma_read_resp_bytes
::::::::::::::
0
::::::::::::::
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/rdma_read_wr_err
::::::::::::::
0
::::::::::::::
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/rdma_read_wrs
::::::::::::::
0
::::::::::::::
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/rdma_write_bytes
::::::::::::::
0
::::::::::::::
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/rdma_write_recv_bytes
::::::::::::::
0
::::::::::::::
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/rdma_write_wr_err
::::::::::::::
0
::::::::::::::
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/rdma_write_wrs
::::::::::::::
0
::::::::::::::
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/recv_bytes
::::::::::::::
0
::::::::::::::
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/recv_wrs
::::::::::::::
0
::::::::::::::
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/rx_bytes
::::::::::::::
0
::::::::::::::
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/rx_drops
::::::::::::::
0
::::::::::::::
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/rx_pkts
::::::::::::::
0
::::::::::::::
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/send_bytes
::::::::::::::
0
::::::::::::::
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/send_wrs
::::::::::::::
0
::::::::::::::
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/tx_bytes
::::::::::::::
0
::::::::::::::
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/tx_pkts
::::::::::::::
0
::::::::::::::
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/retrans_bytes
::::::::::::::
0
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/retrans_pkts
::::::::::::::
0
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/retrans_timeout_events
::::::::::::::
0
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/unresponsive_remote_events
::::::::::::::
0
/sys/class/infiniband/rdmap0s31/ports/1/hw_counters/impaired_remote_conn_events
::::::::::::::
0
```

## Amazon VPC フローログ
<a name="efa-flowlog"></a>

Amazon VPC フローログを作成することで、EFA との間で送受信されるトラフィックに関する情報を取得できます。フローログデータは Amazon CloudWatch Logs と Amazon S3 に発行できます。フローログを作成したら、選択した送信先でそのデータを取得して表示できます。詳細については*Amazon VPC ユーザーガイド* の[VPC フローログ](https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs.html)を参照してください。

EFA のフローログを作成する方法はElastic Network Interface のフローログを作成する場合と同じです。詳細については、「*Amazon VPC ユーザーガイド*」の「[フローログの作成](https://docs.aws.amazon.com/vpc/latest/userguide/working-with-flow-logs.html#create-flow-log)」を参照してください。

フローログエントリで、EFA エントリは`srcAddress` および `destAddress` で識別されます。次の例に示されているように、これらはいずれも MAC アドレス形式になります。

```
version accountId  eniId        srcAddress        destAddress       sourcePort destPort protocol packets bytes start      end        action log-status
2       3794735123 eni-10000001 01:23:45:67:89:ab 05:23:45:67:89:ab -          -        -        9       5689  1521232534 1524512343 ACCEPT OK
```

## Amazon CloudWatch
<a name="efa-cloudwatch"></a>

Amazon EKS クラスターで EFA を使用している場合は CloudWatch Container Insights を使用して EFA をモニタリングできます。Amazon CloudWatch Container Insights は、`retrans_bytes`、`retrans_pkts`、`retrans_timeout_events`、`unresponsive_remote_events`、`impaired_remote_conn_events` を除くすべての [EFA ドライバーメトリクス](#efa-driver-metrics)をサポートしています。

詳細については「*Amazon CloudWatch ユーザーガイド*」の「[Amazon ECS と Kubernetes のコンテナインサイトメトリクス](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Container-Insights-metrics-enhanced-EKS.html#Container-Insights-metrics-EFA)」を参照してください。

# チェックサムを使用した EFA インストーラの検証
<a name="efa-verify"></a>

オプションで、MD5 または SHA256 チェックサムを使用して EFA tarball (`.tar.gz` ファイル) を検証できます。ソフトウェアパブリッシャーの ID を確認し、発行後にアプリケーションの変更または破損がないことを確認するために、この操作を行うことをお勧めします。

**tarball を検証するには**  
MD5 チェックサムには **md5sum** ユーティリティを使用します。SHA256 チェックサムには **sha256sum** ユーティリティを使用し、tarball のファイル名を指定します。このコマンドはtarball ファイルを保存したディレクトリから実行する必要があります。
+ MD5

  ```
  $  md5sum tarball_filename.tar.gz
  ```
+ SHA256

  ```
  $  sha256sum tarball_filename.tar.gz
  ```

このコマンドは次の形式でチェックサム値を返します。

```
checksum_value tarball_filename.tar.gz
```

コマンドによって返されるチェックサム値を、次の表に示すチェックサム値と比較します。チェックサムが一致する場合はインストールスクリプトを実行しても安全です。チェックサムが一致しない場合はインストールスクリプトを実行せず、サポート にお問い合わせください。

例えば、次のコマンドは SHA256 チェックサムを使用して EFA 1.9.4 tarball を検証します。

```
$  sha256sum aws-efa-installer-1.9.4.tar.gz
```

出力例:

```
1009b5182693490d908ef0ed2c1dd4f813cc310a5d2062ce9619c4c12b5a7f14 aws-efa-installer-1.9.4.tar.gz
```

次の表に、最新バージョンの EFA のチェックサムを示します。


| バージョン | チェックサム | 
| --- | --- | 
| EFA 1.47.0 |  **MD5: **`c81d4caf24dabc04a6e4818590620f5f` **SHA256: **`2df4201e046833c7dc8160907bee7f52b76ff80ed147376a2d0ed8a0dd66b2db`  | 
| EFA 1.46.0 |  **MD5: **a88bbd9b71624d7ca401b54bc2fc0c19`` **SHA256: **`8302bd7849afb95c903a875d7dcb6f85b3d7629e9a8b67d020031cfc6f4d0ee1`  | 
| EFA 1.45.1 |  **MD5: **91c3c87e16bbcaca1513252c38b771bb`` **SHA256: **`9aeb20c645135b6039cc08986d8f14e63280f7839e882a74df5e83627ffeaa17`  | 
| EFA 1.45.0 |  **MD5: **800aeddfa9d9c5f139a7b8f7c4fec627`` **SHA256: **`25ba26a0877fe3317390dc126aad2f23e27fc461cf0b940004f032cb342fa539`  | 
| EFA 1.44.0 |  **MD5: **d024f6bebe080db42745103b84ca7c43`` **SHA256: **`f129a5b44a49d593d247e55a59eb9bcb57121566e1c2e42b832a4e794fa83d8a`  | 
| EFA 1.43.3 |  **MD5: **`4dbc6eeecc516760253c10cbedb6319d` **SHA256: **`6c470ebce254c7165347b5048895ac2996c88567271642297f4c597738300652`  | 
| EFA 1.43.2 |  **MD5: **`7287b25a07c9747c0d4001e8fc5f59b2` **SHA256: **`de15c5bdbc83b952afbde876110830c604ad0796680e5157c05f7c1979a41069`  | 
| EFA 1.43.1 |  **MD5: **`7cfafc8debaea51dd4966fa0b2bba673` **SHA256: **54211eda0c193138ee8ed09b5fb41c41fc76fe0a77935fa4ec8d989466342740``  | 
| EFA 1.43.0 |  **MD5: **`f2b3dd7dc8670b541f7c23fd58e5e503` **SHA256: **`786df3458c499237be33bb8e50ffd4da7c18c20e254380ffc80fb90833d8cc73`  | 
| EFA 1.42.0 |  **MD5: **`94b2b1db09da1dde08ec049db1f24370` **SHA256: **`4114fe612905ee05083ae5cb391a00a012510f3abfecc642d86c9a5ae4be9008`  | 
| EFA 1.41.0 |  **MD5: **`086181c3ee3f8da512fc6e1c795e8936` **SHA256: **`3506354cdfbe31ff552fe75f5d0d9bb7efd29cf79bd99457347d29c751c38f9f`  | 
| EFA 1.40.0 |  **MD5: **`f3ec6f73fbeaccba082327507581157c` **SHA256: **`30491b0fe7c3470d4439594538855c981b05fa69862d74f8c05eb9b97912368a`  | 
| EFA 1.39.0 |  **MD5: **`c223d5954a85a7fbcd248c942b866e43` **SHA256: **`2cbc028c03064633bb990782b47c36156637769e2f48704417a9c700a7a32101`  | 
| EFA 1.38.1 |  **MD5: **`f112569e828ab65187777f794bab542c` **SHA256: **`83923374afd388b1cfcf4b3a21a2b1ba7cf46a01a587f7b519b8386cb95e4f81`  | 
| EFA 1.38.0 |  **MD5: **`43a2a446b33a2506f40853d55059f1ea` **SHA256: **`4f436954f35ad53754b4d005fd8d0be63de3b4184de41a695b504bdce0fecb22`  | 
| EFA 1.37.0 |  **MD5: **`6328070192bae920eca45797ad4c1db1` **SHA256: **`2584fc3c8bb99f29b3285e275747ff09d67c18e162c2a652e36c976b72154bfb`  | 
| EFA 1.36.0 |  **MD5: **`1bec83180fbffb23452ab6469ca21dfa` **SHA256: **`de183f333cfb58aeb7908a67bf9106985ba3ccb7f8638b851d2a0d8dbfacaec4`  | 
| EFA 1.35.0 |  **MD5: **`252f03c978dca5f8e8d9f34e488b256e` **SHA256: **`432b6ad4368ba0cd8b902729d14a908a97be7a3dcc5239422ea994a47f35a5e1`  | 
| EFA 1.34.0 |  **MD5: **`5cd4b28d27a31677c16139b54c9acb45` **SHA256: **`bd68839e741b0afd3ec2e37d50603803cfa7a279c120f0a736cc57c2ff2d7fdc`  | 
| EFA 1.33.0 |  **MD5: **`e2f61fccbcaa11e2ccfddd3660522276` **SHA256: **`0372877b87c6a7337bb7791d255e1053b907d030489fb2c3732ba70069185fce`  | 
| EFA 1.32.0 |  **MD5: **`db8d65cc028d8d08b5a9f2d88881c1b1` **SHA256: **`5f7233760be57f6fee6de8c09acbfbf59238de848e06048dc54d156ef578fc66`  | 
| EFA 1.31.0 |  **MD5: **`856352f12bef2ccbadcd75e35aa52aaf` **SHA256: **`943325bd37902a4300ac9e5715163537d56ecb4e7b87b37827c3e547aa1897bf`  | 
| EFA 1.30.0 |  **MD5: **`31f48e1a47fe93ede8ebd273fb747358` **SHA256: **`876ab9403e07a0c3c91a1a34685a52eced890ae052df94857f6081c5f6c78a0a`  | 
| EFA 1.29.1 |  **MD5: **`e1872ca815d752c1d7c2b5c175e52a16` **SHA256: **`178b263b8c25845b63dc93b25bcdff5870df5204ec509af26f43e8d283488744`  | 
| EFA 1.29.0 |  **MD5: **`39d06a002154d94cd982ed348133f385` **SHA256: **`836655f87015547e733e7d9f7c760e4e24697f8bbc261bb5f3560abd4206bc36`  | 
| EFA 1.28.0 |  **MD5: **`9dc13b7446665822605e66febe074035` **SHA256: **`2e625d2d6d3e073b5178e8e861891273d896b66d03cb1a32244fd56789f1c435`  | 
| EFA 1.27.0 |  **MD5: **`98bfb515ea3e8d93f554020f3837fa15` **SHA256: **`1d49a97b0bf8d964d91652a79ac851f2550e33a5bf9d0cf86ec9357ff6579aa3`  | 
| EFA 1.26.1 |  **MD5: **`884e74671fdef4725501f7cd2d451d0c` **SHA256: **`c616994c924f54ebfabfab32b7fe8ac56947fae00a0ff453d975e298d174fc96`  | 
| EFA 1.26.0 |  **MD5: **`f8839f12ff2e3b9ba09ae8a82b30e663` **SHA256: **`bc1abc1f76e97d204d3755d2a9ca307fc423e51c63141f798c2f15be3715aa11`  | 
| EFA 1.25.1 |  **MD5: **`6d876b894547847a45bb8854d4431f18` **SHA256: **`d2abc553d22b89a4ce92882052c1fa6de450d3a801fe005da718b7d4b9602b06`  | 
| EFA 1.25.0 |  **MD5: **`1993836ca749596051da04694ea0d00c` **SHA256: **`98b7b26ce031a2d6a93de2297cc71b03af647194866369ca53b60d82d45ad342`  | 
| EFA 1.24.1 |  **MD5: **`211b249f39d53086f3cb0c07665f4e6f` **SHA256: **`120cfeec233af0955623ac7133b674143329f9561a9a8193e473060f596aec62`  | 
| EFA 1.24.0 |  **MD5: **`7afe0187951e2dd2c9cc4b572e62f924` **SHA256: **`878623f819a0d9099d76ecd41cf4f569d4c3aac0c9bb7ba9536347c50b6bf88e`  | 
| EFA 1.23.1 |  **MD5: **`22491e114b6ee7160a8290145dca0c28` **SHA256: **`5ca848d8e0ff4d1571cd443c36f8d27c8cdf2a0c97e9068ebf000c303fc40797`  | 
| EFA 1.23.0 |  **MD5: **`38a6d7c1861f5038dba4e441ca7683ca` **SHA256: **`555d497a60f22e3857fdeb3dfc53aa86d05926023c68c916d15d2dc3df6525bd`  | 
| EFA 1.22.1 |  **MD5: **`600c0ad7cdbc06e8e846cb763f92901b` **SHA256: **`f90f3d5f59c031b9a964466b5401e86fd0429272408f6c207c3f9048254e9665`  | 
| EFA 1.22.0 |  **MD5: **`8f100c93dc8ab519c2aeb5dab89e98f8` **SHA256: **`f329e7d54a86a03ea51da6ea9a5b68fb354fbae4a57a02f9592e21fce431dc3a`  | 
| EFA 1.21.0 |  **MD5: **`959ccc3a4347461909ec02ed3ba7c372` **SHA256: **`c64e6ca34ccfc3ebe8e82d08899ae8442b3ef552541cf5429c43d11a04333050`  | 
| EFA 1.20.0 |  **MD5: **`7ebfbb8e85f1b94709df4ab3db47913b` **SHA256: **`aeefd2681ffd5c4c631d1502867db5b831621d6eb85b61fe3ec80df983d1dcf0`  | 
| EFA 1.19.0 |  **MD5: **`2fd45324953347ec5518da7e3fefa0ec` **SHA256: **`99b77821b9e72c8dea015cc92c96193e8db307deee05b91a58094cc331f16709`  | 
| EFA 1.18.0 |  **MD5: **`fc2571a72f5d3c7b7b576ce2de38d91e` **SHA256: **`acb18a0808aedb9a5e485f1469225b9ac97f21db9af78e4cd6939700debe1cb6`  | 
| EFA 1.17.3 |  **MD5: **`0517df4a190356ab559235147174cafd` **SHA256: **`5130998b0d2883bbae189b21ab215ecbc1b01ae0231659a9b4a17b0a33ebc6ca`  | 
| EFA 1.17.2 |  **MD5: **`a329dedab53c4832df218a24449f4c9a` **SHA256: **`bca1fdde8b32b00346e175e597ffab32a09a08ee9ab136875fb38283cc4cd099`  | 
| EFA 1.17.1 |  **MD5: **`733ae2cfc9d14b52017eaf0a2ab6b0ff` **SHA256: **`f29322640a88ae9279805993cb836276ea240623820848463ca686c8ce02136f`  | 
| EFA 1.17.0 |  **MD5: **`d430fc841563c11c3805c5f82a4746b1` **SHA256: **`75ab0cee4fb6bd38889dce313183f5d3a83bd233e0a6ef6205d8352821ea901d`  | 
| EFA 1.16.0 |  **MD5: **`399548d3b0d2e812d74dd67937b696b4` **SHA256: **`cecec36495a1bc6fdc82f97761a541e4fb6c9a3cbf3cfcb145acf25ea5dbd45b`  | 
| EFA 1.15.2 |  **MD5: **`955fea580d5170b05823d51acde7ca21` **SHA256: **`84df4fbc1b3741b6c073176287789a601a589313accc8e6653434e8d4c20bd49`  | 
| EFA 1.15.1 |  **MD5: **`c4610267039f72bbe4e35d7bf53519bc` **SHA256: **`be871781a1b9a15fca342a9d169219260069942a8bda7a8ad06d4baeb5e2efd7`  | 
| EFA 1.15.0 |  **MD5: **`9861694e1cc00d884fadac07d22898be` **SHA256: **`b329862dd5729d2d098d0507fb486bf859d7c70ce18b61c302982234a3a5c88f`  | 
| EFA 1.14.1 |  **MD5: **`50ba56397d359e57872fde1f74d4168a` **SHA256: **`c7b1b48e86fe4b3eaa4299d3600930919c4fe6d88cc6e2c7e4a408a3f16452c7`  | 
| EFA 1.14.0 |  **MD5: **`40805e7fd842c36ececb9fd7f921b1ae` **SHA256: **`662d62c12de85116df33780d40e0533ef7dad92709f4f613907475a7a1b60a97`  | 
| EFA 1.13.0 |  **MD5: **`c91d16556f4fd53becadbb345828221e` **SHA256: **`ad6705eb23a3fce44af3afc0f7643091595653a723ad0374084f4f2b715192e1`  | 
| EFA 1.12.3 |  **MD5: **`818aee81f097918cfaebd724eddea678` **SHA256: **`2c225321824788b8ca3fbc118207b944cdb096b847e1e0d1d853ef2f0d727172`  | 
| EFA 1.12.2 |  **MD5: **`956bb1fc5ae0d6f0f87d2e481d49fccf` **SHA256: **`083a868a2c212a5a4fcf3e4d732b685ce39cceb3ca7e5d50d0b74e7788d06259`  | 
| EFA 1.12.1 |  **MD5: **`f5bfe52779df435188b0a2874d0633ea` **SHA256: **`5665795c2b4f09d5f3f767506d4d4c429695b36d4a17e5758b27f033aee58900`  | 
| EFA 1.12.0 |  **MD5: **`d6c6b49fafb39b770297e1cc44fe68a6` **SHA256: **`28256c57e9ecc0b0778b41c1f777a9982b4e8eae782343dfe1246079933dca59`  | 
| EFA 1.11.2 |  **MD5: **`2376cf18d1353a4551e35c33d269c404` **SHA256: **`a25786f98a3628f7f54f7f74ee2b39bc6734ea9374720507d37d3e8bf8ee1371`  | 
| EFA 1.11.1 |  **MD5: **`026b0d9a0a48780cc7406bd51997b1c0` **SHA256: **`6cb04baf5ffc58ddf319e956b5461289199c8dd805fe216f8f9ab8d102f6d02a`  | 
| EFA 1.11.0 |  **MD5: **`7d9058e010ad65bf2e14259214a36949` **SHA256: **`7891f6d45ae33e822189511c4ea1d14c9d54d000f6696f97be54e915ce2c9dfa`  | 
| EFA 1.10.1 |  **MD5: **`78521d3d668be22976f46c6fecc7b730` **SHA256: **`61564582de7320b21de319f532c3a677d26cc46785378eb3b95c636506b9bcb4`  | 
| EFA 1.10.0 |  **MD5: **`46f73f5a7afe41b4bb918c81888fefa9` **SHA256: **`136612f96f2a085a7d98296da0afb6fa807b38142e2fc0c548fa986c41186282`  | 
| EFA 1.9.5 |  **MD5: **`95edb8a209c18ba8d250409846eb6ef4` **SHA256: **`a4343308d7ea4dc943ccc21bcebed913e8868e59bfb2ac93599c61a7c87d7d25`  | 
| EFA 1.9.4 |  **MD5: **`f26dd5c350422c1a985e35947fa5aa28` **SHA256: **`1009b5182693490d908ef0ed2c1dd4f813cc310a5d2062ce9619c4c12b5a7f14`  | 
| EFA 1.9.3 |  **MD5: **`95755765a097802d3e6d5018d1a5d3d6` **SHA256: **`46ce732d6f3fcc9edf6a6e9f9df0ad136054328e24675567f7029edab90c68f1`  | 
| EFA 1.8.4 |  **MD5: **`85d594c41e831afc6c9305263140457e` **SHA256: **`0d974655a09b213d7859e658965e56dc4f23a0eee2dc44bb41b6d039cc5bab45`  | 

# Elastic Fabric Adapter リリースノート
<a name="efa-changelog"></a>

以下の表には、Elastic Fabric Adapter ソフトウェアのバージョン履歴と変更ログが記載されています。


| バージョン | 変更 | リリース日 | 
| --- | --- | --- | 
| 1.47.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/efa-changelog.html)  | 2026 年 1 月 29 日 | 
| 1.46.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/efa-changelog.html)  | 2025 年 12 月 12 日 | 
| 1.45.1 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/efa-changelog.html)  | 2025 年 11 月 26 日 | 
| 1.45.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/efa-changelog.html)  | 2025 年 11 月 17 日 | 
| 1.44.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/efa-changelog.html)  | 2025 年 10 月 29 日 | 
| 1.43.3 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/efa-changelog.html)  | 2025 年 10 月 1 日 | 
| 1.43.2 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/efa-changelog.html)  | 2025 年 8 月 15 日 | 
| 1.43.1 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/efa-changelog.html)  | 2025 年 7 月 31 日 | 
| 1.43.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/efa-changelog.html)  | 2025 年 7 月 25 日 | 
| 1.42.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/efa-changelog.html)  | 2025 年 6 月 6 日 | 
| 1.41.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/efa-changelog.html)  | 2025 年 5 月 16 日 | 
| 1.40.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/efa-changelog.html)  | 2025 年 5 月 2 日 | 
| 1.39.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/efa-changelog.html)  | 2025 年 4 月 16 日 | 
| 1.38.1 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/efa-changelog.html)  | 2025 年 3 月 3 日 | 
| 1.38.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/efa-changelog.html)  | 2025 年 1 月 8 日 | 
| 1.37.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/efa-changelog.html)  | 2024 年 11 月 18 日 | 
| 1.36.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/efa-changelog.html)  | 2024 年 11 月 7 日 | 
| 1.35.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/efa-changelog.html)  | 2024 年 10 月 14 日 | 
| 1.34.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/efa-changelog.html)  | 2024 年 8 月 6 日 | 
| 1.33.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/efa-changelog.html)  | 2024 年 6 月 20 日 | 
| 1.32.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/efa-changelog.html)  | 2024 年 4 月 18 日 | 
| 1.31.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/efa-changelog.html)  | 2024 年 3 月 7 日 | 
| 1.30.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/efa-changelog.html)  | 2023 年 12 月 | 
| 1.29.1 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/efa-changelog.html)  | 2023 年 12 月 | 
| 1.29.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/efa-changelog.html)  | 2023 年 11 月 | 
| 1.28.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/efa-changelog.html)  | 2023 年 10 月 | 
| 1.27.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/efa-changelog.html)  | 2023 年 9 月 | 
| 1.26.1 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/efa-changelog.html)  | 2023 年 9 月 | 
| 1.26.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/efa-changelog.html)  | 2023 年 9 月 | 
| 1.25.1 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/efa-changelog.html)  | 2023 年 9 月 | 
| 1.25.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/efa-changelog.html)  | 2023 年 7 月 | 
| 1.24.1 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/efa-changelog.html)  | 2023 年 7 月 | 
| 1.24.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/efa-changelog.html)  | 2023 年 6 月 | 
| 1.23.1 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/efa-changelog.html)  | 2023 年 6 月 | 
| 1.23.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/efa-changelog.html)  | 2023 年 5 月 | 
| 1.22.1 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/efa-changelog.html)  | 2023 年 3 月 | 
| 1.22.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/efa-changelog.html)  | 2023 年 2 月 | 
| 1.21.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/efa-changelog.html)  | 2022 年 12 月 | 
| 1.20.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/efa-changelog.html)  | 2022 年 11 月 | 
| 1.19.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/efa-changelog.html)  | 2022 年 10 月 | 
| 1.18.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/efa-changelog.html)  | 2022 年 8 月 | 
| 1.17.3 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/efa-changelog.html)  | 2022 年 8 月 | 
| 1.17.2 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/efa-changelog.html)  | 2022 年 7 月 | 
| 1.17.1 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/efa-changelog.html)  | 2022 年 7 月 | 
| 1.17.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/efa-changelog.html)  | 2022 年 7 月 | 
| 1.16.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/efa-changelog.html)  | 2022 年 6 月 | 
| 1.15.2 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/efa-changelog.html)  | 2022 年 5 月 | 
| 1.15.1 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/efa-changelog.html)  | 2022 年 3 月 | 
| 1.15.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/efa-changelog.html)  | 2022 年 2 月 | 
| 1.14.1 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/efa-changelog.html)  | 2021 年 10 月 | 
| 1.14.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/efa-changelog.html)  | 2021 年 10 月 | 
| 1.13.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/efa-changelog.html)  | 2021 年 8 月 | 
| 1.12.3 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/efa-changelog.html)  | 2021 年 7 月 | 
| 1.12.2 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/efa-changelog.html)  | 2021 年 6 月 | 
| 1.12.1 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/efa-changelog.html)  | 2021 年 5 月 | 
| 1.12.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/efa-changelog.html)  | 2021 年 5 月 | 
| 1.11.2 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/efa-changelog.html)  | 2021 年 2 月 | 
| 1.11.1 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/efa-changelog.html)  | 2020 年 12 月 | 
| 1.11.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/efa-changelog.html)  | 2020 年 12 月 | 
| 1.10.1 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/efa-changelog.html)  | 2020 年 11 月 | 
| 1.10.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/efa-changelog.html)  | 2020 年 10 月 | 
| 1.9.5 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/efa-changelog.html)  | 2020 年 9 月 | 
| 1.9.4 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/efa-changelog.html)  | 2020 年 7 月 | 
| 1.9.3 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/efa-changelog.html)  | 2020 年 6 月 | 
| 1.8.4 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/efa-changelog.html)  | 2020 年 4 月 | 
| 1.8.3 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/efa-changelog.html)  | 2020 年 2 月 | 
| 1.8.2 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/efa-changelog.html)  | 2020 年 1 月 | 
| 1.8.1 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/efa-changelog.html)  | 2020 年 1 月 | 
| 1.8.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/efa-changelog.html)  | 2019 年 12 月 | 
| 1.7.1 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/efa-changelog.html)  | 2019 年 12 月 | 
| 1.7.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/efa-changelog.html)  | 2019 年 11 月 | 
| 1.6.2 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/efa-changelog.html)  | 2019 年 10 月 | 
| 1.6.1 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/efa-changelog.html)  | 2019 年 10 月 | 
| 1.5.4 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/efa-changelog.html)  | 2019 年 9 月 | 
| 1.5.3 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/efa-changelog.html)  | 2019 年 9 月 | 
| 1.5.1 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/efa-changelog.html)  | 2019 年 8 月 | 
| 1.5.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/efa-changelog.html)  | 2019 年 8 月 | 
| 1.4.1 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/efa-changelog.html)  | 2019 年 7 月 | 
| 1.4.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/efa-changelog.html)  | 2019 年 7 月 | 

# Amazon EC2 トポロジー
<a name="ec2-instance-topology"></a>

Amazon EC2 トポロジーは、コンピューティングキャパシティの相対的な近接性を階層的に示します。この情報を使用して、ハイパフォーマンスコンピューティング (HPC)、機械学習 (ML)、生成 AI のコンピューティングインフラストラクチャを大規模に管理できます。

**使用可能な API**

Amazon EC2 では、EC2 トポロジーを把握するための API が 2 つ用意されています。
+ [DescribeInstanceTopology](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeInstanceTopology.html)
  + *実行中*のインスタンスがネットワーク階層内で配置されている場所を相互に相対的に示します。
  + 既存のインスタンスでワークロードを実行する場所を最適化するのに役立ちます。
+ [DescribeCapacityReservationTopology](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeCapacityReservationTopology.html)
  + *インスタンスを起動する前に*、リザーブドキャパシティがネットワーク階層内で配置される場所を相互に相対的に示します。
  + インスタンスを起動する前にリザーブドキャパシティの配置を知らせることで、キャパシティプランニングを支援します。

**主な利点**

EC2 トポロジーには、主に以下のような利点があります。
+ キャパシティ管理 – リソース使用率を最適化できます。
+ ジョブスケジューリング – ワークロードの配置について、情報に基づいた意思決定を行えます。
+ ノードランキング — 緊密に結合されたインスタンスでパフォーマンスを最適化するための相対的な近接性を理解できます。

**考慮事項**
+ トポロジービューは次の場合にのみ使用できます。
  + インスタンスが `running` の状態である
  + キャパシティ予約が `pending` または `active` で状態にある
+ 各トポロジービューは AWS アカウントごとに一異なります。
+ AWS マネジメントコンソールではトポロジーの表示はサポートされていません。
+ トポロジー情報はインスタンスの配置を理解するのに役立ちますが、既存のインスタンスに物理的に近い新しいインスタンスを起動するために使用することはできません。インスタンスの配置に影響を与えるには[クラスタープレイスメントグループでキャパシティ予約を作成](cr-cpg.md)できます。

**料金**  
EC2 トポロジーを記述するのに追加のコストはかかりません。

**Topics**
+ [仕組み](how-ec2-instance-topology-works.md)
+ [前提条件](ec2-instance-topology-prerequisites.md)
+ [例](ec2-instance-topology-examples.md)

# Amazon EC2 トポロジーの仕組み
<a name="how-ec2-instance-topology-works"></a>

AWS ネットワークはレイヤーの階層構造内に配置されています。EC2 インスタンスは、インスタンスのタイプに応じて、3 番目のレイヤー以下にあるネットワークに接続します。インスタンスのトポロジーは一連のノードによって記述され、ネットワークの各レイヤーに 1 つのノードがあります。[DescribeInstanceTopology](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeInstanceTopology.html) または [DescribeCapacityReservationTopology](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeCapacityReservationTopology.html) API レスポンスにあるノードセットはネットワーク階層のトップダウンビューを提供し、最下部のノードがインスタンスに接続されます。

**注記**  
インスタンスタイプには、ネットワーク内の 4 つのレイヤーを表すノードセットにある 4 つのネットワークノードで構成されているものもあれば、ネットワーク内の 3 つのレイヤーを表す 3 つのネットワークノードで構成されているものもあります。サポートされているインスタンスタイプについては、「[インスタンスのタイプ](ec2-instance-topology-prerequisites.md#inst-net-topology-prereqs-instance-types)」を参照してください。  
キャパシティ予約のタイプによっては、1 つ、2 つ、または 3 つのネットワークノードしか表示されない場合があります。

次の図は EC2 トポロジーを視覚的に表しており、EC2 トポロジーの理解に役立ちます。ネットワークノードは **NN1**～**NN7** として示されます。数字 **i**、**ii**、**iii** はネットワークレイヤーを示しています。数字 **1**、**2**、**3**、**4** はEC2 インスタンスを示しています。インスタンスは、以下の図で **iii** と表示されている最下部レイヤー内のノードに接続します。複数のインスタンスが同じノードに接続できます。

![\[インスタンストポロジーのグラフィックモデル。\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/instance-topology.png)


この例では以下のようになっています。
+ インスタンス 1 はレイヤー iii のネットワークノード 4 (NN4) に接続しています。NN4 はレイヤー ii のネットワークノード 2 (NN2) に接続しています。また NN2 はこの例でネットワーク階層の一番上にあるレイヤー i のネットワークノード 1 (NN1) に接続しています。ネットワークノードセットは NN1、NN2、NN4 で構成され、上位層から最下層まで階層的に示されています。
+ インスタンス 2 はネットワークノード 4 (NN4) にも接続しています。インスタンス 1 とインスタンス 2 は同じネットワークノードセット (NN1、NN2、NN4) を共有しています。
+ インスタンス 3 はネットワークノード 5 (NN5) に接続しています。NN5 は NN2 に接続しており、NN2 は NN1 に接続しています。インスタンス 3 に設定されているネットワークノードはNN1、NN2、NN5 です。
+ インスタンス 4 はネットワークノード 6 (NN6) に接続しています。このネットワークノードセットは NN1、NN3、NN6 です。

インスタンス 1、2、3 の近接性を考えると、インスタンス 1 と 2 は同じネットワークノード (NN4) に接続しているため互いに近く、インスタンス 3 は別のネットワークノード (NN5) に接続しているため遠くなります。

この図のすべてのインスタンスの近接性を考えると、インスタンス 1、2、3 はネットワークノードセットで NN2 を共有しているため、インスタンス 4 よりも互いに近くなります。

原則として、いずれかの 2 つのインスタンスに接続されているネットワークノードが同じ場合、インスタンス 1 と 2 の場合と同様に、これらのインスタンスは互いに物理的に近くなります。さらに、ネットワークノード間のホップ数が少ないほど、インスタンスは互いに近くなります。例えば、インスタンス 1 と 3 ではインスタンス 4 との共通のネットワークノード (NN1) へよりも共通のネットワークノード (NN2) への方がホップ数が少ないため、これらはインスタンス 4 よりも互いに近くなります。

この例ではネットワークノード 7 (NN7) ではインスタンスが実行されていないため、API 出力に NN7 は含まれません。

## DescribeInstanceTopology の出力を解釈する方法
<a name="how-to-interpret-the-output"></a>

[DescribeInstanceTopology](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeInstanceTopology.html) API を使用してインスタンストポロジーを記述できます。出力ではインスタンスの基盤となるネットワークトポロジーが階層的に示されます。

次の出力例は上の図にある 4 つのインスタンスにおけるネットワークトポロジーの情報に対応します。この例のため、出力例にはコメントが含まれています。

出力に含まれる次の情報に注意してください。
+ `NetworkNodes` では単一インスタンスのネットワークノードセットについて記述されます。
+ 各ネットワークノードセットではネットワークノードは上から下に階層的に一覧表示されます。
+ インスタンスに接続されているネットワークノードは一覧にある最後のネットワークノード (最下層) です。
+ 互いに近いインスタンスを調べるにはまず、最下層にある共通のネットワークノードを見つけます。最下層に共通のネットワークノードがない場合、上位層で共通のネットワークノードを探します。

次の出力例で `i-1111111111example` と `i-2222222222example` は最下層に共通のネットワークノード `nn-4444444444example` があるため、この例における他のインスタンスと比較して互いに最も近い位置にあります。

**注記**  
レスポンスには 3 つ以上のネットワークノードが含まれます。サポートされている各インスタンスタイプのレスポンスにあるネットワークノードの数については、「[インスタンスのタイプ](ec2-instance-topology-prerequisites.md#inst-net-topology-prereqs-instance-types)」を参照してください。

```
{
    "Instances": [
        {
            "InstanceId": "i-1111111111example",  //Corresponds to instance 1
            "InstanceType": "p4d.24xlarge",
            "GroupName": "ML-group",
            "NetworkNodes": [
                "nn-1111111111example",           //Corresponds to NN1 in layer i
                "nn-2222222222example",           //Corresponds to NN2 in layer ii
                "nn-4444444444example"            //Corresponds to NN4 in layer iii - bottom layer, connected to the instance
            ],
            "CapacityBlockId": "null",
            "ZoneId": "usw2-az2",
            "AvailabilityZone": "us-west-2a"
        },
        {
            "InstanceId": "i-2222222222example",  //Corresponds to instance 2
            "InstanceType": "p4d.24xlarge",
            "NetworkNodes": [
                "nn-1111111111example",           //Corresponds to NN1 - layer i
                "nn-2222222222example",           //Corresponds to NN2 - layer ii
                "nn-4444444444example"            //Corresponds to NN4 - layer iii - connected to instance
            ],
            "CapacityBlockId": "null",
            "ZoneId": "usw2-az2",
            "AvailabilityZone": "us-west-2a"
        },
        {
            "InstanceId": "i-3333333333example",  //Corresponds to instance 3
            "InstanceType": "trn1.32xlarge",
            "NetworkNodes": [
                "nn-1111111111example",           //Corresponds to NN1 - layer i
                "nn-2222222222example",           //Corresponds to NN2 - layer ii
                "nn-5555555555example"            //Corresponds to NN5 - layer iii - connected to instance
            ],
            "CapacityBlockId": "null",
            "ZoneId": "usw2-az2",
            "AvailabilityZone": "us-west-2a"            
        },
        {
            "InstanceId": "i-444444444example",  //Corresponds to instance 4
            "InstanceType": "trn1.2xlarge",
            "NetworkNodes": [
                "nn-1111111111example",          //Corresponds to NN1 - layer i
                "nn-3333333333example",          //Corresponds to NN3 - layer ii
                "nn-6666666666example"           //Corresponds to NN6 - layer iii - connected to instance
            ],
            "CapacityBlockId": "null",
            "ZoneId": "usw2-az2",
            "AvailabilityZone": "us-west-2a"          
        }
    ],
    "NextToken": "SomeEncryptedToken"
}
```

## DescribeCapacityReservationTopology の出力を解釈する方法
<a name="how-to-interpret-the-describecapacityreservationtopology-output"></a>

[DescribeCapacityReservationTopology](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeCapacityReservationTopology.html) API を使用して、キャパシティ予約トポロジーを記述できます。出力ではリザーブドキャパシティの基盤となるネットワークトポロジーが階層的に示されます。

次の出力例は上の図のネットワークトポロジーの情報に対応します。この例のため、出力例にはコメントが含まれています。

出力に含まれる次の情報に注意してください。
+ `NetworkNodes` は、単一のキャパシティ予約のネットワークノードセットを記述します。
+ 各ネットワークノードセットではネットワークノードは上から下に階層的に一覧表示されます。
+ キャパシティ予約に接続されているネットワークノードは一覧にある最後のネットワークノード (最下層) です。
+ キャパシティ予約が互いに近いかどうかを調べるには、まず出力の最下層で共通のネットワークノードを見つけます。最下層に共通のネットワークノードがない場合、上位層で共通のネットワークノードを探します。

次の出力例では、`cr-1111111111example` は `nn-2222222222example` にあり、`cr-2222222222example`は `nn-3333333333example` にあります。キャパシティ予約は `layer ii` の異なるネットワークノード上にあるため、あるキャパシティ予約のインスタンスから別のキャパシティ予約のインスタンスへの通信は非効率になります。

**注記**  
レスポンスには、キャパシティ予約のタイプに応じて 1 つ、2 つ、または 3 つのネットワークノードが含まれます。

```
{
    "CapacityReservations": [
        {
            "CapacityReservationId": "cr-1111111111example",
            "CapacityBlockId": "null",
            "State": "active",
            "InstanceType": "p4d.24xlarge",
            "NetworkNodes": [
                "nn-1111111111example",      //Corresponds to NN1 - layer i
                "nn-2222222222example"       //Corresponds to NN2 - layer ii
                // Visibility of additional nodes requires an instance launch and 
                // the DescribeInstanceTopology API
            ],
            "AvailabilityZone": "us-west-2a"
        },
        {
            "CapacityReservationId": "cr-2222222222example",
            "CapacityBlockId": "null",
            "State": "active",
            "InstanceType": "trn1.2xlarge",
            "NetworkNodes": [
                "nn-1111111111example",      //Corresponds to NN1 - layer i
                "nn-3333333333example"       //Corresponds to NN3 - layer ii
                // Visibility of additional nodes requires an instance launch and 
                // the DescribeInstanceTopology API
            ],
            "AvailabilityZone": "us-west-2a"
        }
    ],
    "NextToken": "SomeEncryptedToken"
}
```

## DescribeInstanceTopology と DescribeCapacityReservationTopology の違い
<a name="differences-between-describing-instance-topology-and-capacity-reservation-topology"></a>

次の表は、DescribeInstanceTopology API と DescribeCapacityReservationTopology API の主な違いを比較しています。


| 比較ポイント | DescribeInstanceTopology | DescribeCapacityReservationTopology | 
| --- | --- | --- | 
| 使用フェーズ | 起動後 (実行モード) | 起動前 (プランニングおよび管理モード) | 
| 主な目的 | 実行中のインスタンスでのワークロードの最適化 |  インスタンス起動前のキャパシティプランニングとキャパシティ予約管理 (マージ、分割、割り当て)  | 
| ネットワークノードの数 |  実行中のインスタンスのすべてのノードを表示します。インスタンスがキャパシティ予約にある場合、最初のノードは対応するキャパシティ予約トポロジーと一致し、その後で追加のノードがインスタンスに接続します。  |  ノードの部分的なセットを表示します。これは、キャパシティ予約の状態 (`pending` または `active`) とタイプによって異なります。\$1  | 
| State |  インスタンスは `running` の状態である必要があります。  |  キャパシティ予約は `pending` または `active` の状態である必要があります。  | 
| ユースケース |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/how-ec2-instance-topology-works.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/how-ec2-instance-topology-works.html)  | 

\$1 Ultraserver のキャパシティブロックの場合、`active` のキャパシティ予約またはその実行中のインスタンスのトポロジーを記述するとき、ネットワークノードセットは同じです。

# Amazon EC2 トポロジーの前提条件
<a name="ec2-instance-topology-prerequisites"></a>

Amazon EC2 トポロジーを記述するには、インスタンスとキャパシティ予約が次の前提条件を満たしていることを確認します。

**Topics**
+ [AWS リージョン](#inst-net-topology-prereqs-regions)
+ [インスタンスのタイプ](#inst-net-topology-prereqs-instance-types)
+ [State](#inst-net-topology-prereqs-instance-state)
+ [IAM アクセス許可](#ec2-instance-topology-iam-permissions)

## AWS リージョン
<a name="inst-net-topology-prereqs-regions"></a>

サポートされている AWS リージョン:
+ 米国東部 (バージニア北部)、米国東部 (オハイオ)、米国西部 (北カリフォルニア)、米国西部 (オレゴン)
+ アフリカ (ケープタウン)
+ アジアパシフィック (ジャカルタ）、アジアパシフィック (香港）、アジアパシフィック (ハイデラバード）、アジアパシフィック (メルボルン）、アジアパシフィック (ムンバイ）、アジアパシフィック (大阪）、アジアパシフィック (ソウル）、アジアパシフィック (シンガポール）、アジアパシフィック (シドニー）、アジアパシフィック (東京)
+ カナダ (中部)
+ 欧州 (フランクフルト)、欧州 (アイルランド)、欧州 (ロンドン)、欧州 (パリ)、欧州 (スペイン)、欧州 (ストックホルム)、欧州 (チューリッヒ)
+ イスラエル (テルアビブ)
+ 中東 (バーレーン）、中東 (アラブ首長国連邦)
+ 南米 (サンパウロ)
+ AWS GovCloud (米国西部)

DescribeCapacityReservationTopology API は、イスラエル (テルアビブ) および AWS GovCloud (米国西部) ではサポートされていません。

## インスタンスのタイプ
<a name="inst-net-topology-prereqs-instance-types"></a>

サポートされるインスタンスタイプ:
+ レスポンスで **3 つ\$1のネットワークノード**を返す 
  + `g6e.xlarge` \$1 `g6e.2xlarge` \$1 `g6e.4xlarge` \$1 `g6e.8xlarge` \$1 `g6e.12xlarge` \$1 `g6e.16xlarge` \$1 `g6e.24xlarge` \$1 `g6e.48xlarge` \$1 `g7e.2xlarge` \$1 `g7e.4xlarge` \$1 `g7e.8xlarge` \$1 `g7e.12xlarge` \$1 `g7e.24xlarge` \$1 `g7e.48xlarge`
  + `hpc6a.48xlarge` \$1 `hpc6id.32xlarge` \$1 `hpc7g.4xlarge` \$1 `hpc7g.8xlarge` \$1 `hpc7g.16xlarge` \$1 `hpc7a.12xlarge` \$1 `hpc7a.24xlarge` \$1 `hpc7a.48xlarge` \$1 `hpc7a.96xlarge` \$1 `hpc8a.96xlarge`
  + `p3dn.24xlarge` \$1 `p4d.24xlarge` \$1 `p4de.24xlarge` \$1 `p5.48xlarge` \$1 `p5e.48xlarge` \$1 `p5en.48xlarge` \$1 `p6e-gb200.36xlarge`
  + `trn1.2xlarge` \$1 `trn1.32xlarge` \$1 `trn1n.32xlarge` \$1 `trn2.48xlarge` \$1 `trn2u.48xlarge`
+ レスポンスで **4 つ\$1のネットワークノード**を返す 
  + `p6-b200.48xlarge` \$1 `p6-b300.48xlarge`

\$1 返されるネットワークノードの数は、DescribeInstanceTopology API を使用する場合にのみ適用されます。DescribeCapacityReservationTopology API の場合、返されるネットワークノードの数は、キャパシティ予約のタイプと状態によって異なります。

利用可能なインスタンスタイプはリージョンごとに異なります。詳細については、「[リージョン別 Amazon EC2 インスタンスタイプ](https://docs.aws.amazon.com/ec2/latest/instancetypes/ec2-instance-regions.html)」を参照してください。

## State
<a name="inst-net-topology-prereqs-instance-state"></a>
+ `DescribeInstanceTopology` の場合 - インスタンスは `running` の状態である必要があります。
+ `DescribeCapacityReservationTopology` の場合 – キャパシティ予約は `pending` または `active` の状態である必要があります。

他の状態のインスタンスまたはキャパシティ予約のトポロジー情報を取得することはできません。

## IAM アクセス許可
<a name="ec2-instance-topology-iam-permissions"></a>

IAM ID (ユーザー、ユーザーグループ、またはロール) には次のアクセス許可が必要です。
+ `ec2:DescribeInstanceTopology`
+ `ec2:DescribeCapacityReservationTopology`

# Amazon EC2 インスタンストポロジーの例
<a name="ec2-instance-topology-examples"></a>

[https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instance-topology.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instance-topology.html) コマンドを使用して、EC2 インスタンスのトポロジーを記述できます。また、[https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instance-topology.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instance-topology.html) コマンドを使用して、キャパシティ予約のトポロジーを記述できます。

パラメータやフィルターなしで `describe-instance-topology` コマンドまたは `describe-capacity-reservation-topology` コマンドを使用すると、指定したリージョン内のこのコマンドで利用可能なインスタンスタイプに一致する、すべてのインスタンスまたはキャパシティ予約 (使用するコマンドによる) が応答に含まれます。リージョンを設定するには`--region` パラメータを含めるかデフォルトのリージョンを設定できます。デフォルトのリージョンの設定についての詳細は「[Amazon EC2 リソースのリージョンを選択する](using-regions-availability-zones-setup.md)」を参照してください。

指定したインスタンス ID もしくはキャパシティ予約 ID、またはプレイスメントグループ名と一致するインスタンスまたはキャパシティ予約を返すパラメータを含めることができます。また、指定したインスタンスタイプやインスタンスファミリーに一致するインスタンスまたはキャパシティ予約、あるいは、指定したアベイラビリティーゾーンやローカルゾーン内のインスタンスまたはキャパシティ予約を返すフィルターを含めることもできます。1 つのパラメータまたはフィルター、もしくはパラメータとフィルターの組み合わせを含めることができます。

出力はページ分割されます。デフォルトでは、1 ページあたり最大 20のインスタンスまたはキャパシティ予約となっています。`--max-results` パラメータを使用すると、1 ページあたり最大 100 のインスタンスまたはキャパシティ予約を指定できます。

詳細については、「[https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instance-topology.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instance-topology.html)」および「[https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-reservation-topology-topology.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-reservation-topology-topology.html)」を参照してください。

**必要なアクセス許可**

以下のアクセス権限が必要です。
+ `ec2:DescribeInstanceTopology` – インスタンストポロジーの記述用
+  `ec2:DescribeCapacityReservationTopology` – キャパシティ予約トポロジーの記述用

**Contents**
+ [例 1: DescribeInstanceTopology - インスタンス ID](#instance-topology-ex1)
+ [例 2: DescribeInstanceTopology - プレイスメントグループ名パラメータ](#instance-topology-ex2)
+ [例 3: DescribeInstanceTopology - インスタンスタイプフィルター](#instance-topology-ex3)
  + [例 3a — 指定したインスタンスタイプの完全一致フィルター](#instance-topology-ex3a)
  + [例 3b — インスタンスファミリーのワイルドカードフィルター](#instance-topology-ex3b)
  + [例 3c — インスタンスファミリーと完全一致フィルターの組み合わせ](#instance-topology-ex3c)
+ [例 4: DescribeInstanceTopology - ゾーン ID フィルター](#instance-topology-ex4)
  + [例 4a — アベイラビリティーゾーンフィルター](#instance-topology-ex4a)
  + [例 4b — ローカルゾーンフィルター](#instance-topology-ex4b)
  + [例 4c — アベイラビリティーゾーンフィルターとローカルゾーンフィルターの組み合わせ](#instance-topology-ex4c)
+ [例 5: DescribeInstanceTopology - インスタンスタイプとゾーン ID フィルター](#instance-topology-ex5)
+ [例 6: DescribeCapacityReservationTopology - キャパシティ予約 ID](#instance-topology-ex6)
+ [例 7: DescribeCapacityReservationTopology - インスタンスタイプフィルター](#instance-topology-ex7)

## 例 1: DescribeInstanceTopology - インスタンス ID
<a name="instance-topology-ex1"></a>

------
#### [ AWS CLI ]

**特定のインスタンスのトポロジーを記述するには**  
`--instance-ids` パラメータを指定して、[https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instance-topology.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instance-topology.html) コマンドを使用します。出力には、指定したインスタンス ID と一致するインスタンスのみが含まれます。

```
aws ec2 describe-instance-topology \
    --region us-west-2 \
    --instance-ids i-1111111111example i-2222222222example
```

以下は出力の例です。

```
{
    "Instances": [
        {
            "InstanceId": "i-1111111111example",
            "InstanceType": "p4d.24xlarge",
            "GroupName": "ML-group",
            "NetworkNodes": [
                "nn-1111111111example",
                "nn-2222222222example",
                "nn-3333333333example"
            ],
            "CapacityBlockId": "null",
            "ZoneId": "usw2-az2",
            "AvailabilityZone": "us-west-2a"
        },
        {
            "InstanceId": "i-2222222222example",
            "InstanceType": "trn1n.32xlarge",
            "GroupName": "HPC-group",
            "NetworkNodes": [
                "nn-1111111111example",
                "nn-2222222222example",
                "nn-3214313214example"
            ],
            "CapacityBlockId": "null",
            "ZoneId": "usw2-az2",
            "AvailabilityZone": "us-west-2a"
        }
    ],
    "NextToken": "SomeEncryptedToken"
}
```

------
#### [ PowerShell ]

**特定のインスタンスのトポロジーを記述するには**  
[Get-EC2InstanceTopology](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2InstanceTopology.html) コマンドレットを使用します。

```
Get-EC2InstanceTopology `
    -InstanceId i-1111111111example, i-2222222222example
```

------

## 例 2: DescribeInstanceTopology - プレイスメントグループ名パラメータ
<a name="instance-topology-ex2"></a>

------
#### [ AWS CLI ]

**特定のプレイスメントグループ内にあるインスタンスのトポロジーを記述するには**  
`group-names` パラメータを指定して、[https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instance-topology.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instance-topology.html) コマンドを使用します。出力には、いずれかの指定したプレイスメントグループにあるインスタンスのみが含まれます。

```
aws ec2 describe-instance-topology \
    --region us-west-2 \
    --group-names ML-group HPC-group
```

以下は出力の例です。

```
{
    "Instances": [
        {
            "InstanceId": "i-1111111111example",
            "InstanceType": "p4d.24xlarge",
            "GroupName": "ML-group",
            "NetworkNodes": [
                "nn-1111111111example",
                "nn-2222222222example",
                "nn-3333333333example"
            ],
            "CapacityBlockId": "null",
            "ZoneId": "usw2-az2",
            "AvailabilityZone": "us-west-2a"
        },
        {
            "InstanceId": "i-2222222222example",
            "InstanceType": "trn1n.32xlarge",
            "GroupName": "HPC-group",
            "NetworkNodes": [
                "nn-1111111111example",
                "nn-2222222222example",
                "nn-3214313214example"
            ],
            "CapacityBlockId": "null",
            "ZoneId": "usw2-az2",
            "AvailabilityZone": "us-west-2a"
        }
    ],
    "NextToken": "SomeEncryptedToken"
}
```

------
#### [ PowerShell ]

**特定のプレイスメントグループ内にあるインスタンスのトポロジーを記述するには**  
[Get-EC2InstanceTopology](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2InstanceTopology.html) コマンドレットを使用します。

```
Get-EC2InstanceTopology `
    -GroupName ML-group, HPC-group
```

------

## 例 3: DescribeInstanceTopology - インスタンスタイプフィルター
<a name="instance-topology-ex3"></a>

指定したインスタンスタイプ (完全一致)、またはインスタンスファミリーでフィルタリング (ワイルドカードを使用) できます。指定したインスタンスタイプフィルターとインスタンスファミリーのフィルターを組み合わせることもできます。

### 例 3a — 指定したインスタンスタイプの完全一致フィルター
<a name="instance-topology-ex3a"></a>

------
#### [ AWS CLI ]

**特定のインスタンスタイプを使用するインスタンスのトポロジーを記述するには**  
`instance-type` フィルターとともに [https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instance-topology.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instance-topology.html) CLI コマンドを使用します。出力には、指定したインスタンスタイプを使用するインスタンスのみが含まれます。

```
aws ec2 describe-instance-topology \
    --region us-west-2 \
    --filters Name=instance-type,Values=trn1n.32xlarge
```

以下は出力の例です。

```
{
    "Instances": [
        {
            "InstanceId": "i-2222222222example",
            "InstanceType": "trn1n.32xlarge",
            "NetworkNodes": [
                "nn-1111111111example",
                "nn-2222222222example",
                "nn-3333333333example"
            ],
            "CapacityBlockId": "null",
            "ZoneId": "usw2-az2",
            "AvailabilityZone": "us-west-2a"
        }
    ],
    "NextToken": "SomeEncryptedToken"
}
```

------
#### [ PowerShell ]

**特定のインスタンスタイプを使用するインスタンスのトポロジーを記述するには**  
[Get-EC2InstanceTopology](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2InstanceTopology.html) コマンドレットを使用します。

```
Get-EC2InstanceTopology `
    -Filter @{Name="instance-type"; Values="trn1n.32xlarge"}
```

------

### 例 3b — インスタンスファミリーのワイルドカードフィルター
<a name="instance-topology-ex3b"></a>

------
#### [ AWS CLI ]

**特定のインスタンスファミリーを使用するインスタンスのトポロジーを記述するには**  
`instance-type` フィルターとともに [https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instance-topology.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instance-topology.html) CLI コマンドを使用します。出力には、指定したインスタンスファミリーを使用するインスタンスのみが含まれます。

```
aws ec2 describe-instance-topology \
    --region us-west-2 \
    --filters Name=instance-type,Values=trn1*
```

以下は出力の例です。

```
{
    "Instances": [
        {
            "InstanceId": "i-2222222222example",
            "InstanceType": "trn1n.32xlarge",
            "NetworkNodes": [
                "nn-1111111111example",
                "nn-2222222222example",
                "nn-3333333333example"
            ],
            "CapacityBlockId": "null",
            "ZoneId": "usw2-az2",
            "AvailabilityZone": "us-west-2a"
        },
        {
            "InstanceId": "i-3333333333example",
            "InstanceType": "trn1.32xlarge",
            "NetworkNodes": [
                "nn-1212121212example",
                "nn-1211122211example",
                "nn-1311133311example"
            ],
            "CapacityBlockId": "null",
            "ZoneId": "usw2-az4",
            "AvailabilityZone": "us-west-2d"            
        },
        {
            "InstanceId": "i-444444444example",
            "InstanceType": "trn1.2xlarge",
            "NetworkNodes": [
                "nn-1111111111example",
                "nn-5434334334example",
                "nn-1235301234example"
            ],
            "CapacityBlockId": "null",
            "ZoneId": "usw2-az2",
            "AvailabilityZone": "us-west-2a"          
        }
    ],
    "NextToken": "SomeEncryptedToken"
}
```

------
#### [ PowerShell ]

**特定のインスタンスファミリーを使用するインスタンスのトポロジーを記述するには**  
[Get-EC2InstanceTopology](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2InstanceTopology.html) コマンドレットを使用します。

```
Get-EC2InstanceTopology `
    -Filter @{Name="instance-type"; Values="trn1*"}
```

------

### 例 3c — インスタンスファミリーと完全一致フィルターの組み合わせ
<a name="instance-topology-ex3c"></a>

------
#### [ AWS CLI ]

**インスタンスファミリーまたはインスタンスタイプを使用するインスタンスのトポロジを記述するには**  
`instance-type` フィルターとともに [https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instance-topology.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instance-topology.html) CLI コマンドを使用します。出力には、指定した条件を満たすインスタンスのみが含まれます。

```
aws ec2 describe-instance-topology \
    --region us-west-2 \
    --filters "Name=instance-type,Values=p4d*,trn1n.32xlarge"
```

以下は出力の例です。

```
{
    "Instances": [
        {
            "InstanceId": "i-1111111111example",
            "InstanceType": "p4d.24xlarge",
            "GroupName": "ML-group",
            "NetworkNodes": [
                "nn-1111111111example",
                "nn-2222222222example",
                "nn-3333333333example"
            ],
            "CapacityBlockId": "null",
            "ZoneId": "usw2-az2",
            "AvailabilityZone": "us-west-2a"
        },
        {
            "InstanceId": "i-2222222222example",
            "InstanceType": "trn1n.32xlarge",
            "NetworkNodes": [
                "nn-1111111111example",
                "nn-2222222222example",
                "nn-4343434343example"
            ],
            "CapacityBlockId": "null",
            "ZoneId": "usw2-az2",
            "AvailabilityZone": "us-west-2a"
        }
    ],
    "NextToken": "SomeEncryptedToken"
}
```

------
#### [ PowerShell ]

**インスタンスファミリーまたはインスタンスタイプを使用するインスタンスのトポロジを記述するには**  
[Get-EC2InstanceTopology](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2InstanceTopology.html) コマンドレットを使用します。

```
Get-EC2InstanceTopology `
    -Filter @{Name="instance-type"; Values="p4d*", "trn1n.32xlarge"}
```

------

## 例 4: DescribeInstanceTopology - ゾーン ID フィルター
<a name="instance-topology-ex4"></a>

`zone-id` フィルターを使用して、アベイラビリティーゾーンまたはローカルゾーンでフィルタリングできます。アベイラビリティーゾーンフィルターとローカルゾーンフィルターを組み合わせることもできます。

### 例 4a — アベイラビリティーゾーンフィルター
<a name="instance-topology-ex4a"></a>

------
#### [ AWS CLI ]

**特定のアベイラビリティーゾーンでインスタンスのトポロジーを記述するには**  
`zone-id` フィルターとともに [https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instance-topology.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instance-topology.html) CLI コマンドを使用します。出力には、指定したアベイラビリティーゾーンのインスタンスのみが含まれます。

```
aws ec2 describe-instance-topology \
    --region us-east-1 \
    --filters Name=zone-id,Values=use1-az1
```

以下は出力の例です。

```
{
    "Instances": [
        {
            "InstanceId": "i-2222222222example",
            "InstanceType": "trn1n.32xlarge",
            "NetworkNodes": [
                "nn-1111111111example",
                "nn-2222222222example",
                "nn-3214313214example"
            ],
            "CapacityBlockId": "null",
            "ZoneId": "use1-az1",
            "AvailabilityZone": "us-east-1a"
        }
    ],
    "NextToken": "SomeEncryptedToken"
}
```

------
#### [ PowerShell ]

**特定のアベイラビリティーゾーンでインスタンスのトポロジーを記述するには**  
[Get-EC2InstanceTopology](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2InstanceTopology.html) コマンドレットを使用します。

```
Get-EC2InstanceTopology `
    -Filter @{Name="zone-id"; Values="use1-az1"}
```

------

### 例 4b — ローカルゾーンフィルター
<a name="instance-topology-ex4b"></a>

------
#### [ AWS CLI ]

**特定のローカルゾーンでインスタンスのトポロジーを記述するには**  
`zone-id` フィルターとともに [https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instance-topology.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instance-topology.html) CLI コマンドを使用します。出力には、指定したローカルゾーンのインスタンスのみが含まれます。

```
aws ec2 describe-instance-topology \
    --region us-east-1 \
    --filters Name=zone-id,Values=use1-atl2-az1
```

以下は出力の例です。

```
{
    "Instances": [
        {
            "InstanceId": "i-1111111111example",
            "InstanceType": "p4d.24xlarge",
            "GroupName": "ML-group",
            "NetworkNodes": [
                "nn-1111111111example",
                "nn-2222222222example",
                "nn-3333333333example"
            ],
            "CapacityBlockId": "null",
            "ZoneId": "use1-atl2-az1",
            "AvailabilityZone": "us-east-1-atl-2a"
        }
    ],
    "NextToken": "SomeEncryptedToken"
}
```

------
#### [ PowerShell ]

**特定のローカルゾーンでインスタンスのトポロジーを記述するには**  
[Get-EC2InstanceTopology](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2InstanceTopology.html) コマンドレットを使用します。

```
Get-EC2InstanceTopology `
    -Filter @{Name="zone-id"; Values="use1-atl2-az1"}
```

------

### 例 4c — アベイラビリティーゾーンフィルターとローカルゾーンフィルターの組み合わせ
<a name="instance-topology-ex4c"></a>

------
#### [ AWS CLI ]

**特定のゾーンにあるインスタンスのトポロジーを記述するには**  
`zone-id` フィルターとともに [https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instance-topology.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instance-topology.html) CLI コマンドを使用します。出力には、指定したゾーンのいずれかにあるインスタンスのみが含まれます。

```
aws ec2 describe-instance-topology \
    --region us-east-1 \
    --filters Name=zone-id,Values=use1-az1,use1-atl2-az1
```

以下は出力の例です。

```
{
    "Instances": [
        {
            "InstanceId": "i-1111111111example",
            "InstanceType": "p4d.24xlarge",
            "GroupName": "ML-group",
            "NetworkNodes": [
                "nn-1111111111example",
                "nn-2222222222example",
                "nn-3333333333example"
            ],
            "CapacityBlockId": "null",
            "ZoneId": "use1-atl2-az1",
            "AvailabilityZone": "us-east-1-atl-2a"
        },
        {
            "InstanceId": "i-2222222222example",
            "InstanceType": "trn1n.32xlarge",
            "NetworkNodes": [
                "nn-1111111111example",
                "nn-2222222222example",
                "nn-3214313214example"
            ],
            "CapacityBlockId": "null",
            "ZoneId": "use1-az1",
            "AvailabilityZone": "us-east-1a"
        }
    ],
    "NextToken": "SomeEncryptedToken"
}
```

------
#### [ PowerShell ]

**特定のゾーンにあるインスタンスのトポロジーを記述するには**  
[Get-EC2InstanceTopology](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2InstanceTopology.html) コマンドレットを使用します。

```
Get-EC2InstanceTopology `
    -Filter @{Name="zone-id"; Values="use1-az1", "use1-atl2-az1"}
```

------

## 例 5: DescribeInstanceTopology - インスタンスタイプとゾーン ID フィルター
<a name="instance-topology-ex5"></a>

1 つのコマンドで複数のフィルターを組み合わせることができます。

------
#### [ AWS CLI ]

**特定のインスタンスタイプ、インスタンスファミリー、ゾーンを使用するインスタンスのトポロジーを記述するには**  
`instance-type` および `zone-id` フィルターとともに [https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instance-topology.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instance-topology.html) CLI コマンドを使用します。レスポンスには、指定したインスタンスタイプのいずれかを使用し、指定したゾーンのいずれかにあるインスタンスが含まれます。

```
aws ec2 describe-instance-topology \
    --region us-east-1 \
    --filters "Name=instance-type,Values=p4d*,trn1n.32xlarge" \
              "Name=zone-id,Values=use1-az1,use1-atl2-az1"
```

以下は出力の例です。

```
{
    "Instances": [
        {
            "InstanceId": "i-1111111111example",
            "InstanceType": "p4d.24xlarge",
            "GroupName": "ML-group",
            "NetworkNodes": [
                "nn-1111111111example",
                "nn-2222222222example",
                "nn-3333333333example"
            ],
            "CapacityBlockId": "null",
            "ZoneId": "use1-atl2-az1",
            "AvailabilityZone": "us-east-1-atl-2a"
        },
        {
            "InstanceId": "i-2222222222example",
            "InstanceType": "trn1n.32xlarge",
            "NetworkNodes": [
                "nn-1111111111example",
                "nn-2222222222example",
                "nn-3214313214example"
            ],
            "CapacityBlockId": "null",
            "ZoneId": "use1-az1",
            "AvailabilityZone": "us-east-1a"
        }
    ],
    "NextToken": "SomeEncryptedToken"
}
```

------
#### [ PowerShell ]

**特定のインスタンスタイプ、インスタンスファミリー、ゾーンを使用するインスタンスのトポロジーを記述するには**  
[Get-EC2InstanceTopology](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2InstanceTopology.html) コマンドレットを使用します。

```
Get-EC2InstanceTopology `
    -Filter @{Name="instance-type"; Values="p4d*", "trn1n.32xlarge"} `
            @{Name="zone-id"; Values="use1-az1", "use1-atl2-az1"}
```

------

## 例 6: DescribeCapacityReservationTopology - キャパシティ予約 ID
<a name="instance-topology-ex6"></a>

------
#### [ AWS CLI ]

**特定のキャパシティ予約のトポロジーを記述するには**  
`capacity-reservation-id` パラメータを指定して、[https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-capacity-reservation-topology.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-capacity-reservation-topology.html) コマンドを使用します。出力には、指定したキャパシティ予約 ID に一致するキャパシティ予約のみが含まれます。

```
aws ec2 describe-capacity-reservation-topology \
    --region us-east-1 \
    --capacity-reservation-id cr-1111111111example cr-2222222222example
```

以下は出力の例です。

```
{
    "CapacityReservations": [
        {
            "CapacityReservationId": "cr-1111111111example",
            "CapacityBlockId": "null",
            "State": "active",
            "InstanceType": "p5.48xlarge",
            "NetworkNodes": [
                "nn-1111111111example",
                "nn-2222222222example"
            ],
            "AvailabilityZone": "us-east-1a"
        },
        {
            "CapacityReservationId": "cr-2222222222example",
            "CapacityBlockId": "null",
            "State": "active",
            "InstanceType": "p5en.48xlarge",
            "NetworkNodes": [
                "nn-1111111111example",
                "nn-2222222222example"
            ],
            "AvailabilityZone": "us-east-1a"
        }
    ],
    "NextToken": "SomeEncryptedToken"
}
```

------
#### [ PowerShell ]

**特定のキャパシティ予約のトポロジーを記述するには**  
[Get-EC2CapacityReservationTopology](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2CapacityReservationTopology.html) コマンドレットを使用します。

```
Get-EC2CapacityReservationTopology `
    -CapacityReservationId cr-1111111111example cr-2222222222example
```

------

## 例 7: DescribeCapacityReservationTopology - インスタンスタイプフィルター
<a name="instance-topology-ex7"></a>

指定したインスタンスタイプ (完全一致)、またはインスタンスファミリーでフィルタリング (ワイルドカードを使用) できます。指定したインスタンスタイプフィルターとインスタンスファミリーのフィルターを組み合わせることもできます。

------
#### [ AWS CLI ]

**特定のインスタンスタイプのキャパシティ予約のトポロジーを記述するには**  
`instance-type` フィルターとともに [https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-capacity-reservation-topology.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-capacity-reservation-topology.html) CLI コマンドを使用します。レスポンスには、指定したインスタンスタイプのインスタンスがすべて含まれます。

```
aws ec2 describe-capacity-reservation-topology \
    --region us-east-1 \
    --filters Name=instance-type,Values=p5en.48xlarge
```

以下は出力の例です。

```
{
    "CapacityReservations": [
        {
            "CapacityReservationId": "cr-2222222222example",
            "CapacityBlockId": "null",
            "State": "active",
            "InstanceType": "p5en.48xlarge",
            "NetworkNodes": [
                "nn-1111111111example",
                "nn-2222222222example"
            ],
            "AvailabilityZone": "us-east-1a"
        }
    ],
    "NextToken": "SomeEncryptedToken"
}
```

------
#### [ PowerShell ]

**特定のインスタンスタイプのキャパシティ予約のトポロジーを記述するには**  
[Get-EC2CapacityReservationTopology](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2CapacityReservationTopology.html) コマンドレットを使用します。

```
Get-EC2CapacityReservationTopology `
    -Filter @{Name="instance-type"; Values="p5en.48xlarge"}
```

------

# Amazon EC2 インスタンスのプレイスメントグループ
<a name="placement-groups"></a>

ワークロードのニーズを対応するために、相互に依存する EC2 インスタンスのグループをプレイスメントグループ内に作成して、そのプレイスメントに影響を与えることができます。

ワークロードのタイプに応じて、以下のいずれかのプレイスメント戦略によりプレイスメントグループを作成できます。
+ **[クラスター]** – アベイラビリティーゾーン内でインスタンスをまとめます。この戦略により、ワークロードは、ハイパフォーマンスコンピューティング (HPC) アプリケーションで典型的な緊密に組み合わされたノード間通信に必要な低レイテンシーネットワークパフォーマンスを実現できます。
+ **パーティション** – インスタンスを複数の論理パーティションに分散させ、1 つのパーティション内のインスタンスのグループが基盤となるハードウェアを別のパーティション内のインスタンスのグループと共有しないようにします。この戦略は、Hadoop、Cassandra、Kafka などの大規模な分散および複製ワークロードで一般的に使用されます。
+ **スプレッド** 相関性のエラーを減らすために、少数のインスタンスを基盤となるハードウェア全体に厳密に配置します。

プレイスメントグループは任意で選択します。インスタンスをリプレイスメントグループに作成しない場合、EC2 は、関連する障害を最小限に抑えるために、すべてのインスタンスが基盤となるハードウェア全体に分散されるような方法でインスタンスを配置しようとします。

**料金**  
プレイスメントグループを作成するための料金は発生しません。

**ルールと制限**

プレイスメントグループを使用する前に、次のルールに注意してください｡
+ インスタンスは一度に 1 つのプレイスメントグループに配置することができます。1 つのインスタンスを複数のプレイスメントグループに配置することはできません。
+ プレイスメントグループをマージすることはできません。
+ [オンデマンドキャパシティ予約](ec2-capacity-reservations.md#capacity-reservations-limits)および[ゾーンリザーブドインスタンス](reserved-instances-scope.md)を使用すると、アベイラビリティーゾーンの EC2 インスタンスに対してキャパシティを予約できます。インスタンスを起動するときに、インスタンス属性がオンデマンドキャパシティ予約またはゾーンリザーブドインスタンスで指定された属性と一致する場合、リザーブドキャパシティはインスタンスによって自動的に使用されます。これは、プレイスメントグループにインスタンスを起動する場合にも当てはまります。
+ Dedicated Hosts をプレイスメントグループで起動することはできません。
+ プレイスメントグループの中断時に停止または休止するように設定されたスポットインスタンスは起動できません。

**Topics**
+ [プレイスメント戦略](placement-strategies.md)
+ [プレイスメントグループの作成](create-placement-group.md)
+ [インスタンスの配置を変更する](change-instance-placement-group.md)
+ [プレイスメントグループの削除](delete-placement-group.md)
+ [共有プレイスメントグループ](share-placement-group.md)
+ [AWS Outposts のプレイスメントグループ](placement-groups-outpost.md)

# プレイスメントグループのプレイスメント戦略
<a name="placement-strategies"></a>

EC2 インスタンスのプレイスメントグループは、次のいずれかのプレイスメント戦略を使用して作成できます。

**Topics**
+ [クラスタープレイスメントグループ](#placement-groups-cluster)
+ [パーティションプレイスメントグループ](#placement-groups-partition)
+ [スプレッドプレイスメントグループ](#placement-groups-spread)

## クラスタープレイスメントグループ
<a name="placement-groups-cluster"></a>

クラスタープレイスメントグループは、単一のアベイラビリティーゾーン内のインスタンスを論理的にグループ化したものです。インスタンスは単一ラックに分離されるものではありません。クラスタープレイスメントグループは、同じリージョン内の複数のピア接続 VPC にまたがることができます。同じクラスタープレイスメントグループ内のインスタンスは、TCP/IP トラフィックのフローあたりのスループット上限が高くなり、ネットワークの二分帯域幅の広い同じセグメントに配置されます。

次の図は、クラスタープレイスメントグループに配置されたインスタンスを示しています。

![\[クラスタープレイスメントグループ。\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/placement-group-cluster.png)


低いネットワークレイテンシー、高いネットワークスループット、またはその両方からメリットを受けるアプリケーションの場合は、クラスタープレイスメントグループの使用をお勧めします。また、ネットワークトラフィックの大部分がグループ内のインスタンス間で発生している場合にもお勧めします。プレイスメントグループで、最も低いレイテンシーと最も高いネットワークパフォーマンス (1 秒あたりパケット数) を実現するためには、拡張ネットワーキングをサポートするインスタンスタイプを選択します。詳細については、[拡張ネットワーキング](enhanced-networking.md)を参照してください。

インスタンスは、次の方法で起動することをお勧めします。
+ プレイスメントグループ内で必要な数のインスタンスを起動するには、1 つの起動リクエストを使用します。
+ プレイスメントグループ内のすべてのインスタンスに同じインスタンスタイプを使用します。

後でプレイスメントグループにさらにインスタンスを追加しようとした場合、またはプレイスメントグループ内で複数のインスタンスタイプを起動しようとした場合、容量不足エラーが発生する可能性が高くなります。

プレイスメントグループ内のインスタンスを停止して再起動しても、そのインスタンスは同じプレイスメントグループ内で実行されます。ただし、インスタンスに対して十分な容量がない場合、起動は失敗します。

既にインスタンスを実行中のプレイスメントグループ内のインスタンスを起動するときに容量エラーを受け取った場合は、プレイスメントグループ内のすべてのインスタンスを停止して開始し、もう一度起動を試みてください。インスタンスを起動すると、すべてのリクエストしたインスタンスに応じた容量があるハードウェアにインスタンスが移行される場合があります。

**ルールと制限**

クラスタープレイスメントグループには、以下のルールが適用されます。
+ 以下のインスタンスタイプがサポートされています。
  + 現行世代のインスタンス。[バーストパフォーマンス](burstable-performance-instances.md)インスタンス (T2 など)、[Mac1 インスタンス](ec2-mac-instances.md)、M7i-flex インスタンスを除く。
  + 以下は旧世代のインスタンスです: A1、C3、C4、I2、M4、R3、R4。
+ クラスタープレイスメントグループを、複数のアベイラビリティーゾーンで設定することはできません。
+ クラスタープレイスメントグループの 2 つのインスタンス間のトラフィックの最大ネットワークスループット速度は、2 つのインスタンスのうち遅い方に制限されます。高スループットの要件があるアプリケーションの場合、要件に適合するネットワーク接続を備えたインスタンスタイプを選択します。
+ 拡張ネットワーキングに対して有効になっているインスタンスには、以下のルールが適用されます。
  + クラスタープレイスメントグループ内のインスタンス間では、シングルフロートラフィックに最大 10 Gbps を使用できます。クラスタープレイスメントグループ内にないインスタンスは、シングルフロートラフィックに最大 5 Gbps を使用できます。
  + 同じリージョン内でのインスタンスと Amazon S3 バケットとの間では、パブリック IP アドレス空間または VPC エンドポイントを介したトラフィックに、使用可能なすべてのインスタンスの集計帯域幅を使用できます。
+ 複数のインスタンスタイプをクラスタープレイスメントグループに起動できます。ただし、これにより起動に成功するために必要な容量が使用可能になる可能性が低くなります。クラスタープレイスメントグループ内ですべてのインスタンスで同じインスタンスタイプを使用することをお勧めします。
+ [クラスタープレイスメントグループ内にオンデマンドキャパシティ予約](cr-cpg.md)を作成することで、クラスタープレイスメントグループでキャパシティを明示的に予約することをお勧めします。ゾーンリザーブドインスタンスを使用してキャパシティを予約することはできないので注意してください。これは、ゾーンリザーブドインスタンスでは、プレイスメントグループでキャパシティを明示的に予約できないためです。
+ インターネットへのネットワークトラフィックとオンプレミスリソースへの Direct Connect 接続は、クラスタープレイスメントグループに対して 5 Gbps に制限されます。

## パーティションプレイスメントグループ
<a name="placement-groups-partition"></a>

パーティションプレイスメントグループは、アプリケーションに関連するハードウェア障害の頻度を軽減するために役立ちます。パーティションプレイスメントグループを使用する場合、Amazon EC2 は各グループをパーティションと呼ばれる論理的なセグメントに分割します。Amazon EC2 では、プレイスメントグループ内の各パーティションにそれぞれ一連のラックがあります。各ラックには独自のネットワークおよび電源があります。プレイスメントグループ内のパーティションどうしが同じラックを共有することはありません。これにより、アプリケーション内でのハードウェア障害による影響を隔離できます。

次のイメージは、単一のアベイラビリティーゾーン内のパーティションプレイスメントグループのシンプルな描写を示しています。ここでは、3 つのパーティション (**パーティション 1**、**パーティション 2**、**パーティション 3**) があるパーティションプレイスメントグループに配置されたインスタンスを示しています。各パーティションは複数のインスタンスで構成されています。各パーティション内のインスタンスは、他のパーティション内のラックを共有しないため、単一のハードウェア障害の影響は関連付けられたパーティションのみに留まります。

![\[3 つのパーティションがあるパーティションプレイスメントグループ。\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/placement-group-partition.png)


パーティションプレイスメントグループは、HDFS、HBase、Cassandra などの大規模な分散および複製ワークロードを異なるラック間でデプロイするために使用できます。インスタンスをパーティションプレイスメントグループに起動すると、Amazon EC2 は、指定したパーティション数全体にインスタンスを均等に分散しようとします。インスタンスを特定のパーティションに起動して、インスタンスの配置場所をより細かく制御することもできます。

パーティションプレイスメントグループは、同じリージョン内の複数のアベイラビリティーゾーンにパーティションを持つことができます。パーティションプレイスメントグループは、アベイラビリティーゾーンごとに最大 7 つのパーティションを持つことができます。パーティションプレイスメントグループで起動できるインスタンス数の制限は、アカウントの制限のみです。

また、パーティションプレイスメントグループでは各パーティションが可視化されるため、どのインスタンスがどのパーティションにあるかを確認できます。この情報は、HDFS、HBase、Cassandra などトポロジー対応アプリケーションと共有できます。これらのアプリケーションはこの情報を利用してインテリジェントなデータレプリケーションの決定を行い、データの可用性と耐久性を向上します。

パーティションプレイスメントグループでインスタンスを開始または起動し、リクエストを実行するための固有のハードウェアが不足している場合、そのリクエストは失敗します。Amazon EC2 では、時間の経過とともに、より明確なハードウェアを利用できるようになるため、後でリクエストを再試行できます。

**ルールと制限**

パーティションプレイスメントグループには、以下のルールが適用されます。
+ パーティションプレイスメントグループは、アベイラビリティーゾーンごとに最大 7 つのパーティションをサポートします。パーティションプレイスメントグループで起動できるインスタンス数の制限は、アカウントの制限のみです。
+ インスタンスをパーティションプレイスメントグループに起動すると、Amazon EC2 は、すべてのパーティションにインスタンスを均等に分散しようとします。Amazon EC2 では、すべてのパーティションにインスタンスが均等に分散されるとは限りません。
+ ハードウェア専有インスタンス を持つパーティションプレイスメントグループは、最大 2 つのパーティションを持つことができます。
+ [Capacity Reservations] (キャパシティー予約) を使用して、パーティションプレイスメントグループでキャパシティを予約することはできません。

## スプレッドプレイスメントグループ
<a name="placement-groups-spread"></a>

スプレッドプレイスメントグループは、それぞれ異なるハードウェアに配置されるインスタンスのグループです。

スプレッドプレイスメントグループは、少数の重要なインスタンスが互いに分離して保持される必要があるアプリケーションに推奨されます。スプレッドレベルのプレイスメントグループでインスタンスを起動すると、インスタンスが同じ機器を共有するときに発生し得る同時障害のリスクが軽減されます。スプレッドレベルのプレイスメントグループは、異なるハードウェアへのアクセスを提供するため、長時間のインスタンスタイプの混合やインスタンスの起動に適しています。

スプレッドプレイスメントグループでインスタンスを開始または起動し、リクエストを実行するための固有のハードウェアが不足している場合、そのリクエストは失敗します。Amazon EC2 では、時間の経過とともに、より明確なハードウェアを利用できるようになるため、後でリクエストを再試行できます。プレイスメントグループは、ラックまたはホスト全体でインスタンスを分散できます。ラックレベルのスプレッドプレイスメントグループは、AWS リージョンおよび AWS Outposts で使用できます。ホストレベルのスプレッドプレイスメントグループは、AWS Outposts を使用する場合にのみ使用できます。

**ラックレベルのスプレッドプレイスメントグループ**  
次の図は、1 つのアベイラビリティーゾーン内の、スプレッドプレイスメントグループに配置された 7 つのインスタンスを示しています。7 つのインスタンスは、7 つの異なるラックに配置され、各ラックは独自のネットワークおよび電源を備えています。

![\[スプレッドプレイスメントグループ。\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/placement-group-spread.png)


ラックレベルのスプレッドプレイスメントグループは、同じリージョン内の複数のアベイラビリティーゾーンに分散できます。リージョンでは、ラックレベルのスプレッドプレイスメントグループについては、グループごとのアベイラビリティーゾーンごとに、最大 7 つの実行中のインスタンスを持つことができます。Outposts では、ラックレベルのスプレッドプレイスメントグループは、Outpost デプロイメント内のラックと同じ数のインスタンスを保持できます。

**ホストレベルのスプレッドプレイスメントグループ**  
ホストレベルのスプレッドプレイスメントグループは、AWS Outposts を使用する場合にのみ使用できます。ホストスプレッドレベル配置グループは、Outpost デプロイメント内のホストと同じ数のインスタンスを保持できます。詳細については、「[AWS Outposts のプレイスメントグループ](placement-groups-outpost.md)」を参照してください。

**ルールと制限**

スプレッドプレイスメントグループには、以下のルールが適用されます。
+ ラックスプレッドプレイスメントグループは、アベイラビリティーゾーンごとに最大 7 つの実行インスタンスをサポートします。例えば、3 つのアベイラビリティーゾーンがあるリージョンでは、グループ内で合計 21 個のインスタンスを実行でき、各アベイラビリティーゾーンに 7 個のインスタンスがあります。同じアベイラビリティーゾーンと同じスプレッドプレイスメントグループで 8 番目のインスタンスを開始しようとすると、インスタンスは起動しません。アベイラビリティーゾーンに 7 個を超えるインスタンスが必要な場合は、複数のスプレッドプレイスメントグループを使用することをお勧めします。複数のプレイスメントグループに分散しても、グループ間でインスタンスが分散されるとは限りませんが、グループごとの分散が確実になされるようにできるため、特定の障害クラスからの影響は制限されます。
+ ハードウェア専有インスタンス では、スプレッドプレイスメントグループはサポートされていません。
+ ホストレベルのスプレッドプレイスメントグループは、AWS Outposts のプレイスメントグループでのみサポートされます。ホストレベルのスプレッドプレイスメントグループは、Outpost デプロイメント内のホストと同じ数のインスタンスを保持できます。
+ リージョンでは、ラックレベルのスプレッドプレイスメントグループについては、グループごとのアベイラビリティーゾーンごとに、最大 7 つの実行中のインスタンスを持つことができます。AWS Outposts では、ラックレベルのスプレッドプレイスメントグループは、Outpost デプロイメント内のラックと同じ数のインスタンスを保持できます。
+ [Capacity Reservations] (キャパシティー予約) を使用して、スプレッドプレイスメントグループでキャパシティを予約することはできません。

# EC2 インスタンスのプレイスメントグループを作成する
<a name="create-placement-group"></a>

プレイスメントグループを使用して、インスタンス同士の相対的な配置を制御できます。プレイスメントグループを作成したら、そのプレイスメントグループ内でインスタンスを起動できます。

**制限**  
リージョンあたり最大 500 個のプレイスメントグループを作成できます。

------
#### [ Console ]

**プレイスメントグループを作成するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、[**Placement Groups**] を選択します。

1. **[プレイスメントグループを作成]** を選択します。

1. グループの名前を指定します。

1. グループのプレイスメント戦略を、**[クラスター]**、**[スプレッド]**、**[パーティション]** から選択します。

   **[スプレッド]** を選択した場合は、スプレッドレベルとして **[ラック]** または **[ホスト]** を選択する必要があります。

   **[パーティション]** を選択した場合は、グループのパーティション数を入力する必要があります。

1. (オプション) タグを追加するには、**[新しいタグを追加]** を選択し、キーと値を入力します。

1. **[グループの作成]** を選択してください。

------
#### [ AWS CLI ]

[create-placement-group](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-placement-group.html) コマンドを使用します。

**クラスタープレイスメントグループを作成するには**  
次の例では、`cluster` プレイスメント戦略を使用するプレイスメントグループを作成し、キー `purpose` と値 `production` を持つタグを適用します。

```
aws ec2 create-placement-group \
    --group-name my-cluster \
    --strategy cluster \
    --tag-specifications 'ResourceType=placement-group,Tags={Key=purpose,Value=production}'
```

**パーティションプレイスメントグループを作成するには**  
次の例では、`partition` プレイスメント戦略を使用するプレイスメントグループを作成し、`--partition-count` パラメータを使用して 5 つのパーティションを指定します。

```
aws ec2 create-placement-group \
    --group-name HDFS-Group-A \
    --strategy partition \
    --partition-count 5
```

------
#### [ PowerShell ]

[New-EC2PlacementGroup](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2PlacementGroup.html) コマンドレットを使用します。

**クラスタープレイスメントグループを作成するには**  
以下の例では、クラスタープレイスメントグループを作成しています。

```
New-EC2PlacementGroup `
    -GroupName my-placement-group `
    -Strategy cluster
```

**パーティションプレイスメントグループを作成するには**  
以下の例では、パーティションプレイスメントグループを作成しています。

```
New-EC2PlacementGroup `
    -GroupName my-placement-group `
    -Strategy partition `
    -PartitionCount 5
```

------

# EC2 インスタンスの配置を変更する
<a name="change-instance-placement-group"></a>

インスタンスのプレイスメントグループは、次の方法で変更できます。
+ プレイスメントグループにインスタンスを追加する
+ プレイスメントグループ間でインスタンスを移動する
+ プレイスメントグループからインスタンスを削除する

**要件**  
インスタンスのプレイスメントグループを変更する前に、インスタンスを `stopped` 状態にする必要があります。

------
#### [ Console ]

**インスタンスの配置を変更するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、[**インスタンス**] を選択してください。

1. インスタンスを選択します。

1. [**Actions (アクション)**]、[**Instance settings (インスタンスの設定)**]、[**Modify instance placement (インスタンスの配置の変更)**] の順に選択します。

1. **[プレイスメントグループ]** で、次のいずれかを実行します。
   + プレイスメントグループにインスタンスを追加するには、プレイスメントグループを選択します。
   + プレイスメントグループ間でインスタンスを移動するには、プレイスメントグループを選択します。
   + プレイスメントグループからインスタンスを削除するには、**[なし]** を選択します。

1. **[保存]** を選択します。

------
#### [ AWS CLI ]

**プレイスメントグループにインスタンスを移動するには**  
以下の [modify-instance-placement](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-placement.html) コマンドを使用します。

```
aws ec2 modify-instance-placement \
    --instance-id i-0123a456700123456 \
    --group-name MySpreadGroup
```

**プレイスメントグループからインスタンスを削除するには**  
以下の [modify-instance-placement](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-placement.html) コマンドを使用します。プレイスメントグループ名に空の文字列を指定すると、現在のプレイスメントグループからインスタンスが削除されます。

```
aws ec2 modify-instance-placement \
    --instance-id i-0123a456700123456 \
    --group-name ""
```

------
#### [ PowerShell ]

**プレイスメントグループにインスタンスを移動するには**  
[Edit-EC2InstancePlacement](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstancePlacement.html) cmdlet を使用し、プレイスメントグループの名前を指定します。

```
Edit-EC2InstancePlacement `
    -InstanceId i-0123a456700123456 `
    -GroupName MySpreadGroup
```

**プレイスメントグループからインスタンスを削除するには**  
[Edit-EC2InstancePlacement](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstancePlacement.html) cmdlet を使用し、プレイスメントグループの名前に空の文字列を指定します。

```
Edit-EC2InstancePlacement `
    -InstanceId i-0123a456700123456 `
    -GroupName ""
```

------

# プレイスメントグループの削除
<a name="delete-placement-group"></a>

プレイスメントグループを交換する必要がある場合、または不要になった場合は､そのプレイスメントグループを削除できます。削除するプレイスメントグループにはインスタンスが含まれていないことが必要です。インスタンスを終了し、そのインスタンスを別のプレイスメントグループに移動するか、プレイスメントグループから削除することができます。

------
#### [ Console ]

**プレイスメントグループを削除するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、[**Placement Groups**] を選択します。

1. プレイスメントグループを選択し、[**Actions (アクション)**]、[**Delete (削除)**] の順に選択します。

1. 確認を求められたら、**Delete**と入力し、[**削除**] を選択します。

------
#### [ AWS CLI ]

**プレイスメントグループを削除するには**  
[delete-placement-group](https://docs.aws.amazon.com/cli/latest/reference/ec2/delete-placement-group.html) コマンドを使用します。

```
aws ec2 delete-placement-group --group-name my-cluster
```

------
#### [ PowerShell ]

**プレイスメントグループを削除するには**  
[Remove-EC2PlacementGroup](https://docs.aws.amazon.com/powershell/latest/reference/items/Remove-EC2PlacementGroup.html) コマンドレットを使用します。

```
Remove-EC2PlacementGroup -GroupName my-cluster
```

------

# 共有プレイスメントグループ
<a name="share-placement-group"></a>

プレイスメントグループを共有すると、別々の AWS アカウントが所有し、相互に依存しているインスタンスの配置に影響を与えることができます。所有者は、プレイスメントグループを複数の AWS アカウント 間で共有したり、自分の組織内で共有したりできます。参加者は、自分のアカウントと共有されているプレイスメントグループでインスタンスを起動できます。

プレイスメントグループの所有者は、プレイスメントグループを次の人と共有できます。
+ 組織内または組織外の特定の AWS アカウント
+  組織内の組織単位
+  組織全体

VPC ピアリングを使用して別の AWS アカウントが所有するインスタンスを接続することで、共有クラスタープレイスメントグループが提供するレイテンシーの利点を最大限に活用できます。

**Topics**
+ [ルールと制限](#share-placement-group-limitations)
+ [必要なアクセス許可](#share-placement-group-permissions)
+ [アベイラビリティーゾーン間での共有](#share-placement-group-sharing-azs)
+ [プレイスメントグループの共有](#share-placement-group-share)
+ [プレイスメントグループの共有解除](#share-placement-group-unshare)

## ルールと制限
<a name="share-placement-group-limitations"></a>

プレイスメントグループを共有する場合、またはプレイスメントグループが自分と共有される場合は、次のルールと制限が適用されます。
+ プレイメントグループを共有するには、AWS アカウント内で所有している必要があります。自分に共有されているプレイスメントグループは共有できません。
+ パーティションまたはスプレッドプレイスメントグループを共有しても、プレイスメントグループの制限は変わりません。共有パーティションプレイスメントグループは、アベイラビリティーゾーンごとに最大 7 つのパーティションをサポートし、共有スプレッドプレイスメントグループは、アベイラビリティーゾーンごとに最大 7 つの実行インスタンスをサポートします。
+ ユーザーの組織や組織内の組織単位とプレイスメントグループを共有するには、AWS Organizations との共有を有効にする必要があります。詳細については、「[AWS リソースの共有](https://docs.aws.amazon.com/ram/latest/userguide/getting-started-sharing.html)」を参照してください。
+ AWS マネジメントコンソールを使用してインスタンスを起動する場合は、自分と共有されていたプレイスメントグループを選択できます。AWS CLI を使用してインスタンスを起動する場合は、名前ではなく ID で共有プレイスメントグループを指定する必要があります。プレイスメントグループの名前は、ユーザーが、共有プレイスメントグループの所有者である場合にのみ使用できます。
+ 共有プレイスメントグループで所有するインスタンスを管理する責任はお客様にあります。
+ 共有プレイスメントグループに関連付けられているが、自分が所有していないインスタンスやキャパシティ予約を表示または変更することはできません。
+ プレイスメントグループの Amazon リソースネーム (ARN) には、プレイスメントグループを所有しているアカウントの ID が含まれています。プレイスメントグループ ARN のアカウント ID 部分を使用することで、自分に共有されているプレイスメントグループの所有者を特定することができます。

## 必要なアクセス許可
<a name="share-placement-group-permissions"></a>

プレイスメントグループを共有するには、ユーザーに次のアクションのアクセス許可が必要です。
+ `ec2:PutResourcePolicy`
+ `ec2:DeleteResourcePolicy`

## アベイラビリティーゾーン間での共有
<a name="share-placement-group-sharing-azs"></a>

リソースがリージョンの複数のアベイラビリティーゾーンに分散されるようにするために、アベイラビリティーゾーンは各 アカウントの名前に個別にマッピングされます。このため、アカウントが異なると、アベイラビリティーゾーンの命名方法が異なる場合があります。例えば、`us-east-1a` アカウントのアベイラビリティーゾーン AWS の場所は、別の `us-east-1a` アカウントのアベイラビリティーゾーン AWS の場所と異なる可能性があります。

自己のアカウントを基準にして専有ホストの場所を指定するには、アベイラビリティーゾーン ID (AZ ID) を使用する必要があります。AZ ID は、すべての AWS アカウントで同じアベイラビリティーゾーンを一貫して示すための一意の識別子です。例えば、`use1-az1` は `us-east-1` リージョンのアベイラビリティーゾーン ID であり、すべての AWS アカウントで同じ場所を示します。詳細については、「[AZ ID](https://docs.aws.amazon.com/global-infrastructure/latest/regions/az-ids.html)」を参照してください。

## プレイスメントグループの共有
<a name="share-placement-group-share"></a>

プレイスメントグループを共有するには、リソース共有に追加する必要があります。リソース共有とは、AWS RAM アカウント間で自身のリソースを共有するための AWS リソースです。リソース共有では、共有対象のリソースと、共有先のコンシューマーを指定します。

AWS Organizations の組織に属しており、組織内での共有が有効化されている場合、組織内のコンシューマーに対し、共有プレイスメントグループへのアクセス権が付与されます。

プレイスメントグループが、組織外の AWS アカウントと共有されている場合、AWS アカウント所有者はリソース共有に参加するための招待状を受け取ります。招待を承諾すると、共有プレイスメントグループにアクセスできます。

プレイスメントグループは、AWS Resource Access Manager を使用して、AWS アカウント間で共有できます。詳細については、「AWS RAM ユーザーガイド」の「[Creating a resource share](https://docs.aws.amazon.com/ram/latest/userguide/working-with-sharing-create.html)」を参照してください。

## プレイスメントグループの共有解除
<a name="share-placement-group-unshare"></a>

プレイスメントグループの所有者は、共有プレイスメントグループをいつでも共有解除することができます。共有プレイスメントグループの共有を解除すると、次の変更が発生します。
+ プレイスメントグループを共有していた AWS アカウントでは、インスタンスを起動したり、容量を予約したりできなくなります。
+ 共有プレイスメントグループで実行されているインスタンスはすべて、プレイスメントグループとの関連付けが解除されますが、AWS アカウントでは引き続き実行されます。
+ 共有プレイスメントグループのキャパシティ予約はプレイスメントグループとの関連付けが解除されますが、AWS アカウントで引き続き使用できます。

詳細については、「AWS RAM ユーザーガイド」の「[Deleting a resource share](https://docs.aws.amazon.com/ram/latest/userguide/working-with-sharing-delete.html)」を参照してください。

# AWS Outposts のプレイスメントグループ
<a name="placement-groups-outpost"></a>

AWS Outposts は、AWS のインフラストラクチャ、サービス、API、ツールをお客様のオンプレミスまで拡張するフル管理されたサービスです。AWS は、AWS Outposts 管理されたインフラストラクチャへのローカルアクセスを提供することで、AWS リージョンと同じプログラミングインターフェイスを使用してオンプレミスでアプリケーションを構築して実行できるようにします。同時に、コンピューティングとストレージのローカルリソースを使用して、レイテンシーを短縮し、ローカルのデータ処理ニーズに対応します。

Outpost とはお客様のサイトにデプロイされる AWS のコンピューティングおよびストレージキャパシティーのプールです。AWS はAWS リージョンの一部としてこのキャパシティーを運営、監視、管理します。

ユーザーは、自分のアカウントで作成した Outposts にプレイスメントグループを作成できます。これにより、自分のサイトにある Outpost において、基盤となるハードウェア全体でインスタンスを分散できるようになります。通常のアベイラビリティーゾーンでプレイスメントグループを作成して使用するのと同じ方法で、Outposts でプレイスメントグループを作成して使用します。Outpost で分散戦略を使用してプレイスメントグループを作成する場合、プレイスメントグループがホストまたはラック全体でインスタンスを分散するように選択できます。ホスト全体でインスタンスを分散すると、単一ラックの Outpost で分散戦略を使用できます。

**考慮事項**
+ ラックレベルのスプレッドプレイスメントグループは、Outpost デプロイメント内のラックと同じ数のインスタンスを保持できます。
+ ホストレベルのスプレッドプレイスメントグループは、Outpost デプロイメント内のホストと同じ数のインスタンスを保持できます。

**前提条件**  
Outpost は、自分のサイトにインストールする必要があります。詳細については、*AWS Outposts ユーザーガイド*の[Outpost を作成し、Outpost 容量を注文する](https://docs.aws.amazon.com/outposts/latest/userguide/order-outpost-capacity.html)を参照してください。

**Outpost でプレイスメントグループを使用するには**

1. Outpost にサブネットを作成します。詳細については、*AWS Outposts ユーザーガイド*の[サブネットの作成](https://docs.aws.amazon.com/outposts/latest/userguide/launch-instance.html#create-subnet)を参照してください。

1. Outpost の関連付けられたリージョンでプレイスメントグループを作成します。スプレッド戦略を使用してプレイスメントグループを作成する場合は、ホストまたはラックレベルのスプレッドを選択して、Outpost の基盤となるハードウェア全体にグループがインスタンスを分散する方法を決定できます。詳細については、「[EC2 インスタンスのプレイスメントグループを作成する](create-placement-group.md)」を参照してください。

1. プレイスメントグループにインスタンスを起動します。**[Subnet]** (サブネット) には、ステップ 1 で作成したサブネットを選択し、**[Placement group name]** (プレイスメントグループ名) には、ステップ 2 で作成したプレイスメントグループを選択します。詳細については、*AWS Outposts ユーザーガイド*の、[Outposts でインスタンスを起動する](https://docs.aws.amazon.com/outposts/latest/userguide/launch-instance.html#launch-instances)を参照してください。

# EC2 インスタンスのネットワークの最大送信単位 (MTU)
<a name="network_mtu"></a>

ネットワーク接続の最大送信単位 (MTU) とは接続を介して渡すことができる最大許容パケットサイズ (バイト単位) です。接続の MTU が大きいほど、より多くのデータを単一のパケットで渡すことができます。イーサネットフレームはパケット (送信している実際のデータ) とそれを囲むネットワークオーバーヘッド情報で構成されています。

イーサネットフレームの形式はさまざまで、最も一般的な形式は標準イーサネット v2 フレーム形式です。これはインターネットのほとんどでサポートされている最大のイーサネットパケットサイズである 1500 MTU をサポートします。インスタンスでサポートされている最大 MTU はインスタンスタイプによって異なります。

EC2 インスタンスタイプはすべて 1500 MTU をサポートしています。

**Topics**
+ [ジャンボフレーム (9001 MTU)](#jumbo_frame_instances)
+ [パス MTU 検出](#path_mtu_discovery)
+ [Amazon EC2 インスタンスの MTU を設定する](ec2-instance-mtu.md)
+ [トラブルシューティング](#mtu-troubleshooting)

## ジャンボフレーム (9001 MTU)
<a name="jumbo_frame_instances"></a>

ジャンボフレームではパケットあたりのペイロードサイズを拡張し、それによってパケットオーバーヘッド以外のパケットの割合を高めることができます。ジャンボフレームでは、同じ量の使用可能なデータを少ないパケットで送信することができます。ただし、特定のタイプのトラフィックには、次の最大ペイロードが適用されます。

**MTU 制限 1500 バイト**
+ インターネットゲートウェイ経由のトラフィック
+ VPN 接続経由のトラフィック
+ AWS リージョン間のトラフィック (トランジットゲートウェイが使用されている場合を除く)

**MTU 制限 8500 バイト**
+ リージョン間 VPC ピアリング接続経由のトラフィック

パケットが MTU 制限を超える場合は、フラグメント化されます。また、`Don't Fragment` フラグが IP ヘッダーに設定されている場合は削除されます。

ジャンボフレームを、インターネットバウンドトラフィックや VPC を出るトラフィックに使用する場合には慎重に行ってください。パケットは中間システムによってフラグメント化されるため、このトラフィックの速度が低下します。VPC 外に向かうトラフィックの速度を低下させずに VPC 内のジャンボ フレームを使用するにはルートごとに MTU サイズを設定するか、または MTU サイズやルートの異なる複数の Elastic ネットワークインターフェイスを使用します。

クラスタープレイスメントグループ内にコロケーションされたインスタンスでは考えられる最大のネットワークスループットの実現するうえでジャンボフレームが役立ちます。この場合はジャンボフレームを使用することが推奨されています。詳細については[Amazon EC2 インスタンスのプレイスメントグループ](placement-groups.md)を参照してください。

Direct Connect を経由した VPC とオンプレミスのネットワーク間のトラフィックにはジャンボフレームを使用できます。詳細と、ジャンボフレーム機能の検証方法については、*Direct Connect ユーザーガイド*の[「プライベート仮想インターフェイスまたはトランジット仮想インターフェイスの MTU」](https://docs.aws.amazon.com/directconnect/latest/UserGuide/WorkingWithVirtualInterfaces.html#set-jumbo-frames-vif.html)を参照してください。

[現行世代](https://docs.aws.amazon.com/ec2/latest/instancetypes/instance-types.html#current-gen-instances)のインスタンスはすべて、ジャンボフレームをサポートしています。以下の[旧世代](https://docs.aws.amazon.com/ec2/latest/instancetypes/instance-types.html#previous-gen-instances)のインスタンスタイプは、A1、C3、I2、M3、R3 のジャンボフレームをサポートしています。

**関連リソース**
+ NAT ゲートウェイについては「Amazon VPC ユーザーガイド」の「[NAT ゲートウェイの基本](https://docs.aws.amazon.com/vpc/latest/userguide/nat-gateway-basics.html)」を参照してください。
+ トランジットゲートウェイの詳細については「*Amazon VPC Transit Gateway ユーザーガイド*」の「[Maximum transmission unit](https://docs.aws.amazon.com/vpc/latest/tgw/transit-gateway-quotas.html#mtu-quotas)」を参照してください。
+ ローカルゾーンについては「AWS ローカルゾーンユーザーガイド」の「[考慮事項](https://docs.aws.amazon.com/local-zones/latest/ug/how-local-zones-work.html#considerations)」を参照してください。
+ AWS Wavelength については「*AWS Wavelength ユーザーガイド*」の「[Maximum transmission unit](https://docs.aws.amazon.com/wavelength/latest/developerguide/how-wavelengths-work.html#mtu)」を参照してください。
+ Outposts については「*AWS Outposts ユーザーガイド*」の「[Service link maximum transmission unit requirements](https://docs.aws.amazon.com/outposts/latest/userguide/region-connectivity.html#sl-max-mtu-requirements)」を参照してください。

## パス MTU 検出
<a name="path_mtu_discovery"></a>

2 つのデバイス間のパス MTU を判断するために、パス MTU 検出 (PMTUD) が使用されます。パス MTU は送信側ホストと受信側ホスト間のパスでサポートされている最大のパケットサイズです。2 つのホスト間のネットワークで MTU サイズに違いがある場合、PMTUD は受信側ホストが ICMP メッセージで送信側ホストに応答するのを可能にします。この ICMP メッセージは送信側ホストがネットワークパスに沿って最低の MTU サイズを使用し、リクエストを再送信するように指示します。このネゴシエーションがないと、リクエストが大きすぎて受信側ホストが受け取れないため、パケットドロップが発生する可能性があります。

IPv4 の場合、ホストがパスに沿って送信するパケットが、受信側ホストの MTU、あるいはデバイスの MTU よりも大きな場合、受信側ホストまたはデバイスはそのパケットをドロップし、次のような ICMP メッセージ `Destination Unreachable: Fragmentation Needed and Don't Fragment was Set` (タイプ 3、コード 4) を返します。このメッセージは送信側ホストに対し、ペイロードを複数の小さなパケットに分割し再送信することを指示します。

IPv6 プロトコルはネットワークのフラグメンテーションをサポートしていません。ホストがパスに沿って送信するパケットが、受信側ホストの MTU、あるいはデバイスの MTU よりも大きな場合、受信側ホストまたはデバイスはそのパケットをドロップし、次のような ICMP メッセージ `ICMPv6 Packet Too Big (PTB)` (タイプ 2) を返します。このメッセージは送信側ホストに対し、ペイロードを複数の小さなパケットに分割し再送信することを指示します。

NAT ゲートウェイやロードバランサーなどの一部のコンポーネントを介して行われる接続は[自動追跡](security-group-connection-tracking.md#automatic-tracking)されます。つまり、[セキュリティグループの追跡](security-group-connection-tracking.md)はアウトバウンド接続を試みると自動的に有効になります。接続が自動追跡されるか、セキュリティグループのルールでインバウンド ICMP トラフィックが許可されている場合はPMTUD 応答を受信できます。

サブネットへの ICMP トラフィックを拒否するネットワークアクセスコントロールリストのエントリがある場合など、セキュリティグループレベルでトラフィックが許可されている場合でも、ICMP トラフィックはブロックされる可能性があることに注意してください。

**重要**  
パス MTU 検出はジャンボフレームが一部のルーターによって破棄されないことを保証するものではありません。VPC のインターネットゲートウェイでは最大 1500 バイトのパケットだけが転送されます。インターネットトラフィックではMTU が 1500 のパケットが推奨されています。

NAT ゲートウェイの MTU ルールについては「Amazon VPC ユーザーガイド」の「[最大送信単位 (MTU)](https://docs.aws.amazon.com/vpc/latest/userguide/amazon-vpc-limits.html#ngw-mtus)」を参照してください。Transit Gateway の MTU ルールについては「AWS Transit Gateway ユーザーガイド」の「[最大送信単位 (MTU)](https://docs.aws.amazon.com/vpc/latest/tgw/transit-gateway-quotas.html#mtu-quotas)」を参照してください。

# Amazon EC2 インスタンスの MTU を設定する
<a name="ec2-instance-mtu"></a>

ネットワーク接続の最大送信単位 (MTU) とは接続を介して渡すことができる最大許容パケットサイズ (バイト単位) です。すべての Amazon EC2 インスタンスで標準フレーム (1500 MTU) がサポートされており、すべての現行世代のインスタンスタイプでジャンボフレーム (9001 MTU) がサポートされています。

Amazon EC2 インスタンスの MTU を表示したり、インスタンスと別のホストの間のパス MTU を表示したり、標準フレームまたはジャンボフレームを使用するようにインスタンスを設定したりできます。

**Topics**
+ [2 つのホスト間のパス MTU の確認](#check_path_mtu)
+ [インスタンスの MTU を確認する](#check_mtu)
+ [インスタンスの MTU を設定する](#set_mtu)

## 2 つのホスト間のパス MTU の確認
<a name="check_path_mtu"></a>

EC2 インスタンスと別のホストとの間のパス MTU を確認できます。宛先として DNS 名または IP アドレスを指定できます。宛先が別の EC2 インスタンスの場合、そのセキュリティグループによりインバウンド UDP トラフィックが許可されていることを確認します。

使用する手順はインスタンスのオペレーティングシステムによって異なります。

### Linux インスタンス
<a name="check-path-mtu-linux"></a>

インスタンスで **tracepath** コマンドを実行して、EC2 インスタンスと指定された宛先の間のパス MTU を確認します。このコマンドは `iputils` パッケージの一部であり、多くの Linux ディストリビューションでデフォルトで使用できます。

次の例ではEC2 インスタンスと `amazon.com` との間のパス MTU を確認しています。

```
[ec2-user ~]$ tracepath amazon.com
```

この出力例ではパス MTU は 1500 となっています。

```
 1?: [LOCALHOST]     pmtu 9001
 1:  ip-172-31-16-1.us-west-1.compute.internal (172.31.16.1)   0.187ms pmtu 1500
 1:  no reply
 2:  no reply
 3:  no reply
 4:  100.64.16.241 (100.64.16.241)                          0.574ms
 5:  72.21.222.221 (72.21.222.221)                         84.447ms asymm 21
 6:  205.251.229.97 (205.251.229.97)                       79.970ms asymm 19
 7:  72.21.222.194 (72.21.222.194)                         96.546ms asymm 16
 8:  72.21.222.239 (72.21.222.239)                         79.244ms asymm 15
 9:  205.251.225.73 (205.251.225.73)                       91.867ms asymm 16
...
31:  no reply
     Too many hops: pmtu 1500
     Resume: pmtu 1500
```

### Windows インスタンス
<a name="check-path-mtu-windows"></a>

**mturoute を使用してパス MTU を確認するには**

1. [https://elifulkerson.com/projects/mturoute.php](https://elifulkerson.com/projects/mturoute.php) から EC2 インスタンスに **mturoute.exe** をダウンロードします。

1. コマンドプロンプトウィンドウを開いて、**mturoute.exe** をダウンロードしたディレクトリに移動します。

1. 次のコマンドを使用して、EC2 インスタンスと指定した宛先との間のパス MTU を確認します。次の例ではEC2 インスタンスと `www.elifulkerson.com` との間のパス MTU を確認しています。

   ```
   .\mturoute.exe www.elifulkerson.com
   ```

   この出力例ではパス MTU は 1500 となっています。

   ```
   * ICMP Fragmentation is not permitted. *
   * Speed optimization is enabled. *
   * Maximum payload is 10000 bytes. *
   + ICMP payload of 1472 bytes succeeded.
   - ICMP payload of 1473 bytes is too big.
   Path MTU: 1500 bytes.
   ```

## インスタンスの MTU を確認する
<a name="check_mtu"></a>

インスタンスの MTU 値を確認できます。一部のインスタンスではジャンボフレームを使用し、それ以外のドライバには標準フレームサイズを使用するように設定されています。

使用する手順はインスタンスのオペレーティングシステムによって異なります。

### Linux インスタンス
<a name="check-mtu-linux"></a>

**Linux インスタンス上の MTU 設定を確認するには**  
EC2 インスタンスで次の **ip** コマンドを実行します。プライマリネットワークインターフェイスが `eth0` でない場合は`eth0` を使用しているネットワークインターフェイスに置き換えます。

```
[ec2-user ~]$ ip link show eth0
```

この出力例で、*mtu 9001* はこのインスタンスにジャンボフレームが使用されていることを示しています。

```
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether 02:90:c0:b7:9e:d1 brd ff:ff:ff:ff:ff:ff
```

### Windows インスタンス
<a name="check-mtu-windows"></a>

使用する手順はインスタンスのドライバーによって異なります。

------
#### [ ENA driver ]

**バージョン 2.1.0 以降**  
MTU 値を取得するにはEC2 インスタンスで次の **Get-NetAdapterAdvancedProperty** コマンドを使用します。ワイルドカード (アスタリスク) を使用して、すべてのイーサネット名を取得します。インターフェイス名 `*JumboPacket` の出力を確認します。値 9015 はジャンボフレームが有効であることを示します。ジャンボフレームはデフォルトで無効化されています。

```
Get-NetAdapterAdvancedProperty -Name "Ethernet*"
```

**バージョン 1.5 以前**  
MTU 値を取得するにはEC2 インスタンスで次の **Get-NetAdapterAdvancedProperty** コマンドを使用します。インターフェイス名 `MTU` の出力を確認します。値 9001 はジャンボフレームが有効であることを示します。ジャンボフレームはデフォルトで無効化されています。

```
Get-NetAdapterAdvancedProperty -Name "Ethernet"
```

------
#### [ Intel SRIOV 82599 driver ]

MTU 値を取得するにはEC2 インスタンスで次の **Get-NetAdapterAdvancedProperty** コマンドを使用します。インターフェイス名 `*JumboPacket` のエントリを確認します。値 9014 はジャンボフレームが有効であることを示します。(MTU のサイズにはヘッダーとペイロードが含まれる点に注意してください)。ジャンボフレームはデフォルトで無効化されています。

```
Get-NetAdapterAdvancedProperty -Name "Ethernet"
```

------
#### [ AWS PV driver ]

MTU 値を取得するにはEC2 インスタンスで次のコマンドを使用します。インターフェイスの名前は異なる場合があります。出力では「Ethernet」、「Ethernet 2」、または 「Local Area Connection」 という名前のエントリを探してください。ジャンボフレームを有効または無効にするにはインターフェイス名が必要です。値 9001 はジャンボフレームが有効であることを示します。

```
netsh interface ipv4 show subinterface
```

------

## インスタンスの MTU を設定する
<a name="set_mtu"></a>

VPC 内のネットワークトラフィックにジャンボフレームを使用したり、インターネットトラフィックに標準フレームを使用したりする場合があるでしょう。どのようなユースケースでも、インスタンスが想定どおりに動作することを確認することをお勧めします。

使用する手順はインスタンスのオペレーティングシステムによって異なります。

### Linux インスタンス
<a name="set-mtu-linux"></a>

**Linux インスタンス上の MTU 値を設定するには**

1. インスタンスで次の **ip** コマンドを実行します。このコマンドで目的の MTU 値が 1500 に設定されますが、代わりに 9001 を使用することができます。プライマリネットワークインターフェイスが `eth0` でない場合は `eth0` を実際のネットワークインターフェイスに置き換えます。

   ```
   [ec2-user ~]$ sudo ip link set dev eth0 mtu 1500
   ```

1. (オプション) 再起動後もネットワーク MTU 設定を維持するにはオペレーティングシステムのタイプに基づいて、次の設定ファイルを変更します。
   + **Amazon Linux 2023** – 設定ファイルの `[Link]` セクションを変更します。デフォルトの設定ファイルは `/usr/lib/systemd/network/80-ec2.network` です。または、/run/systemd/network/ で作成された任意のカスタム設定ファイルを更新できます。ファイル名は *priority*-*interface*.network です。詳細については、Amazon Linux ドキュメントの「[Networking service](https://docs.aws.amazon.com/linux/al2023/ug/networking-service.html)」を参照してください。

     ```
     MTUBytes=1500
     ```
   + **Amazon Linux 2** – 次の行を `/etc/sysconfig/network-scripts/ifcfg-eth0` ファイルに追加します。

     ```
     MTU=1500
     ```

     次の行を `/etc/dhcp/dhclient.conf` ファイルに追加します。

     ```
     request subnet-mask, broadcast-address, time-offset, routers, domain-name, domain-search, domain-name-servers, host-name, nis-domain, nis-servers, ntp-servers;
     ```
   + **その他の Linux ディストリビューション** – それぞれに固有のドキュメントを参照してください。

1. (オプション) インスタンスを再起動し、MTU 設定が正しいことを確認します。

### Windows インスタンス
<a name="set-mtu-windows"></a>

使用する手順はインスタンスのドライバーによって異なります。

------
#### [ ENA driver ]

インスタンスでデバイスマネージャーまたは **Set-NetAdapterAdvancedProperty** コマンドを使用して、MTU を変更できます。

**バージョン 2.1.0 以降**  
ジャンボフレームを有効にするには次のコマンドを使用します。

```
Set-NetAdapterAdvancedProperty -Name "Ethernet" -RegistryKeyword "*JumboPacket" -RegistryValue 9015
```

ジャンボフレームを無効にするには次のコマンドを使用します。

```
Set-NetAdapterAdvancedProperty -Name "Ethernet" -RegistryKeyword "*JumboPacket" -RegistryValue 1514
```

**バージョン 1.5 以前**  
ジャンボフレームを有効にするには次のコマンドを使用します。

```
Set-NetAdapterAdvancedProperty -Name "Ethernet" -RegistryKeyword "MTU" -RegistryValue 9001
```

ジャンボフレームを無効にするには次のコマンドを使用します。

```
Set-NetAdapterAdvancedProperty -Name "Ethernet" -RegistryKeyword "MTU" -RegistryValue 1500
```

------
#### [ Intel SRIOV 82599 driver ]

インスタンスでデバイスマネージャーまたは **Set-NetAdapterAdvancedProperty** コマンドを使用して、MTU を変更できます。

ジャンボフレームを有効にするには次のコマンドを使用します。

```
Set-NetAdapterAdvancedProperty -Name "Ethernet" -RegistryKeyword "*JumboPacket" -RegistryValue 9014
```

ジャンボフレームを無効にするには次のコマンドを使用します。

```
Set-NetAdapterAdvancedProperty -Name "Ethernet" -RegistryKeyword "*JumboPacket" -RegistryValue 1514
```

------
#### [ AWS PV driver ]

インスタンスで **netsh** コマンドを使用することで MTU を変更できます。デバイスマネージャーでは MTU を変更できません。

ジャンボフレームを有効にするには次のコマンドを使用します。

```
netsh interface ipv4 set subinterface "Ethernet" mtu=9001
```

ジャンボフレームを無効にするには次のコマンドを使用します。

```
netsh interface ipv4 set subinterface "Ethernet" mtu=1500
```

------

## トラブルシューティング
<a name="mtu-troubleshooting"></a>

ジャンボフレームを使用したときに EC2 インスタンスと Amazon Redshift クラスターとの間で接続の問題が発生した場合は「Amazon Redshift 管理ガイド」の「[クエリがハングしたようになる](https://docs.aws.amazon.com/redshift/latest/mgmt/troubleshooting-connections.html#connecting-drop-issues)」を参照してください。**

# EC2 インスタンスの仮想プライベートクラウド
<a name="using-vpc"></a>

Amazon Virtual Private Cloud (Amazon VPC) を使用すると、AWS クラウドで論理的に分離された独自の領域内に、*仮想プライベートクラウド* (*VPC*) と呼ばれる仮想ネットワークを定義できます。AWS のリソース (Amazon EC2 インスタンスなど) を VPC のサブネット内に作成できます。VPC は、お客様自身のデータセンターで運用されている従来のネットワークによく似ていますが、AWS からスケーラブルなインフラストラクチャを使用できるというメリットがあります。お客様の VPC はお客様が設定できます。IP アドレスレンジの選択、サブネットの作成、ルートテーブル、ネットワークゲートウェイ、セキュリティの設定ができます。VPC のインスタンスをインターネットまたは独自のデータセンターに接続できます。

**Topics**
+ [デフォルトの VPC](#default-vpcs)
+ [非デフォルト VPC](#create-nondefault-vpcs)
+ [インターネットアクセス](#access-internet-from-vpc)
+ [共有サブネット](#ec2-shared-VPC-subnets)
+ [IPv6 専用サブネット](#ec2-ipv6-only-subnets)

## デフォルトの VPC
<a name="default-vpcs"></a>

AWS アカウントを作成すると、各リージョンに*デフォルト VPC* が作成されます。デフォルトの VPC は、設定済みですぐに使用できる VPC です。例えば、それぞれのデフォルトの VPC では、各アベイラビリティーゾーンがデフォルトのサブネットを持ちます。この VPC には、インターネットゲートウェイがアタッチされ、メインルートテーブルでは、すべて (0.0.0.0/0) のトラフィックをインターネットゲートウェイに送信するルートが定義されています。必要に応じて、デフォルト VPC の設定を変更できます。例えば、サブネットとルートテーブルを追加できます。

![\[各リージョンにデフォルトの VPC を作成し、各アベイラビリティーゾーンにデフォルトのサブネットを作成します。\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/default-vpc.png)


## 非デフォルト VPC
<a name="create-nondefault-vpcs"></a>

リソースにデフォルト VPC を使用する代わりに、「Amazon VPC ユーザーガイド」の「[VPC の作成](https://docs.aws.amazon.com/vpc/latest/userguide/create-vpc.html)」の説明に従って独自の VPC を作成できます。

EC2 インスタンスの VPC を作成する際には、考慮すべき点がいくつかあります。
+ IPv4 CIDR ブロックには、デフォルトの提案を使用することも、アプリケーションまたはネットワークに必要な CIDR ブロックを入力することもできます。
+ 高可用性を確保するには、複数のアベイラビリティーゾーンにサブネットを作成します。
+ インスタンスをインターネットからアクセスできるようにするには、次のいずれかを実行します。
  + インスタンスをパブリックサブネットに配置できる場合は、パブリックサブネットを追加します。両方の DNS オプションを有効に設定したままにします。今すぐまたは後で、オプションでプライベートサブネットを追加することができます。
  + インスタンスをプライベートサブネットに配置する必要がある場合は、プライベートサブネットのみを追加します。NAT ゲートウェイを追加すると、プライベートサブネット内のインスタンスにインターネットアクセスを提供できます。インスタンスがアベイラビリティーゾーン間で大量のトラフィックを送受信する場合は、各アベイラビリティーゾーンに NAT ゲートウェイを作成します。それ以外の場合は、1 つのアベイラビリティーゾーンのみに NAT ゲートウェイを作成し、クロスゾーントラフィックを送受信するインスタンスを NAT ゲートウェイと同じアベイラビリティーゾーンで起動できます。

## インターネットアクセス
<a name="access-internet-from-vpc"></a>

デフォルト VPC はパブリック IP アドレスと DNS ホスト名を割り当てるように設定され、メインルートテーブルには VPC にアタッチされたインターネットゲートウェイへのルートが設定されているため、デフォルト VPC のデフォルトサブネットで起動されたインスタンスは、インターネットにアクセスすることが可能です。

デフォルト以外のサブネットおよび VPC で起動するインスタンスでは、以下のいずれかのオプションを使用することで、そのサブネットで起動したインスタンスをインターネットにアクセスできるようにすることができます。
+ インターネットゲートウェイを設定します。詳細については、「Amazon VPC ユーザーガイド」の「[インターネットゲートウェイを使用してインターネットに接続する](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Internet_Gateway.html)」 を参照してください。
+ パブリックな NAT ゲートウェイを設定します。詳細については、*Amazon VPC ユーザーガイド*の[プライベートサブネットからインターネットにアクセスする](https://docs.aws.amazon.com/vpc/latest/userguide/nat-gateway-scenarios.html#public-nat-internet-access)を参照してください。

## 共有サブネット
<a name="ec2-shared-VPC-subnets"></a>

EC2 インスタンスを共有 VPC サブネットで起動するときは、次の点に注意してください:
+ 参加者は、共有サブネットの ID を指定することで、共有サブネットでインスタンスを実行できます。参加者は、指定するネットワークインターフェイスを所有する必要があります。
+ 参加者は、共有サブネットで作成したインスタンスを起動、停止、終了、記述できます。参加者は、VPC 所有者が共有サブネットで作成したインスタンスを起動、停止、終了、記述できません。
+ VPC 所有者は、参加者が共有サブネットで作成したインスタンスを起動、停止、終了、記述できません。
+ 参加者は、EC2 Instance Connect Endpoint を使用して共有サブネット内のインスタンスに接続できます。参加者は、共有サブネットに EC2 Instance Connect Endpoint を作成する必要があります。参加者は、VPC 所有者が共有サブネットで作成した EC2 Instance Connect Endpoint を使用できません。

共有 Amazon EC2 リソースの詳細については、以下を参照してください。
+ [組織または OU の AMI 共有を管理する](share-amis-org-ou-manage.md)
+ [共有キャパシティ予約](capacity-reservation-sharing.md)
+ [共有プレイスメントグループ](share-placement-group.md)
+ [クロスアカウント Amazon EC2 専有ホストの共有](dh-sharing.md)

共有サブネットの詳細については、「*Amazon VPC ユーザーガイド*」の「[VPC を他のアカウントと共有する](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-sharing.html)」を参照してください。

## IPv6 専用サブネット
<a name="ec2-ipv6-only-subnets"></a>

IPv6 のみのサブネットで起動される EC2 インスタンスは、IPv6 アドレスを受信しますが、IPv4 アドレスは受信しません。IPv6 のみのサブネットで起動するインスタンスは、[Nitro ベースのインスタンス](instance-types.md#instance-hypervisor-type)である必要があります。

# セカンダリネットワーク
<a name="secondary-networks"></a>

セカンダリネットワークは、特殊なネットワークユースケース専用の仮想ネットワークです。これらのネットワークは、AWS クラウドのパーティション内で論理的に分離されています。セカンダリネットワーク内には、セカンダリサブネットなどのリソースを作成できます。セカンダリネットワークは Amazon VPC と密接に結合されています。このため、一部のインスタンスはマルチホーム化されており、VPC とセカンダリネットワークの両方で起動されます。

現在、セカンダリネットワークは一部のインスタンスタイプで、コミットメントが長期的なキャパシティ予約を通じて利用できます。セカンダリネットワークがワークロードに役立つとお考えの場合は、担当のアカウントチームにお問い合わせください。

**Topics**
+ [セカンダリネットワークとは](#secondary-networks-overview)
+ [主要なコンセプト](#secondary-networks-concepts)
+ [アーキテクチャ](#secondary-networks-architecture)
+ [その他の考慮事項](#secondary-networks-considerations)
+ [開始方法](#secondary-networks-getting-started)
+ [セカンダリネットワークリソースの管理](#secondary-networks-managing-resources)
+ [ネットワーク設計のベストプラクティス](#secondary-networks-best-practices)
+ [トラブルシューティング](#secondary-networks-troubleshooting)
+ [クォータと制限](#secondary-networks-quotas-limits)

## セカンダリネットワークとは
<a name="secondary-networks-overview"></a>

分離された論理ネットワークを提供するセカンダリネットワークは VPC ネットワークと組み合わせて使用されるため、インスタンスが 2 つの独立したネットワークにマルチホーム化されます。セカンダリネットワークのメリットには以下が含まれます。
+ ML ワークロードの East-West 接続などの特殊なユースケースやプロトコル向けの高性能ネットワーキング
+ 論理的分離によるマルチテナントサポート
+ VPC および AWS サービスとのシームレスなインスタンス統合

## 主要なコンセプト
<a name="secondary-networks-concepts"></a>

セカンダリネットワーク  
IPv4 CIDR ブロック (/28～/12) に基づく論理レイヤー 3 ネットワークを提供する地域的なネットワーキングコンストラクト。セカンダリネットワークは、物理的にパーティション化されたネットワークインフラストラクチャ上で VPC とは別個に動作します。

セカンダリサブネット  
セカンダリネットワーク内にあるアベイラビリティーゾーン固有のコンストラクトで、VPC サブネットに類似しています。セカンダリサブネットは、/28 から /12 までの CIDR ブロックをサポートします。

セカンダリインターフェイス  
セカンダリネットワークカードにアタッチされたネットワークインターフェイスで、セカンダリサブネット内で East-West 接続を提供します。これらのインターフェイスは、Elastic Network Interface (ENI) から物理的かつ論理的に分離されています。

## アーキテクチャ
<a name="secondary-networks-architecture"></a>

セカンダリネットワークをサポートする EC2 インスタンスはマルチホーム化されます。これは、インスタンスが VPC 内とセカンダリネットワーク内の両方で同時に通信できることを意味します。
+ **VPC**: AWS サービス、ストレージ、データベース、ネットワークサービス、インターネットに対する North-South TCP/IP 接続を提供
+ **セカンダリネットワーク**: サポートされている特殊なインスタンス間の East-West 接続を提供

## その他の考慮事項
<a name="secondary-networks-considerations"></a>
+ セカンダリインターフェイスは RunInstances 経由で管理されており、個別に作成または削除することはできません。
+ インスタンスの起動後にセカンダリインターフェイスをアタッチ/デタッチすることはできません。
+ 起動後にセカンダリインターフェイスの IP アドレスを変更することはできません。
+ セカンダリネットワークでは、セキュリティグループ、NACL、フローログなどの VPC 機能がサポートされていません。

## 開始方法
<a name="secondary-networks-getting-started"></a>

### 前提条件
<a name="secondary-networks-prerequisites"></a>

セカンダリネットワークを使用するインスタンスを起動する前に、対象リージョン内に VPC が設定されており、EC2 キャパシティの対象アベイラビリティーゾーン内にサブネットが設定されていることも確認してください。

### ステップ 1: セカンダリネットワークを作成する
<a name="secondary-networks-create-network"></a>

VPC と同一のリージョン内にセカンダリネットワークを作成します。これは、RDMA トラフィックを論理的に分離するリージョンリソースです。

```
aws ec2 create-secondary-network \
  --network-type rdma \
  --ipv4-cidr-block 172.31.0.0/16 \
  --region us-east-2
```

**パラメータ: **
+ `--network-type`: ネットワークタイプ (現在サポートされているのは rdma のみです)
+ `--ipv4-cidr-block`: /28 から /12 までの IPv4 CIDR ブロック
+ `--region`: AWS リージョン (US-East-2)

**注記**  
**ベストプラクティス**: インスタンスレベルでのルーティングを簡素化するため、VPC CIDR と重複しない CIDR ブロックを選択してください。

### ステップ 2: セカンダリサブネットを作成する
<a name="secondary-networks-create-subnet"></a>

VPC サブネットと同一のアベイラビリティーゾーン内にセカンダリサブネットを作成します。これは、アベイラビリティーゾーン固有のリソースです。

```
aws ec2 create-secondary-subnet \
  --secondary-network-id sn-1234567890abcdef0 \
  --ipv4-cidr-block 172.31.24.0/24 \
  --availability-zone us-east-2a
```

**注記**  
**IP アドレス予約**: VPC サブネットと同様に、Amazon は各セカンダリサブネット内の最初の 4 つの IP アドレスと最後の IP アドレスを内部使用のために予約します。

### ステップ 3: インスタンスを起動する
<a name="secondary-networks-launch-instance"></a>

VPC サブネットとセカンダリサブネットの両方にインスタンスを起動します。インスタンスは、両方のネットワークに接続するマルチホーム型になります。

```
aws ec2 run-instances \
  --image-id ami-12345678 \
  --count 1 \
  --instance-type <instance> \
  --key-name MyKeyPair \
  --instance-market-options '{"MarketType": "capacity-block"}' \
  --capacity-reservation-specification '{"CapacityReservationTarget": \
  {"CapacityReservationId": "cr-1234567890abcdef0"}}' \
  --network-interfaces \ 
    "NetworkCardIndex=0,DeviceIndex=0,Groups=sg-12345678,\
    SubnetId=subnet-0987654321fedcba0,InterfaceType=interface" \
  --secondary-interfaces \
    "NetworkCardIndex=1,DeviceIndex=0,SecondarySubnetId=ss-98765421yxz,\
    InterfaceType=secondary,PrivateIpAddressCount=1,DeleteOnTermination=true", \
    "NetworkCardIndex=2,DeviceIndex=0,SecondarySubnetId=ss-98765421yxz,\
    InterfaceType=secondary,PrivateIpAddressCount=1,DeleteOnTermination=true", \
    "NetworkCardIndex=3,DeviceIndex=0,SecondarySubnetId=ss-98765421yxz,\
    InterfaceType=secondary,PrivateIpAddressCount=1,DeleteOnTermination=true", \
    "NetworkCardIndex=4,DeviceIndex=0,SecondarySubnetId=ss-98765421yxz,\
    InterfaceType=secondary,PrivateIpAddressCount=1,DeleteOnTermination=true", \
    "NetworkCardIndex=5,DeviceIndex=0,SecondarySubnetId=ss-98765421yxz,\
    InterfaceType=secondary,PrivateIpAddressCount=1,DeleteOnTermination=true", \
    "NetworkCardIndex=6,DeviceIndex=0,SecondarySubnetId=ss-98765421yxz,\
    InterfaceType=secondary,PrivateIpAddressCount=1,DeleteOnTermination=true", \
    "NetworkCardIndex=7,DeviceIndex=0,SecondarySubnetId=ss-98765421yxz,\
    InterfaceType=secondary,PrivateIpAddressCount=1,DeleteOnTermination=true", \
    "NetworkCardIndex=8,DeviceIndex=0,SecondarySubnetId=ss-98765421yxz,\
    InterfaceType=secondary,PrivateIpAddressCount=1,DeleteOnTermination=true"
```

**主要パラメータ:**
+ `--network-interfaces`: VPC 接続用のプライマリ Nitro ENI を指定します (ネットワークカードインデックス 0)
+ `--secondary-interfaces`: セカンダリサブネット内の East-West 接続用の 8 個のセカンダリインターフェイスを指定します (ネットワークカードインデックス 1～8)
+ `InterfaceType=secondary`: セカンダリインターフェイスを示すものです

## セカンダリネットワークリソースの管理
<a name="secondary-networks-managing-resources"></a>

### セカンダリネットワークの記述
<a name="secondary-networks-describe-networks"></a>

セカンダリネットワークの詳細を確認します。

```
aws ec2 describe-secondary-networks \
  --secondary-network-id sn-1234567890abcdef0
```

### セカンダリサブネットの記述
<a name="secondary-networks-describe-subnets"></a>

セカンダリサブネットの詳細を確認します。

```
aws ec2 describe-secondary-subnets \
  --secondary-subnet-id ss-98765421yxz
```

### セカンダリインターフェイスの記述
<a name="secondary-networks-describe-interfaces"></a>

インスタンスにアタッチされたセカンダリネットワークインターフェイスの詳細を確認します。

```
aws ec2 describe-secondary-interfaces \
  --filters "Name=attachment.instance-id,Values=i-1234567890abcdef0"
```

### リソースの削除
<a name="secondary-networks-deleting-resources"></a>

セカンダリサブネットを削除します。

```
aws ec2 delete-secondary-subnet \
  --secondary-subnet-id ss-98765421yxz
```

セカンダリネットワークを削除します。

```
aws ec2 delete-secondary-network \
  --secondary-network-id sn-1234567890abcdef0
```

**重要**  
セカンダリネットワークを削除する前に、すべてのインスタンスを終了し、すべてのセカンダリサブネットを削除しておく必要があります。

## ネットワーク設計のベストプラクティス
<a name="secondary-networks-best-practices"></a>

### CIDR 計画
<a name="secondary-networks-cidr-planning"></a>

**CIDR の重複を避ける**: セカンダリネットワークは VPC から物理的に分離されていますが、重複しない CIDR ブロックを使用することで、インスタンスのオペレーティングシステムレベルでのルーティング設定を簡素化できます。

**注記**  
Amazon は、サブネットごとに 5 つの IP アドレスを予約します。

### トラフィックの分離
<a name="secondary-networks-traffic-segregation"></a>

**セカンダリネットワークを使用して分離する**: 異なるプロジェクト、チーム、またはセキュリティ境界ごとに個別のセカンダリネットワークを作成します。セカンダリネットワークは、インスタンス間を論理的に分離します。インスタンスが異なるセカンダリネットワーク間で通信することはできません。

**複数のサブネットを使用する**: セカンダリネットワーク内で複数のセカンダリサブネットを使用して、GPU インデックス、アベイラビリティーゾーン、またはワークロードタイプ別にトラフィックをセグメント化します。例えば、一般的なアーキテクチャパターンは、4 個または 8 個のセカンダリサブネットを持つ単一のセカンダリネットワークをデプロイすることです。この場合、各セカンダリサブネットは共通のインデックスを持つ GPU のグループに紐付けられます。

## トラブルシューティング
<a name="secondary-networks-troubleshooting"></a>

### インスタンス起動の失敗
<a name="secondary-networks-launch-failures"></a>

**問題**: セカンダリネットワークインターフェイスを使用するインスタンスの起動が失敗する。

**解決方法:**
+ AMI に適切なドライバーサポートが含まれていることを確認する
+ セカンダリサブネットに使用可能な IP アドレスが十分に設定されていることを確認する
+ キャパシティ予約が「アクティブ」状態であることを確認する
+ セカンダリサブネットが VPC サブネットと同じアベイラビリティーゾーン内にあることを確認する

### 接続の問題
<a name="secondary-networks-connectivity-issues"></a>

**問題**: インスタンス間の RDMA 接続を確立できない。

**解決方法:**
+ すべてのインスタンスが同一のセカンダリネットワークとセカンダリサブネット内にあることを確認する
+ セカンダリインターフェイスのドライバーがインスタンスに適切にロードされていることを確認する
+ アプリケーションが正しいネットワークインターフェイスにバインドされていることを確認する
+ 同一のセカンダリサブネット内にあるインスタンスにダイレクトルート経由でアクセスできる。DHCP 経由で提供される静的ルートを通じてサブネット間通信を実行できる。

### API エラー
<a name="secondary-networks-api-errors"></a>

**問題: **セカンダリネットワークおよびセカンダリサブネットオペレーションに対する API コールが失敗する。

**解決方法:**
+ ec2:CreateSecondaryNetwork、ec2:CreateSecondarySubnet などに対する IAM 許可を確認する
+ CIDR ブロックがサポートされている範囲内 (/28～/12) であることを確認する
+ 正しいリージョンとアベイラビリティーゾーンを使用していることを確認する

## クォータと制限
<a name="secondary-networks-quotas-limits"></a>

クォータの引き上げをリクエストするには、AWS Service Quotas を使用するか、AWS サポートにお問い合わせください。


**セカンダリネットワークのクォータと制限**  

| リソース | 制限 | 引き上げ可能 | 
| --- | --- | --- | 
| リージョンあたりのセカンダリネットワーク数 | 5 | はい | 
| セカンダリネットワークあたりのセカンダリサブネット数 | 200 | はい | 
| CIDR ブロックサイズ | /28～/12 | いいえ | 