【问题标题】:AWS Fargate can't resolve Private DNS Route 53AWS Fargate 无法解析私有 DNS 路由 53
【发布时间】:2021-06-30 19:35:45
【问题描述】:

我有一个在 ECS 集群上创建 AWS Fargate 的 Cloudformation,以这种方式:

  TaskDefinition:
    Type: 'AWS::ECS::TaskDefinition'
    Properties:
      RequiresCompatibilities:
        - FARGATE
      Cpu: !Ref ContainerCpu
      Memory: !Ref ContainerMemory
      ExecutionRoleArn: !Ref ExecutionRole
      TaskRoleArn: !Ref ExecutionRole
      ContainerDefinitions:
        - Name: !Sub ${ContainerName}
          Image: 'image-url-here'
          Essential: true
          HealthCheck:
            Command: ["CMD-SHELL", "test -f hc.log"]
          LogConfiguration:
            LogDriver: awslogs
            Options:
              awslogs-region: !Sub '${AWS::Region}'
              awslogs-group: !Sub '${FeatureName}-${MicroServiceName}'
              awslogs-stream-prefix: !Ref MicroServiceName
      Family: !Sub 'family-${FeatureName}-${MicroServiceName}'
      NetworkMode: awsvpc
    DependsOn: CloudWatchLogGroup
    
  ExecutionRole:
    Type: AWS::IAM::Role
    Properties:
      RoleName: !Join ['', [!Ref MicroServiceName, ExecutionRole]]
      AssumeRolePolicyDocument:
        Statement:
          - Effect: Allow
            Principal:
              Service: ecs-tasks.amazonaws.com
            Action: 'sts:AssumeRole'
      ManagedPolicyArns:
        - 'arn:aws:iam::aws:policy/service-role/AmazonECSTaskExecutionRolePolicy'
    
    

我的 ECS 任务 Fargate 需要访问在 EC2 中运行的 API,因此我创建了一个具有以下地址的 DNS 私有托管区域:api.localaccount。但是当我尝试从我的 Fargate 访问这个 API 时,我得到了以下错误:

System.Net.Http.HttpRequestException: Name or service not known

我知道这个错误是因为我的 AWS Fargate 无法解析 DNS,但我不知道为什么。如果我从 EC2 访问同一个 DNS (api.localaccount) 一切正常,所以我认为我的 DNS Route 53 没问题。

【问题讨论】:

  • 该任务应使用与 DNS 私有托管区域相同的 VPC 运行。您能否确认该服务是否配置为使用该 VPC?
  • 是的,我两次确认我的任务和服务与我的 api.localaccount 运行在同一个 VPC 中。另一个重要的事情是我的帐户中只有一个 VPC。
  • 可能是应用程序级问题。您能否在实例而不是 Fargate 上运行您的应用,并确认它正确解析私有 dns 名称?
  • 我现在正在尝试并将返回这里,好点@Marcin。
  • 问题是我的应用程序@Marcin,感谢您的帮助,我指向了错误的网址。

标签: amazon-web-services amazon-cloudformation amazon-route53 aws-fargate


【解决方案1】:

基于 cmets。

问题是由于在应用程序中使用了错误的链接。因此,这是应用程序级别的问题,而不是 ECS Farage 问题。

【讨论】:

    【解决方案2】:

    要使用私有托管区域,您必须将以下 Amazon VPC 设置设置为 true:

    • enableDnsHostnames
    • 启用DnsSupport

    【讨论】:

    • 您好,感谢您的帮助,但我已经启用了这两个功能。事实上,我有大约 10 个 EC2 使用 DNS 解析正常工作,只是我的 Fargate 任务不起作用。
    【解决方案3】:

    默认情况下,ECS 服务无法解析 DNS。您必须在服务创建部分显式启用它。启用后,您可以选择命名空间和记录类型。

    *所有这些都应该在设置 Route53 和 VPC 配置后完成。在这种情况下,您已经完成了这些操作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-30
      • 2018-09-02
      • 2021-07-17
      • 2018-05-18
      • 1970-01-01
      • 1970-01-01
      • 2020-10-14
      • 2014-08-12
      相关资源
      最近更新 更多