标签: amazon-ecs

在 Amazon ECS 中更新服务的容器

建议使用哪种方法来更新在 Amazon ECS 中运行的服务的容器?

AWS文档说:“如果你已经更新了应用程序的泊坞图像,你可以创建一个新的任务定义与图像,并将其部署到您的服务,一次一个任务。” 这几乎是当前文档中当前可用的所有内容(2015 年 4 月 13 日)。

我是否理解正确,在 Amazon ECS 中更新我的应用程序容器的唯一方法是创建一个新任务,然后停止旧任务并启动新任务?

我已经成功地在 Core OS 和 Fleectl 中使用了“最新”标签。这样做的好处是不需要为新的更新更改 Docker 镜像的标签,因为重新加载服务将看到新的更改并更新容器(使用相同的标签“最新”)。

您使用哪种方法在 Amazon ECS 中使用更新的 docker 镜像更新您的服务?

update containers amazon-web-services docker amazon-ecs

36
推荐指数
2
解决办法
2万
查看次数

如何重新启动服务的所有任务?

我们有一个从外部数据源加载一些配置文件的任务。上传设置后,我们希望能够重新启动服务中的所有任务,以便设置传播到所有实例。

重新启动所有服务的最佳方法是什么?

我们有一个“解决方法”,包括将“任务数”设置为 0 然后备份,但这绝对不是它应该完成的方式并且有停机时间。

amazon-web-services docker amazon-ecs

31
推荐指数
4
解决办法
6万
查看次数

Amazon ECS (Docker):将容器绑定到特定 IP 地址

我正在使用 Amazon ECS(Docker 的重新打包),我发现 ECS 似乎没有提供一项 Docker 功能。即,我希望在一个实例中运行多个容器,并将进入 IP 地址 1 的请求映射到容器 1,进入 IP 地址 2 的请求映射到容器 2,等等。

在 Docker 中,将容器绑定到特定 IP 地址是通过以下方式完成的:

docker run -p myHostIPAddr:80:8080 imageName command
Run Code Online (Sandbox Code Playgroud)

但是,在 Amazon ECS 中,似乎没有办法做到这一点。

我已经设置了一个具有多个弹性 IP 地址的 EC2 实例。将容器配置为任务定义的一部分时,可以将主机端口映射到容器端口。但是,与 Docker 不同的是,ECS 不提供将主机 IP 地址指定为映射的一部分的方法。

另一个转折点是我希望来自容器 N 的出站请求具有容器 N 的外部 IP 地址。

有没有办法做到以上所有?

我浏览了 AWS CLI 文档以及适用于 Java 的 AWS 开发工具包。我可以看到 CLI 可以返回一个包含如下元素的 networkBindings 数组:

{
  "bindIP": "0.0.0.0", 
  "containerPort": 8021, 
  "hostPort": 8021
},
Run Code Online (Sandbox Code Playgroud)

Java SDK 有一个名为 NetworkBinding 的类,表示相同的信息。但是,此信息似乎仅用于输出,以响应请求。我找不到向 ECS 提供此绑定信息的方法。

我想这样做的原因是我想为不同的选区设置完全不同的 VM,在同一个 …

amazon-web-services docker amazon-ecs

25
推荐指数
2
解决办法
2万
查看次数

将域名分配给 AWS Fargate 任务

我有一个 AWS Fargate 任务在公共子网中运行 Web 应用程序,因此它有一个公共地址。我的问题是如何将域(通过 Route 53)连接到该任务,以便在部署它的新版本时不会中断。

  • 我知道我可以使用 ALB/NLB,但我想节省成本。
  • 我不想直接使用公共 IP,因为它可能会改变。
  • 我认为该解决方案必须对 ENI 执行某些操作,但我不确定如何通过 Route 53 指向它。

任何帮助将非常感激。

谢谢

amazon-web-services amazon-ecs

25
推荐指数
2
解决办法
2万
查看次数

被ECS的角色要求搞糊涂了

我正在尝试设置一个 ECS,但到目前为止我遇到了一些权限问题,我已经在这个论坛上提出了一些问题。

我想我到目前为止被卡住了,因为老实说,我无法在一个地方简明地找出所有这些角色要求。

似乎我需要定义至少两个角色:

1) ECS 容器 http://docs.aws.amazon.com/AmazonECS/latest/developerguide/instance_IAM_role.html

