Tag: amazon web services

AWS ECS如何从一个容器向另一个容器调用服务

我有一个具有2个EC2实例的Auto Scaling组的ECS群集。 另外我有3个服务,每个服务都有自己的任务定义。 每个EC2实例为每个服务运行一个docker容器。 因此,我在每个EC2实例中都有3个docker容器。 每个docker集装箱只需运行一个弹簧启动应用程序。 由于我有3个服务,那么我有3个春季启动应用程序。 同样,一个容器只运行这3个spring启动应用程序中的一个。 每个应用程序公开一个rest的API,诸如/ service1或/ service1 / resource1之类的URL下的POST,GET等服务。 这里重要的一点是我在容器的主机中使用dynamic端口映射。 我有一个端口443的外部(面向Internet的)ALB,它有3个目标组。 根据URL,请求将转到3个应用程序(或容器)之一。 我的问题有时是应用程序需要向应用程序B发出http请求。我的EC2实例位于私有子网中,而我的ALB位于公有子网中。 因此,如果我使用ALB将容器内的http请求发送给另一个容器,那么请求将通过NAT进行,而且由于NAT的公共IP不是ALB的安全组的一部分,无法在端口443上连接。我有2种方法可以使这项工作: 在白名单白名单0.0.0.0/0的安全组中。 我不想这样做,因为整个世界都可以访问。 在ALB的安全组中,将NAT的公共IP列入白名单。 我不确定这种方法。 这是可取的吗? 我试图实现的第三个选项是有一个第三个负载平衡器,一个内部的。 但是我迷失在这里,按照AWS文档,您只能将1负载均衡器分配给您的服务。 而且由于我们使用的是dynamic端口映射,我没有看到手动创buildALB并使用dynamic自动分配的端口的方法。 你们如何在容器之间进行这种连接,其中一个容器使用其他服务提供的服务? 作为最后的评论,我使用云形成所有。 没有从控制台手动设置。 谢谢,

健康的ECS容器返回504

使用容器中的7种不同服务pipe理AWS ECS群集。 应用程序负载平衡器与目标组和path基于路由。 应用程序是.NET Core WebApi,没有什么特别的或不寻常的。 健康检查是正常的,目标正在工作(自动缩放也是如此)。 有时(没有任何模式)所有的服务(或大多数)开始返回504没有理由。 健康检查还行。 日志表明请求没有到达容器。 这是一个错误或function,以及如何解决它? 到目前为止重新启动容器的工作,但这不能是一个永久的解决scheme。

何时在Elastic Beanstalk中使用多容器泊坞窗来运行Rails应用程序?

我想将rails API应用程序部署到AWS Elastic Beanstalk,并注意到docker有两个选项。 单个容器 多容器 我觉得对于这个应用程序来说只需一个容器就足够了,但是我想知道什么时候使用多容器。 如果我想将两个rails应用程序(一个是API应用程序,另一个是pipe理应用程序)部署到单个EC2实例,那么情况是这样吗?

使用Dockerfile传递Docker选项

我正在使用AWS ECS来运行基于Docker的任务。 由于ECS代理任务定义不支持所有Docker选项,因此我正在寻找一些解决方法将这些选项传递给docker run命令。 是否有可能通过使用Dockerfiles传递类似–memory-swappiness , –memory-swap等Docker选项?

将堆栈部署到没有ssh的docker swarm模式

我在AWS上有一个docker swarm集群(使用aws模板的docker进行设置)。 我可以通过sshing来部署堆栈,但这并不令人满意。 我想自动创build新的堆栈。 我确信这存在,但我的谷歌福正在失败,有人可以指出我在正确的方向。 用例是用户启动事件,启动堆栈是为了响应事件而生成的用户特定configuration。

使用AWS SAM进行本地AWS Lambdatesting

