问题标签 [aws-ecs]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
259 浏览

amazon-web-services - AWS ECS 是否在内部维护任务队列

我们正处于开发阶段。所以我们使用的是由 2 个 EC2 实例组成的 AWS ECS 集群。我们正在使用 Airflow 的 ECSOperator 向 ECS 集群提交任务。我们正在寻求扩展这个过程。所以我们将使用 Airflow 的 Celeryexecutor,它用于在 Airflow 上并发提交和调度任务。

所以问题是,我们应该关心提交给 ECS 的任务数量,还是不管提交给 ECS 的任务数量,它会通过任何内部排队机制为所有任务提供服务而不会失败?

0 投票
0 回答
48 浏览

amazon-web-services - 在 ELB 上使用路径路由部署多个全栈 React + Express 应用程序

我目前有四个容器化的 React + Express 应用程序(端口 3001 暴露),它们位于具有四个不同 CNAME 的四个单独的 ECS 实例上。他们每个人都坐在自己的 nginx 服务后面作为反向代理。

鉴于应用程序的数量可能会增加,我希望使用 ELB 在 ECS 上重新部署它,但我遇到了路径路由问题。我的目标是建立一个系统,<url_name>/service-1将流量路由到引用的容器service-1等。

目前,服务都处于一个running状态,但是路由提供了一堆控制台错误,说 react build 命令生成的静态jscss文件在<url_name>/. 有没有人找到在 ELB 上使用路径路由运行多个全栈 React + Express 应用程序的方法,或者添加 Nginx 服务或将 React 主页更新为固定值的解决方法?

0 投票
4 回答
26983 浏览

amazon-web-services - ECS 无法承担角色

从控制台,我正在调用一个提交批处理作业的 lambda。批处理作业失败,表明 ECS 无法承担为执行作业定义而提供的角色。

对于角色,我添加了 lambda 和 ECS 服务。

错误信息:

“ECS 无法承担为此任务提供的角色‘arn:aws:iam::749340585813:role/golfnow-invoke-write-progress’。请验证所传递的角色是否具有正确的信任关系和权限,并且您的 IAM 用户有权传递此角色。”

批处理作业:

调用方式有问题吗?我的用户具有管理员权限,所以我认为这不是我的用户权限不足的问题。

0 投票
0 回答
485 浏览

apache-kafka - 无法连接到 Zookeeper 容器 - AWS ECS 环境

尝试使用 ALB 在 AWS ECS 环境中启动 Apache Kafka 和 zookeeper。启动后,docker 实例会在几秒钟后被杀死。Zookeeper 实例已链接到 kafka 实例。

启动 Kafka 容器时使用的环境变量:

kafka 容器的 Docker 日志

Zookeeper 容器的 Docker 日志:

0 投票
1 回答
611 浏览

docker - Configuring AWS ECS cluster to be load-balanced and auto-scaling behind a DNS

I have a recently-Dockerized web app that I'm trying to get running in AWS ECS. I'm using Route 53 for the DNS.

Although I haven't set it up yet in Route 53, my plan is to create a DNS record of api.uat.myapp.example.com, and what I want is to have that domain name backed by an load-balanced, autoscaleable cluster of my containers living in ECS.

I'm in the ECS Container Network Configuration tab:

enter image description here

