amazon-web-services - AWS Lambda 不等待代码上传到 Terrafor

我有以下 AWS Terraform 配置:

# 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 存储桶,将代码上传到那里,然后从该代码创建一个 Lambda。代码是独立的.NET 3.1 应用程序,它自带运行时,所以Zip 很大,上传需要一些时间。 Lambda 将等待 S3 存储桶创建,但不会等待代码完成上传。因此,当我最初运行脚本时,我会收到 S3 key "dist.zip"doesn't exist 错误。当我重新运行脚本时 - 因为 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 之前先等待对象上传到存储桶中。

关于amazon-web-services - AWS Lambda 不等待代码上传到 Terraform 脚本中的 S3 存储桶,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60319428/

相关文章:

googlebot - 是否可以让 fail2ban 忽略谷歌?

sql-server - SSIS:发生 OLE DB 错误。错误代码 0x80004005,对方过

graphql - Apollo Graphql : Rename schema for backw

ios - 如何不从照片库 iOS 中获取屏幕截图

vue.js - 元标记在 Nuxt.js 应用程序的页面源中无法正确显示

r - 无法在 R Studio 中安装包

xaml - 如何在使用 xamarin shell 时更改状态栏颜色

reactjs - 如何测试 componentWillUnmount

google-cloud-bigtable - BigTable是否允许设置微时间戳粒度

google-cloud-functions - ingressSettings = ALLOW_I