本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
建立 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
-
請登入 AWS Management Console 並開啟 AWS Cloud Map 主控台,網址為 https://console.aws.amazon.com/cloudmap/。
-
選擇 Create namespace (建立命名空間)。
-
在命名空間名稱中,輸入將用於探索執行個體的名稱。
-
針對公用 DNS 查詢設定的命名空間必須以頂層網域結束。例如 .com
。
-
您可以先將國際化網域名稱 (IDN) 轉換為 Punycode,來指定其名稱。如需線上轉換器的詳細資訊,請在網際網路上搜尋「punycode 轉換器」。
您也可以在以程式設計的方式建立命名空間時,將國際化網域名稱轉換為 Punycode。例如,如果您使用 Java,可以透過使用 java.net.IDN 程式庫的 toASCII
方法,將 Unicode 值轉換為 Punycode。
-
(選擇性) 在「命名空間」說明中,輸入將顯示在「命名空間」頁面和「命名空間」資訊下的命名空間相關資訊。您可以使用此資訊輕鬆識別命名空間。
-
對於執行個體探索,您可以選擇在虛擬私人雲端中的 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 (秒)。
-
(選擇性) 在「標籤」下,選擇「新增標籤」,然後指定要標記命名空間的索引鍵和值。您可以指定要新增至命名空間的一或多個標籤。標籤可讓您對 AWS 資源進行分類,以便更輕鬆地管理它們。如需詳細資訊,請參閱 標記您的 AWS Cloud Map 資源。
-
選擇 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)
-
-
如果您尚未安Boto3
裝,您可以Boto3
在這裡找到安裝、設定和使用說明。
-
導入Boto3
並用servicediscovery
作您的服務。
import boto3
client = boto3.client('servicediscovery')
-
使用您喜歡的實例發現類型的命令創建命名空間(用您自己的值替換紅色
值):
-
使用建立 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 服務。