由于 RDS 不存在,AWS Elastic Beanstalk 环境终止失败

AWS Elastic Beanstalk Environment termination failing due to non-existent RDS

我通过向导创建了一个 Elastic Beanstalk,它创建了一个我没有使用的 Amazon RDS 数据库,因为我们的数据库实例位于 Elastic Beanstalk 之外的不同 RDS 中。

我删除了导致环境不稳定的RDS实例,我们不能再使用它了。但是,我们创建了一个新环境并且一切正常。

现在,我正在尝试终止我们无法使用的另一个 Beanstalk,但它一直无法终止。据我所知,似乎在创建 RDS 时,保留设置为 'take a snapshot',现在 RDS 不存在,它无法拍摄快照并且无法终止环境。

我需要做的就是摆脱这个环境,因为它就在那里。我该如何解决这个问题?

作为参考,错误日志如下所示:

2018-06-05 14:00:41 UTC-0500    ERROR   Stack deletion failed: The following resource(s) failed to delete: [AWSEBRDSDatabase].
2018-06-05 14:00:41 UTC-0500    ERROR   Deleting RDS database named: aa1ipjn4c8bwak9 failed Reason: DBInstance aa1ipjn4c8bwak9 not found. (Service: AmazonRDS; Status Code: 404; Error Code: DBInstanceNotFound; Request ID: f8f17442-bd41-4188-9c7e-9408a5398a92)
2018-06-05 14:00:24 UTC-0500    INFO    rebuildEnvironment is starting.
2018-06-01 14:21:01 UTC-0500    ERROR   Stack deletion failed: The following resource(s) failed to delete: [AWSEBRDSDatabase].
2018-06-01 14:21:01 UTC-0500    ERROR   Deleting RDS database named: aa1ipjn4c8bwak9 failed Reason: DBInstance aa1ipjn4c8bwak9 not found. (Service: AmazonRDS; Status Code: 404; Error Code: DBInstanceNotFound; Request ID: 0dba0c59-473f-4814-a6dd-2af7847be6c0)

我在安全组方面遇到过同样的问题。我能够通过重建环境来删除环境。

步骤:

  1. 重建环境

在 elastic beanstalk 右上角的 Actions 下拉菜单下,单击 Rebuild Environment 选项

注意:这可能需要一些时间才能完成

  1. 终止环境

在相同的操作下拉列表中单击 终止环境

P.S: Screenshot of Actions drop down

您可以创建一个名为 aa1ipjn4c8bwak9 的新 RDS 实例,然后删除该环境。当我从默认 ELB 切换到 ALB 时,我不得不做类似的事情。

我希望 EB 没有默认使用环境创建数据库 - 在任何类型的生产环境中,这几乎肯定是个坏主意。

添加我们的经验以防有帮助。

由于 RDS 快照已达到极限而无法终止 RDS 实例,因此正常终止环境失败。 (理论上,作为一种解决方法,可以达到并提高该限制......)。我们手动终止了 RDS 实例。我们仍然无法终止环境。检查 CloudFormation 控制台(资源选项卡),我们看到 AWSEBSecurityGroup 和 AWSEBLoadBalancerSecurityGroup 的状态均为 DELETE_FAILED。在某些情况下,环境的安全组控制台中列出了 2 lb 安全组(如果操作涉及交换 LB,并且在拆除旧的 LB 之前发生故障)。关键是 ONE 它们依赖于孤立的 RDS 安全组(组名前缀 = 'rds-awseb')。交互地,似乎别无选择,只能尝试同时删除两者。系统会向您提供 link 以查看依赖项 - 其中一个依赖项将是 rds 安全组。单击进入安全组控制台并将其删除。一旦它消失了,我们就可以从 CloudFormation 控制台删除堆栈(留下僵尸 EB 环境)或(更好)从 EB 控制台或使用 CLI 终止 EB 环境。根据顺序,发现 EB 终止仍然失败,因为未能终止现在丢失的 RDS 实例。在这种情况下,可以从 CF 控制台删除堆栈(出现提示时单击 'retain')- THEN EB 终止成功。请务必执行 EB 终止,因为当 CF 堆栈删除完成时,通常还有其他资源未删除。

  1. 打开 AWS CloudFormation 控制台。

  2. 在导航窗格中,选择堆栈。

  3. 在堆栈名称列中,select 您要删除的 Elastic Beanstalk 环境的堆栈。

注意:在堆栈的“状态”列中,您应该看到 DELETE_FAILED。

提示:您可以通过验证 AWS CloudFormation 控制台中描述列中的环境 ID 与您的 Elastic Beanstalk 环境的环境 ID 匹配来识别您的堆栈。

  1. 选择删除。

  2. 在pop-upwindow,selectResources to retain - optional部分的AWSEBRDSDatabase复选框,然后选择Delete Stack。

来源:- AWS Knowledge Centre

我首先删除了我的一个 EBS 环境正在使用的 RDS。 然后我删除了 Cloudformation 任务。 然后删除了 EBS 应用程序并自动删除了 EBS 环境。