标签: aws-ecs

AWS Fargate任务调试,"CannotPullContainerError ...无效参考格式"是什么意思?

我有一个存储在AWS ECR上的docker容器,使用我创建的Task这个容器.当我在Fargate上运行Task时,服务从PROVISIONING> PENDING(红色)> STOPPED状态移动.

服务事件或CloudWatch中没有日志.绝对没办法知道什么是真正的问题.

知道哪种方式移动,AWS文档没有帮助.

amazon-web-services docker-container aws-ecs aws-fargate

6
推荐指数
1
解决办法
4228
查看次数

让我们在 AWS ECS 上加密 docker nginx

我正在尝试在 AWS ECS(弹性容器服务)上运行的基于 docker 的应用程序上获取 HTTPS 证书。但是,当最终尝试将 docker 实例部署到 ECS 时,我遇到了一个未定义的问题。

INFO[0120] (service deploy) has started 1 tasks: (task f..........6).  timestamp=2018-03-21 14:52:17 +0000 UTC
FATA[0301] Deployment has not completed: Running count has not changed for 5.00 minutes 
Run Code Online (Sandbox Code Playgroud)

我的设置是基于https://github.com/evertramos/docker-compose-letsencrypt-nginx-proxy-companion谁杠杆https://github.com/JrCs/docker-letsencrypt-nginx-proxy-companion

不幸的是,两者都没有给出 AWS ECS 的明确示例。我添加的是让我们加密容器的环境变量中的环境变量 DOCKER_PROVIDER=ecs 。创建我的 docker 容器并将它们上传到 ECS 后,我运行了一个特定于 ecs 的 docker-compose

ecs-cli compose --file docker-compose_ec.yml service up
Run Code Online (Sandbox Code Playgroud)

看起来像

version: '2'

services:
  nginx-web:
    image: 12344.dkr.ecr.eu-central-1.amazonaws.com/abc_nginx
    labels:
        com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy: 
"true"
    container_name: ${NGINX_WEB}
    restart: always
    ports:
      - "$0.0.0.0:80:80"
      - "$0.0.0.0:443:443"
    volumes: …
Run Code Online (Sandbox Code Playgroud)

nginx docker-compose lets-encrypt aws-ecs

6
推荐指数
1
解决办法
2077
查看次数

无法解析 .travis.yml

我正在尝试使用 GitHub、Travis CI 和 AWS ECS 创建 CI 管道。当我将提交推送到 master 分支时,我在 travis CI 中遇到错误:“无法解析 .travis.yml”。我想不通,问题出在哪里。Travis 没有提供更多关于错误的信息。

有一个代码,我正在使用:

.travis.yml

language: csharp
dist: trusty
sudo: required
mono: none
dotnet: 2.0.0
branches:
    only:
        - master
before_script:
    - chmod -R a+x scripts
script:
    - ./scripts/dotnet-build.sh
    - ./scripts/dotnet-publish.sh
    - ./scripts/docker-publish-travis.sh
Run Code Online (Sandbox Code Playgroud)

dotnet-build.sh

 dotnet restore 
 dotnet build
Run Code Online (Sandbox Code Playgroud)

dotnet-publish.sh

dotnet publish ./BookMeMobi2 -c Release -o ./bin/Docker
Run Code Online (Sandbox Code Playgroud)

dotnet-publish-travis.sh

pip install --user awscli
eval $(aws ecr get-login --no-include-email --region eu-central-1)
docker build -t bookmemobi2 .
docker ps
docker tag bookmemobi2:latest …
Run Code Online (Sandbox Code Playgroud)

travis-ci docker aws-ecs

6
推荐指数
1
解决办法
5920
查看次数

如何通过CLI获取AWS目标组中已注册目标的列表

我们正在尝试获取目标组中已注册目标(实例)的状态。这可以通过命令来完成aws elbv2 describe-target-health --target-group-arn ${TG} --targets Id=${ID},Port=${PORT}参考。我们可以通过aws ecs describe-tasks --cluster $CLUSTER --tasks $task命令reference获得端口。但是如何通过CLI检索目标的实例ID?

amazon-web-services aws-cli aws-ecs aws-elb

6
推荐指数
1
解决办法
3829
查看次数

如何在 AWS Batch 上使用 docker compose?

我有一个多容器(docker compose)应用程序。我想在 AWS Batch 上离线扩展它以处理 S3 上的大量数据。我用于 docker compose 的 .yml 文件如下所示:

version: '2'

services:
    container1:
      container_name:
      image:
      ports:

    container2:
      container_name:
      image:
      depends_on: container1
      ports:
Run Code Online (Sandbox Code Playgroud)

不幸的是,我在网上找不到处理这种情况的任何示例或教程。谁能帮我理解我应该如何解决这个问题?

amazon-web-services docker docker-compose aws-batch aws-ecs

5
推荐指数
1
解决办法
1059
查看次数

如何从AWS ECS中准确报告AWS Cloudwatch中的运行任务计数

我有一个简单的Cloudwatch仪表板,用于监视简单ECS集群中正在运行的任务数。AWS提供的正是我想要的文档。问题是它不能准确地反映在我的仪表板上。

通常,我需要的服务总数是3:1个Django任务和2个芹菜任务。在大多数情况下,这会正确地反映在较小的仪表板上,但并非总是如此,这让我有些疯狂:\

