建立 VPC - Amazon Virtual Private Cloud

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

建立 VPC

使用下列程序建立虛擬私有雲端 (VPC)。VPC 必須具有其他資源 (例如子網路、路由表和閘道),才能在 VPC 中建立 AWS 資源。

如需有關檢視或修改 VPC 的資訊,請參閱設定您的 VPC

VPC 組態選項

您可以在建立 VPC 時指定下列組態選項。

可用區域

在 AWS 區域中具有備援電源、聯網和連線能力的獨立資料中心。您可以使用多個 AZ 來操作生產應用程式和資料庫,相較於單一資料中心,其可用性、容錯能力和可擴展性更高。如果跨可用區域對執行於子網路中的應用程式進行分區,可以更完善地隔離和保護其免受停電、雷擊、龍捲風和地震等問題的影響。

CIDR 區塊

您必須指定 VPC 和子網路的 IP 地址範圍。如需詳細資訊,請參閱 您 VPC 和子網路的 IP 定址

DNS 選項

如果您需要公有 IPv4 DNS 主機名稱以將 EC2 執行個體啟動到子網路中,則必須啟用這兩個 DNS 選項。如需詳細資訊,請參閱 VPC 的 DNS 屬性

  • 啟用 DNS 主機名稱:在 VPC 中啟動的 EC2 執行個體會接收與其公有 IPv4 地址相對應的公有 DNS 主機名稱。

  • 啟用 DNS 解析:私有 DNS 主機名稱的 DNS 解析是由 Amazon DNS 伺服器 (稱為 Route 53 Resolver) 提供給 VPC 的 DNS 解析。

網際網路閘道

將您的 VPC 連線至網際網路。公有子網路中的執行個體可以存取網際網路,因為子網路路由表包含一個路由,能將目標為網際網路的流量傳送至網際網路閘道。如果伺服器不需要直接從網際網路連線,則不應將其部署到公有子網路中。如需詳細資訊,請參閱網際網路閘道

名稱

系統會使用您為 VPC 和其他 VPC 資源指定的名稱來建立「名稱」標籤。如果您使用主控台中的名稱標籤自動產生功能,則標籤值會具有「名稱-資源」的格式。

NAT 閘道

讓私有子網路中的執行個體能夠將傳出流量傳送至網際網路,但阻止網際網路上的資源連線至執行個體。在生產環境中,建議您在每個作用中 AZ 中部署 NAT 閘道。如需更多詳細資訊,請參閱 NAT 閘道

路由表

包含一組名為路由的規則,可判斷來自子網或閘道之網路流量的方向。如需詳細資訊,請參閱路由表

子網

您 VPC 中的 IP 地址範圍。您可以在子網路中啟動 EC2 執行個體等 AWS 資源。每個子網路都完全位於一個可用區域內。藉由在至少兩個可用區域中啟動執行個體,您可以保護應用程式免於發生單一可用區域故障。

公有子網路會直接路由到網際網路閘道。公有子網路中的資源可以存取公有網際網路。私有子網路不會直接路由至網際網路閘道。私有子網路中的資源需要另一個元件 (例如 NAT 裝置),才能存取公有網際網路。

如需詳細資訊,請參閱子網路

租用

此選項會定義啟動至 VPC 的 EC2 執行個體,是否會在與其他 AWS 帳戶 共用的硬體上執行,或是在僅供您使用的硬體上執行。如果您選擇租用 VPCDefault,啟動到此 VPC 的 EC2 執行個體將使用啟動執行個體時指定的租用屬性--如需詳細資訊,請參閱 Amazon EC2 使用者指南中的使用已定義參數啟動執行個體。如果您選擇 VPC 的租用為 Dedicated,則執行個體將會一律以硬體上之專用預留執行個體 (專供您使用) 的形式執行。如果您使用的是 AWS Outposts,您的 Outpost 需要私人連接;您必須使用Default租賃。

建立 VPC 以及其他 VPC 資源

使用下列程序建立 VPC 以及執行應用程式所需的其他 VPC 資源,例如子網路、路由表、網際網路閘道和 NAT 閘道。如需範例 VPC 組態,請參閱VPC 範例

