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

news/2024/5/20 6:26:10 标签: aws, 云计算, 无服务器架构, rabbitmq, serverless

在本教程中,您将学习如何通过一个安全的私有网络向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"
}

http://www.niftyadmin.cn/n/1600086.html

相关文章

一个有趣的项目

注意:请转载者保留原文链接,谢谢~ Linker http://elua.luaforge.net/tut_boot_lua.html eLua是一个神奇的项目,她可以让你的电脑直接引导到Lua而不是OS. 呵呵.废话不说,自己去项目主页看吧.

aws SQS秘钥管理

亚马逊SQS与AWS密钥管理服务(KMS)集成,以管理服务器端加密(SSE)的KMS密钥。有关 SSE 信息和密钥管理定义,请参见休息时加密。Amazon SQS使用KMS密钥来验证和保护加密和解密消息的数据密钥。下面的章节提供了…

Google的protocol buffers确实很棒

一直以来缺少一种高效的序列化方式。 终于,PB实现了。而且自动生成 Python C 等语言的封装代码。 效率也比XML快20X 强烈推荐~!

aws DynamoDB的核心组件

在DynamoDB中,表、项和属性是你工作的核心组件。一个表是一个项目的集合,每个项目是一个属性的集合。DynamoDB使用主键来唯一地识别表中的每个项目,使用二级索引来提供更多的查询灵活性。你可以使用DynamoDB Streams来捕获DynamoDB表中的数据…

如何让表格(table)充满整个页面

在开发过程中遇到了这个问题&#xff0c;需要将表格充满这个页面&#xff0c;实际的表格并没有那么高&#xff0c;于是使用如下代码设置&#xff1a;<table height"100%"> <tr height"50%"><td>test1</td></tr> <tr heig…

aws DynamoDB的API分类

为了与Amazon DynamoDB合作&#xff0c;你的应用程序必须使用一些简单的API操作。下面是这些操作的摘要&#xff0c;按类别组织。 控制层 控制层操作让你创建和管理DynamoDB表。它们还可以让你处理索引、流和其他依赖于表的对象。 CreateTable - 创建一个新的表。你可以选择…

mysqldump的编码问题

mysqldump命令是MySQL数据提供的一个很方便的数据库备份工具&#xff0c;具体用法可以参见&#xff1a; http://dev.mysql.com/doc/refman/5.0/en/mysqldump.html。这几天遇到一个问题&#xff0c;在使用该命令进行数据库同步时&#xff0c;数据库中的中文数据总会变为乱码。作…

aws DynamoDB中支持的数据类型和命名规则

本节介绍了Amazon DynamoDB的命名规则和DynamoDB支持的各种数据类型。有一些限制适用于数据类型。 命名规则 DynamoDB中的表、属性和其他对象必须有名字。名称应该是有意义的和简洁的–例如&#xff0c;像产品、书籍和作者这样的名称是不言自明的。 以下是DynamoDB的命名规则…