Press the "I believe!" button for a minute and let's pretend that I've already created the api.uat.myapp.example.com domain name in Route 53. What values/configs do I need to add here so that:

  • When remote clients try to connect to api.uat.myapp.example.com they get routed to a load-balanced container running in my ECS cluster?; and
  • That load-balanced ECS cluster is auto-scaling (once I figure out where I can configure auto-scaling properties, I'm sure I can figure out how to configure them!)
0 投票
1 回答
2261 浏览

nginx - 让我们在 AWS ECS 上加密 docker nginx

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

我的设置基于https://github.com/evertramos/docker-compose-letsencrypt-nginx-proxy-companion,他利用了https://github.com/JrCs/docker-letsencrypt-nginx-proxy-companion

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

看起来像

Web 应用程序在端口 5000 上运行。使用 let's encrypt 运行 Web 应用程序和 api 没有问题。

任何想法如何使它与 AWS ECS 一起工作?

0 投票
2 回答
550 浏览

java - AWS ECS:任务被映射到错误的目标组

我有一个包含 2 个模块的 Spring 项目:Pets 和 Owners,每个模块都是从单个 MySQL 数据库获取数据的微服务。当我将这两者推送到具有 2 个任务的单个 Docker 容器中时——每个微服务 1 个——它们都启动并运行,并且这些任务被映射到不同的主机端口(32768 和 32769)。但是,当我访问 http://{elb-dns}/pet 时,我得到了 404,但是当我访问 http://{elb-dns}/owner 时,它返回了预期的数据。我了解到宠物任务被映射到错误的目标组,但不知道为什么。

创建 ECS 集群后,以下 AWS CLI“描述”命令输出如下:

我已经确认,当单独部署时,每个微服务都是独立工作的。我正在使用 Application Load Balancer,每个微服务都有自己的目标组。我不确定还有什么可以尝试或检查的。有没有人遇到过类似的问题?我还应该在哪里寻找线索?


更新 1

我将日志记录级别更改为 TRACE,并了解到所有 /pet 和 /owner 调用都被专门路由到 owner 任务。当我尝试 http://{elb-dns}/pet/1 时,以下日志来自所有者任务:

同样的调用不会在宠物任务中产生任何日志,这表明它没有被路由到容器中的正确任务。所以我仍然坚持这个问题。


更新 2

ELB 日志显示,对于 /pet 和 /owner,所有呼叫都被路由到同一个目标组。然而,/pet 应该被路由到一个 TG,/owner 应该被路由到另一个。需要明确的是,我有 3 个 TG:一个在容器端口 8080 上用于 /pet,一个在容器端口 8080 上用于 /owner,一个在容器端口 80 上接受 HTTP 请求。所有三个 TG 都在同一个 VPC 中。

0 投票
2 回答
2361 浏览

jvm-arguments - 如何在 AWS ECS 中传递 JVM 参数?

我正在尝试在 Amazon ECS 中设置微服务。如何配置 JVM 参数并将其传递给微服务?

0 投票
0 回答
920 浏览

amazon-cloudformation - 如何从 CloudFormation“资源创建失败”失败 (AWS::ApplicationAutoScaling::ScalableTarget) 中获取详细的原因信息

我有一个受限的 IAM 用户,我试图获得最低限度的权限来干净地创建基线 ECS CloudFormation 参考架构:

https://github.com/aws-samples/ecs-refarch-cloudformation

但是,我无法部署参考堆栈。我收到此错误:

我是 CloudFormation 的新手,我想知道如何最好地诊断原因。有没有地方可以让我获得有关问题原因的更详细的诊断信息?

FWIW 我可以在完全许可的私有 AWS 账户上部署参考架构,而不会遇到 AWS 打算使用此参考堆栈的任何麻烦。

作为参考,这是 service.yaml 中错误所指的部分:

这是我的命令行:

0 投票
0 回答
406 浏览

amazon-ec2 - 在 awsvpc 网络模式下授予容器互联网访问权限

情况如下:

两个容器驻留在同一个任务定义中。

具有此任务定义的服务正在特定的 ec2 实例上运行。

我已将此实例的 VPC 配置为使用 NAT 网关。我认为这是成功的,因为我现在可以从实例本身 ping 到 google。

然而,问题是在我的实例上运行的 docker 容器没有互联网访问权限。

将网络模式切换为桥接显然可以解决这个问题,但是我需要这两个容器之间的双向 REST 流量。据我所知,桥接模式只能实现单向流量。

我的问题:

我可以做些什么来从我的容器中获得 Internet 访问权限?