gpt4 book ai didi

amazon-web-services - AWS Lambda 不等待代码上传到 Terraform 脚本中的 S3 存储桶

转载 作者:行者123 更新时间:2023-12-05 08:06:34 24 4
gpt4 key购买 nike

我有以下 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com