我需要将我的CloudWatch日志发送到日志分析服务。Terraform:将cloudwatch日志预订配置配置到lambda?
我和这些文章here和here跟着一起,并得到它的手工工作,无后顾之忧。
现在我试图通过Terraform(角色/策略,安全组,cloudwatch日志组,lambda以及从日志组中触发lambda)自动执行所有这些操作。
但我无法弄清楚如何使用TF来配置AWS从cloudwatch日志中触发lambda。
我可以在这两个TF资源一起用手工通过执行以下(在lambda Web控制台UI)链接:
- 进入lambda函数的“触发器”部分
- 点击“添加触发器”
- 从触发类型列表中选择“CloudWatch的日志”
- 选择日志组我想要触发拉姆达
- 输入过滤器名称
- 离开(对所有日志流暗示触发)过滤模式空
- 确保“启用触发器”时
- 点击提交按钮
一旦这样做了,拉姆达显示了对CloudWatch的日志控制台 - 显示为“Lambda(cloudwatch-sumologic-lambda)”。
我试着用下面的TF资源创建订阅:
resource "aws_cloudwatch_log_subscription_filter" "cloudwatch-sumologic-lambda-subscription" {
name = "cloudwatch-sumologic-lambda-subscription"
role_arn = "${aws_iam_role.jordi-waf-cloudwatch-lambda-role.arn}"
log_group_name = "${aws_cloudwatch_log_group.jordi-waf-int-app-loggroup.name}"
filter_pattern = "logtype test"
destination_arn = "${aws_lambda_function.cloudwatch-sumologic-lambda.arn}"
}
但它失败:
* aws_cloudwatch_log_subscription_filter.cloudwatch-sumologic-lambda-subscription: InvalidParameterException: destinationArn for vendor lambda cannot be used with roleArn
我发现this answer有关建立类似的事情,为计划事件,但这似乎并不等同于我上面描述的控制台操作(控制台UI方法不会创建我可以看到的事件/规则)。
有人可以给我一个指针,我在做什么错吗?
很难清楚地看到,但它看起来像AWS是说,您赋予PutSubscriptionFilter的角色无法访问Lambda。你还可以发布'aws_iam_role.jordi-waf-cloudwatch-lambda-role.arn'资源的定义吗? – ydaetskcoR