sam 元数据资源 - Amazon Serverless Application Model
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

sam 元数据资源

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

参数

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

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

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

docker_tag 创建的 Docker 映像标签的值。该值为可选项。
depends_on 您的 Lambda 函数或层的构建资源的路径。要了解更多信息,请参阅 Terraform 注册表中的depends_on 参数
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] }