建立 AWS Cloud Map 命名空間以群組應用程式服務 - AWS Cloud Map

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

建立 AWS Cloud Map 命名空間以群組應用程式服務

您可以建立命名空間,以易記的名稱將應用程式的服務分組,以便透過 API 呼叫或 DNS 查詢探索應用程式資源。

實例探索選項

下表摘要說明中的不同執行個體探索選項,以 AWS Cloud Map 及您可以建立的對應命名空間類型 (視應用程式的服務和設定而定)。

命名空間型 實例探索方法 運作方式 其他資訊
HTTP API 呼叫 應用程式中的資源只能呼叫 DiscoverInstances API 來探索其他資源。
私有 DNS VPC 中的 API 呼叫和 DNS 查詢

應用程式中的資源可以透過呼叫 DiscoverInstances API 來探索其他資源,並透過查詢 AWS Cloud Map 自動建立的私有 Route 53 託管區域中的名稱伺服器。

由建立的託管區域與命名空間 AWS Cloud Map 具有相同的名稱,並且包含名稱格式為服務名稱的 DNS 記錄。 命名空間名稱

注意

Route 53 解析器使用私有託管區域中的記錄來解析源自 VPC 的 DNS 查詢。如果私有託管區域未包含與 DNS 查詢中的網域名稱相符的記錄,Route 53 會使用 NXDOMAIN (不存在的網域) 回應查詢。

公共 DNS 服務 API 呼叫和公有 DNS 查詢

應用程式中的資源可以透過呼叫 DiscoverInstances API,並在 AWS Cloud Map 自動建立的公用 Route 53 託管區域中查詢名稱伺服器,以探索其他資源。

公用託管區域與命名空間具有相同的名稱,並且包含名稱格式為服務名稱的 DNS 記錄。 命名空間名稱

注意

在這種情況下,命名空間名稱必須是您已註冊的網域名稱。

程序

您可以依照下列步驟,使用 AWS CLI AWS Management Console、或適用於 Python 的 SDK 來建立命名空間。

AWS Management Console
  1. 請登入 AWS Management Console 並開啟 AWS Cloud Map 主控台,網址為 https://console.aws.amazon.com/cloudmap/

  2. 選擇 Create namespace (建立命名空間)

  3. 命名空間名稱中,輸入將用於探索執行個體的名稱。

    注意
    • 針對公用 DNS 查詢設定的命名空間必須以頂層網域結束。例如 .com

    • 您可以先將國際化網域名稱 (IDN) 轉換為 Punycode,來指定其名稱。如需線上轉換器的詳細資訊,請在網際網路上搜尋「punycode 轉換器」。

      您也可以在以程式設計的方式建立命名空間時,將國際化網域名稱轉換為 Punycode。例如,如果您使用 Java,可以透過使用 java.net.IDN 程式庫的 toASCII 方法,將 Unicode 值轉換為 Punycode。

  4. (選擇性) 在「命名空間」說明中,輸入將顯示在「命名空間」頁面和「命名空間」資訊下的名空間相關資訊。您可以使用此資訊輕鬆識別命名空間。

  5. 對於執行個體探索,您可以選擇在虛擬私人雲端中的 API 呼叫、API 呼叫和 DNS 查詢,以及 API 呼叫和公用 DNS 查詢之間進行選擇,以分別建立 HTTP、私有 DNS 或公用 DNS 命名空間。如需詳細資訊,請參閱 實例探索選項

    根據您的選擇,請按照下列步驟操作。

    • 如果您在 VPC 中選擇 API 呼叫和 DNS 查詢,對於 VPC,請選擇要與命名空間建立關聯的虛擬私有雲 (VPC)。

    • 如果您在 VPC 或 API 呼叫和公用 DNS 查詢中選擇 API 呼叫和 DNS 查詢,對於 TTL,請以秒為單位指定數值。存留時間 (TTL) 值決定 DNS 解析器快取使用命名空間建立之 Route 53 託管區域的授權開始 (SOA) DNS 記錄資訊的時間長度。如需 TTL 的詳細資訊,請參閱 Amazon 路線 53 開發人員指南中的 TTL (秒)

  6. (選擇性) 在「標」下,選擇「新增標籤」,然後指定要標記命名空間的索引鍵和值。您可以指定要新增至命名空間的一或多個標籤。標籤可讓您對 AWS 資源進行分類,以便更輕鬆地管理它們。如需詳細資訊,請參閱 標記您的 AWS Cloud Map 資源

  7. 選擇 Create namespace (建立命名空間)。您可以使用來檢視作業的狀態ListOperations。如需詳細資訊,請參閱 AWS Cloud Map API 參考ListOperations中的

AWS CLI
  • 使用您偏好的執行個體探索類型的命令建立命名空間 (將紅色值取代為您自己的值)。

    • 使用建立 HTTP 命名空間create-http-namespace。使用 HTTP 命名空間註冊的服務執行個體可以使用DiscoverInstances要求進行探索,但無法使用 DNS 探索這些執行個體。

      aws servicediscovery create-http-namespace --name name-of-namespace
    • 建立以 DNS 為基礎的私人命名空間,而且只能使用create-private-dns-namespace指定的 Amazon VPC 內部可見。您可以使用DiscoverInstances要求或使用 DNS,探索使用私有 DNS 命名空間註冊的執行個體

      aws servicediscovery create-private-dns-namespace --name name-of-namespace --vpc vpc-xxxxxxxxx
    • 使用根據網際網路上可見的 DNS 建立公用命名空間create-public-dns-namespace。您可以使用 DiscoverInstances 請求或 DNS,探索已向公有 DNS 命名空間註冊的執行個體。

      aws servicediscovery create-public-dns-namespace --name name-of-namespace
AWS SDK for Python (Boto3)
  1. 如果您尚未安Boto3裝,您可以Boto3在這裡找到安裝、設定和使用說明。

  2. 導入Boto3並用servicediscovery作您的服務。

    import boto3 client = boto3.client('servicediscovery')
  3. 使用您喜歡的實例發現類型的命令創建命名空間(用您自己的值替換紅色值):

    • 使用建立 HTTP 命名空間create_http_namespace()。使用 HTTP 命名空間註冊的服務執行個體可以使用來探索discover_instances(),但無法使用 DNS 探索這些執行個體。

      response = client.create_http_namespace( Name='name-of-namespace', ) # If you want to see the response print(response)
    • 建立以 DNS 為基礎的私人命名空間,而且只能使用create_private_dns_namespace()指定的 Amazon VPC 內部可見。您可以使用discover_instances()或使用 DNS,探索使用私有 DNS 命名空間註冊的執行個體

      response = client.create_private_dns_namespace( Name='name-of-namespace', Vpc='vpc-1c56417b', ) # If you want to see the response print(response)
    • 使用根據網際網路上可見的 DNS 建立公用命名空間create_public_dns_namespace()。您可以使用discover_instances()或使用 DNS,探索已在公用 DNS 命名空間中註冊的執行個體。

      response = client.create_public_dns_namespace( Name='name-of-namespace', ) # If you want to see the response print(response)
    • 範例回應輸出

      { 'OperationId': 'gv4g5meo7ndmeh4fqskygvk23d2fijwa-k9302yzd', 'ResponseMetadata': { '...': '...', }, }

後續步驟

建立命名空間之後,您可以在命名空間中建立服務,將應用程式資源群組在一起,這些資源在應用程式中共同服務特定用途。服務充當將應用程式資源註冊為執行個體的範本。如需建立 AWS Cloud Map 服務的詳細資訊,請參閱建立應用程式元件的 AWS Cloud Map 服務