Skip to content

rpstreef/tf-lambda

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Terraform AWS Lambda module

About:

Setup of a Lambda function with CloudWatch Alarms.

The following boolean variables control which alarms will be enabled;

  • create_errorRate_alarm: Alarms on errors with a default of threshold of 1 percent during a 5 minute measurement period
  • create_throttleCount_alarm: Alarm on throttle count of 1 within 1 minute measurement period
  • create_iteratorAge_alarm: Alarm for Stream based invocations such as Kinesis, alerts you when the time to execute is over 1 minute within a 5 minute measurement period
    • More on the iteratorAge metric here
  • create_deadLetterQueue_alarm: Alarm for DLQueue messages (for async Lambda invocations or SQS queues for example), 1 message within 1 minute triggers the alarm.

This AWS Lambda module can integrate with the following:

  • API Gateway: The parameter create_api_gateway_integration is set to true by default, supply the api_gateway_rest_api_id
  • SNS Topic: The parameter create_sns_topic_subscription is set to false by default.
  • SQS: The parameter create_sqs_integration is set to false by default. This can create an event source mapping to an SQS queue.

How to use:

Use the code below in combination with the tf-iam module (module.iam.role_arn) to set the correct IAM policies.

module "lambda" {
  source = "github.com/rpstreef/tf-lambda?ref=v1.0"

  namespace         = var.namespace
  region            = var.region
  resource_tag_name = var.resource_tag_name

  lambda_function_name = local.lambda_function_name
  lambda_role_arn      = module.iam.role_arn
  lambda_layer_arn     = var.lambda_layer_arn

  lambda_memory_size = var.lambda_memory_size
  lambda_timeout     = var.lambda_timeout

  lambda_environment_variables = {
    NAMESPACE = var.namespace
    REGION    = var.region

    COGNITO_USER_POOL_CLIENT_ID = var.cognito_user_pool_client_id
    COGNITO_USER_POOL_ID        = var.cognito_user_pool_id

    DEBUG_SAMPLE_RATE = var.debug_sample_rate
  }

  create_deadLetterQueue_alarm = false
  create_iteratorAge_alarm     = false

  api_gateway_rest_api_id = var.api_gateway_rest_api_id
}

Changelog

v1.3

  • Removed lambda_filename variable, use CI/CD instead to deploy Lambda code

v1.2

  • Added SQS event source integration

v1.1

  • Added SNS Topic subscription sub-module

v1.0

  • Initial release