AWS - Настройка лямбда-адресатов с SNS - PullRequest
1 голос
/ 26 марта 2020

Я пытаюсь настроить AWS лямбда-функцию для передачи своего вывода в уведомление SNS, но, похоже, она не работает. Функция успешно выполняется в консоли Lambda, и я вижу, что вывод верен, но SNS, похоже, никогда не получает уведомления или что-либо публикует. Я работаю с Terraform, чтобы поддержать мою инфраструктуру, вот код Terraform, который я использую, может быть, кто-то может мне помочь:

resource "aws_lambda_function" "lambda_apigateway_to_sns_function" {
  filename = "../node/lambda.zip"
  function_name = "LambdaPublishToSns"
  handler = "index.snsHandler"
  role = aws_iam_role.lambda_apigateway_to_sns_execution_role.arn
  runtime = "nodejs12.x"
}

resource "aws_iam_role" "lambda_apigateway_to_sns_execution_role" {
  assume_role_policy = <<POLICY
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": "sts:AssumeRole",
      "Principal": {
        "Service": "lambda.amazonaws.com"
      },
      "Effect": "Allow"
    }
  ]
}
POLICY
}

resource "aws_iam_role_policy_attachment" "apigateway_to_sns_sns_full_access" {
  policy_arn = "arn:aws:iam::aws:policy/AmazonSNSFullAccess"
  role = aws_iam_role.lambda_apigateway_to_sns_execution_role.name
}

resource "aws_lambda_function_event_invoke_config" "example" {
  function_name = aws_lambda_function.lambda_apigateway_to_sns_function.arn

  destination_config {
    on_success {
      destination = aws_sns_topic.sns_topic.arn
    }

    on_failure {
      destination = aws_sns_topic.sns_topic.arn
    }
  }
}

А вот мой код функции Lambda (в NodeJS) :

exports.snsHandler = (event, context, callback) => {
    context.callbackWaitsForEmptyEventLoop = false;
    callback(null, {
        statusCode: 200,
        body: event.body + " apigateway"
    );
}

(функция должна принимать входные данные от API-шлюза, и все, что находится в теле запроса API-шлюза, просто добавить «apigateway» в конец его и передать сообщение; Я проверил интеграцию с API Gateway, и эта интеграция работает отлично)

Спасибо!

...