2) ECS 任务 http://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html#enable_task_iam_roles

这是正确的吗?

我错过了什么吗?是否有任何特殊的 IAM 要求?

amazon-iam amazon-ecs

18
推荐指数
1
解决办法
2万
查看次数

AWS ECS 上的CannotPullContainerError

编辑容器图像

我无法完全理解的 AWS ECS Docker Hub 映像的映像[registry-url]/[namespace]/[image]:[tag]URL 。

使用 Docker 客户端,它只是docker run -it hendry/count.

那么 Docker Hub 的镜像 URL 是什么?

docker amazon-ecs

14
推荐指数
2
解决办法
4949
查看次数

ECS 集群没有 ecs 实例,但在 EC2 中可见两个 ecs 实例

我正在尝试在悉尼地区创建一个非常简单的集群。

在此处输入图片说明

这是一个非常简单的设置。我指定硬盘为60G。我想在集群中有两个 ec2 实例。

它们在 ec2 面板中按预期显示。

在此处输入图片说明

但是 ec2 实例没有显示在 ecs 集群页面中:

在此处输入图片说明

1)为什么会发生?

2)有没有我可以检查的日志来找出潜在的问题?

amazon-ec2 amazon-ecs

11
推荐指数
3
解决办法
1万
查看次数

ECR跨账户拉取权限

我们有两个 AWS 账户。账户 A 有 ECR 存储库,账户 B 旨在能够从中提取。

我尝试在账户 A 中设置存储库权限声明以允许从账户 B 中提取,但 AWS 声称我的策略无效。

我试过了:

  • 设置principal为Account B的账号,结果报错 Your permission statements have one or more invalid parameters. Invalid parameter at 'PolicyText' failed to satisfy constraint: 'Invalid repository policy provided'
  • 将委托人设置为账户 B ( arn:aws:iam::1234567891011:root) 中root 用户的 ARN 。这导致错误The service name arn:aws:iam::1234567891011:root is invalid. A valid service name format is [service].amazonaws.com.
  • 将委托人设置为账户 B 中 IAM 用户的 ARN。与上述相同的错误。

以上是通过 AWS 控制台完成的,该控制台不允许直接编辑 JSON 以获得 ECR 权限。我已经尝试了aws ecr set-repository-policy具有上述更改的 CLI …

amazon-web-services amazon-ecs

11
推荐指数
2
解决办法
8840
查看次数

如何:在弹性容器服务上 Dockerized MongoDB 复制

我有一个 Node.js 应用程序和一个在 AWS ECS 上运行的 MongoDB 数据库。我目前的设置由 2 个 ELB 和 2 个实例组成,每个实例运行一个 Docker 容器及其分配的服务(节点/mongo):

Elastic Load Balancer -> Dockerized Node -> Elastic Load Balancer -> Dockerized MongoDB
Run Code Online (Sandbox Code Playgroud)

我正在运行 MongoDB 的官方 Docker 映像:https : //registry.hub.docker.com/_/mongo/

关于如何使用 Docker 和 ECS 为 MongoDB 部署副本集的任何指示,每个副本都运行在不同的实例上?

amazon-web-services mongodb docker amazon-ecs

10
推荐指数
1
解决办法
4532
查看次数

Ecs 服务不更新任务定义

在 ecs 集群中,我有一个运行着 2 个 ec2 实例的服务。我更新了任务定义以获取新的 docker 镜像。但即使有新的任务定义,旧的任务定义仍在运行。

我已使用以下命令更新任务定义和服务。

aws ecs register-task-definition --family service90-task --cli-input-json file://service90-task.json

aws ecs update-service --cluster service90-cluster --service service90-service --desired-count 0

TASK_REVISION=`aws ecs describe-task-definition --task-definition service90-task | egrep "revision" | tr "/" " " | awk '{print $2}' | sed 's/"$//'`

aws ecs update-service --cluster service90-cluster --service service90-service --task-definition service90-task:${TASK_REVISION} --desired-count 2
Run Code Online (Sandbox Code Playgroud)

我尝试了几次,但无法弄清楚我哪里出错了。我想让 ecs 服务运行新的任务定义而不是旧的。

amazon-ec2 amazon-web-services docker amazon-ecs

9
推荐指数
1
解决办法
1万
查看次数