ECS - 目标类型 ip 与任务定义中指定的桥接网络模式不兼容

2023-12-23

Problem

Getting 目标类型ip,与桥接网络模式不兼容尝试使用其目标组使用 IP 作为目标类型的现有 NLB 创建 ECS 服务时出错。

该错误来自 Terraform,因为它使用它来创建所有 AWS 资源。

错误:InvalidParameterException:提供的目标组 arn:aws:elasticloadbalancing:$REGION:$ACCOUNT:targetgroup ... 具有目标类型 ip,与任务定义中指定的桥接网络模式不兼容。

The TF_DEBUG 输出 https://gist.github.com/ipmb/d173fb4f78d8e73d9d1294c71f641045Terraform Github 的问题#11719 https://techmemo.xyz/terraform-providers/terraform-provider-aws/issues/11719如果 Terraform (或其消息)正确的话,似乎表明这是限制。

2020-01-22T20:04:46.819Z [DEBUG] plugin.terraform-provider-aws_v2.45.0_x4: 2020/01/22 20:04:46 [DEBUG] [aws-sdk-go] {"__type":"InvalidParameterException","message":"The provided target group arn:aws:elasticloadbalancing:us-east-1:xxx:targetgroup/llprd20200122052638603300000006/a0a2d775807f6620 has target type ip, which is incompatible with the bridge network mode specified in the task definition."}

Question

请告知这是否是 AWS 的限制。据我到目前为止查看的AWS文档,没有任何信息表明IP目标类型不能用于桥接网络模式。不过,想百分百确定。

  • ECS Service - Creating a Network Load Balancer - Configure Routing https://docs.aws.amazon.com/AmazonECS/latest/developerguide/create-network-load-balancer.html#nlb-configure-routing
    1. For 目标类型,选择是使用实例 ID 还是 IP 地址注册目标.

      重要的
      如果您的服务的任务定义使用 awsvpc 网络模式(这是 Fargate 启动类型所需的),您必须选择 ip 作为目标类型,而不是实例。这是因为使用 awsvpc 网络模式的任务与弹性网络接口关联,而不是与 Amazon EC2 实例关联。

      如果实例具有以下实例类型,则无法通过实例 ID 注册实例:C1、CC1、CC2、CG1、CG2、CR1、G1、G2、HI1、HS1、M1、M2、M3 和 T1。您可以通过 IP 地址注册这些类型的实例。

地形

  • 地形aws_lb_目标_组 https://www.terraform.io/docs/providers/aws/r/lb_target_group.html#ip-target-group
resource "aws_lb_target_group" "this" {
  count = length(var.listeners)
  name_prefix           = "${substr("${var.name}", 0, 6)}"
  vpc_id                = "${var.vpc_id}"
  target_type           = "ip"
  port                  = 8080
  protocol              = "tcp"
  ...
}

我没有指定网络模式 https://www.terraform.io/docs/providers/aws/r/ecs_task_definition.html#network_mode in the aws_ecs_task_definition https://www.terraform.io/docs/providers/aws/r/ecs_task_definition.html资源配置,因此使用默认的“bridge”。

TF_DEBUG

...
2020-03-03T18:54:10.301+1100 [DEBUG] plugin.terraform-provider-aws_v2.50.0_x4: 2020/03/03 18:54:10 [DEBUG] [aws-sdk-go] {"__type":"InvalidParameterException","message":"The provided target group arn:aws:elasticloadbalancing:us-east-2:ACCOUNT:targetgroup/****/4689fc19ff99ca57 has target type ip, which is incompatible with the bridge network mode specified in the task definition."}
2020-03-03T18:54:10.301+1100 [DEBUG] plugin.terraform-provider-aws_v2.50.0_x4: 2020/03/03 18:54:10 [DEBUG] [aws-sdk-go] DEBUG: Validate Response ecs/CreateService failed, attempt 0/25, error InvalidParameterException: The provided target group arn:aws:elasticloadbalancing:us-east-2:ACCOUNT:targetgroup/****/4689fc19ff99ca57 has target type ip, which is incompatible with the bridge network mode specified in the task definition.
...

环境

  • ECS 类型是 EC2,而不是 Fargate
  • 使用在 Ubuntu“18.04.4 LTS(Bionic Beaver)”上运行的 Terraform v0.12.20

如中所述AWS 服务发现指南 https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-discovery.html,您不能使用以下方式引用 ECS 容器bridge使用ip的网络模式。事实上,您只能为此类服务指定 SRV DNS 记录。

这里的选项是将任务定义网络模式更改为awsvpc或将 target_type 更改为instance.

