sam 元数据资源 - AWS Serverless Application Model

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

sam 元数据资源

本页包含与使用的sam metadata resource资源类型的参考信息 Terraform 项目。

参数

参数 描述
built_output_path AWS Lambda 函数生成工件的路径。
docker_build_args Docker 构建参数JSON对象的解码字符串。此参数是可选的。
docker_context 包含 Docker 映像构建上下文的目录的路径。
docker_file

Docker 文件的路径。路径相对于 docker_context 路径。

此参数是可选的。默认值为 Dockerfile

docker_tag 创建的 Docker 映像标签的值。该值为可选项。
depends_on 您的 Lambda 函数或层的构建资源的路径。要了解更多信息,请参阅中的depends_on论点 Terraform 注册表
original_source_code

您的 Lambda 函数的定义路径。此值可以是字符串、字符串数组或解码后的字符串JSON对象。

  • 对于字符串数组,由于不支持多个代码路径,因此仅使用第一个值。

  • 对于JSON对象,还source_code_property必须定义。

resource_name Lambda 函数名称。
resource_type

您的 Lambda 函数包类型的格式。接受的值为:

  • IMAGE_LAMBDA_FUNCTION

  • LAMBDA_LAYER

  • ZIP_LAMBDA_FUNCTION

source_code_property 对象中 Lambda 资源代码的JSON路径。当original_source_code是JSON对象时定义此属性。

示例

sam 元数据资源使用ZIP包类型引用 Lambda 函数

# Lambda function resource resource "aws_lambda_function" "tf_lambda_func" { filename = "${path.module}/python/hello-world.zip" handler = "index.lambda_handler" runtime = "python3.8" function_name = "function_example" role = aws_iam_role.iam_for_lambda.arn depends_on = [ null_resource.build_lambda_function # function build logic ] } # sam metadata resource resource "null_resource" "sam_metadata_function_example" { triggers = { resource_name = "aws_lambda_function.function_example" resource_type = "ZIP_LAMBDA_FUNCTION" original_source_code = "${path.module}/python" built_output_path = "${path.module}/building/function_example" } depends_on = [ null_resource.build_lambda_function # function build logic ] }

使用映像包类型引用 Lambda 函数的 sam 元数据资源

resource "null_resource" "sam_metadata_function { triggers = { resource_name = "aws_lambda_function.image_function" resource_type = "IMAGE_LAMBDA_FUNCTION" docker_context = local.lambda_src_path docker_file = "Dockerfile" docker_build_args = jsonencode(var.build_args) docker_tag = "latest" } }

引用 Lambda 层的 sam 元数据资源

resource "null_resource" "sam_metadata_layer1" { triggers = { resource_name = "aws_lambda_layer_version.layer" resource_type = "LAMBDA_LAYER" original_source_code = local.layer_src built_output_path = "${path.module}/${layer_build_path}" } depends_on = [null_resource.layer_build] }