amazon-web-services - 如何使用 Terraform 设置 EBS 根卷以保留 Elastic Beanstalk 中的 EC2 实例

标签 amazon-web-services amazon-ec2 amazon-elastic-beanstalk terraform

我使用我所在区域的默认 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/

相关文章:

command-line - 如何获取 Amazon EC2 集群中所有节点的公有 IP 地址?

ruby-on-rails - 在 AWS 弹性 beantalk 上使用 webpacker gem 部署 rails react 应用程序

svn - 部署时版本控制中的配置文件

amazon-web-services - CDK 销毁不会删除 S3 存储桶

python - 弹性 beantalk 上的 psycopg2 - 无法部署应用程序

amazon-web-services - 为什么 EKS 说我的 Fluent-bit.conf 无效

python - 在 AWS 上请求竞价实例时,如何附加现有 EBS 卷?

amazon-web-services - 在 AWS elastic beanstalk 上用 nginx 和 php-fpm 替换 Apache/PHP

amazon-web-services - 如何为 AWS Websocket API 网关添加自定义域?

amazon-web-services - 无服务器部署 - 未找到功能 - sls 部署