【问题标题】:add metadata to S3 object in terraform将元数据添加到 terraform 中的 S3 对象
【发布时间】:2021-09-16 20:04:56
【问题描述】:

我正在根据 S3 中的现有文件上传新文件期间尝试添加元数据。 我使用的代码如下:

provider "aws" {
  region  = "xxx"
  profile = "xxx"
}

data "aws_s3_bucket_object" "index_cdn" {
  bucket = "bucket name"
  key    = "index.html"
}

resource "aws_s3_bucket_object" "index" {
  bucket       = "bucket name"
  key          = "index_new.html"
  source       = "${path.module}/index.html"
  content_type = "text/html"
  
  metadata     = lower(data.aws_s3_bucket_object.index_cdn.metadata)
}

output "metadata" {
  value = data.aws_s3_bucket_object.index_cdn.metadata
}

失败并显示以下错误消息。

Error: Incorrect attribute value type

  on main.tf line xx, in resource "aws_s3_bucket_object" "index":
  xx:   metadata     = lower(data.aws_s3_bucket_object.index_cdn.metadata)

Inappropriate value for attribute "metadata": map of string required.

当我运行没有代码块 resource "aws_s3_bucket_object" "index" 的代码时,输​​出如下:

Plan: 0 to add, 0 to change, 0 to destroy.

Changes to Outputs:
  + metadata = {
      + "Codebuild-Buildarn"       = "arn:aws:codebuild:xxxxx"
      + "Codebuild-Content-Md5"    = "716d3e5bc7c972f89033aad7dd6c9a9f"
      + "Codebuild-Content-Sha256" = "d015e0a093938b21135c2ba5abc23278d4c5961d7e18aa8e3b9a748cc09e6bc7"
    }

知道如何解决吗?感谢您的帮助。

【问题讨论】:

    标签: amazon-web-services amazon-s3 terraform terraform-provider-aws


    【解决方案1】:

    应该是,keys应该是小写:

     metadata     = {for k, v in data.aws_s3_bucket_object.index_cdn.metadata: lower(k) => v}
    

    【讨论】:

      猜你喜欢
      • 2022-08-19
      • 1970-01-01
      • 2020-10-07
      • 2013-01-03
      • 2020-04-05
      • 1970-01-01
      • 2017-06-06
      • 2020-08-12
      • 2022-01-13
      相关资源
      最近更新 更多