AWS: Могу ли я предоставить лямбда-функцию внутри VPC-доступа к общедоступному шлюзу API Websockets? - PullRequest
1 голос
/ 09 октября 2019

У меня есть публичный API в API Gateway, использующий протокол Websockets. Я храню его идентификаторы подключений в хранилище данных внутри моего VPC и пытаюсь написать лямбда-код, чтобы прочитать эти идентификаторы подключений и затем отправить данные каждому из них, используя await apigwManagementApi.postToConnection({ ConnectionId: connectionId, Data: postData }).promise();. Это время ожидания - 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-api, но документ по интерфейсам 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 Ноэто API веб-сокета, поэтому эти инструкции не работают, так как у них нет параметра политики ресурса.

...