【问题标题】:AWS Elastic Beanstalk Environment termination failing due to non-existent RDS由于 RDS 不存在,AWS Elastic Beanstalk 环境终止失败
【发布时间】:2018-11-15 09:19:10
【问题描述】:

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

我删除了导致环境不稳定的RDS实例,我们不能再使用它了。然而,我们创造了一个新的环境,一切都解决了。

现在,我正在尝试终止我们不能/不会使用的另一个 Beanstalk,但它一直无法终止。据我所知,似乎在创建 RDS 时,保留设置为“拍摄快照”,现在 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)

【问题讨论】:

  • 如果您的 .war 文件仍部署到该 Elastic Beanstalk,请先尝试将其删除,刷新页面,然后再次尝试删除
  • 我试图删除部署到上述 EBS 的版本,但它给了我问题中提到的两个相同的错误。有没有其他方法从 EBS 中删除已部署的代码?

标签: amazon-web-services amazon-elastic-beanstalk amazon-rds


【解决方案1】:

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

步骤:

  1. 重建环境

在弹性豆茎右上角的 Actions 下拉菜单下,点击 Rebuild Environment 选项

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

  1. 终止环境

在相同的 Actions 下拉菜单下,点击 Terminate Environment

附注: Screenshot of Actions drop down

【讨论】:

  • 我试过了,但对我来说失败了,我认为在重建环境时它会首先删除其所有配置,在这样做的同时,在我的情况下,重建也会在删除数据库时出错(在这种情况下不存在)。所以我的重建也失败了。有没有办法摆脱这个烂摊子。它在本质上感觉非常狭窄。
【解决方案2】:

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

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

【讨论】:

  • 这是一个如此肮脏的解决方法,遗憾的是这是唯一有效的方法。不敢相信没有这方面的规定。谢谢:)
  • 没问题。在我看来,EB 是一项非常有前途的技术,但如今它已被其他 AWS 产品甩在了后面,并且确实显示了它的时代。
  • 是否有完全替代 EB 的产品?如果是,我想知道并且可能已经迁移到它们,因为 EB 绝对不会让事情变得很容易。
  • 这取决于您所说的“替换”。在我看来,ElasticBeanstalk 旨在管理传统三层 Web 应用程序的生命周期。它可以自动执行基础架构配置、应用程序部署、容量扩展和监控。如果您的应用程序符合 EB 范式,它仍然是一个不错的选择。当您想在其框架之外做某事时,挑战就来了。如果您想要更大的灵活性,您可能需要查看 CodeDeploy、CodePipeline 或 CodeStar,或者如果您的需求更简单,Lightsail 或 Lambda 可能更适合。
  • 谢谢布赖恩,这确实给了我更好的洞察力
【解决方案3】:

添加我们的经验以防万一。

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

【讨论】:

    【解决方案4】:
    1. 打开 AWS CloudFormation 控制台。

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

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

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

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

    1. 选择删除。

    2. 在弹出窗口中,选中要保留的资源 - 可选部分中的 AWSEBRDSDatabase 复选框,然后选择删除堆栈。

    来源:-AWS Knowledge Centre

    【讨论】:

      【解决方案5】:

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

      【讨论】:

        猜你喜欢
        • 2021-09-29
        • 2016-12-29
        • 2021-12-27
        • 2019-04-20
        • 2021-06-21
        • 2021-04-08
        • 2014-05-30
        • 2018-05-12
        • 2020-09-15
        相关资源
        最近更新 更多