如何使用主控台建立 VPC、子網路和其他 VPC 資源
  1. 前往 https://console.aws.amazon.com/vpc/ 開啟 Amazon VPC 主控台。

  2. 在 VPC 儀表板上,選擇 Create VPC (建立 VPC)

  3. 針對 Resources to create (建立資源),選擇 VPC and more (VPC 等)。

  4. 保持選取 [自動產生名稱] 標籤以建立 VPC 資源的 [名稱] 標籤,或清除它以提供您自己的名稱標籤給 VPC 資源。

  5. IPv4 CIDR 區塊,輸入 VPC 的 IPv4 地址範圍。VPC 必須具有 IPv4 地址範圍。

  6. (選用) 若要支援 IPv6 流量,請選擇 IPv6 CIDR 區塊 > Amazon 提供的 IPv6 CIDR 區塊

  7. 選擇租用選項。此選項會定義啟動至 VPC 的 EC2 執行個體,是否會在與其他 AWS 帳戶 共用的硬體上執行,或是在僅供您使用的硬體上執行。如果您選擇要使用 VPC 的租用Default,則在此 VPC 中啟動的 EC2 執行個體將使用啟動執行個體時指定的租用屬性。如需詳細資訊,請參閱 Amazon EC2 使用者指南中的使用已定義參數啟動執行個體。如果您選擇 VPC 的租用為 Dedicated,則執行個體將會一律以硬體上之專用預留執行個體 (專供您使用) 的形式執行。如果您使用的是 AWS Outposts,您的 Outpost 需要私人連接;您必須使用Default租賃。

  8. 對於可用區域 (AZ) 的數目,建議您至少在生產環境的兩個可用區域中佈建子網路。若要選擇子網路的 AZ,請展開自訂 AZ。否則,讓我們為您 AWS 選擇它們。

  9. 若要設定您的子網路,請選擇公有子網路數目私有子網路數目的值。若要選擇子網路的 IP 地址範圍,請展開自訂子網路 CIDR 區塊。否則,讓我們為您 AWS 選擇它們。

  10. (選用) 如果私有子網路中的資源需要透過 IPv4 存取公有網際網路,請在 NAT 閘道選擇要在其中建立 NAT 閘道的 AZ 數目。在生產環境中,建議您在每個 AZ 中部署一個 NAT 閘道,並包含需要存取公有網際網路的資源。請注意,存在與 NAT 閘道關聯的成本。如需詳細資訊,請參閱 定價

  11. (選用) 如果私有子網路中的資源需要透過 IPv6 存取公用網際網路,請在僅限輸出的網際網路閘道選擇

  12. (選用) 如果您需要直接從 VPC 存取 Amazon S3,請選擇 VPC 端點 > S3 閘道。這會為 Amazon S3 建立閘道 VPC 端點。如需詳細資訊,請參閱《AWS PrivateLink 指南》中的閘道 VPC 端點

  13. (選用) 在 DNS 選項,網域名稱解析的兩個選項都會依預設啟用。如果預設值不符合需求,您可以停用這些選項。

  14. (選用) 若要將標籤新增至 VPC,請展開其他標籤,選擇新增標籤,然後輸入標籤金鑰和標籤值。

  15. 預覽窗格中,您可以透過視覺化方式掌握您已設定的 VPC 資源之間的關係。實線代表資源之間的關係。虛線代表 NAT 閘道、網際網路閘道和閘道端點的網路流量。建立 VPC 後,可以隨時使用資源映射索引標籤以此格式將 VPC 中的資源視覺化。如需詳細資訊,請參閱 視覺化 VPC 中的資源

  16. 當您完成設定 VPC 後,請選擇建立 VPC

僅建立 VPC

使用下列程序透過 Amazon VPC 主控台建立不含任何其他 VPC 資源的 VPC。

