SNS -> SQS -> Lambda(在 VPC 内)是否需要 VPCEndpoint 才能读取数据?

Does SNS -> SQS -> Lambda (inside VPC) require VPCEndpoint to READ data?

我开始怀疑在以下情况下是否需要 VPC 端点:

我有一个用作某种事件总线的 SNS 主题。 在不讨论该主题的情况下,让我们继续前进。该 SNS 通过 lambda 的 AWS 无服务器事件源链接到 SQS。你知道,比如:

FoobarEvent:
  Type: SNS
  Properties:
    Topic: !Ref Topic
    SqsSubscription: true

就是这样。所以我让 sam 创建 SQS 来对推送到 SNS 的消息进行排队。 现在,开门见山。 Lambda 本身配置为留在私有子网内。

VpcConfig:
  SecurityGroupIds: [...]
  SubnetIds: [...]

因此,自然而然地,我希望需要一个用于 SNS 和 SQS 服务的 VPC 接口。 但是!?:

  1. 真的是这样吗?
  2. 如果我不定义端点但仍然有 NAT,这些还会被使用吗?
  3. 如果我既没有端点也没有 NAT,这仍然有效吗?

我在问,因为需要 SNS 端点从私有 lambda 推送到它或 SQS 端点分别推送到它是有意义的。不过,我无法理解后台发生了什么? Lambda 在指定队列上按时间间隔轮询。但是如果它在私有子网中,它是如何到达那个队列的呢? SNS 或 SQS 如何相互联系?

Is that really so?

根据评论中的额外信息,您不需要在 VPC 中使用 SNS 或 SQS enpoints。

If I won't define endpoints but still have NATs will those be even used?

如果您的 lambda 函数不需要调用外部 APIs 或访问互联网,也不需要 NAT。

If I will have neither endpoints nor NATs will this still work?

是的,除非您的函数需要访问互联网以访问外部 API 或调用其他一些 AWS 服务。