当前配置是按书进行的。我使用ServiceName,ClusterName维度,CPUUtilization作为度量标准,统计的样本计数和该期间的1分钟。AWS就是这样说我应该这样做。

但是我在仪表板上看到了这个:https//imgur.com/fbBjThi

但是,直接看ECS,我只有1个django和2个芹菜任务正在运行。Cloudfront仪表板似乎加倍,有时甚至是样本计数值增加了两倍,因此计算错误。

即使在我编辑此特定小部件时从Cloudfront中,也将显示正确的任务计数:https ://imgur.com/oZfWDyQ

似乎Cloudfront在1分钟内获得了一个以上的样本计数,因此我尝试将周期减少到30秒,但这似乎无济于事。

根据AWS文档的建议,1分钟是正确的时间吗?如果没有,合适的期限是多少?

amazon-cloudwatch aws-ecs

5
推荐指数
1
解决办法
867
查看次数

如何从ECS容器中获取任务ID?

您好,我对Task ID从EC2主机内部运行容器中检索感兴趣。

AWS ECS文档指出存在ECS_CONTAINER_METADATA_FILE带有此数据位置的环境变量,但是只有在ECS_ENABLE_CONTAINER_METADATA创建集群/ EC2实例时将变量设置为true时,才可以设置/可用。我看不到在aws控制台中可以在哪里完成。

此外,文档指出,可以通过在主机中将其设置为true来完成此操作,但需要重新启动Docker代理。

还有其他方法可以执行此操作,而不必进入EC2内部进行设置并重新启动Docker代理吗?

containers docker aws-sdk aws-ecs

5
推荐指数
4
解决办法
4773
查看次数

我们可以使用自定义AMI创建ECS集群吗?

我创建了一个自定义AMI,其中预装有某些软件和脚本。

  • 是否可以将此AMI用于ECS群集?
  • 创建群集时,我看不到添加AMI的任何选项

amazon aws-ecs amazon-ami

5
推荐指数
1
解决办法
2470
查看次数

在 EFS 或 EBS 上使用 CloudFormation 具有持久数据的 ECS

我正在寻找一些 AWS 专家来帮助我完成这件事。我花了将近一周的时间尝试将我的后端 docker 映像部署到 AWS,但没有 100% 达到预期的行为。

首先,有人建议我尝试 AWS 最近提供的新 Fargate 服务。我设法部署了我需要的一切,但很快就发现我需要任何类型的数据持久性,从我读过的内容来看,Fargate 目前无法使用这些数据持久性。

我发现这些模板非常有用,因为 AWS 非常大而且势不可挡,所以没有这些模板我什么也做不了,目前尝试使用 EC2 实例进行部署。https://github.com/awslabs/aws-cloudformation-templates/tree/master/aws/services/ECS/EC2LaunchType

我对这种部署有一个问题:
1:为什么这个部署会为集群创建 2 个 EBS 实例?一个 8GB 带快照,第二个 22GB 不带快照。

2:是否可以减少那些 EBS 卷的大小??如果是这样怎么办?

3:是否可以只拥有其中一个 EBS ?

4:是否可以将 docker 后端映像中的卷挂载到那些 EBS 卷以持久化数据?如果是这样怎么办?我需要为我的后端安装两个卷, /root/.local/share/Bisq /root/.local/share/bisq-api或者~/.local/share/Bisq ~/.local/share/bisq-api我不太确定这如何与 AWS 配合使用。与本地环境上的步骤相比,路径是什么。

5:数据持久化使用EBS还是EFS更好?EFS 的问题是我找不到任何相关文档如何将 EFS 连接到这种 ECS 部署。一切都必须使用 CloudFormation 模板

总体而言,符合 100% 期望行为的要求是:

1:CloudFormation 模板/模板尽可能少地部署必要的服务,以免构建庞大的基础设施来保留成本和只需单击按钮并获取到后端服务的外部链接的能力。(不能有任何手动配置一切都必须自动化)

2:能够为后端容器停止/启动 EC2 实例(EC2 将每天运行几分钟到几小时/一个月几天。(取决于每个用户场景他将使用后端的频率)

3:能够在用户停止实例然后在将来的时间点启动它时保留数据。

我会感谢任何帮助/建议,因为我开始对连接到 AWS 服务的所有东西失去理智。了解 AWS 的任何用例真的是一个很大的问题,所以我希望得到帮助

谢谢!

amazon-ec2 amazon-web-services amazon-elastic-beanstalk amazon-efs aws-ecs

5
推荐指数
1
解决办法
2981
查看次数

在 ECS 任务中重新启动单个退出的容器

我有一个容器,它是 ECS 任务定义的一部分,我已将其标记为essential=false,因为如果此容器出现故障,我不希望 ECS 代理拆除任务中的其他容器。在我的情况下,使容器“非必要”已经达到了预期的结果:容器崩溃,任务中的其他容器不会被删除或重新启动。

但是,我确实希望独立重新启动这个非必要的容器。有没有内置的方法来实现这一点?基本上,如果容器退出,运行docker startdocker restart在该容器上(我们目前必须手动执行)。到目前为止,我在文档或探索 AWS 控制台方面没有任何运气。

amazon-web-services docker aws-ecs

5
推荐指数
1
解决办法
2000
查看次数