У меня есть следующее 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, загружает туда код, а затем создает лямбду из этого кода. Код является автономным. NET 3.1 приложением, он имеет собственную среду выполнения, поэтому Zip довольно большой, для загрузки требуется некоторое время. Лямбда будет ждать создания корзины S3, но не будет ждать окончания загрузки кода. Поэтому, когда я запускаю скрипт изначально, я получаю ошибку S3 key "dist.zip" doesn't exist
. Когда я перезапускаю скрипт - поскольку zip уже существует - функция успешно создана.
Есть ли способ обеспечить начало создания Lambda только после завершения загрузки кода?