如何使用主控台建立不含任何其他 VPC 資源的 VPC
  1. 前往 https://console.aws.amazon.com/vpc/ 開啟 Amazon VPC 主控台。

  2. 在 VPC 儀表板上,選擇 Create VPC (建立 VPC)

  3. 建立資源,選擇僅 VPC

  4. (選用) 在名稱標籤中,輸入您 VPC 的名稱。執行此作業會使用 Name 做為索引鍵,以及您指定的值來建立標籤。

  5. 對於 IPv4 CIDR 區塊,執行下列其中一個動作:

    • 選擇 IPv4 CIDR 手動輸入,然後輸入 VPC 的 IPv4 地址範圍。

    • 選擇 IPAM 配置的 IPv4 CIDR 區塊,然後選取您的 Amazon IPAM VPC IP 地址管理員 (IPAM) IPv4 地址集區和網路遮罩。CIDR 區塊的大小會受 IPAM 集區上的分配規則所限制。IPAM 是 VPC 功能,可讓您更輕鬆地為工作負載規劃、追蹤和監控 IP 位址。 AWS 如需詳細資訊,請參閱 Amazon VPC IPAM 使用者指南。

      如果您是使用 IPAM 來管理 IP 地址,建議您選擇此選項。否則,您為 VPC 指定的 CIDR 區塊可能會與 IPAM CIDR 配置重疊。

  6. (選用) 若要建立雙堆疊 VPC,請為您的 VPC 指定 IPv6 地址範圍。對於 IPv6 CIDR 區塊,執行下列其中一個動作:

    • 如果您使用 Amazon VPC IP Address Manager,並且想從 IPAM 集區佈建 IPv6 CIDR,選擇 IPAM-allocated IPv6 CIDR block (IPAM 配置的 IPv6 CIDR 區塊)。CIDR block (CIDR 區塊) 下提供兩個用於將 IP 地址範圍佈建至 VPC 的選項:

      • Netmask length (網路遮罩長度):選擇此選項可為 CIDR 選取網路遮罩長度。執行以下任意一項:

        • 如果已為 IPAM 集區選取預設網路遮罩長度,您可以選擇 Default to IPAM netmask length (預設為 IPAM 網路遮罩長度),以使用 IPAM 管理員為 IPAM 集區設定的預設網路遮罩長度。如需有關可選預設網路遮罩長度配置規則的詳細資訊,請參閱《Amazon VPC IPAM 使用者指南》中的建立區域 IPv6 集區

        • 如果沒有為 IPAM 集區選取預設網路遮罩長度,則選擇比 IPAM 集區 CIDR 網路遮罩長度更為具體的網路遮罩長度。例如,如果 IPAM 集區 CIDR 是 /50,您可以為 VPC 選擇介於 /52/60 之間的網路遮罩長度。可能的網路遮罩長度介於 /44/60 之間 (增量為 /4)。

      • Select a CIDR (選取 CIDR):選擇此選項可手動輸入 IPv6 地址。只能選擇比 IPAM 集區 CIDR 的網路遮罩長度更具體的網路遮罩長度。例如,如果 IPAM 集區 CIDR 是 /50,您可以為 VPC 選擇介於 /52/60 之間的網路遮罩長度。可能的 IPv6 網路遮罩長度介於 /44/60 之間 (增量為 /4)。

    • 選擇 Amazon 提供的 IPv6 CIDR 區塊,向 Amazon 的 IPv6 地址集區請求 IPv6 CIDR 區塊。對於網路邊界群組,選取通 AWS 告 IP 位址的群組。Amazon 所提供 IPv6 CIDR 區塊的固定大小為 /56

    • 選擇 IPv6 CIDR owned by me (我擁有的 IPv6 CIDR),佈建已帶入 AWS的 IPv6 CIDR。如需將自己的 IP 位址範圍帶到的詳細資訊 AWS,請參閱 Amazon EC2 使用者指南中的攜帶您自己的 IP 位址 (BYOIP)。您可以使用下列 CIDR 區塊選項為 VPC 佈建 IP 位址範圍:

      • No preference (無偏好設定):選擇此選項可使用網路遮罩長度 /56

      • Select a CIDR (選取 CIDR):選擇此選項可手動輸入 IPv6 地址,並選擇比 BYOIP CIDR 規模更具體的網路遮罩長度。例如,如果 BYOIP 集區 CIDR 是 /50,您可以為 VPC 選擇介於 /52/60 之間的網路遮罩長度。可能的 IPv6 網路遮罩長度介於 /44/60 之間 (增量為 /4)。

  7. (選用) 選擇租用選項。此選項會定義啟動至 VPC 的 EC2 執行個體,是否會在與其他 AWS 帳戶 共用的硬體上執行,或是在僅供您使用的硬體上執行。如果您選擇租用 VPCDefault,啟動到此 VPC 的 EC2 執行個體將使用啟動執行個體時指定的租用屬性--如需詳細資訊,請參閱 Amazon EC2 使用者指南中的使用已定義參數啟動執行個體。如果您選擇 VPC 的租用為 Dedicated,則執行個體將會一律以硬體上之專用預留執行個體 (專供您使用) 的形式執行。如果您使用的是 AWS Outposts,您的 Outpost 需要私人連接;您必須使用Default租賃。

  8. (選用) 若要將標籤新增至 VPC,請選擇新增標籤,然後輸入標籤金鑰和標籤值。

  9. 選擇建立 VPC

  10. 建立 VPC 後,您可以新增子網。如需詳細資訊,請參閱 建立子網

