当前位置: 首页 > 工具软件 > Sqs4J > 使用案例 >

aws 从AWS VPC向 AWS SQS队列发送一个消息

曾沛
2023-12-01

在本教程中,您将学习如何通过一个安全的私有网络向Amazon SQS队列发送消息。这个网络由一个VPC组成,其中包含一个Amazon EC2实例。该实例通过一个接口VPC端点连接到Amazon SQS,允许您连接到Amazon EC2实例并向Amazon SQS队列发送消息,即使该网络与公共互联网断开连接。欲了解更多信息,请参阅Amazon SQS的Amazon虚拟私有云端点。

第1步:创建一个亚马逊EC2密钥对

一个密钥对可以让你连接到一个亚马逊EC2实例。它由一个加密你的登录信息的公钥和一个解密它的私钥组成。
1.登录到亚马逊EC2控制台。
2.在导航菜单上,在网络和安全下,选择密钥对。
3.选择创建密钥对。
4.在创建密钥对对话框中,在密钥对名称中,输入SQS-VPCE-Tutorial-Key-Pair,然后选择创建。
5.您的浏览器会自动下载私钥文件SQS-VPCE-Tutorial-Key-Pair.pem。
6.为了允许SSH客户端连接到你的EC2实例,为你的私钥文件设置权限

第2步:创建AWS资源

为了建立必要的基础设施,你必须使用AWS CloudFormation模板,它是创建由AWS资源组成的堆栈的蓝图,例如Amazon EC2实例和Amazon SQS队列。
本教程中的堆栈包括以下资源。
一个VPC和相关的网络资源,包括一个子网,一个安全组,一个互联网网关,和一个路由表。
一个启动到VPC子网的亚马逊EC2实例
一个亚马逊SQS队列
1.从GitHub下载名为SQS-VPCE-Tutorial-CloudFormation.yaml的AWS CloudFormation模板。
2.登录到AWS CloudFormation控制台。
3.选择创建堆栈。
4.在选择模板页面,选择上传模板到Amazon S3,选择SQS-VPCE-SQS-Tutorial-CloudFormation.yaml文件,然后选择下一步。
5.在 "指定细节 "页面,执行以下操作。
a.对于堆栈名称,输入SQS-VPCE-Tutorial-Stack。
b.对于密钥名,选择SQS-VPCE-Tutorial-Key-Pair。
c.选择下一步。
6.在选项页面,选择下一步。
7.在审查页面,在能力部分,选择我承认AWS CloudFormation可能创建具有自定义名称的IAM资源,然后选择创建。
AWS CloudFormation开始创建堆栈并显示CREATE_IN_PROGRESS状态。当该过程完成后,AWS CloudFormation显示CREATE_COMPLETE状态。

第3步:确认你的EC2实例不被公众访问

你的AWS CloudFormation模板在你的VPC中启动了一个名为SQS-VPCE-Tutorial-EC2-Instance的EC2实例。这个EC2实例不允许向外发送流量,不能向Amazon SQS发送消息。为了验证这一点,你必须连接到该实例,尝试连接到一个公共端点,然后尝试给Amazon SQS发送信息。
1.登录到亚马逊EC2控制台。
2.在导航菜单上,在Instances下,选择Instances。
3.选择SQS-VPCE-Tutorial-EC2Instance。
4.复制公共DNS(IPv4)下的主机名,例如,ec2-203-0-113-0.us-west-2.compute.amazonaws.com。
5.从包含你先前创建的密钥对的目录,使用以下命令连接到实例,例如。

ssh -i SQS-VPCE-Tutorial-KeyPair.pem ec2-user@ec2-203-0-113-0.us-east-2.compute.amazonaws.com

6.例如,尝试连接到任何公共端点。

ping amazon.com

连接尝试失败,正如预期的那样。
7.登录到Amazon SQS控制台。
8.从队列列表中,选择由您的AWS CloudFormation模板创建的队列,例如,VPCE-SQS-Tutorial-Stack-CFQueue-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.”

第4步:为亚马逊SQS创建一个亚马逊VPC端点

为了将您的VPC连接到Amazon SQS,您必须定义一个接口VPC端点。在您添加端点后,您可以从VPC中的EC2实例使用Amazon SQS API。这允许你在AWS网络内向队列发送消息,而无需穿越公共互联网。
1.登录到亚马逊VPC控制台。
2.在导航菜单上,选择Endpoints。
3.选择创建端点。
4.在创建端点页面上,对于服务名称,选择Amazon SQS的服务名称。
5.对于VPC,选择SQS-VPCE-Tutorial-VPC。
6.对于子网,选择其子网ID包含SQS-VPCE-Tutorial-Subnet的子网。
7.对于安全组,选择选择安全组,然后选择组名包含SQS VPCE教程安全组的安全组。
8.选择创建端点。
接口VPC端点被创建,其ID被显示出来,例如,vpce-0ab1cdef2ghi3j456k。
9.选择关闭。
亚马逊VPC控制台打开Endpoints页面。
Amazon VPC开始创建端点并显示待定状态。当该过程完成后,Amazon VPC显示可用状态。

第5步:向你的亚马逊SQS队列发送一个消息

现在你的VPC包括一个Amazon SQS的端点,你可以连接到你的EC2实例并向你的队列发送消息。
1.例如,重新连接到你的EC2实例。

ssh -i SQS-VPCE-Tutorial-KeyPair.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"
}
 类似资料: