gpt4 book ai didi

amazon-web-services - 连接资源之前如何在 EC2 实例上运行 Elastic Beanstalk 命令

转载 作者:行者123 更新时间:2023-12-02 18:57:52 24 4
gpt4 key购买 nike

我们遇到这样的情况:我们希望以通常的 Elastic Beanstalk 方式运行 Django 服务器,同时连接 Django 网站使用的自定义 Docker 容器。到目前为止,我基本上有以下 .ebextensions 配置文件:

packages:
yum:
ecs-init: []

files:
/etc/ecs/ecs.config:
mode: "000644"
owner/group: root
content: ECS_CLUSTER=${Ref: MyCluster}

commands:
01_start_docker: sudo service docker start
02_start_ecs: sudo start ecs

Resources:
MyCluster:
Type: AWS::ECS::Cluster
MyService:
Type: AWS::ECS::Service
Properties:
Cluster: ${Ref: MyCluster}
DesiredCount: 1
TaskDefinition: ${Ref: MyTask}
MyTask:
Type: AWS::ECS::TaskDefinition
Properties:
ContainerDefinitions:
- ...

问题是 ECS 服务在 Elastic Beanstalk 提供的 EC2 实例注册到集群之前尝试启动。因此,部署到 Elastic Beanstalk 会挂起。如果我手动通过 SSH 连接到 EC2 实例并手动安装 ecs-init、创建 ecs.config 并运行命令,则将继续创建服务和 EB 环境创建成功。

有没有办法告诉服务等待,直到 EB 的自动扩展组创建的 EC2 实例注册到集群?

更多背景:

  • 我们希望 Django 服务器能够通过 localhost 访问 Docker 容器,但我不会反对在资源中包含一个 EC2 实例,专门用于托管 Docker 容器,如果它很容易在自动中引用的话。扩展的 EC2 实例
  • 我们尝试过多 Docker 容器方法,但这种方式似乎更接近 EB 的用法(将 Web 服务器文件直接放在环境中,而不是制作 docker 镜像供环境运行)

最佳答案

尝试如下所示的操作。由于 EB 只是 CloudFormation 堆栈,因此请查看以 awseb- 开头的堆栈以找到您的堆栈。然后在部署 EB 应用程序时查看 CF 资源,以查看您未在 .ebextensions 中指定的预定义 EB 资源所使用的名称。我在我的中看到 AWSEBInstanceLaunchWaitCondition,它似乎与初始实例启动相关。

Resources:
MyService:
Type: AWS::ECS::Service
Properties:
Cluster: ${Ref: MyCluster}
DesiredCount: 1
TaskDefinition: ${Ref: MyTask}
DependsOn: AWSEBInstanceLaunchWaitCondition

关于amazon-web-services - 连接资源之前如何在 EC2 实例上运行 Elastic Beanstalk 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47425216/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com