本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
教學:從 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
或
之類的延遲端點us-east-2
.queue.amazonaws.com
主題
步驟 1:建立 Amazon EC2 金鑰對
金鑰對可讓您連接至 Amazon EC2 執行個體。它包含加密您登入資訊的公有金鑰,以及解密的私有金鑰。
-
登入 Amazon SNS 主控台
。 -
在導覽功能表的 Network & Security (網路與安全性) 中,選擇 Key Pairs (金鑰對)。
-
選擇 Create Key Pair (建立金鑰對)。
-
在 Create Key Pair (建立金鑰對) 對話方塊中,在 Key pair name (金鑰對名稱) 輸入
SQS-VPCE-Tutorial-Key-Pair
,然後選擇 Create (建立)。 -
您的瀏覽器會自動下載私有金鑰檔案
SQS-VPCE-Tutorial-Key-Pair.pem
。重要
將此檔案存放在安全的地方。EC2 不會為相同的金鑰對產生兩次
.pem
檔案。 -
若要允許 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 隊列
-
從下載名為的 AWS CloudFormation 範
SQS-VPCE-Tutorial-CloudFormation.yaml
本GitHub。 -
選擇 Create Stack (建立堆疊)。
-
在 Select Template (選擇範本) 頁面中,選擇 Upload a template Amazon S3 (將範本上傳至 Amazon S3)、選擇
SQS-VPCE-SQS-Tutorial-CloudFormation.yaml
檔案,然後選擇 Next (下一步)。 -
在 Specify Details (指定詳細資訊) 頁面上,執行下列作業:
-
針對堆疊名稱 輸入
SQS-VPCE-Tutorial-Stack
。 -
對於 KeyName,請選擇 SQS- VPN-教學課程金鑰配對。
-
選擇下一步。
-
-
在選項頁面上,選擇下一步。
-
在 [檢閱] 頁面的 [功能] 區段中,選擇 [我確認 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 傳送訊息。
-
登入 Amazon SNS 主控台
。 -
在導覽功能表的 Instances (執行個體) 下,選擇 Instances (執行個體)。
-
選取 [SQL-跨平台]。Tutorial-EC2Instance
-
複製在 Public DNS (IPv4) (公有 DNS (IPv4)) 下的主機名稱,例如,ec2-203-0-113-0.us-west-2.compute.amazonaws.com。
-
從包含您先前建立之金鑰對的 目錄中,使用以下命令連接至執行個體,例如:
ssh -i SQS-VPCE-Tutorial-Key-Pair.pem ec2-user@
ec2-203-0-113-0.us-east-2.compute.amazonaws.com
-
嘗試連接到任何公有端點,例如:
ping amazon.com
連接嘗試如預期失敗。
-
請登入 Amazon SQS 主控台
。 -
從佇列清單中,選取範 AWS CloudFormation 本建立的佇列,例如 VPC E-SQL 教學課程堆疊 CF佇列 -1ABCdefgh2IJK。
-
在詳細資訊表格上,複製 URL,例如 https://sqs.us-east-2.amazonaws.com/123456789012/。
-
使用以下命令,從 EC2 執行個體,嘗試將訊息發佈至佇列,例如:
aws sqs send-message --region
us-east-2
--endpoint-urlhttps://sqs.us-east-2.amazonaws.com/
--queue-urlhttps://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 服務和端點。
-
請登入 Amazon VPC 主控台
。 -
在導覽功能表中,選擇 Endpoints (端點)。
-
選擇建立端點。
-
在建立端點頁面,針對服務名稱,選擇 Amazon SQS 的服務名稱。
注意
服務名稱會根據目前的 AWS 地區而有所不同。例如,如果您位於美國東部 (俄亥俄州),則服務名稱為 com.amazonaws。
us-east-
2. 平方米。 -
針對 VPC,選擇 SQS-VPCE-Tutorial-VPC。
-
針對 Subnets (子網路),選擇其 Subnet ID (子網路 ID) 包含 SQS-VPCE-Tutorial-Subnet。
-
針對 Security group (安全群組),選擇 Select security groups (選取安全群組),然後選擇其 Group Name (群組名稱) 中包含 SQS VPCE Tutorial Security Group 的安全群組。
-
選擇建立端點。
界面 VPC 端點已建立,且其 ID 已顯示,例如,vpce-0ab1cdef2ghi3j456k。
-
選擇關閉。
Amazon VPC 主控台開啟 Endpoints (端點) 頁面。
Amazon VPC 會開始建立端點並顯示等待中狀態。程序完成後,Amazon VPC 會顯示可用狀態。
步驟 5:將消息發送到您的 Amazon SQS 隊列
VPC 現在已包含 Amazon SQS 的端點,您就可以連接至 EC2 執行個體並將訊息傳送至佇列。
-
重新連接至 EC2 執行個體,例如:
ssh -i SQS-VPCE-Tutorial-Key-Pair.pem ec2-user@
ec2-203-0-113-0.us-east-2.compute.amazonaws.com
-
使用以下命令,嘗試將訊息發佈至佇列,例如:
aws sqs send-message --region
us-east-2
--endpoint-urlhttps://sqs.us-east-2.amazonaws.com/
--queue-urlhttps://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 中接收和刪除訊息
如需有關刪除資源的資訊,請參閱下列各項:
-
在 Amazon VPC 使用者指南中刪除虛擬私人雲端端點
-
在 Amazon EC2 用戶指南中終止您的執行個體
-
在 Amazon VPC 用戶指南中刪除您的 VPC
-
在AWS CloudFormation 使用者指南中刪除 AWS CloudFormation 主控台上的堆疊
-
在 Amazon EC2 用戶指南中刪除您的金鑰對