В настоящее время у меня есть Django Лямбда-функция REST API, запущенная в VP C, которая обращается к кластеру Aurora Serverless внутри того же VP C. API используется приложением React. API работает так, как задумано, и я могу подключиться, но иногда запросы истекают примерно через 30 секунд. Этот тайм-аут происходит только после того, как API не использовался в течение минуты. После того, как я несколько раз обновлю sh страницу, которая, как я предполагаю, прогревает лямбду, запросы go проходят, и я могу получить данные. После некоторого бездействия запросы снова истекают, и мне нужно обновить sh. Хотя обновление работает, это определенно не то, что я хочу для своего приложения, и это очень утомительно.
Вот файл YAML, который я использовал для создания VP C в облачной информации:
AWSTemplateFormatVersion: 2010-09-09
Resources:
pubPrivateVPC:
Type: AWS::EC2::VPC
Properties:
CidrBlock: 172.31.0.0/16
Tags:
- Key: Name
Value: !Ref AWS::StackName
publicSubnet1:
Type: AWS::EC2::Subnet
Properties:
VpcId: !Ref pubPrivateVPC
AvailabilityZone:
Fn::Select:
- 0
- Fn::GetAZs: ""
CidrBlock: 172.31.0.0/24
MapPublicIpOnLaunch: true
Tags:
- Key: Name
Value: !Join ["-", [!Ref "AWS::StackName","public-subnet"]]
privateSubnet1:
Type: AWS::EC2::Subnet
Properties:
VpcId: !Ref pubPrivateVPC
AvailabilityZone:
Fn::Select:
- 0
- Fn::GetAZs: ""
CidrBlock: 172.31.3.0/24
MapPublicIpOnLaunch: false
Tags:
- Key: Name
Value: !Join ["-", [!Ref "AWS::StackName","private-subnet-a"]]
privateSubnet2:
Type: AWS::EC2::Subnet
Properties:
VpcId: !Ref pubPrivateVPC
AvailabilityZone:
Fn::Select:
- 1
- Fn::GetAZs: ""
CidrBlock: 172.31.2.0/24
MapPublicIpOnLaunch: false
Tags:
- Key: Name
Value: !Join ["-", [!Ref "AWS::StackName","private-subnet-b"]]
internetGateway:
Type: AWS::EC2::InternetGateway
Properties:
Tags:
- Key: Name
Value: !Join ["-", [!Ref "AWS::StackName","gateway"]]
gatewayToInternet:
Type: AWS::EC2::VPCGatewayAttachment
Properties:
VpcId: !Ref pubPrivateVPC
InternetGatewayId: !Ref internetGateway
publicRouteTable:
Type: AWS::EC2::RouteTable
Properties:
VpcId: !Ref pubPrivateVPC
publicRoute:
Type: AWS::EC2::Route
DependsOn: gatewayToInternet
Properties:
RouteTableId: !Ref publicRouteTable
DestinationCidrBlock: 0.0.0.0/0
GatewayId: !Ref internetGateway
publicSubnet1RouteTableAssociation:
Type: AWS::EC2::SubnetRouteTableAssociation
Properties:
SubnetId: !Ref publicSubnet1
RouteTableId: !Ref publicRouteTable
natGateway:
Type: AWS::EC2::NatGateway
DependsOn: natPublicIP
Properties:
AllocationId: !GetAtt natPublicIP.AllocationId
SubnetId: !Ref publicSubnet1
natPublicIP:
Type: AWS::EC2::EIP
DependsOn: pubPrivateVPC
Properties:
Domain: vpc
privateRouteTable:
Type: AWS::EC2::RouteTable
Properties:
VpcId: !Ref pubPrivateVPC
privateRoute:
Type: AWS::EC2::Route
Properties:
RouteTableId: !Ref privateRouteTable
DestinationCidrBlock: 0.0.0.0/0
NatGatewayId: !Ref natGateway
privateSubnet1RouteTableAssociation:
Type: AWS::EC2::SubnetRouteTableAssociation
Properties:
SubnetId: !Ref privateSubnet1
RouteTableId: !Ref privateRouteTable
privateSubnet2RouteTableAssociation:
Type: AWS::EC2::SubnetRouteTableAssociation
Properties:
SubnetId: !Ref privateSubnet2
RouteTableId: !Ref privateRouteTable
s3Endpoint:
Type: AWS::EC2::VPCEndpoint
Properties:
PolicyDocument:
Version: 2012-10-17
Statement:
- Effect: Allow
Principal: "*"
Action:
- "s3:*"
Resource:
- "*"
RouteTableIds:
- !Ref privateRouteTable
ServiceName: !Sub com.amazonaws.${AWS::Region}.s3
VpcId: !Ref pubPrivateVPC
Outputs:
pubPrivateVPCID:
Description: VPC ID
Value: !Ref pubPrivateVPC
Export:
Name: !Join ["-", [!Ref "AWS::StackName","vpc"]]
publicSubnet1ID:
Description: Public Subnet A ID
Value: !Ref publicSubnet1
Export:
Name: !Join ["-", [!Ref "AWS::StackName","public-subnet-a"]]
privateSubnet1ID:
Description: Private Subnet A ID
Value: !Ref privateSubnet1
Export:
Name: !Join ["-", [!Ref "AWS::StackName","private-subnet-a"]]
privateSubnet2ID:
Description: Private Subnet B ID
Value: !Ref privateSubnet2
Export:
Name: !Join ["-", [!Ref "AWS::StackName","private-subnet-b"]]
privateVPCSecurityGroup:
Description: Default security for Lambda VPC
Value: !GetAtt pubPrivateVPC.DefaultSecurityGroup
Export:
Name: !Join ["-", [!Ref "AWS::StackName","vpc-sg"]]
Когда я использую попытку сделать вызовы выборки с моим интерфейсом React, я получаю этот ответ:
status: 504
via: 1.1 [cloudfront url].cloudfront.net (CloudFront)
x-amzn-errortype: InternalServerErrorException
x-cache: Error from cloudfront
Я предполагаю, что это проблема холодного запуска лямбда-функции, поскольку время ожидания истекает через 30 секунд, что является максимальным временем запроса функции. У меня есть событие Cloudwatch, чтобы поддерживать функцию в тепле каждую минуту, но это не помогло. Я также увеличил память функции Lamdba до 1408 МБ, но это тоже не помогло. Любая помощь в ускорении соединения или помощь в холодных запусках будет принята с благодарностью Спасибо!