簡體   English   中英

Terraform 用於使用 S3 元數據發布 AWS Lambda

[英]Terraform For Publishing AWS Lambda Using S3 Metadata

我在嘗試在 Amazon S3 上的 zip 文件上引用用戶定義的元數據字段時遇到了一些麻煩。 我正在嘗試使用此元數據字段來幫助 Terraform 檢測 zip 文件是否已更改,以便我可以發布新版本的 Z04A7DA3C5B04CAD85DA1EEBB92315B8BBBB7764085932F84

這些是 S3 上的元數據字段:

System defined  Content-Type    application/zip
User defined    x-amz-meta-sha256   241461f66ba6bec6418679888f9c8b5210c1f183aabfe86d1cc2ab71cdffdcfc

這就是我為 Terraform 配置所擁有的:

data "aws_s3_bucket_object" "lambda" {
  bucket = "bucket"
  key    = "lambda/lambda.zip"
}

resource "aws_lambda_function" "lambda" {
  function_name = "lambda_name"
  s3_bucket = "bucket"
  s3_key = "lambda/lambda.zip"
  source_code_hash = "${data.aws_s3_bucket_object.lambda.metadata.x-amz-meta-sha256}"
  handler = "index.handler"
  runtime = "nodejs14.x"
  publish = true
  role = aws_iam_role.lambda_exec.arn
  vpc_config {
    subnet_ids = "subnet_ids"
    security_group_ids = "security_group_ids"
  }
}

當我嘗試運行“terraform plan”時出現此錯誤:

Error: Missing map element

  on ../../../modules/lambda/main.tf line 14, in resource "aws_lambda_function" "lambda":
  14:   source_code_hash = "${data.aws_s3_bucket_object.lambda.metadata.x-amz-meta-sha256}"
    ├────────────────
    │ data.aws_s3_bucket_object.lambda.metadata is map of string with 1 element

This map does not have an element with the key "x-amz-meta-sha256".

我不確定“元數據”是否是本機 Terraform map 數據類型。

它應該是:

source_code_hash = data.aws_s3_bucket_object.lambda.metadata.Sha256

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM