我需要將我的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