我希望使用AWS的SAM在将脚本推送到AWS Lambda之前在本地开发,testing和打包脚本。 我正在使用带有AWS SAM(0.2.2)的Docker Toolbox(17.10.0-ce)来运行我在实际的AWS Lambda上的相同代码 – 而且我知道它是有效的。 我的MyMainFunction.py如下所示: import json def l_handle(event, context): payload = json.loads(event.get('body')) op1 = payload['op1'] op2 = payload['op2'] operator = payload['op'] if op1 == 0 or op2 == 0 or operator == None: result = 'Please enter valid input data' ret_code = 219 else: if operator in {'add', 'plus', '+'}: […]

如何设置AWS ECS + dockerfile-maven-plugin?

我试图设置我的项目的pom.xml和Maven的settings.xml来自动生成Docker镜像并将其推送到我的AWS ECS私有Docker存储库。 在我的pom.xml ,我添加了dockerfile-maven-plugin,并将其configuration如下: <plugin> <groupId>com.spotify</groupId> <artifactId>dockerfile-maven-plugin</artifactId> <version>1.3.6</version> <executions> <execution> <id>default</id> <goals> <goal>build</goal> <goal>push</goal> </goals> </execution> </executions> <configuration> <finalName>myproject/server</finalName> <repository>137037344249.dkr.ecr.us-east-2.amazonaws.com/myproject/server</repository> <tag>${docker.image.tag}</tag> <serverId>ecs-docker</serverId> <useMavenSettingsForAuth>true</useMavenSettingsForAuth> <buildArgs> <VERSION>${project.version}</VERSION> <BUILD_NUMBER>${buildNumber}</BUILD_NUMBER> <WAR_FILE>${project.build.finalName}.war</WAR_FILE> </buildArgs> </configuration> </plugin> 根据dockerfile-maven-plugin提供的说明,我需要为ECS服务器身份validation添加configuration,但是我不知道需要提供什么用户名/密码。 我怀疑这是我的AWSlogin用户/通行证。 <servers> <server> <id>ecs-docker</id> <username>where_to_get_this</username> <password>where_to_get_this</password> </server> </servers> 此外,任何build议,以自动化此Docker图像生成/推送到我的回购更好的方式,是值得欢迎的。

AWS S3作为Docker卷?

我正在尝试在AWS EC2上使用Docker设置Gitlab CIpipe道。 一切正常,直到我达到我的EC2实例(8GB)的存储上限。 正如我很快学到的,一个pipe道可以轻松地使用1-2 GB的数据。 有4在服务器上,一切都停止。 当然,我可以考虑优化Docker的存储使用,例如使用Alpine,但是我确实需要一个更持久的解决scheme,因为8GB几乎不够用。 我一直试图用s3fs作为Docker卷来处理我的数据饥饿pipe道,但无济于事。 Docker卷使用s3fs不支持的硬链接 。 这是可能的configurationdocker使用symlink ? 或者,如果还有其他软件包将s3挂载为“真实”文件系统?

无法从Docker Cloud获取CloudWatch中的错误日志

我成功将AWS账户连接到Swarm模式的Docker Cloud。 CloudWatch日志logging也已启用。 一切正常运行,实例与Load Balancer一起创build。 我们设置OpenResty服务器,并在我们的CloudWatch Logs仪表板中获取日志。 但问题是我们只能获取INFO日志,无法像下面的屏幕截图那样获取任何错误日志 一切都是默认的,我没有做任何改变。 我尝试过但无法find在CloudWatch仪表板中设置获取错误日志的位置。 请帮帮我。 谢谢,

应用程序在集群上的docker容器中的configuration

如何在一个机器集群上的Docker容器中部署应用程序,并使用数据库用户名和密码以及其他应用程序特定设置等设置来configuration该应用程序。 而不必将设置放在容器中作为configuration文件,也不需要将设置放在机器上,因为机器是可回收的。 此外环境variables是没有select,因为这些是在日志中可见,不适合密码和私人密钥imo。 应用程序在开发时是一个Node.js应用程序,我使用JSONconfiguration文件运行它。 生产环境将在AWS ECS环境中存在多台机器。 这些机器都在群集中运行docker,它自己的应用程序是docker镜像,应用程序的多个实例将使用负载平衡器在实例之间分配负载来运行。