首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AWS:我可以在VPC中提供一个Lambda函数来访问公共Websockets网关吗?

问AWS:我可以在VPC中提供一个Lambda函数来访问公共Websockets网关吗?
EN

Stack Overflow用户
提问于 2019-10-09 14:08:59
回答 2查看 1.4K关注 0票数 2

我使用Websockets协议在API网关中有一个公共API。我将它的连接in存储在VPC中的一个数据存储区中,并试图编写一个Lambda来读取这些连接in,然后使用await apigwManagementApi.postToConnection({ ConnectionId: connectionId, Data: postData }).promise();将数据发送给每个连接in。这一次-- Lambda无法向API网关发送消息。因此,我尝试在execute-api:aws ec2 create-vpc-endpoint --vpc-id vpc-xyz --vpc-endpoint-type Interface --service-name com.amazonaws.eu-west-1.execute-api --subnet-ids subnet-xyz --security-group-id sg-xyz中添加一个网关。现在我被我打给ForbiddenException: Forbidden的电话扔给了apigwManagementApi。

我尝试过查看execute的文档,但是接口文档https://docs.aws.amazon.com/vpc/latest/userguide/vpce-interface.html指向https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-private-apis.html并导致创建私有API --我不想这样,我需要我的API公开。

我想我可能可以使用资源策略,通常是https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-resource-policies-examples.html,但是这是一个websocket,所以这些指令不能工作,因为它们没有资源策略选项。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-10-25 13:30:50

我在AWS上问到了这个问题,它不可能使用资源策略,并且会增加很多网络复杂性:https://awsdevelopers.slack.com/archives/C6LDW0BC3/p1570618074008500

来自该线程中的AWS:

嘿-当Lambda启用VPC时,它必须遵守VPC和子网的所有路由规则。

要访问任何公共资源,您将需要NAT GW、路由规则和SG设置来允许通信。

资源策略不起作用.

票数 2
EN

Stack Overflow用户

发布于 2020-01-06 09:42:48

我也遇到了同样的问题--这个文档解释了原因(https://aws.amazon.com/premiumsupport/knowledge-center/api-gateway-vpc-connections/)。

要修复它,您需要添加一个边缘优化的自定义域名,这需要以下内容:

  • 将证书添加到AWS (您需要证书、私钥和提供者根证书)到 us-east-1 ACM管理器(您必须将它添加到-east-1中才能在边缘优化的证书列表中看到它)。API网关控制台中的
  • 转到自定义域名并创建一个新域名。
  • 设置您的域名,将类型保留为边缘优化,并应用您刚刚创建的
  • 的证书,一旦域设置(大约需要40分钟),您可以添加基本路径映射以将流量发送到您的api/stages。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58306086

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档