AWS:我是否可以让VPC内的Lambda函数访问公共WebSockets API网关? [英] AWS: Can I give a Lambda function inside a VPC access to a public Websockets API Gateway?

查看:21
本文介绍了AWS:我是否可以让VPC内的Lambda函数访问公共WebSockets API网关?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在API网关中有一个使用WebSockets协议的公共API。我将其连接ID存储在我的vPC内的一个数据存储中,并尝试编写一个Lambda来读取这些连接ID,然后使用await apigwManagementApi.postToConnection({ ConnectionId: connectionId, Data: postData }).promise();将数据发送给它们中的每一个。超时-Lambda无法向API网关发送消息。因此,我尝试将网关添加到execute-apiaws 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。现在我调用apigwManagementApi时抛出ForbiddenException: Forbidden

我尝试查看Execute-API Gateway的文档,但接口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 API,因此这些指令不起作用,因为它们没有资源策略选项。

推荐答案

我在AWS Slake上询问过这个问题,无法使用资源策略,会增加很多网络复杂性:https://awsdevelopers.slack.com/archives/C6LDW0BC3/p1570618074008500

来自该线程中的AWS开发人员:

您好-当Lambda启用VPC时,受您的VPC和子网的所有路由规则约束。

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

资源策略将不起作用。

这篇关于AWS:我是否可以让VPC内的Lambda函数访问公共WebSockets API网关?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