我是否需要在 ECS 所在的同一 VPC 中创建 SQS?

hat*_*lla 0 amazon-web-services amazon-ecs aws-vpc

我在 VPC 中有一个 ECS 集群。ECS 必须从 SQS 读取。那么,我是否需要在同一个 VPC 中创建 SQS 才能进行通信?另外,如果说,我想在 VPC 之外进行通信,我该怎么做?

Imr*_*ran 9

虽然 SQS 是 AWS 托管服务,可以通过公共互联网端点直接访问,没有任何 VPC 限制,但从 ECS 应用程序与 SQS 交互的角度来看,我建议创建到 SQS 的 VPC PrivateLink 端点,这将使您免于进行额外的跳跃之旅通过互联网网关。

如果您不创建 VPC 终端节点,流量将按以下方式路由。

AWS ECS 应用程序 ----> NAT 网关(如果 ECS 位于 VPC 的私有子网中,否则不需要) ----> Internet 网关 ----> AWS SQS。

如果您确实创建了到 SQS 的 VPC 端点,那么流量将如下所示,从而消除了通过互联网的跃点。

AWS ECS 应用程序 ----> AWS SQS(通过 PrivateLink)

以下是有关 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


jog*_*old 6

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>"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

另请参阅Amazon SQS 的身份验证和访问控制