我有一个包含以下代码的模块。
resource "aws_s3_bucket" "main" {
bucket = var.bucket_name
acl = "private"
tags = var.tags
versioning {
enabled = var.versioning_enabled
}
}
resource "aws_s3_bucket_policy" "mod" {
depends_on = [aws_s3_bucket.main]
count = length(var.bucket_policy) > 0 ? 1 : 0
bucket = aws_s3_bucket.main.id
policy = var.bucket_policy
}
variable "bucket_policy" {
default = ""
}
我使用下面的代码调用模块,为了安全起见,我已经对其进行了编辑。
module "xxxx-api-s3-firehose" {
source = "git::ssh://git@github.com/xxxx/infra-terraform-modules-s3?ref=v1.0.0"
bucket_name = "reporting-xxxxxx-api-${var.env_suffix}-${var.region}"
bucket_policy = <<EOF
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "xxx Bucket Permissions",
"Effect": "Allow",
"Principal": {
"AWS": "${aws_iam_role.xxxxx-api-firehose-role.arn}"
},
"Action": [
"s3:Get*",
"s3:List*",
"s3:Put*"
],
"Resource": [
"arn:aws:s3:::${module.xxxx-api-s3-firehose.bucket_id}",
"arn:aws:s3:::${module.xxxxx-api-s3-firehose.bucket_id}/*"
]
},
{
"Sid": "xx Bucket Permissions",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::${var.account_id}:role/${var.xxxxx}"
},
"Action": [
"s3:Get*",
"s3:List*",
"s3:Put*"
],
"Resource": [
"arn:aws:s3:::${module.xxx-api-s3-firehose.bucket_id}",
"arn:aws:s3:::${module.xxx-api-s3-firehose.bucket_id}/*"
]
}
]
}
EOF
运行后我收到以下错误terraform apply
。
Error: Invalid count argument
│
│ on xxxxx-backend-dev.xxxx-api-s3-firehose/main.tf line 39, in resource "aws_s3_bucket_policy" "mod":
│ 39: count = length(var.bucket_policy) > 0 ? 1 : 0
│
│ The "count" value depends on resource attributes that cannot be determined until apply, so Terraform cannot predict how many instances will be created. To work around this, use the -target argument to first apply only the resources that the count depends on.
╵
我在多个版本的 terraform 中收到错误,包括最新的 1.0.6。
我不确定问题是什么。有人可以建议吗?