首页 > 解决方案 > AWS Lambda destination Lambda not triggering

问题描述

Background:

I'm developing a custom AWS github-webhook via Terraform. I'm using AWS API Gateway to trigger an AWS Lambda function that validates the GitHub webhook's sha256 signature from the request header. If the lambda function successfully validates the request, I want a child lambda function to be invoked via the async invocation destination feature provided by Lambda.

Problem:

Even though I've configured the async invocation with the target child Lambda function, the child function is not triggered when the parent Lambda function is successful. This is reflected in the fact that the child Lambda function's associated CloudWatch log group is empty.

Relevant Code:

Here's the Terraform configuration for the Lambda function destination:

resource "aws_lambda_function_event_invoke_config" "lambda" {
  function_name = module.github_webhook.function_name
  destination_config {
    on_success {
      destination = module.lambda.function_arn
    }
  }
}

If more code from the module is needed, feel free to ask in the comments. The entire source code for this module is here: https://github.com/marshall7m/terraform-aws-codebuild/tree/master/modules/dynamic-github-source

Attempts:

标签: amazon-web-servicesaws-lambdaamazon-cloudwatch

解决方案


From your description it seems to me that you are invoking parent function synchronously. Lambda destinations are only for asynchronous invocations:

You can also configure Lambda to send an invocation record to another service. Lambda supports the following destinations for asynchronous invocation

So you have to execute your parent function asynchronously for your child function to be invoked.


推荐阅读