

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 主機名稱類型
<a name="hostname-types"></a>

AWS 提供兩種類型的主機名稱：**私有**和**公**有。下表比較私有與公有主機名稱之間的主要差異，包括解析方式、設定方式，以及各類型的適用場景。


| ​ | 私有主機名稱 | 公有主機名稱 | 
| --- | --- | --- | 
| DNS 解析 | 私有主機名稱支援無法從公有網際網路存取的私有 FQDN。私有主機名稱僅允許請求解析至 VPC 內私有 IPv4 與 IPv6 GUA 位址。 | 公有主機名稱可啟用可從公有網際網路存取的公有 FQDN。公有主機名稱可讓請求解析至 VPC 內的私有 IPv4 與 IPv6 GUA，以及來自網際網路的公有 IP (水平分割 DNS)。 | 
| Configuration | 私有主機名稱在執行個體層級設定。 | 公有主機名稱在網路介面層級設定。 | 
| 使用情況 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/hostname-types.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/hostname-types.html)  | 

**Topics**
+ [公有主機名稱](#public-hostnames)
+ [私有主機名稱](#ec2-instance-private-hostnames)

## 公有主機名稱
<a name="public-hostnames"></a>

您可以使用*公有主機名稱*存取 EC2 執行個體，這類主機名稱會解析至執行個體的公有 IPv4 或 IPv6 位址，協助您順利移轉至 IPv6。

公有主機名稱可讓您：
+ 透過 IPv4 和 IPv6 存取 EC2 執行個體，讓您能更靈活地連線到資源。
+ 按照自身節奏從 IPv4 移轉至 IPv6 環境。例如，您可以分離資料庫與應用程式的移轉作業，降低複雜度與風險。
+ 使用自動解析至適當 IP 位址的多個主機名稱選項 (僅 IPv4、IPv6-only 和雙堆疊)。
+ 透過[水平分割 DNS](https://en.wikipedia.org/wiki/Split-horizon_DNS) 提升安全性，從您的 VPC 內查詢時，會將主機名稱解析至私人 IP 位址。

**Topics**
+ [公有主機名稱類型與適用場景](#public-hostname-types)
+ [檢視公有主機名稱](#view-public-hostnames)
+ [修改公有主機名稱類型](#modify-public-hostnames)

### 公有主機名稱類型與適用場景
<a name="public-hostname-types"></a>

要使用公有主機名稱，必須修改現有的網路介面。本節說明三個公有主機名稱類型選項，協助您選擇合適的類型：
+ **雙堆疊 - 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 位址的 [base36](https://en.wikipedia.org/wiki/Base36) 表示法 (f5lnz-0khrm-nt2u3-gyqqt-nbdl5) 與主要公有 IPv4 位址的 base36 表示法 (q3cdpO) 組成。
      + 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. 前往 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 開啟 Amazon EC2 主控台。

1. 在導覽窗格中，選擇 **Instances** (執行個體)。

1. 選取執行個體的核取方塊。

1. 在**網路**索引標籤的**主機名稱和 DNS** 下，找到下列項目：
   + **公有主機名稱類型**
   + **公有 DNS**
   + **僅 IPv4 IP 型名稱**
   + **僅 IPv6 - IP 型名稱**
   + **雙堆疊 - IP 型名稱**

**檢視網路介面的主機名稱類型和 DNS 名稱**

1. 前往 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 開啟 Amazon EC2 主控台。

1. 在導覽窗格中，選擇 **Network Interfaces** (網路介面)。

1. 在搜尋欄位中輸入執行個體的 ID。選取網路介面 ID，開啟其詳細資訊頁面。

1. 在**主機名稱和 DNS** 下，尋找下列項目：
   + **公有主機名稱類型**
   + **公有 DNS 名稱**
   + **公有 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) cmdlet。

```
(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. 前往 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 開啟 Amazon 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) cmdlet。

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

在 VPC 中啟動 EC2 執行個體時，客體作業系統主機名稱有兩種私有主機名稱類型：
+ **IP name** (IP 名稱)：舊式命名結構描述，其中當您啟動執行個體時，執行個體的*私有 IPv4 地址*會包含在執行個體的主機名稱中。IP 名稱存在於 EC2 執行個體的生命週期中。用作私有 DNS 主機名時，它只會傳回私有 IPv4 地址 (A 記錄)。
+ **資源名稱**：當您啟動執行個體時，*EC2 執行個體 ID* 會包含在執行個體的主機名稱中。資源名稱存在於 EC2 執行個體的生命週期中。用作私有 DNS 主機名稱時，它可以同時傳回私有 IPv4 地址 (A 記錄) 和/或 IPv6 全域單點傳送地址 (AAAA 記錄)。

EC2 執行個體客體作業系統主機名稱類型取決於子網路設定：
+ 如果執行個體啟動至僅限 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>

當您使用 **Hostname type** (主機名稱類型) 的 **IP name** (IP 名稱) 啟動 EC2 執行個體時，客體作業系統主機名稱會設定為使用私有 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>

在僅限 IPv6 子網路中啟動 EC2 執行個體時，預設會將 **Hostname type** (主機名稱類型) 選取為 **Resource name** (資源名稱)。在僅限 IPv4 或雙堆疊 (IPv4\$1IPv6) 子網路中啟動執行個體時，**Resource name** (資源名稱) 是可選取的選項。在啟動執行個體之後，您可以管理主機名稱組態。如需詳細資訊，請參閱[變更 Amazon EC2 的資源型命名的選項](#instance-naming-modify)。

當您使用 **Hostname type** (主機名稱類型) 的 **Resource name** (資源名稱) 啟動 EC2 執行個體時，客體作業系統主機名稱會設定為使用 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 記錄查詢始終會回應，而不管客體作業系統主機名稱設定如何。相反地，若為以資源名稱為基礎的私有 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 執行個體時，根據您選取的子網路類型，**Hostname type** (主機名稱類型) 的 **Resource name** (資源名稱) 可能是可用的，或者可能已選取且無法修改。本節介紹您查看主機名稱類型資源名稱和 IP 名稱的案例。

##### 案例 1
<a name="instance-naming-presence-create-1"></a>

您可以在精靈中建立 EC2 執行個體 (請參閱 [使用主控台中的啟動執行個體精靈，啟動 EC2 執行個體](ec2-launch-instance-wizard.md))，並在設定詳細資訊時，選擇已設定為僅 IPv6 的子網路。

在此情況下，**Hostname type** (主機名稱類型) 的 **Resource name** (資源名稱) 會自動選取且無法修改。**Enable IP name IPv4 (A record) DNS requests** (啟用 IP 名稱 IPv4 (A 記錄) DNS 請求) 和 **Enable resource-based IPv4 (A record) DNS requests** (啟用以資源為基礎的 IPv4 (A 記錄) DNS 請求) 的 **DNS Hostname** (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 執行個體](ec2-launch-instance-wizard.md))，並在設定詳細資訊時，選擇以 IPv4 CIDR 區塊設定的子網路，或同時以 IPv4 和 IPv6 CIDR 區塊 (「雙堆疊」) 設定的子網路。

在此情況下，會自動選取 **Enable IP name IPv4 (A record) DNS requests** (啟用 IP 名稱 IPV4 (A 記錄) DNS 請求) 且無法變更。這表示對 IP 名稱的請求將解析為此 EC2 執行個體的 IPv4 地址 (A 記錄)。

選項預設為子網路的組態，但您可以修改此執行個體的選項，取決於子網路設定：
+ **Hostname type** (主機名稱類型)：決定要將 EC2 執行個體的客體作業系統主機名稱做為資源名稱還是 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 執行個體的 **Details** (詳細資訊) 標籤中查看現有 EC2 執行個體的主機名稱值︰
+ **Hostname type** (主機名稱類型)：IP 名稱或資源名稱格式的主機名稱。
+ **Private IP DNS name (IPv4 only)** (私有 IP DNS 名稱 (僅限 IPv4))：IP 名稱，其一律會解析為執行個體的私有 IPv4 地址。
+ **Private resource DNS name** (私有資源 DNS 名稱)︰資源名稱，其會解析為針對此執行個體選取的 DNS 記錄。
+ **Answer private resource DNS name** (回答私有資源 DNS 名稱)︰資源名稱，其會解析為 IPv4 (A)、IPv6 (AAA) 或 IPv4 和 IPv6 (A 和 AAA) DNS 記錄。

此外，如果直接透過 SSH 連線至 EC2 執行個體，並輸入 `hostname` 命令，您會看到採用 IP 名稱或資源名稱格式。

### 在資源名稱和 IP 名稱之間進行選擇
<a name="instance-naming-choose"></a>

啟動 EC2 執行個體時 (請參閱 [使用主控台中的啟動執行個體精靈，啟動 EC2 執行個體](ec2-launch-instance-wizard.md))，如果您將 **Hostname type** (主機名稱類型) 選擇為 **Resource name** (資源名稱)，EC2 執行個體將以資源名稱格式的主機名稱啟動。在這種情況下，此 EC2 執行個體的 DNS 記錄也可以指向資源名稱。這讓您能夠靈活地選擇該主機名稱是解析為執行個體的 IPv4 地址、IPv6 地址，還是同時解析為 IPv4 和 IPv6 地址。如果您計劃在將來使用 IPv6，或者如果您目前正在使用雙堆疊子網路，則最好針對 **Hostname type** (主機名稱類型) 使用 **Resource name** (資源名稱)，以便您變更執行個體主機名稱的 DNS 解析，而無需對 DNS 記錄本身做出任何變更。資源名稱允許您在 EC2 執行個體上新增和移除 IPv4 和 IPv6 DNS 解析。

而如果您將 **Hostname type** (主機名稱類型) 選擇為 **IP name** (IP 名稱)，並將其用作 DNS 主機名稱，則只能解析為執行個體的 IPv4 地址。即使執行個體同時具有 IPv4 地址和與之關聯的 IPv6 地址，也不會解析為執行個體的 IPv6 地址。

### 變更 Amazon EC2 的資源型命名的選項
<a name="instance-naming-modify"></a>

您可以變更子網路的主機名稱類型和 DNS 主機名稱組態，這會影響該主體中的所有後續執行個體啟動，也可以在啟動 EC2 執行個體之後對其進行變更。

**資源型命名的選項**
+ **主機名稱類型**：決定將 EC2 執行個體 (已在子網路中啟動) 之客體作業系統主機名稱的預設設定。此名稱可為資源名稱或 IP 名稱
+ **啟用 DNS 主機名稱 IPV4 (A 記錄) 請求**：決定對資源名稱的 DNS 請求/查詢是否解析為此 EC2 執行個體的私有 IPv4 地址 (A 記錄)。
+ **啟用 DNS 主機名稱 IPV6 (AAAA 記錄) 請求**：決定對資源名稱的 DSN 請求/查詢是否解析至此 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) cmdlet。

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

------

#### EC2 執行個體
<a name="instance-naming-modify-instances"></a>

**考量事項**
+ 若要變更主機名稱類型，您必須先停止執行個體。變更其他兩個選項無需停止執行個體。
+ 由於無法停止具有執行個體儲存體根磁碟區的執行個體，因此只能在執行個體啟動時設定主機名稱類型與 DNS 主機名稱選項。只有下列執行個體類型支援執行個體儲存體根磁碟區：C1、C3、D2、I2、M1、M2、M3、R3 和 X1。

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

**修改執行個體的主機名稱類型和 DNS 主機名稱選項**

1. 前往 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 開啟 Amazon EC2 主控台。

1. 如果您即將變更 **Use resource based naming as guest OS hostname** (使用資源型命名作為客體作業系統主機名稱) 設定，首先停止 EC2 執行個體。否則，請跳過這個步驟。

   若要停止執行個體，請選取執行個體，然後選取 **Instance state** (執行個體狀態)、**Stop instance** (停止執行個體)。

1. 選取執行個體，然後選取 **Actions** (動作)、**Instance settings** (執行個體設定)、**Change resource based naming options** (變更資源型命名選項)。
   + **Use resource based naming as guest OS hostname** (使用資源型命名作為客體作業系統主機名稱)︰決定要將 EC2 執行個體的客體作業系統主機名稱做為資源名稱還是 IP 名稱。
   + **Answer DNS hostname IPv4 (A record) requests** (回答 DNS 主機名稱 IPV4 (A 記錄) 請求)：決定對資源名稱的 DNS 請求/查詢是否解析為此 EC2 執行個體的私有 IPv4 地址。
   + **Answer DNS hostname IPv6 (AAAA record) requests** (回答 DNS 主機名稱 IPV6 (AAAA 記錄) 請求)：決定對資源名稱的 DSN 請求/查詢是否解析為此 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) cmdlet。

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

------