ECS 服务 - 使用新的 Docker 映像自动部署

2024-04-10

我想通过使用最新的 Docker 映像启动我的 ECS 服务来自动部署应用程序。据我了解,部署新镜像版本的方法如下:

  1. 创建新的任务修订版(更新 Docker 存储库上的映像后)。
  2. 更新服务并指定新版本。

这似乎可行,但我想通过 CLI 来完成这一切,这样我就可以编写脚本了。 #2 似乎很容易通过 AWS CLI 完成update-service,但我没有看到一种方法可以在不重新指定整个任务 JSON 的情况下执行#1register-task-definition(我的 JSON 将在环境变量中包含凭据,因此我希望将其放在尽可能少的位置)。

我应该这样自动部署 ECS 服务更新吗?如果是这样,是否有一种“好的”方法可以让任务定义启动新的修订版(即不重复所有内容)?


是的,这是正确的做法。

不,使用当前的 API,您无法在不复制现有任务定义的情况下注册其新版本。

如果您没有使用 CLI 生成原始任务定义(或者不想重用生成它的原始命令),您可以通过 CLI 尝试如下操作:

OLD_TASK_DEF=$(aws ecs describe-task-definition --task-definition <task_family_name>)
NEW_CONTAINER_DEFS=$(echo $OLD_TASK_DEF | jq '.taskDefinition.containerDefinitions' | jq '.[0].image="<new_image_name>"')
aws ecs register-task-definition --family <task_family_name> --container-definitions "'$(echo $NEW_CONTAINER_DEFS)'"

不像最后一个命令那样 100% 安全--container-defintions论证(其中包括"environment"条目)仍然可以通过诸如ps。 AWS SDK 之一可以让您更加安心。

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

