Amazon web services AWS Lambda不';不要等待代码以Terraform脚本上传到S3 bucket

Amazon web services AWS Lambda不';不要等待代码以Terraform脚本上传到S3 bucket,amazon-web-services,amazon-s3,aws-lambda,terraform,terraform-provider-aws,Amazon Web Services,Amazon S3,Aws Lambda,Terraform,Terraform Provider Aws,我有以下AWS地形配置: # S3 bucket for Lambda code upload resource "aws_s3_bucket" "ada-upload" { bucket = "ada-upload" acl = "private" } # uploading zipped lambda code to S3 resource "aws_s3_bucket_object" "lambda_code_upload" { bucket = aws_s3_

我有以下AWS地形配置:

# S3 bucket for Lambda code upload
resource "aws_s3_bucket" "ada-upload" {
    bucket = "ada-upload"
    acl    = "private"
}

# uploading zipped lambda code to S3
resource "aws_s3_bucket_object" "lambda_code_upload" {
  bucket = aws_s3_bucket.ada-upload.bucket
  key    = "dist.zip"
  source = "dist.zip" 
  etag = filemd5("dist.zip")
}

# creating lambda function
resource "aws_lambda_function" "ada-lambda-function" {
  function_name = "ada-lambda-function"
  s3_bucket   = aws_s3_bucket.ada-upload.bucket
  s3_key      = "dist.zip" 
  memory_size = 1024
  timeout     = 900
  runtime          = "provided"
  source_code_hash = base64sha256("dist.zip")
}
基本上,它创建一个S3 bucket,在那里上传代码,然后从代码中创建一个Lambda。代码是自包含的.NET3.1应用程序,它自带了自己的运行时,因此Zip相当大,上传需要一些时间。Lambda将等待S3 bucket的创建,但不会等待代码完成上传。因此,当我最初运行脚本时,我将得到
S3键“dist.zip”不存在的错误。当我重新运行脚本时-因为zip已经存在-函数创建成功


有没有办法确保Lambda仅在代码上传完成后才开始创建?

免责声明:@ydaetskcoR答案正确,您应该接受它。但是,另一种方法是修改lambda函数,如下所示:

resource "aws_lambda_function" "ada-lambda-function" {
  function_name = "ada-lambda-function"
  s3_bucket   = aws_s3_bucket.ada-upload.bucket
  s3_key      = "dist.zip" 
  memory_size = 1024
  timeout     = 900
  runtime          = "provided"
  source_code_hash = base64sha256("dist.zip")

 depends_on = [
    aws_s3_bucket_object.lambda_code_upload,
  ]
}

这将迫使terraform在启动lambda之前首先等待对象上传到bucket中。

使用
s3_key=aws_s3_bucket_object.lambda_code_upload.key
@ydaetskcoR事后看来,这应该是显而易见的,该死谢谢,你能不能加上这个作为答案,这样我就可以接受了?Terraform的一个核心特性是它能计算出相关资源的依赖关系图。当您使用S3对象资源的属性时,Terraform知道S3对象需要存在才能使用该属性。在这种情况下,没有理由使用depends。根据法律,使用depens____________________________________________________