Cuando intento crear un recurso de AWS o activar Registros de Amazon CloudWatch para un servicio de AWS, se muestra el error "Unable to enable logging. Policy document length breaking CloudWatch Logs Constraints."
Descripción corta
Las políticas de recursos de Amazon CloudWatch tienen un tamaño máximo de 51 200 bytes. Cuando la política alcance esta cuota, recibirás un error. Puedes revisar los detalles del error en el historial de eventos de AWS CloudTrail.
Resolución
Para comprobar las políticas de recursos actuales y modificarlas, sigue estos pasos:
-
Ejecuta el siguiente comando describe-resource-policies para comprobar las políticas de recursos actuales:
aws logs describe-resource-policies --region REGION-NAME > resource.json
Nota: Sustituye REGION-NAME por tu región de AWS. Si se muestran errores al ejecutar comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), consulta Solución de errores de AWS CLI. Además, asegúrate de utilizar la versión más reciente de AWS CLI. Solo puedes usar AWS CLI para comprobar las políticas de recursos de CloudWatch.
-
Guarda el resultado en un archivo JSON denominado resource.json.
-
Copia la política AWSLogDeliveryWrite20150319 de resource.json y, a continuación, pégala en un editor de texto.
-
Para reducir la cantidad de caracteres de la política, haz lo siguiente:
Elimina las entradas que no utilices, como los recursos y las secuencias de registro.
Sustituye los nombres de recursos de Amazon (ARN) de los recursos por el carácter comodín *.
Adjunta una nueva política de recursos que tenga los permisos necesarios.
Ejemplo de política de recursos:
{
"Version": "2012-10-17",
"Statement": [
{ "Sid": "AWSLogDeliveryWrite",
"Effect": "Allow",
"Principal": {
"Service": "delivery.logs.amazonaws.com"
},
"Action": [
"logs:CreateLogStream", "logs:PutLogEvents"
],
"Resource":
[ "arn:aws:logs:us-east-1:869614222995:log-group:aws-waf-logs-albwafs:log-stream:xyz",
"arn:aws:logs:us-east-1:869614222995:log-group:aws-s3:log-stream:abc"
],
"Condition":
{ "StringEquals":
{ "aws:SourceAccount": "869614222995" },
"ArnLike": { "aws:SourceArn": "arn:aws:logs:us-east-1:869614222995:*"
}
}
}
]
}
Nota: El ejemplo muestra una política con dos recursos. Cuando la política de recursos alcanza la cuota de 51 200 bytes, AWS no puede agregar nuevos permisos automáticamente. Debes modificar manualmente la política para conceder a delivery.logs.amazonaws.com los permisos de la entidad principal del servicio en las acciones logs:CreateLogStream y logs:PutLogEvents. Para mantenerte dentro de la cuota, utiliza un prefijo de nombre de grupo de registro con caracteres comodín, como /aws/vendedlogs/* para la creación futura de grupos de registros. Si quieres usar nombres de grupos de registro personalizados, edita la política para incluir los nombres de tus recursos específicos y confirma que la política se mantiene dentro de la cuota de 51 200 bytes.
-
Ejecuta el siguiente comando put-resource-policy para reemplazar la política de recursos AWSLogDeliveryWrite20150319 por la versión editada en resource.json:
aws logs put-resource-policy --policy-document file://resource.json --policy-name AWSLogDeliveryWrite20150319
Nota: Sustituye policy-name por el nombre de la política de recursos que deseas reemplazar.
Al agregar la nueva política de recursos, es posible que se muestre el siguiente mensaje de error relacionado con las cuotas de CloudWatch:
"Error: creating CloudWatch Logs Resource Policy (name): operation error CloudWatch Logs: PutResourcePolicy, exceeded maximum number of attempts, https response error StatusCode: 400, RequestID: 3d123ce1-f123-4d12-12b8-abc1234ba1a9, LimitExceededException: Resource limit exceeded."
CloudWatch permite un máximo de 10 políticas de recursos de registros de CloudWatch en tu cuenta de AWS para cada región. No puedes modificar esta cuota.
Para eliminar una política existente que no usas, ejecuta el siguiente comando delete-resource-policy:
aws logs delete-resource-policy --policy-name POLICY-NAME
Nota: Sustituye POLICY-NAME por el nombre de la política de recursos que deseas eliminar.
Cuando tengas menos de 10 políticas de recursos en tu región, ejecuta el comando put-resource-policy para crear una nueva política de recursos.
Información relacionada
Visualización de eventos de administración recientes con la consola
Activación de los registros desde los servicios de AWS