aws_s3_bucket_lifecycle_configuration 的等效“lifecycle_configuration=prevent_destroy”是什么?

j7s*_*kov 2 amazon-s3 terraform terraform-provider-aws

我试图防止 terraform 中的存储桶被删除。该存储桶保存我的 terraform 远程状态文件。到处都说要用lifecycle_configuration=prevent_destroy。terraform 文档说使用新参数aws_s3_bucket_lifecycle_configuration。我有这样的设置:

\n
# Prevent deletion\nresource "aws_s3_bucket_lifecycle_configuration" "tf_remote_state_s3_lifecycle_config" {\n  bucket = aws_s3_bucket.tf_remote_state.id\n  rule {\n    id     = "prevent_destroy"\n    status = "Enabled"\n  }\n  \n}\n
Run Code Online (Sandbox Code Playgroud)\n

我收到此错误:

\n
\xe2\x95\xb7\n\xe2\x94\x82 Error: error creating S3 Lifecycle Configuration for bucket (XXXX): InvalidRequest: At least one action needs to be specified in a rule\n\xe2\x94\x82       status code: 400, request id: XXXX, host id: XXXX\n\xe2\x94\x82 \n\xe2\x94\x82   with aws_s3_bucket_lifecycle_configuration.tf_remote_state_s3_lifecycle_config,\n\xe2\x94\x82   on main.tf line 34, in resource "aws_s3_bucket_lifecycle_configuration" "tf_remote_state_s3_lifecycle_config":\n\xe2\x94\x82   34: resource "aws_s3_bucket_lifecycle_configuration" "tf_remote_state_s3_lifecycle_config" {\n\xe2\x94\x82 \n\xe2\x95\xb5\n
Run Code Online (Sandbox Code Playgroud)\n

lifecycle_configuration=prevent_destroyin相当于什么aws_s3_bucket_lifecycle_configuration

\n

luk*_*302 8

您混淆了lifecycleterraform 的配置和aws_s3_bucket_lifecycle_configuration/ lifecycle_rule,这是控制存储桶中对象生命周期的 S3 功能。两者完全没有任何关系,而且是完全不相关的事情。

解决方案:坚持使用/lifecycle { prevent_destroy = true }在您的 上使用aws_s3_bucket,不要使用aws_s3_bucket_lifecycle_configuration

https://www.terraform.io/language/meta-arguments/lifecycle
https://registry.terraform.io/providers/hashicorp%20%20/aws/latest/docs/resources/s3_bucket_lifecycle_configuration