github.com/winebarrel/terraform-provider-lambdazip@v0.6.1-0.20240313233639-361839f8c5c5/examples/provider/provider.tf (about)

     1  terraform {
     2    required_providers {
     3      lambdazip = {
     4        source  = "winebarrel/lambdazip"
     5        version = ">= 0.5.0"
     6      }
     7    }
     8  }
     9  
    10  resource "lambdazip_file" "app" {
    11    base_dir      = "lambda"
    12    sources       = ["**"]
    13    excludes      = [".env"]
    14    output        = "lambda.zip"
    15    before_create = "npm i"
    16  
    17    triggers = {
    18      for i in [
    19        "lambda/index.js",
    20        "lambda/package.json",
    21        "lambda/package-lock.json",
    22      ] : i => filesha256(i)
    23    }
    24  }
    25  
    26  resource "aws_lambda_function" "app" {
    27    filename         = lambdazip_file.app.output
    28    function_name    = "my_func"
    29    role             = aws_iam_role.lambda_app_role.arn
    30    handler          = "index.handler"
    31    source_code_hash = lambdazip_file.app.base64sha256
    32    runtime          = "nodejs20.x"
    33  }
    34  
    35  resource "aws_iam_role" "lambda_app_role" {
    36    name = "lambda-app-role"
    37  
    38    assume_role_policy = jsonencode({
    39      Version = "2012-10-17"
    40      Statement = [
    41        {
    42          Effect = "Allow"
    43          Principal = {
    44            Service = "lambda.amazonaws.com"
    45          }
    46          Action = "sts:AssumeRole"
    47        }
    48      ]
    49    })
    50  }
    51  
    52  resource "aws_iam_role_policy_attachment" "lambda_app_role" {
    53    role       = aws_iam_role.lambda_app_role.name
    54    policy_arn = "arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"
    55  }