AWS Lambda 未向 AWS SQS DLQ 发送错误消息

问题描述 投票:0回答:4

我正在尝试通过 terraform 创建一个由 Kinesis 触发的 lambda,失败时她的目的地将是 AWS SQS。

我创建了 lambda 并配置了源和目标

当我向 Kinesis 队列发送消息时,会触发 lambda,但不会向 DLQ 发送消息。

我错过了什么?

我的labmda源映射:

resource "aws_lambda_event_source_mapping" "csp_management_service_integration_stream_mapping" {
  event_source_arn               = local.kinesis_csp_management_service_integration_stream_arn
  function_name                  = module.csp_management_service_integration_lambda.lambda_arn
  batch_size                     = var.shared_kinesis_configuration.batch_size
  bisect_batch_on_function_error = var.shared_kinesis_configuration.bisect_batch_on_function_error
  starting_position              = var.shared_kinesis_configuration.starting_position
  maximum_retry_attempts         = var.shared_kinesis_configuration.maximum_retry_attempts
  maximum_record_age_in_seconds  = var.shared_kinesis_configuration.maximum_record_age_in_seconds
  function_response_types        = var.shared_kinesis_configuration.function_response_types
  destination_config {
    on_failure {
      destination_arn = local.shared_default_sqs_error_handling_dlq_arn
    }
  }
}
resource "aws_iam_policy" "shared_deadletter_sqs_queue_policy" {
  name = "shared-deadletter-sqs-queue-policy"
  path = "/"
  policy = jsonencode({
    Version = "2012-10-17"
    Statement = [
      {
        Action   = [
          "sqs:SendMessage",
        ]
        Effect   = "Allow"
        Resource = [
          local.shared_default_sqs_error_handling_dlq_arn
        ]
      },
    ]
  })
}
amazon-web-services amazon-sqs terraform-provider-aws amazon-kinesis
4个回答
2
投票

我认为您面临一些权限问题,请尝试将角色附加到您的 lambda 函数以访问 AWS SQS DLQ。


1
投票

您应该查看以下指标,看看您是否有权限错误


0
投票
  1. 您的DLQ是否经过KMS加密?除了 SQS 权限之外,您还需要向 KMS 提供权限

  2. Lambda 如何报告失败?


0
投票

您成功解决问题了吗?我也面临着类似的情况。

© www.soinside.com 2019 - 2024. All rights reserved.