使用建立 VPC AWS CLI

下列程序包含建立 VPC 的範例 AWS CLI 命令,以及執行應用程式所需的其他 VPC 資源。如果您執行此程序中的所有命令,您將會建立 VPC、公有子網路、私有子網路、每個子網路的路由表、網際網路閘道、僅限輸出的網際網路閘道,以及公有 NAT 閘道。如果您不需要所有這些資源,可以只使用您所需的範例命令。

必要條件

開始之前,請先安裝並設定 AWS CLI。配置時 AWS CLI,系統會提示您輸 AWS 入身份證明。本程序中的範例假設您也設定了預設「區域」。否則,請將 --region 選項新增至每個命令。如需詳細資訊,請參閱安裝或更新 AWS CLI設定 AWS CLI

標記

您可以在使用 create-tags 命令建立資源後,將標籤新增至資源。或者,您也可以如下所示將 --tag-specification 選項新增至資源的建立命令。

--tag-specifications ResourceType=vpc,Tags=[{Key=Name,Value=my-project}]
若要建立 VPC 加上 VPC 資源,請使用 AWS CLI
  1. 使用下列 create-vpc 命令,以建立具有指定 IPv4 CIDR 區塊的 VPC。

    aws ec2 create-vpc --cidr-block 10.0.0.0/24 --query Vpc.VpcId --output text

    或者,若要建立雙堆疊 VPC,請新增 --amazon-provided-ipv6-cidr-block 選項以新增 Amazon 提供的 IPv6 CIDR 區塊,如下列範例所示。

    aws ec2 create-vpc --cidr-block 10.0.0.0/24 --amazon-provided-ipv6-cidr-block --query Vpc.VpcId --output text

    這些命令會傳回新 VPC 的 ID。以下是範例。

    vpc-1a2b3c4d5e6f1a2b3
  2. [雙堆疊 VPC] 使用下列 describe-vpcs 命令,取得已與您 VPC 建立關聯的 IPv6 CIDR 區塊。

    aws ec2 describe-vpcs --vpc-id vpc-1a2b3c4d5e6f1a2b3 --query Vpcs[].Ipv6CidrBlockAssociationSet[].Ipv6CidrBlock --output text

    下列為範例輸出。

    2600:1f13:cfe:3600::/56
  3. 視您的使用案例而定,可建立一或多個子網路。在生產環境中,建議您至少在兩個可用區域中啟動資源。使用下列其中一個命令來建立各個子網路。

    • 僅限 IPv4 子網路 – 若要建立具有特定 IPv4 CIDR 區塊的子網路,請使用下列 create-subnet 命令。

      aws ec2 create-subnet --vpc-id vpc-1a2b3c4d5e6f1a2b3 --cidr-block 10.0.1.0/20 --availability-zone us-east-2a --query Subnet.SubnetId --output text
    • 雙堆疊子網路 – 如果您建立了雙堆疊 VPC,您可以使用 --ipv6-cidr-block 選項來建立雙堆疊子網路,如下列命令所示。

      aws ec2 create-subnet --vpc-id vpc-1a2b3c4d5e6f1a2b3 --cidr-block 10.0.1.0/20 --ipv6-cidr-block 2600:1f13:cfe:3600::/64 --availability-zone us-east-2a --query Subnet.SubnetId --output text
    • 僅限 IPv6 子網路 – 如果您建立了雙堆疊 VPC,您可以使用 --ipv6-native 選項來建立僅限 IPv6子網路,如下列命令所示。

      aws ec2 create-subnet --vpc-id vpc-1a2b3c4d5e6f1a2b3 --ipv6-native --ipv6-cidr-block 2600:1f13:cfe:3600::/64 --availability-zone us-east-2a --query Subnet.SubnetId --output text

    這些命令會傳回新子網路的 ID。以下是範例。

    subnet-1a2b3c4d5e6f1a2b3
  4. 如果您的 Web 伺服器或 NAT 閘道需要公有子網路,請執行下列動作:

    1. 使用下列 create-internet-gateway 命令,建立網際網路閘道。該命令會傳回新網際網路閘道的 ID。

      aws ec2 create-internet-gateway --query InternetGateway.InternetGatewayId --output text
    2. 使用下列 attach-internet-gateway 命令,將網際網路閘道連接至您的 VPC。使用上一個步驟傳回的網際網路閘道 ID。

      aws ec2 attach-internet-gateway --vpc-id vpc-1a2b3c4d5e6f1a2b3 --internet-gateway-id igw-id
    3. 使用下列 create-route-table 命令,建立公有子網路的自訂路由表。該命令會傳回新路由表的 ID。

      aws ec2 create-route-table --vpc-id vpc-1a2b3c4d5e6f1a2b3 --query RouteTable.RouteTableId --output text
    4. 使用下列 create-route 命令,在將所有 IPv4 流量傳送至網際網路閘道的路由表中建立路由。使用公有子網路的路由表 ID。

      aws ec2 create-route --route-table-id rtb-id-public --destination-cidr-block 0.0.0.0/0 --gateway-id igw-id
    5. 使用下列 associate-route-table 命令,將路由表與公有子網路建立關聯。使用公有子網路的路由表 ID 以及公有子網路的 ID。

      aws ec2 associate-route-table --route-table-id rtb-id-public --subnet-id subnet-id-public-subnet
  5. [IPv6] 您可以新增輸出限定網際網路閘道,讓私有子網路中的執行個體可以透過 IPv6 存取網際網路 (例如用於取得軟體更新),但網際網路上的主機無法存取您的執行個體。

    1. 使用下列 create-egress-only-internet-gateway 命令,建立輸出限定網際網路閘道。該命令會傳回新網際網路閘道的 ID。

      aws ec2 create-egress-only-internet-gateway --vpc-id vpc-1a2b3c4d5e6f1a2b3 --query EgressOnlyInternetGateway.EgressOnlyInternetGatewayId --output text
    2. 使用下列 create-route-table 命令,建立私有子網路的自訂路由表。該命令會傳回新路由表的 ID。

      aws ec2 create-route-table --vpc-id vpc-1a2b3c4d5e6f1a2b3 --query RouteTable.RouteTableId --output text
    3. 使用下列 create-route 命令,在將所有 IPv6 流量傳送至輸出限定網際網路閘道的私有子網路的路由表中建立路由。使用上一個步驟傳回的路由表 ID。

      aws ec2 create-route --route-table-id rtb-id-private --destination-cidr-block ::/0 --egress-only-internet-gateway eigw-id
    4. 使用下列 associate-route-table 命令,將路由表與私有子網路建立關聯。

      aws ec2 associate-route-table --route-table-id rtb-id-private --subnet-id subnet-id-private-subnet
  6. 如果私有子網路中的資源需要 NAT 閘道,請執行下列動作:

    1. 使用下列 allocate-address 命令,建立 NAT 閘道的彈性 IP 地址。

      aws ec2 allocate-address --domain vpc --query AllocationId --output text
    2. 使用下列建立 NAT 閘道指令,在公用子網路中建立 NAT 閘道。使用上一個步驟傳回的配置 ID。

      aws ec2 create-nat-gateway --subnet-id subnet-id-public-subnet --allocation-id eipalloc-id
    3. (選用) 如果您已在步驟 5 中建立私有子網路的路由表,請略過此步驟。否則,請使用下列 create-route-table 命令,建立私有子網路的路由表 該命令會傳回新路由表的 ID。

      aws ec2 create-route-table --vpc-id vpc-1a2b3c4d5e6f1a2b3 --query RouteTable.RouteTableId --output text
    4. 使用下列 create-route 命令,在將所有 IPv4 流量傳送至 NAT 閘道之私有子網路的路由表中建立路由。使用您在此步驟或步驟 5 中建立的私有子網路的路由表 ID。

      aws ec2 create-route --route-table-id rtb-id-private --destination-cidr-block 0.0.0.0/0 --gateway-id nat-id
    5. (選用) 如果您已在步驟 5 中將路由表與私有子網路建立關聯,請略過此步驟。否則,請使用下列 associate-route-table 命令,將路由表與私有子網路建立關聯。使用您在此步驟或步驟 5 中建立的私有子網路的路由表 ID。

      aws ec2 associate-route-table --route-table-id rtb-id-private --subnet-id subnet-id-private-subnet