terraform - 使用 Terraform 设置具有复制功能的 s3 存储桶
问题描述
我正在尝试使用 Terraform 配置具有复制功能的 s3 存储桶。我收到以下错误。
Error: insufficient items for attribute "destination"; must have at least 1
on main.tf line 114, in resource "aws_s3_bucket" "ps-db-backups":
114: lifecycle_rule {
我不明白这个错误信息。首先在replication
我destination
定义的部分。其次,错误消息提到lifecycle_rule
没有
destination
属性。存储桶定义如下。
resource "aws_s3_bucket" "ps-db-backups" {
bucket = "ps-db-backups-b3bd1643-8cbf-4927-a64a-f0cf9b58dfab"
acl = "private"
region = "eu-west-1"
versioning {
enabled = true
}
lifecycle_rule {
id = "transition"
enabled = true
transition {
days = 30
storage_class = "STANDARD_IA"
}
expiration {
days = 180
}
}
replication_configuration {
role = "${aws_iam_role.ps-db-backups-replication.arn}"
rules {
id = "ps-db-backups-replication"
status = "Enabled"
destination {
bucket = "${aws_s3_bucket.ps-db-backups-replica.arn}"
storage_class = "STANDARD_IA"
}
}
}
server_side_encryption_configuration {
rule {
apply_server_side_encryption_by_default {
sse_algorithm = "AES256"
}
}
}
}
解决方案
仔细阅读 terraform文档。
您需要为此创建一个单独的 terraform 资源destination
:
resource "aws_s3_bucket" "destination" {
bucket = "tf-test-bucket-destination-12345"
region = "eu-west-1"
versioning {
enabled = true
}
}
然后在你的replication_configuration
as中引用它
destination {
bucket = "${aws_s3_bucket.destination.arn}"
storage_class = "STANDARD"
}
我希望这有帮助。试着让我知道。
推荐阅读
- javascript - 如何在 Spring MVC 的 JSP 登录页面中实现记住我?
- javascript - @keyup.delete输入直到为空时如何触发功能?VueJS
- django - 即使级别设置为 ERROR,Django 记录器的级别也不会跟踪 INFO 消息
- javascript - 无法在 VAST - FLUID PLAYER 中显示“跳过广告”
- node.js - 如何在通过 sql 查询保存数据或更新数据时删除脚本注入?
- entity-framework - EF Core 不能在父级中包含子级
- javascript - NodeJS:从 readStream 获取文件名
- bash - 正则表达式匹配以点结尾的所有内容
- fonts - Django xhtml2pdf 有孟加拉字体问题(损坏的格式)
- spring - 匹配任何文本到搜索框中