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 JSON 物件中 Lambda 資源程式碼的路徑。當 original_source_code 是 JSON 物件時,定義此屬性。

範例

使用ZIP套件類型參考 Lambda 函數的 sam 中繼資料資源

# 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] }