我在VPC中有一个ECS集群。ECS必须从SQS中读取。那么,我是否需要在同一个VPC中创建SQS来进行通信呢?另外,如果说我想在VPC之外交流,我怎么能做到呢?
发布于 2019-05-05 10:35:29
SQS队列不属于特定的VPC。在创建/配置队列时不涉及网络。
对SQS队列的访问完全使用IAM权限进行管理。
使用ECS,您必须正确地配置任务执行角色。例如,以下策略允许从特定队列发送、接收和删除消息:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"sqs:DeleteMessage",
"sqs:ReceiveMessage",
"sqs:SendMessage"
],
"Resource": "arn:aws:sqs:<region>:<account>:<queue name>"
}
]
}
发布于 2019-05-06 18:23:08
虽然SQS是AWS托管服务,可以通过公共internet端点直接访问,而不受任何VPC限制,但从ECS应用程序与SQS交互的角度来看,我建议创建VPC PrivateLink端点到SQS,这将避免您通过Internet网关执行额外的跳程。
如果不创建VPC端点,流量将按以下方式路由。
AWS ECS应用
如果您确实创建了到SQS的VPC端点,那么流量将类似于下面的内容,从而消除了通过internet.的跳转。
AWS应用程序
下面是一些关于VPC端点如何工作的文档,以及为SQS创建VPC端点的一些指南。
https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints.html https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-vpc-endpoints.html
https://stackoverflow.com/questions/55994860
复制