Lorsque j'essaie de créer une ressource AWS ou d'activer Amazon CloudWatch Logs pour un service AWS, le message d'erreur « Unable to enable logging. Policy document length breaking Cloudwatch Logs Constraints. » s’affiche.
Brève description
Les politiques de ressources d’Amazon CloudWatch ont une longueur de caractères maximale autorisée de 5 120 caractères. Lorsque votre politique dépasse 5 120 caractères, vous recevez un message d'erreur. Vous pouvez consulter les détails de l'erreur dans l'historique des événements AWS CloudTrail.
Résolution
Pour vérifier vos politiques de ressources actuelles et les modifier, procédez comme suit :
-
Exécutez la commande describe-resource-policies suivante pour vérifier vos politiques de ressources actuelles :
aws logs describe-resource-policies --region REGION-NAME > resource.json
Remarque : remplacez REGION-NAME par votre région AWS. Si des erreurs surviennent lorsque vous exécutez des commandes de l'interface de la ligne de commande AWS (AWS CLI), consultez la section Résolution des erreurs liées à l’AWS CLI. Vérifiez également que vous utilisez bien la version la plus récente de l'AWS CLI. Vous pouvez utiliser uniquement l'interface de ligne de commande AWS pour vérifier les politiques de ressources de CloudWatch.
-
Enregistrez la sortie dans un fichier JSON nommé resource.json.
-
Copiez la politique AWSLogDeliveryWrite20150319 à partir de resource.json, puis collez-la dans un éditeur de texte.
-
Pour réduire le nombre de caractères de votre politique, procédez comme suit :
Supprimez les entrées que vous n'utilisez pas, telles que les ressources et les flux de journaux.
Remplacez les Amazon Resource Names (ARN) de la ressource par le caractère générique *.
Associez une nouvelle politique de ressources dotée des autorisations requises.
Exemple de politique de ressources :
{
"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:*"
}
}
}
]
}
Remarque : l'exemple illustre une politique comptant deux ressources. Lorsque la politique de ressources dépasse la limite de 5 120 caractères, CloudWatch ajoute automatiquement l'entrée /aws/vendedlogs/* à la politique. Puis, vous devez créer de nouveaux groupes de journaux avec le préfixe /aws/vendedlogs/. Si vous souhaitez utiliser des noms de groupes de journaux personnalisés, modifiez la politique pour inclure vos noms de ressources spécifiques. Veillez à respecter la limite de caractères.
-
Exécutez la commande put-ressource-policy suivante pour remplacer la politique de ressources AWSLogDeliveryWrite20150319 par votre version modifiée dans resource.json :
aws logs put-resource-policy --policy-document file://resource.json --policy-name AWSLogDeliveryWrite20150319
Remarque : remplacez policy-name par le nom de la politique de ressources que vous souhaitez remplacer.
Lorsque vous ajoutez la nouvelle politique de ressources, le message d'erreur suivant peut s'afficher en lien avec les quotas 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 autorise un maximum de 10 politiques de ressources CloudWatch Logs dans votre compte AWS pour chaque région. Vous ne pouvez pas modifier ce quota.
Pour supprimer une politique existante que vous n'utilisez pas, exécutez la commande delete-resource-policy suivante :
aws logs delete-resource-policy --policy-name POLICY-NAME
Remarque : remplacez POLICY-NAME par le nom de la politique de ressources que vous souhaitez supprimer.
Lorsque vous avez moins de 10 politiques de ressources dans votre région, exécutez la commande put-resource-policy pour créer une nouvelle politique de ressources.
Informations connexes
Affichage des événements de gestion récents à l'aide de la console
Activer la journalisation à partir des services AWS