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