Я пытаюсь запустить лямбда-функцию для вызова службы Fargate, которая находится в частной подсети.
Лямбда срабатывает, когда я вставляю файл в корзину S3.
Я сделал балансировщик сетевой нагрузки (AWS :: ElasticLoadBalancingV2 :: LoadBalancer), который прослушивает порт 80 и имеет в качестве целевой группы входную группу:
LoadBalancerLRS:
Type: AWS::ElasticLoadBalancingV2::LoadBalancer
Properties:
Scheme: internal
Subnets:
- !ImportValue SubnetPrivate1
- !ImportValue SubnetPrivate2
Type: network
LoadBalancerListener:
Type: AWS::ElasticLoadBalancingV2::Listener
Properties:
DefaultActions:
- TargetGroupArn: !Ref TargetGroupService
Type: forward
LoadBalancerArn: !Ref LoadBalancerLRS
Port: 80
Protocol: TCP
Я вызываю Network Load Balancer и продолжаю получать эту ошибку:
Ошибка: подключить ECONNREFUSED 127.0.0.1:80
В моем VPC включены параметры DNS, и я настроил параметры DHCP следующим образом:
DHCPOptions:
Type: AWS::EC2::DHCPOptions
Properties:
DomainName:
Fn::If:
- WEuropeRegionCondition
- ec2.internal
- Fn::Join:
- ''
- - !Ref AWS::Region
- ".compute.internal"
DomainNameServers:
- AmazonProvidedDNS
VPCDHCPOptionsAssociation:
Type: AWS::EC2::VPCDHCPOptionsAssociation
Properties:
VpcId: !Ref myVPC
DhcpOptionsId: !Ref DHCPOptions
Моя роль выполнения лямбды выглядит следующим образом:
LambdaExecutionRole:
Type: 'AWS::IAM::Role'
Properties:
AssumeRolePolicyDocument:
Version: 2012-10-17
Statement:
- Effect: Allow
Principal:
Service:
- lambda.amazonaws.com
Action:
- 'sts:AssumeRole'
Path: /
ManagedPolicyArns:
- 'arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole'
Policies:
- PolicyName: S3Policy
PolicyDocument:
Version: 2012-10-17
Statement:
- Effect: Allow
Action:
- 's3:PutObject'
- 'S3:DeleteObject'
Resource: !Sub 'arn:aws:s3:::*'
- Effect: Allow
Action:
- "logs:CreateLogGroup"
- "logs:CreateLogStream"
- "logs:PutLogEvents"
Resource: !Sub 'arn:aws:logs:::*'
- Effect: Allow
Action:
- "ec2:CreateNetworkInterface"
- "ec2:DescribeNetworkInterfaces"
- "ec2:DeleteNetworkInterface"
- "ec2:DescribeSecurityGroups"
- "ec2:DescribeSubnets"
Resource: !Sub '*'
Я использую библиотеку axios npm для вызова DNS-имени, которое генерирует балансировщик сетевой нагрузки.
Группа безопасности лямбда-функции и fargate одинаковы, и они «все открыты».
Служба работает, и проверки работоспособности в порядке.
Итак, какая-либо подсказка, почему я не могу связаться с балансировщиком сетевой нагрузки?