Невозможно подключить базу данных RDS к лямбда-функции (с использованием безсерверной инфраструктуры) - PullRequest
0 голосов
/ 03 мая 2019

Я хочу связать свою таблицу RDS Database с моей лямбда-функцией, для этого я создал лямбда-функцию и использовал базы данных knex.js и postgres в rds, получил объект knex, но не могу работать ни с одним запросом.

Чтобы дать больше информации об услугах,

  • Группа безопасности сервера базы данных RDS может быть доступна из любого места
  • Я дал vpc в файле serverless.yml в функции.
  • Регион лямбды и rds разные, но не уверен, что это проблема.

Моя функция без сервера

  • примечание: этот код knex работает, когда я пробовал это отдельно.
module.exports.storeTransaction = async (event) => {  
  ...  
  knex('Transactions')
  .select('*')
  .then(response => {
    console.log('response is ');
    console.log(response);
  })
  ...
};

файл Serverless.yml

service: <service-name>

provider:
  name: aws
  runtime: nodejs8.10
  stage: dev
  region: us-east-1

package:
  exclude:
    - node_modules/**
plugins:
  - serverless-plugin-include-dependencies

functions:
  storeEmail:
    handler: handler.storeTransaction
    vpc:
      securityGroupIds:
        - <security-group-id-of-rds>
      subnetIds:
        - <subnet-id-of-rds>
        - <subnet-id-of-rds>
        ...
      region:
        - us-east-1a
    events:
      - http:
          path: email/store
          method: post
          cors: true

Итак, вы можете определить мою проблему, почему я не могу подключить свой rds db к лямбда-функции, и сообщить мне, что я сделал неправильно или чего не хватает.

1 Ответ

1 голос
/ 03 мая 2019

Я думаю, что проблема в том, что RDS и Lambda находятся в разных регионах, что означает, что они также находятся в разных VPC, поскольку VPC не может охватывать несколько регионов.Хотя вы можете включить пиринг Inter VPC (https://aws.amazon.com/vpc/faqs/#Peering_Connections).

. Учтите, что при развертывании лямбда-функции в VPC у нее не будет доступа к Интернету, если вы не подключите шлюз NAT к этому VPC./subnet.

Если RDS открыт для всего мира (и действительно ли это должно быть ??), вы можете попытаться выполнить развертывание в том же регионе (без VPC) и проверить, работает ли это.

...