我使用我所在区域的默认 docker 解决方案堆栈编写了 Terraform 来管理我的 AWS Elastic Beanstalk 环境和应用程序。
通过自动扩展创建的 EC2 实例具有标准/默认 EBS 根卷,该卷的“DeleteOnTermination”设置被设置为“true”值——这意味着当实例被替换或销毁时,该卷(以及所有数据)也被破坏。
我想将其更改为 false 并保留音量。
出于某种原因,我找不到有效的 Terraform 文档来了解如何更改此设置以使根卷保留。我能找到的最接近的是自动缩放启动配置,可以提供“root_block_device”映射来更新它。不幸的是,从文档中并不清楚如何准确地使用它。如果我创建一个启动配置资源,我如何在我的 beanstalk 定义中使用它。我认为我的方向是正确的,但需要一些指导。
我是否创建自动缩放资源,然后在我的 beanstalk 定义中引用它?或者我是否将特定设置添加到我的 beanstalk 定义中并在其中包含此映射?感谢您提供的任何帮助或示例。
最佳答案
这可以通过 Resources 在 EB 级别完成.
具体来说,您必须修改 EB 用于启动实例的 AWSEBAutoScalingLaunchConfiguration
设置。
以下是此类配置文件的示例:
.ebextensions/40_ebs_delete_on_termination.config
Resources:
AWSEBAutoScalingLaunchConfiguration:
Type: AWS::AutoScaling::LaunchConfiguration
Properties:
BlockDeviceMappings:
- DeviceName: /dev/xvda
Ebs:
DeleteOnTermination: false
然后,要验证设置,您可以使用 AWS CLI:
aws ec2 describe-volumes --volume-ids <id-of-your-eb-instance-volume>
或者直接终止环境并检查 EC2 控制台中的卷。
关于amazon-web-services - 如何使用 Terraform 设置 EBS 根卷以保留 Elastic Beanstalk 中的 EC2 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63018583/