ECS 服务 - 使用新的 Docker 映像自动部署 的相关文章

  • Django 使用 AWS ECS Fargate 迁移部署策略?

    使用 ECS Fargate 运行数据库迁移的建议部署策略是什么 我可以在启动 Gunicorn 服务器之前更新容器命令以运行迁移 但如果配置了多个实例 这可能会导致并发迁移同时执行 我还必须考虑图像已经在运行的事实 如果我弄清楚如何在新映
  • ecs-cli 使用负载均衡器组成服务

    我正在尝试使用 ecs cli compose 来管理 Amazon ECS 上的服务和任务 我无法找到使用的方法service up命令使用应用程序负载均衡器创建新服务 即使该负载均衡器已存在 这似乎可以与service create 但
  • AWS ECS 503 服务在部署时暂时不可用

    我正在为我的应用程序使用 Amazon Web Services EC2 容器服务和应用程序负载均衡器 当我部署新版本时 我收到 503 服务暂时不可用大约 2 分钟 这比我的应用程序的启动时间要长一点 这意味着我现在无法进行零停机部署 是
  • EcsService 下班后不稳定

    我从头开始编写了一个 cloudformation JSON 文件 但我无法部署堆栈 并且我没有从 AWS 获得任何关于原因的信息 它卡在服务中CREATE IN PROGRESS4 5 小时 然后它说该服务did not stabiliz
  • 动态端口和 AWS 应用程序负载均衡器和 ECS

    ELB 后面的 Docker 容器获取自动注册到 ELB 的动态端口 以便它们可以将流量重定向到它们 为了使 ELB 可以访问您的 Web 服务器 您必须打开来自安全组内的所有这些端口 1024 65535 有没有办法不必向一系列端口开放安
  • boto3 lambda 调用运行 ECS 任务需要在修订号中进行硬编码吗?

    长话短说 我不想将任务的 ECS 任务定义修订号硬编码到我的 lambda 源代码中 每次我更新任务定义时 本质上都是更新我的源代码 在ECS 的 boto3 文档run task https boto3 amazonaws com v1
  • aws ecs 优化的 AMI 中的私有 docker 注册表身份验证不成功

    我正在编写一个 terraform 脚本来创建 ECS 自动缩放集群 我创建了一个集群并向其中添加了 ec2 容器实例 我的任务定义文件包含来自私有 docker 存储库的图像 我浏览了 aws 官方文档并找到了一个页面私人登记认证 htt
  • 多容器docker(AW​​S)链接是单向的吗?

    我通过 AWS 上的多容器 docker 获得了非对称容器可发现性 也就是说 第一个容器可以找到第二个容器 但第二个容器找不到第一个容器 我在 AWS Elastic Beanstalk 上进行了多容器 Docker 部署 两个容器都使用相
  • 提供从 ECS 任务对 EFS 的访问

    我正在努力获取 ECS 任务来查看 EFS 卷 地形配置是 EFS定义 resource aws efs file system persistent encrypted true resource aws efs access point
  • 通过 AWS ECS 在一个 EC2 实例中使用多个 docker 容器

    是否可以通过AWS ECS EC2容器服务 在一个EC2实例中运行多个docker容器 Yes AWS 文档 产品细节从未明确提及 但它谈到了向集群启动许多容器 一个集群可以是一个实例 配置容器时 https docs aws amazon
  • 如何删除 AWS ECS 任务定义?

    在 Amazon 的 EC2 容器服务中创建任务定义后 如何删除或移除它 It s a 已知问题 https forums aws amazon com thread jspa threadID 170378 一旦取消注册任务定义 它就会进
  • AWS CLI 2 无法使用 CLI 更新服务

    我在 ecs 上有一个集群 一切正常 当我使用 aws cli v 1 时 我可以使用如下命令更新我的服务aws ecs update service cluster cluster name service service name ta
  • ECS 任务/容器的 Terraform AWS CloudWatch 日志组

    我正在尝试使用 Terraform 创建一个 AWS ECS 任务 它将日志放入 CloudWatch 上的特定日志组中 问题是容器定义位于 JSON 文件中 我无法将 CloudWatch 组名称从 tf 文件映射到该 json 文件 容
  • 安全组出口规则仅允许 ECR 请求

    当使用 ECR 存储用于 ECS 的容器映像时 EC2 实例 或 Fargate 服务 必须具有允许 通过公共互联网 访问特定于账户的存储库 URI 的安全组 许多组织都有严格的 IP 白名单规则 通常不允许为所有 IP 启用出站端口 44
  • 无法通过 cloudformation yaml 创建 AWS::ECS::Service,模型验证失败

    在创建期间AWS ECS Service通过 cloudformation 我收到错误 Model validation failed 该错误与以下内容有关 HealthCheckGracePeriodSeconds和一些其他属性 错误详细
  • 由 ECS 集群容量提供商管理的 AWS AutoScaling 组由于保护而无法扩展

    我有一个由自动扩展组中的 EC2 计算机支持的 ECS 集群 该集群使用 CloudFormation 中描述的容量提供程序 代码如下 CapacityProvider Type AWS ECS CapacityProvider Condi
  • docker context create ecs myecs - 只需要一个参数

    我正在尝试创建一个将自动与 AWS 的 ECS 集成的 Docker 上下文 我正在关注这个教程 https aws amazon com blogs containers deploy applications on amazon ecs
  • 从 Docker 容器获取控制台输出

    我构建了一个安装了 Python 的映像以及一个 Python 应用程序 我的 Python 应用程序是你好世界 应用程序 只需打印 Hello World 屏幕上 Dockerfile FROM python 2 onbuild CMD
  • AWS ECS 重启策略

    我检查了在 ECS 集群中运行的一个 docker 容器 它的重启策略为空白 HostConfig RestartPolicy Name 我不确定 ECS 在发生故障时会做什么 但我想将策略更改为在实例中运行的 cmd 失败时重新启动容器实
  • 服务无法放置任务

    好吧 我不知道在哪里可以解决这个问题 我正在尝试启动一个堆栈 其中有一个在 ECS 中运行的基本应用程序 我将在下面展示云信息 但我不断得到 服务 sos ecs SosEcsService 1RVB1U5QXTY9S 无法放置任务 因为没

