У меня есть этот файл terraform
provider "aws" {
region = "us-east-1"
}
resource "null_resource" "snapshot_pip_receiver" {
provisioner "local-exec" {
command = "cd ${path.module}/lambdas; make lint-snapshot collect-snapshot"
}
}
data "archive_file" "lambda-zip" {
depends_on = [
null_resource.snapshot_pip_receiver
]
source_dir = "${path.module}/lambda/"
output_path = "${path.module}/es-snapshot.zip"
type = "zip"
}
resource "aws_lambda_function" "es_snapshot_lambda" {
depends_on = [data.archive_file.lambda-zip]
filename = data.archive_file.lambda-zip.output_path
function_name = "test-lambda"
role = "arn:aws:iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole"
source_code_hash = filebase64sha256(data.archive_file.lambda-zip.output_path)
handler = "es-snapshot.lambda_handler"
runtime = "python2.7"
timeout = 10
}
terraform plan
дает это на выходе
Refreshing Terraform state in-memory prior to plan...
The refreshed state will be used to calculate this plan, but will not be
persisted to local or remote state storage.
------------------------------------------------------------------------
Error: Error in function call
on main.tf line 26, in resource "aws_lambda_function" "es_snapshot_lambda":
26: source_code_hash = filebase64sha256(data.archive_file.lambda-zip.output_path)
|----------------
| data.archive_file.lambda-zip.output_path is "./es-snapshot.zip"
Call to function "filebase64sha256" failed: no file exists at es-snapshot.zip.
То, что я сделал до сих пор: -
- Если я удалю
depends_on
из archive_file
, он будет успешно запущен, но мне нужно, чтобы для создания приложения сначала должен был выполняться null_resource. - Я попытался явно указать
depends_on
в aws_lambda_function
, но нет используйте. - Я заменил
aws_lambda_function
другим null_resource
вызовом output_path
, и он работал успешно.
Как я могу получить согласованные пути при использовании зависимости_on от archive_file?