У меня есть публичный 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 веб-сокета, поэтому эти инструкции не работают, так как у них нет параметра политики ресурса.