

# 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
   ```

------