Я пытаюсь определить метрический фильтр в шаблоне AWS CloudFormation для сопоставления событий журнала в формате JSON из CloudWatch.
Вот пример события журнала:
{
"httpMethod": "GET",
"resourcePath": "/deployment",
"status": "403",
"protocol": "HTTP/1.1",
"responseLength": "42"
}
Вот моя текущая попытка создать MetricFilter для соответствия полю состояния, используя примеры, приведенные в документации здесь: FilterAndPatternSyntax
"DeploymentApiGatewayMetricFilter": {
"Type": "AWS::Logs::MetricFilter",
"Properties": {
"LogGroupName": "/aws/apigateway/DeploymentApiGatewayLogGroup",
"FilterPattern": "{ $.status = \"403\" }",
"MetricTransformations": [
{
"MetricValue": "1",
"MetricNamespace": "ApiGateway",
"DefaultValue": 0,
"MetricName": "DeploymentApiGatewayUnauthorized"
}
]
}
}
Я получаю сообщение «Неверный шаблон фильтра метрик» в CloudFormation.
Другие варианты, которые я пробовал, не работали:
"{ $.status = 403 }" <- no escaped characters
{ $.status = 403 } <- using a json object instead of string
Мне удалось успешно отфильтровать события журнала, разделенные пробелом, используя обозначение в скобках, определенное аналогичным образом, но события журнала в формате json не соответствуют тому же соглашению.