Potrzebuję wysłać moje dzienniki Cloudwatch do usługi analizy logów.Terraform: konfigurowanie dostarczania subskrypcji protokołu chmurowego do lambda?
Mam śledzony wraz z tymi artykułami here i here i dostałem go działa ręcznie, nie martw się.
Teraz staram się zautomatyzować to wszystko za pomocą Terraform (role/polityki, grupy bezpieczeństwa, grupa logów w chmurze, lambda i wyzwalanie lambda z grupy logów).
Ale nie mogę się dowiedzieć, jak użyć TF do skonfigurowania AWS, aby uruchomić lambdę z logów w chmurze.
mogę połączyć dwa zasoby TF wspólnie przez strony w następujący sposób (w konsoli Web UI lambda):
- przejść do sekcji funkcja lambda „wyzwalaczy”
- kliknij „Dodaj progowa”
- wybrać „Raporty cloudwatch” z listy typów wyzwalania
- wybrać grupę dziennika Chcę wywołać lambda
- Wpisz nazwę filtra
- opuścić wzór filtru pusty (sugerując wyzwalania na wszystkich strumieni dziennika)
- upewnić „umożliwić spust” wybiera
- kliknij przycisk Prześlij
Po dokonaniu rejestracji, lambda pokazuje się na dziennikach cloudwatch konsoli w kolumnie subskrypcji - wyświetla jako "Lambda (cloudwatch-sumologic-lambda)".
Próbowałem stworzyć subskrypcję z następującym TF zasobu:
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}"
}
Ale nie jest on z:
* aws_cloudwatch_log_subscription_filter.cloudwatch-sumologic-lambda-subscription: InvalidParameterException: destinationArn for vendor lambda cannot be used with roleArn
znalazłem this answer temat konfigurowania coś podobnego do zaplanowanego zdarzenia, ale to nie wydaje się być równoważne z działaniami konsoli, które opisałem powyżej (metoda konsoli UI nie tworzy zdarzenia/reguły, które widzę).
Czy ktoś może mi wskazać, co robię źle?
Trudno, aby zobaczyć dokładnie, ale wygląda na to, AWS mówi, że rola, którą nadałeś PutSubscriptionFilter, nie ma dostępu do Lambdy. Czy możesz również opublikować definicję zasobu 'aws_iam_role.jordi-waf-cloudwatch-lambda-role.arn'? – ydaetskcoR