Tag: 亚马逊 ECS

Amazon ECS:如何监控不是基于Web的守护程序/工作程序?

我们打算在ECS上运行一个不是networking服务器的服务,而是一个基于node.js的后台进程,我们将用它来处理asynchronous任务。 我想添加一个运行状况检查,以便在守护进程死亡或死亡的情况下重新启动任务。 目标组运行状况检查仅支持http和https协议,可能不是为此目的而devise的。 对于如何在ECS上监控非基于Web的服务的任何见解,并确保它始终正常运行?

用Docker启动EC2,运行脚本并closures

嗨Stackoverflow社区,我有一个关于使用Docker与AWS EC2的问题。 我对EC2感到满意,但是对于Docker来说,这是非常新的。 我在Python 3.6中编码,并希望自动化以下过程: 1:使用Docker启动一个EC2实例(存储在ECR中的Docker镜像) 2:运行一次性过程,并以CSV格式返回结果(我们称之为“T”) 3:在AWS S3中存储“T” 4:closuresEC2 使用EC2实例的原因是因为这个过程的计算量很大,对于我的本地计算机来说是不可行的。 Docker的原因是为了确保整个团队和CI设施(目前使用circle.ci)的开发环境相同。 我明白,与AWS的交互主要可以使用Boto3完成。 我一直在阅读AWS自己的ECS,而且我有一种感觉,它更倾向于使用Docker部署Web应用程序,而不是运行一次性的过程。 但是,当我searchEC2 + Docker的时候,没有任何其他的ECS出现了。 我也在AWS中完成了这个教程,但没有多大帮助。 我也考虑过使用shell脚本运行EC2(例如下载docker,拉图像,build造容器等),但是感觉有点不好意思? 所以我这里的问题是: 1:在他的情况下,ECS真的是最合适的解决scheme吗? (或换句话说就是ECS为这种操作而devise的?) 2:如果有的话,是否有人使用ECSbuild立和运行一次性stream程? (我发现设置真的很混乱,尤其是使用的术语) 3:有什么其他的select(如果有的话)? 十分感谢你的帮助!

如何在ECS上托pipenodejs应用程序?

Iam希望在ECS上托pipe一个nodejs应用程序。 在本地开发我使用ngrok揭露港口3000,它似乎工作得很好。 现在我想主持。 docker化是强制性的吗? 如果应用程序被docker化,将在amazon ecs上托pipe它的步骤是什么? 我也想知道,如果没有dockerizing,可以在ecs上托pipe。

如何从Docker Conainer内运行的应用程序读取ECS实例标签信息

我正在尝试从部署为ECS服务的应用程序中读取我的EC2实例标记(键和值)。 所以我在docker容器内,我正在尝试读取主机实例的元数据。 我在AWS中查看了这个文档,但是这里只讨论通过SSH读取EC2实例元数据的细节。 但我不打算做SSH。 所以这些API不能在Docker容器中工作。 不过,我发现了一种方法来从我的应用程序中读取docker容器内的mata-data信息。 如curl http://169.254.169.254/latest/meta-data/ 您可以在作为ECS服务运行的Docker容器中运行这些命令,以获取有关元数据的一些信息。 但是,如何读取运行我的Docker容器的EC2主机实例上的标签? 我喜欢在正在运行的docker容器中读取一个名为Environment的 EC2主机实例上的标签。

如何使用awslogs驱动程序login到单个stream

我正在使用AWS ECS并使用aws日志驱动程序进行集中式日志logging。 以下是我的日志configuration的片段。 "logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-group": "app-test", "awslogs-region": "us-west-2", "awslogs-stream-prefix": "spring-boot-app" } } 我有多个服务实例,因此有多个任务。 日志正在login到cloudwatch,但意外地多个stream正在创build(每个任务ID一个)。 有没有一种方法来configurationaws日志驱动程序,以便单个服务的所有日志将被logging到单个stream而不是分散在多个stream中?

在一个服务中可以有两个具有相同任务定义的任务吗?

