【问题标题】:ERROR aws_cloudwatch_log_subscription_filter to AWS Lambda with Terraform错误 aws_cloudwatch_log_subscription_filter 到 AWS Lambda 与 Terraform
【发布时间】:2020-02-13 04:07:32
【问题描述】:

我正在尝试使用 Terraform 将 CloudWatchLogs 日志组订阅到 AWS Lambda,但它给了我一个错误。

我的代码是:

resource "aws_cloudwatch_log_subscription_filter" "test_lambdafunction_logfilter" {
  name            = "test_lambdafunction_logfilter"
  role_arn        = "arn:aws:iam::XXXXXXXXXXXX:role/dx-dev-rol-datadog-log-forwarder-function"
  log_group_name  = "dx-dev-lg-destination-content-full"
  filter_pattern  = "logtype test"
  destination_arn = "arn:aws:iam::XXXXXXXXXXXX:lambda/dx-dev-lmbd-datadog-log-forwarder-function-01"
  distribution    = "Random"
}

错误:创建 Cloudwatch 日志订阅过滤器时出错:
InvalidParameterException:PutSubscriptionFilter 操作无法与供应商 iam 的 destinationArn 一起使用
状态码:400,请求ID:19836154-97e4-48f0-89b5-692f44ab1764

【问题讨论】:

  • distribution 参数仅用于将日志发送到 Kinesis 流。
  • 您好,我更改了这个参数,但错误仍然存​​在。

标签: amazon-web-services terraform terraform-provider-aws


【解决方案1】:

Terraform docs 声明 role_arn 和分布参数只能与 Kinesis 流目标一起使用。 错误消息只是说明了当目标是 Lambda 时您不能使用 IAM 角色参数这一事实。

role_arn - (可选)如果您使用 Lambda 作为目标,您应该跳过此参数 并使用 aws_lambda_permission 资源从CloudWatch 将日志记录到目标 Lambda 函数。

distribution - (可选)此属性仅在目标为 Amazon Kinesis 流时适用。

【讨论】:

    【解决方案2】:

    最后插入和删除role_arn参数已经奏效了:

    resource "aws_cloudwatch_log_subscription_filter" "dx-dev-lg-destination-content-full" {
      name            = "dx-dev-lg-destination-content-full"
      #role_arn        = "arn:aws:iam:eu-central-1:442793498433:role/dx-dev-rol-datadog-log-forwarder-function"
      log_group_name  = "dx-dev-lg-destination-content-full"
      filter_pattern  = ""
      destination_arn = "arn:aws:lambda:eu-central-1:442793498433:function:dx-dev-lmbd-datadog-log-forwarder-function-01"
    }
    

    【讨论】:

      猜你喜欢
      • 2020-06-12
      • 2022-01-10
      • 1970-01-01
      • 2017-02-11
      • 2021-05-15
      • 2019-02-26
      • 1970-01-01
      • 2021-11-20
      • 2019-05-03
      相关资源
      最近更新 更多