无法删除ENI - 已删除RDS

Jos*_*ord 6 rds amazon-web-services amazon-elastic-beanstalk

我试图将代码部署到ElasticBeanstalk环境.每当我尝试将此分支部署到环境时,EB会杀死所有实例,ELB,RDS等,并尝试重建但失败.这会使环境处于错误状态,因为它会删除RDS但不会删除安全组或ENI.当我尝试手动删除安全组时,它无法说有依赖对象.

我将其追溯到网络接口但是当我尝试将其分离(甚至强制分离)时,我收到一条错误,我没有获得许可.应该使用RDS实例删除此ENI,但事实并非如此.现在我根本无法摆脱环境,无法重建它.

我不确定为什么这个应用程序会导致环境尝试在每次部署时重新创建所有内容,因为EC2实例消失,然后当它们加载备份时它们被添加到ELB但是ELB无法进行健康检查,所以他们经常停止服务,环境处于死亡状态.如果我能以某种方式查看日志,了解导致环境与此应用程序崩溃的原因,那将是很好的.

让ElasticBeanstalk删除所有实例(包括RDS)对于部署是不可接受的,因为我们经常不得不重新播种这个,更不用说这是否已经部署到生产中它将擦除所有生产数据而我们不能拥有它.

有没有办法看到部署过程中发生了什么以及为什么会发生这种情况?

Ste*_* E. 0

Elastic Beanstalk 在后台使用 CloudFormation。您将能够通过识别正确的堆栈(根据awseb-e-j5zfptidfe-stack您的日志以 为前缀)并删除它们来删除整个环境 - 或者至少删除带有 ENI 的堆栈。

您还需要从 ElasticBeanstalk 中删除环境。这将重置一切。如果存在依赖堆栈 - 就像安全组一样。最好的解决方案是阅读消息以确定依赖关系并首先清除它们。

如果您知道要保留其中的数据,最好不要将 RDS 包含在弹性 beanstalk 堆栈中。单独创建它,然后将连接详细信息传递到您的堆栈。AWS 提供详细说明。一个简短的总结是:

  1. 为数据库创建安全组
  2. 使用安全组创建 RDS 数据库
  3. 将数据库连接参数作为环境变量添加到您的 EB 堆栈
  4. 将 EC2 安全组添加到您的数据库安全组,作为数据库允许的流量源。

最后。您需要确定堆栈中的实例被终止的原因。看起来他们并没有变得“健康”。禁用Ignore health checkElastic Beanstalk 部署的一个选项。

这应该会导致 EC2 实例的环境被标记为“不健康”。然后,您可以使用所需的任何工具来诊断 EC2 实例未正确响应的原因health checks并解决问题。

EC2 实例未通过运行状况检查的原因可能有多种。检查本身可能配置不正确、安全组可能错误或者 EC2 实例本身上的服务可能未按应有的方式响应。