Не удается подключить лямбда-функцию к Aurora RDS - PullRequest
0 голосов
/ 23 сентября 2019

Я использую безсерверный фреймворк, чтобы моя лямбда-функция генерировала несколько записей в постоянно включенном экземпляре Aurora RDS.До сих пор меня встречали тайм-ауты подключения при использовании пакета mysql npm и попытке подключиться к экземпляру RDS.

Вот что я проверил \ попробовал:

  • поместите лямбда-функцию в VPC в serverless.yml
  • , включив 3 подсети, связанные с этим VPC, в yml
  • , указав группу безопасности в проверенном servless.yml
  • что в этой сервисной группе есть правило маршрутизации сияний, которое разрешает доступ к самой сервисной группе
  • добавлены операторы роли ec2 эластичного интерфейса iam

serverless.yml:

service: myrds

provider:
  name: aws
  runtime: nodejs10.x
  stage: ${opt:stage, 'dev'}
  region: ${opt:region, 'us-east-2'}
  iamRoleStatements:
    - Effect: "Allow"
      Action: 
        - "ec2:CreateNetworkInterface"
        - "ec2:DescribeNetworkInterfaces"
        - "ec2:DeleteNetworkInterface"
      Resource: "*"
  - Effect: "Allow"
      Action:
        - "sqs:SendMessage"
        - "sqs:GetQueueUrl"
        - "sqs:ListQueues"
      Resource:
        Fn::GetAtt: 
          - RDSQueue
          - Arn 
    - Effect: "Allow"
      Action:
        - "sqs:SendMessage"
        - "sqs:GetQueueUrl"
        - "sqs:ListQueues"
      Resource:
        Fn::GetAtt: 
          - DeadLetterQueue
          - Arn 
 functions:
   consumer:
    handler: handler.consumer
    timeout: 20
    vpc:
    securityGroupIds:
      - sg-123456
    subnetIds:
      - subnet-11111
      - subnet-22222
      - subnet-33333
    events:
      - sqs:
          arn:
            Fn::GetAtt:
              - RDSQueue
              - Arn
    environment:
      NODE_ENV: ${opt:stage, 'dev'}
  resources:
    Resources:
      RDSQueue:
        Type: 'AWS::SQS::Queue'
        Properties:
          QueueName: "RDSQueue-${opt:stage, 'dev'}"
          RedrivePolicy:
            deadLetterTargetArn:
              "Fn::GetAtt":
                - DeadLetterQueue
                - Arn
            maxReceiveCount: 3
      DeadLetterQueue:
        Type: 'AWS::SQS::Queue'
        Properties:
          QueueName: "DeadLetterQueue-${opt:stage, 'dev'}"

Что мне здесь не хватает?Это время ожидания соединения, когда оно запускается из очереди SQS.

1 Ответ

0 голосов
/ 23 сентября 2019

Типичная конфигурация при подключении лямбда-функции AWS к базе данных Amazon RDS:

  • Лямбда-функция, подключенная к частным подсетям в VPC
  • Группа безопасности наЛямбда-функция (Lambda-SG)
  • Группа безопасности в базе данных RDS (RDS-SG) с правилом входящего трафика, разрешающим трафик на соответствующий порт (например, 3306) с Lambda-SG

То есть RDS-SG конкретно ссылается на Lambda-SG во входящем правиле.

Если лямбда-функция также должна подключаться к Интернету, то в общедоступной подсети должен быть шлюз NAT.VPC.

...