我有一个pipe道,build立一个图像和更新服务。 最重要的是,这个任务只有一个,这是至关重要的。 容器所需的容量是4(在2个主机上)。 这给了我一个服务4个必要的容器,我只需要一个。 假设任务使用端口0> 80的dynamic端口映射,是否有一种方法可以有两个相同的任务,但一个具有所需的容量为1,基本设置为true,另一个任务与另外3个非必需的容器? 如果没有解决方法?

oci运行时错误:container_linux.go:247:启动容器进程导致“exec:\”nodemon \“:在$ PATH中找不到可执行文件”

当运行任务时,它会抛出错误为“CannotStartContainerError:API错误(404):oci运行时错误:container_linux.go:247:启动容器进程导致”exec:\“nodemon \”:可执行文件找不到$ PATH “ 这里是我的dockerfile的内容 FROM node:8.4-wheezy ENV VERSION 0.1 ENV DEV development ENV DOC_ROOT /opt/app RUN apt-get update && apt-get install -yf nginx RUN npm install –global nodemon RUN npm install –global typescript rimraf RUN mkdir -p ${DOC_ROOT} COPY package.json ${DOC_ROOT} RUN cd /opt/app && npm install WORKDIR ${DOC_ROOT} COPY . ${DOC_ROOT} ENTRYPOINT ["nodemon", […]

原因和解决scheme:在Rails应用程序中的SIGTERM SignalException

我有一个ECS中的dockerized Rails 5应用程序,每次ECS容器循环时都会抛出一个SIGTERM SignalException ,每两个小时左右一次。 运行rake_task assets:precompile时总会发生exceptionrake_task assets:precompile ,这是启动应用程序的第一步(请参阅下面的Makefile )。 它似乎没有对应用程序的function的影响,但我想更好地理解问题,并修复它。 根据我的操作团队: 您的应用每两个小时循环一次。 现在,我们没有给你任何通知或空间让你正常关机。 如果这不是应用程序的问题,也许有办法忽略它? 我应该忽略这个错误吗? 我需要保护它吗? 最好,我想了解正在发生的事情,并妥善处理。 在我看来,全球忽视这个例外只是为了保持我们的错误报告清洁可能是矫枉过正,并可能隐藏未来的实际问题。 Dockerfile FROM ruby:2.4.2 # shortened for brevity, install gems, etc. CMD ["rails"] ENTRYPOINT ["make"] Makefile文件 rails: assets bundle exec rails server sidekiq: bundle exec sidekiq db_migrate: bundle exec rake db:migrate db:seed assets: bundle exec rake assets:precompile […]

(DIND)AWS ECS拉出图像失败,设备上没有剩余空间

我在Docker中使用了Docker与ECS,目前无法创build大图片,在拉动步骤失败。 错误是“设备上没有剩余空间”,即使磁盘仍然有更多的空间。 请看附件,这个图片需要拉到1.5GB左右。 我猜在ECSconfiguration中有一些错误或有限的,因为如果我在另一个实例中运行这个构build容器,它可以构build一个大的图像。 请告诉我如何debugging和解决这个问题。 谢谢。

AWS-ECS – 容器之间的通信 – 未知的主机错误

我有两个Docker容器。 TestWeb(公开:80) TestAPI(公开:80) Testweb容器调用TestApi容器。 主机可以从端口8080与TestWeb容器进行通信。主机可以使用8081与TestApi进行通信。 我可以让TestWeb在我的开发箱(Windows 10)中调用TestApi,但是当我将代码部署到AWS(ECS)时,我得到“未知主机”exception。 这两个容器工作得很好,我可以单独给他们打电话。 但是当我调用一个内部使用HttpClient的方法在Container2中进行Rest方法时,它会给出错误: 发送请求时发生错误。 —> System.Net.Http.CurlException:无法parsing主机名。 码: using (var client = new HttpClient()) { try { string url = "http://testapi/api/Tenant/?i=" + id; var response = client.GetAsync(url).Result; if (response.IsSuccessStatusCode) { var responseContent = response.Content; string responseString = responseContent.ReadAsStringAsync().Result; return responseString; } return response.StatusCode.ToString(); } catch (HttpRequestException httpRequestException) { return httpRequestException.Message; […]