Я думаю, что это происходит из-за медленной интернет-проблемы, поэтому я исправляю это, выполнив следующие шаги.
- установка модуля NPM на лету
- Создать почтовый индекс на лету
- push zip для s3
- затем укажите целевой ключ из s3 вместо нажатия zip из локального
Вот рабочий код.
resource "null_resource" "npm" {
provisioner "local-exec" {
command = "cd ../lambda-functions/loadbalancer-to-es && npm install --prod=only && chmod -R 777 node_modules"
}
}
resource "aws_s3_bucket_object" "file_upload" {
bucket = "${var.env_prefix_name}${var.s3_suffix}"
key = "lambda-functions/loadbalancer-to-es.zip"
source = "${data.archive_file.source.output_path}"
# etag = "${filemd5("../lambda-functions/loadbalancer-to-es.zip")}"
}
# Zip the Lambda function on the fly
data "archive_file" "source" {
type = "zip"
source_dir = "../lambda-functions/loadbalancer-to-es"
output_path = "../lambda-functions/loadbalancer-to-es.zip"
depends_on = ["null_resource.npm"]
}
# Created AWS Lamdba Function: Memory Size, NodeJS version, handler, endpoint, doctype and environment settings
resource "aws_lambda_function" "elb_logs_to_elasticsearch" {
function_name = "${var.env_prefix_name}-alb-logs-to-elk-test"
s3_bucket = "${var.env_prefix_name}${var.s3_suffix}"
s3_key = "${aws_s3_bucket_object.file_upload.key}"
description = "elb-logs-to-elasticsearch"
memory_size = 1024
timeout = 900
runtime = "nodejs8.10"
role = "${aws_iam_role.role.arn}"
depends_on = ["null_resource.npm" ]
source_code_hash = "${base64sha256(data.archive_file.source.output_path)}"
handler = "index.handler"
environment {
variables = {
ELK_DOCKTYPE = "some env"
}
}
}