Разрешить DNS-имя Network Load Balancer из Lambda - PullRequest
0 голосов
/ 09 июля 2019

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

Служба работает, и проверки работоспособности в порядке.

Итак, какая-либо подсказка, почему я не могу связаться с балансировщиком сетевой нагрузки?

...