就我个人而言,我只经历过awsvpc网络模式。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ECS - 目标类型 ip 与任务定义中指定的桥接网络模式不兼容 的相关文章

  • 为什么在尝试使用 Java 连接到 RDS PostgreSQL 数据库时会收到 SocketTimeoutException?

    我有一个 Spring 应用程序 我试图在 AWS 上托管 几天来我一直在努力配置 我有一个 EC2 实例 并且能够通过 SSH 连接到它 我还在 AWS 中设置了 Postgres RDS 数据库 但我无法使用 IDE 中的代码连接到它
  • AWS cognito身份池ABAC如何映射自定义多值属性?

    来自身份提供商的开放 ID 令牌示例 本例中为 Cognito 用户池 cognito groups testers admins email verified false 我想使用ABAC 就像这里给出的例子一样 https docs a
  • 在 aws-cdk 上的 aws-rds 上,使数据库可公开访问的设置在哪里?

    使用 AWS RDS 控制台和 CLI API 都有一个开关可以使数据库可公开访问 但我找不到使用提供的构造使用新的 aws cdk 来实现此目的的方法 Cloud Formation 类 例如 CfnDBInstance 中有一个布尔值
  • AWS 卷备份为空

    我是 AWS 新手 我有一个在 AWS 中运行的实例 现在我想将该实例卷放入新实例中 该卷包含大约 8GB 的 内容 我按照以下帖子中的第一个答案进行操作 更改 ec2 实例的密钥对 https stackoverflow com ques
  • 如何在docker的keycloak中添加SSL

    我在将 SSL 证书添加到在 docker 上运行的 Keycloak 时遇到问题 我通过负载均衡器从 AWS EC2 获得了 SSL 证书 但不知道如何将其添加到 docker 上的 Keycloak 中 我正在通过谷歌搜索 但尚未找到任
  • AWS API Gateway 403 禁止

    我在 AWS API Gateway 中创建了一个 API 在该 API 中 我创建了一个带有自定义 http 端点的代理资源 但是当我访问API网关端点时https 2r3g3ttr6y execute api eu east 1 ama
  • DynamoDB 中的时间戳应使用什么数据类型?

    我是 DynamoDB 新手 我希望创建一个使用 DeviceID 作为哈希键 时间戳作为范围键和一些数据的表 DeviceID 123 Timestamp 2016 11 11T17 21 07 5272333Z X 12 Y 35 在
  • 亚马逊 AWS CloudFront 声称不存在这样的存储桶

    我正在尝试设置 CloudFront 来提供图像 但当前无法访问它并返回错误 指定的存储桶不存在
  • 如何在我的 AWS EC2 实例上安装特定字体?

    我有一个在 AWS EC2 Amazon Linux Elastic Beanstalk 实例上运行的 Python 应用程序 该实例需要某些特定字体才能生成输出 并且想知道如何在部署或实例启动过程中安装它们 我的代码在本地计算机 OS X
  • 从本地计算机连接到 AWS 上的 Neptune

    我正在尝试从办公室的本地计算机连接到 AWS 实例中的 Neptune DB 就像从办公室连接到 RDS 一样 是否可以从本地计算机连接 Neptune 数据库 Neptune 数据库是否公开可用 开发人员有什么方法可以从办公室连接 Nep
  • AWS SQS Batch SendMessageBatchRequest 非常慢

    我的应用程序使用 SendMessageBatchRequest 将每个请求发布 10 条消息到 AWS SQS 每条消息的大小小于250字节 该应用程序预计每天发布约一百万条记录 但要实现这一目标 消息发布的速度非常慢 AmazonSQS
  • 将 Django 部署到 AWS;傻瓜静态文件

    我对这个项目的最后一步完全迷失了 到目前为止 我已经能够开发一个 Django 应用程序 它可以在本地主机上按照我想要的方式工作 我已经能够将网站部署到 AWS EC2 但我一定错过了有关提供静态文件的一些基本知识 我什至还没有尝试过媒体文
  • 使用S3上传但不允许公共访问

    我的想法是创建一个 S3 存储桶以允许用户上传二进制对象 下一步是确认上传 然后 API 将启动文件处理 为了使其更安全 客户端将首先请求上传位置 然后 API 会在 S3 上为此上传分配并预先创建一个一次性使用目录 并在该目录上设置访问策
  • 带有 AWS S3 文件的 Icecast 服务器

    我目前正在运行 Icecast 服务器 用于在 EC2 实例上传输音频 目前我所有的 mp3 文件都存储在 EC2 实例上 我想将它们移动到 AWS S3 进行存储 到目前为止 我已经能够找到能够更新播放列表 https mediareal
  • 如何将域添加到 aws 上的现有 SSL 证书

    我有一个与 Amazon Web Services 上的负载均衡器关联的 SSL 证书 我想在该证书上有一个额外的域 我的问题是 是否可以向 aws 上现有的 ssl 证书添加额外的域 我发现您可以在创建证书时添加其他名称 但我不知道如何使
  • AWS Amazon - 登录循环卡住

    我已经使用 AWS 亚马逊几年了 但是 突然当我登录时 我进入了此验证部分 他们将验证码发送到我的电子邮件 我收到了该代码 因此 我输入收到的代码 最终返回登录页面 所以我登录后 同样的事情一遍又一遍地发生 我无法进入我的仪表板 它只是不断
  • 使用无服务器访问 SSM 变量

    我想用无服务器变量中的 SSM 参数 https serverless com blog serverless v1 22 0 按照文档 我运行了以下命令 aws ssm put parameter name foo value bar t
  • 从 API 网关自定义授权方返回的 401 缺少“Access-Control-Allow-Origin”标头

    为了防止未登录的用户通过 AWS API Gateway 调用我的 lambda 函数 我使用自定义授权者 lambda 解决方案 如果请求被授权 200 并且我从被调用的 lambda 得到响应 一切正常并且我得到Access Contr
  • 如何从此 AWS SecretsManager JSON 对象中提取字段?

    我正在使用 AWS Secrets Manager 来保护 REST API 的数据库信用 我正在使用 AWS Lambda API 网关和 RDS MySQL 以下是我如何获得它们 Load the AWS SDK var AWS req
  • 如何使用配置文件 (.ebextensions) 在 AWS Elastic Beanstalk 上安装 PHP IMAP 扩展?

    有谁知道如何使用配置文件 ebextensions 在 AWS Elastic Beanstalk 上安装和启用 PHP IMAP 扩展 我使用的是 64 位 Amazon Linux 2017 03 v2 4 0 运行 PHP 7 0 1

随机推荐