为Lambda函数使用Github Relase.zip文件



我正试图使用Terraform来生成一个lambda函数,该函数使用github发布包中的源代码。包裹的位置是:

https://github.com/DataDog/datadog-serverless-functions/releases

这将允许我手动创建AWS DataDog转发器,而无需使用他们的Cloudformation模板(我们希望控制尽可能多的过程(。

我不完全确定如何为lambda函数提取zip文件以使用

resource "aws_lambda_function" "test_lambda" {
filename      = "lambda_function_payload.zip"
function_name = "datadog-forwarder"
role          = aws_iam_role.datadog_forwarder_role.arn
source_code_hash = filebase64sha256("lambda_function_payload.zip")
runtime = "python3.7"
environment {
variables = {
DD_API_KEY_SECRET_ARN = aws_secretsmanager_secret_version.dd_api_key.arn
#This stops the Forwarder from generating enhanced metrics itself, but it will still forward custom metrics from other lambdas.
DD_ENHANCED_METRICS = false
DD_S3_BUCKET_NAME = aws_s3_bucket.datadog_forwarder.name
}
}
}

我知道source_code_hash文件名会更改,lambda函数的文件名也会更改。如有任何帮助,我们将不胜感激。

没有以terraform从互联网下载文件的内置功能。但通过使用外部数据源,您可以相对容易地做到这一点。为此,您可以创建一个bash脚本,该脚本可以使用curl下载zip、打开它、检查或执行任何需要的处理。源还将返回可用于创建函数的数据。

另一种选择是使用null_resource和本地exec来curl您的zip文件。但CCD_ 4比使用CCD_。

有一种方法可以为AWS Lambda指定zip文件。签出中的示例配置https://github.com/hashicorp/terraform-provider-aws/blob/main/examples/lambda.

它使用archive_file类型的数据源

data "archive_file" "zip" {
type        = "zip"
source_file = "hello_lambda.py"
output_path = "hello_lambda.zip"
}

aws_lambda_function资源设置文件名和source_code_hash:

resource "aws_lambda_function" "lambda" {
function_name = "hello_lambda"
filename         = data.archive_file.zip.output_path
source_code_hash = data.archive_file.zip.output_base64sha256
.....
}

有关完整的详细信息,请参阅示例文件。

Terraform AWS提供商正在调用CreateFunction API(https://docs.aws.amazon.com/lambda/latest/dg/API_CreateFunction.html),它允许您指定一个zip文件。

最新更新