教學:從 Amazon Virtual Private Cloud 將訊息傳送到 Amazon SQS 佇列 - Amazon Simple Queue Service

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

教學:從 Amazon Virtual Private Cloud 將訊息傳送到 Amazon SQS 佇列

在此教學課程中,您將了解如何透過安全的私有網路,將訊息傳送到 Amazon SQS 佇列。這個網路包含一個 VPC,其中包含 Amazon EC2 執行個體。執行個體透過界面 VPC 端點連接到 Amazon SQS,讓您可以連接到 Amazon EC2 執行個體並將訊息傳送到 Amazon SQS 佇列,即使網路與公用網際網路中斷連線也是如此。如需詳細資訊,請參閱 適用於 Amazon SQS 的 Amazon Virtual Private Cloud 端點

重要
  • Amazon Virtual Private Cloud 只能搭配 HTTPS Amazon SQS 端點使用。

  • 若您設定 Amazon SQS 從 Amazon VPC 傳送訊息,則必須啟用私有 DNS 並使用 sqs.us-east-2.amazonaws.com 格式指定端點。

  • 私有 DNS 不支援 queue.amazonaws.com.rproxy.goskope.comus-east-2.queue.amazonaws.com 之類的延遲端點

步驟 1:建立 Amazon EC2 金鑰對

金鑰對可讓您連接至 Amazon EC2 執行個體。它包含加密您登入資訊的公有金鑰,以及解密的私有金鑰。

  1. 登入 Amazon SNS 主控台

  2. 在導覽功能表的 Network & Security (網路與安全性) 中,選擇 Key Pairs (金鑰對)

  3. 選擇 Create Key Pair (建立金鑰對)。

  4. Create Key Pair (建立金鑰對) 對話方塊中,在 Key pair name (金鑰對名稱) 輸入 SQS-VPCE-Tutorial-Key-Pair,然後選擇 Create (建立)

  5. 您的瀏覽器會自動下載私有金鑰檔案 SQS-VPCE-Tutorial-Key-Pair.pem

    重要

    將此檔案存放在安全的地方。EC2 不會為相同的金鑰對產生兩次 .pem 檔案。​

  6. 若要允許 SSH 用戶端連接至 EC2 執行個體,請設定私有金鑰檔的許可,讓只有您的使用者才能夠擁有其讀取許可,例如:

    chmod 400 SQS-VPCE-Tutorial-Key-Pair.pem

步驟 2:建立 AWS 資源

若要設定必要的基礎設施,您必須使用 AWS CloudFormation 範本,範本是建立包含 AWS 資源 (例如 Amazon EC2 執行個體和 Amazon SQS 佇列) 的堆疊的藍圖。

此教學的堆疊包含下列資源:

  • 一個 VPC 和關聯的網路資源,包括子網路、安全群組、網際網路閘道和路由表。

  • 在 VPC 子網路中啟動的 Amazon EC2 執行個體

  • Amazon SQS 隊列

  1. 從下載名為的 AWS CloudFormation 範SQS-VPCE-Tutorial-CloudFormation.yaml本GitHub。

  2. 登入 AWS CloudFormation 主控台

  3. 選擇 Create Stack (建立堆疊)。

  4. Select Template (選擇範本) 頁面中,選擇 Upload a template Amazon S3 (將範本上傳至 Amazon S3)、選擇 SQS-VPCE-SQS-Tutorial-CloudFormation.yaml 檔案,然後選擇 Next (下一步)

  5. Specify Details (指定詳細資訊) 頁面上,執行下列作業:

    1. 針對堆疊名稱 輸入 SQS-VPCE-Tutorial-Stack

    2. 對於 KeyName,請選擇 SQS- VPN-教學課程金鑰配對。

    3. 選擇下一步

  6. 選項頁面上,選擇下一步

  7. 在 [檢閱] 頁面的 [功能] 區段中,選擇 [我確認 AWS CloudFormation 可能會使用自訂名稱建立 IAM 資源]。 ,然後選擇 [建立]。

AWS CloudFormation 開始建立堆疊並顯示「建立中 _ 進度」狀態。程序完成後, AWS CloudFormation 會顯示 CREATE_COMPLETE 狀態。

步驟 3:確認 EC2 執行個體不是供公開存取