随机推荐

  • 在 Android 10 的深色模式设备上进行测试时,文本颜色被覆盖为白色

    在以下 React Native 0 63 3 应用中 模拟器上的文本颜色按预期为黑色 但在 Android 10 的深色模式设备上进行测试时 文本颜色被覆盖为白色 import React from react import View T
  • 使用假网络摄像头和真实微型运行 Chromium

    我可以使用以下命令运行带有假网络摄像头的 Google Chrome google chrome stable use fake device for media stream use file for fake video capture
  • 管道末端重定向(C shell)

    我正在努力使ls tr a b gt text txt我已经完成管道 但无法将 STDOUT 添加到管道的末尾 在我的情况下 STDOUT 只能在最后一个参数中 我标记了应该进行重定向的代码部分 我认为应该打开该文件 并且dup2使用的方法
  • 如何将sbt项目导入到Eclipse中?

    我想将我的 sbt 项目导入 Eclipse 在网上搜索时 我了解到 Eclipse 有一个 sbteclipse 插件可以导入 sbt 项目 但我不知道该怎么做 我在 Ubuntu 12 04 LTS 上使用 Eclipse Kelper
  • Mysql Codeigniter Active Record - 如何执行 where_in 查询并返回正确的结果顺序?

    我有一组按特定顺序传递的 ID 需要保留 我正在从几个左连接查询与每个 ID 相关的数据 ID 是从搜索中返回的 因此必须保持顺序以使结果有效 否则搜索变得毫无意义 我的代码看起来像这样 this gt db gt where in id
  • 关于 ExpandableListView ChildView 的 Button ClickListener 的问题

    我正在尝试为我的餐厅制作一个应用程序 这是我之前遇到的问题 并且已解决 但是 您会在 ChildView 中注意到一些按钮 即 添加 就像这样对于我之前的查询here https stackoverflow com questions 63
  • 禁用与原型观察方法的链接

    我想创建一个像这样的链接 a href http example com text a 并替换行为 以便链接在单击时使用 Ajax 下载内容 对我来说重要的是不要替换 href 属性 因此复制链接仍然有效 一种解决方案是 link oncl
  • 实体框架6错误无法加载指定的元数据资源

    我在解决方案中使用实体框架 6 和 模型优先 我将 数据模型 类分离到另一个项目中 以便我可以添加对 数据模型 类的引用 而无需公开我的 数据模型上下文 和连接 我不想将我的实体数据模型项目 尤其是数据库上下文等 暴露给我的 UI 层 我有
  • 图像绘制速度

    我正在开发一款游戏 但目前我正在运行基准测试 如果有人能在这件事上帮助我 我将不胜感激 我正在做的是 当我单击开始按钮时 使用以下代码在面板上触发绘制事件 private void startToolStripMenuItem Click
  • 共享 ViewModel 以帮助片段和父 Activity 之间的通信

    虽然 JetPack 的导航组件看起来很有前途 但我却找不到实现我想要的东西的方法 让我们看一下示例应用程序屏幕 该应用程序有一个主要活动 一个顶部工具栏 一个带有 fab 的底部工具栏 我面临着两个挑战 我想以正确的方式解决它们 1 我需
  • 从密度对象(或更广泛地从一组数字)生成随机数

    假设我有一组数字 我怀疑它们来自同一分布 set seed 20130613 x lt rcauchy 10 我想要一个从相同的未知分布中随机生成一个数字的函数 我想到的一种方法是创建一个density对象 然后从中获取 CDF 并取随机均
  • (go-sql-driver/mysql) packet.go 中出现意外的 EOF 和繁忙缓冲区

    我正在得到unexpected EOF and busy buffer错误于go sql driver mysql尽管设置后SetConnMaxLifetime SetMaxIdleConns and SetMaxOpenConns按照建议
  • 使用猫鼬保存图像

    我知道已经有很多关于这个主题的帖子 但不幸的是直到现在我才找到答案 我将 angular js 与示例代码一起使用http angular js in image upload http angular js in image upload
  • 从流而不是文件加载配置文件

    我使用 OpenMappedExeConfiguration 和 ExeConfigurationFileMap 来加载配置文件 它们的重载表明它们只适用于文件名 有没有办法从流加载配置文件 背景 我想加载存储为嵌入式资源的配置文件 没有文
  • self.method = environ['REQUEST_METHOD'].upper() KeyError: 'REQUEST_METHOD' 使用 uwsgi 在 EC2 上设置 django 服务器时

    我得到了 当我击中http ec2 X YZ ABC EFG compute 1 amazonaws com admin 我很确定我的 Django 应用程序没有任何问题 因为该应用程序是空的 即 我刚刚使用创建了该应用程序django a
  • TSQL:提交时触发

    我们有一个后台系统 可以通过以下方式将发票信息插入到 SQL 数据库中 MSDTC http en wikipedia org wiki Distributed Transaction Coordinator存储过程中 应用程序插入标头 然
  • 浏览器推送通知出现错误“AbortError:注册失败 - 推送服务不可用”

    我创建了一个系统 使用 Firefox 和 Chrome 的浏览器推送通知来与网站访问者进行更多交互 我正在查看我的 Google Analytics 事件 了解订阅失败的原因 最大的原因是 推送服务不可用 我查遍了一切 试图找到这意味着什
  • 使用 PowerShell 替换文本文件的内容

    我浏览了这个网站 似乎找不到任何适合我情况的内容 基本上 我正在尝试向 NETLOGON 文件编写一个附加内容 以替换所有用户桌面上的文本文件中的文本 当前文本全面静态 我想要更改的文本对于每个用户来说都是唯一的 我想将当前文本 user1
  • xmlstarlet:过滤掉带有属性的元素

    如何过滤掉某些类型的不具有神奇值属性的元素并保留文档的其余部分 所有这一切都使用xmlstarlet 到目前为止我所要做的是 cat lt lt EOF gt database xml
  • ECS 服务 - 使用新的 Docker 映像自动部署

    我想通过使用最新的 Docker 映像启动我的 ECS 服务来自动部署应用程序 据我了解 部署新镜像版本的方法如下 创建新的任务修订版 更新 Docker 存储库上的映像后 更新服务并指定新版本 这似乎可行 但我想通过 CLI 来完成这一切