您的 AWS CloudFormation 範本會啟動 VPC SQS-VPCE-Tutorial-EC2-Instance 中名為的 EC2 執行個體。此 EC2 執行個體不允許輸出流量,且無法將訊息傳送至 Amazon SQS。若要驗證是否如此,您必須連接至此執行個體、嘗試連接至公有端點,接著嘗試向 Amazon SQS 傳送訊息。

  1. 登入 Amazon SNS 主控台

  2. 在導覽功能表的 Instances (執行個體) 下,選擇 Instances (執行個體)

  3. 選取 [SQL-跨平台]。Tutorial-EC2Instance

  4. 複製在 Public DNS (IPv4) (公有 DNS (IPv4)) 下的主機名稱,例如,ec2-203-0-113-0.us-west-2.compute.amazonaws.com。​

  5. 從包含您先前建立之金鑰對的 目錄中,使用以下命令連接至執行個體,例如:​

    ssh -i SQS-VPCE-Tutorial-Key-Pair.pem ec2-user@ec2-203-0-113-0.us-east-2.compute.amazonaws.com
  6. 嘗試連接到任何公有端點,例如:

    ping amazon.com

    連接嘗試如預期失敗。

  7. 請登入 Amazon SQS 主控台

  8. 從佇列清單中,選取範 AWS CloudFormation 本建立的佇列,例如 VPC E-SQL 教學課程堆疊 CF佇列 -1ABCdefgh2IJK。

  9. 詳細資訊表格上,複製 URL,例如 https://sqs.us-east-2.amazonaws.com/123456789012/

  10. 使用以下命令,從 EC2 執行個體,嘗試將訊息發佈至佇列,例如:

    aws sqs send-message --region us-east-2 --endpoint-url https://sqs.us-east-2.amazonaws.com/ --queue-url https://sqs.us-east-2.amazonaws.com/123456789012/ --message-body "Hello from Amazon SQS."

    傳送中嘗試如預期失敗。

    重要

    當您稍後為 Amazon SQS 建立 VPC 端點時,傳送中嘗試將會成功。

步驟 4:建立 Amazon SQS 的 Amazon VPC 端點

若要將您的 VPC 連接到 Amazon SQS,您必須定義介面 VPC 端點。在您新增端點後,您可以在 VPC 中使用來自 EC2 執行個體的 Amazon SQS API。這可讓您將訊息傳送到網路中的佇列,而不需要跨越公用 AWS 網際網路。

注意

EC2 執行個體仍無法存取網際網路上的其他 AWS 服務和端點。

  1. 請登入 Amazon VPC 主控台

  2. 在導覽功能表中,選擇 Endpoints (端點)

  3. 選擇建立端點

  4. 建立端點頁面,針對服務名稱,選擇 Amazon SQS 的服務名稱。

    注意

    服務名稱會根據目前的 AWS 地區而有所不同。例如,如果您位於美國東部 (俄亥俄州),則服務名稱為 com.amazonaws。 us-east- 2. 平方米。

  5. 針對 VPC,選擇 SQS-VPCE-Tutorial-VPC。​

  6. 針對 Subnets (子網路),選擇其 Subnet ID (子網路 ID) 包含 SQS-VPCE-Tutorial-Subnet

  7. 針對 Security group (安全群組),選擇 Select security groups (選取安全群組),然後選擇其 Group Name (群組名稱) 中包含 SQS VPCE Tutorial Security Group 的安全群組。

  8. 選擇建立端點

    界面 VPC 端點已建立,且其 ID 已顯示,例如,vpce-0ab1cdef2ghi3j456k。​

  9. 選擇關閉

    Amazon VPC 主控台開啟 Endpoints (端點) 頁面。

Amazon VPC 會開始建立端點並顯示等待中狀態。程序完成後,Amazon VPC 會顯示可用狀態。

步驟 5:將消息發送到您的 Amazon SQS 隊列

VPC 現在已包含 Amazon SQS 的端點,​您就可以連接至 EC2 執行個體並將訊息傳送至佇列。

  1. 重新連接至 EC2 執行個體,例如:

    ssh -i SQS-VPCE-Tutorial-Key-Pair.pem ec2-user@ec2-203-0-113-0.us-east-2.compute.amazonaws.com
  2. 使用以下命令,嘗試將訊息發佈至佇列,例如:

    aws sqs send-message --region us-east-2 --endpoint-url https://sqs.us-east-2.amazonaws.com/ --queue-url https://sqs.us-east-2.amazonaws.com/123456789012/ --message-body "Hello from Amazon SQS."

    傳送中嘗試會成功,且會顯示訊息本文的 MD5 摘要和訊息 ID,例如:

    { "MD5OfMessageBody": "a1bcd2ef3g45hi678j90klmn12p34qr5", "MessageId": "12345a67-8901-2345-bc67-d890123e45fg" }

如需從範 AWS CloudFormation 本建立之佇列接收和刪除訊息的相關資訊 (例如,VPCE-SQL 教學課程堆疊-CF佇列- 1ABCdefgh2IJK),請參閱。在 Amazon SQS 中接收和刪除訊息

如需有關刪除資源的資訊,請參閱下列各項: