Lorsque j'essaie de créer une ressource AWS, le message d'erreur d’Amazon CloudWatch Logs « Unable to enable logging. Policy document length breaking Cloudwatch Logs Constraints. » s’affiche.
Brève description
Lorsque vous activez CloudWatch Logs pour vos services AWS ou que vous créez une nouvelle ressource AWS, le message d'erreur suivant peut s'afficher :
« Unable to enable logging. Policy document length breaking CloudWatch Logs Constraints »
Les politiques de ressources de CloudWatch ont une longueur de caractères maximale autorisée de 5 120 caractères. Lorsque votre politique comporte plus de 5 120 caractères, l'erreur précédente s'affiche. Vous pouvez consulter les détails de l'erreur dans l'historique des événements AWS CloudTrail.
Résolution
Remarque : 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ésoudre des erreurs liées à l’AWS CLI. Vérifiez également que vous utilisez bien la version la plus récente de l'interface.
Vous pouvez utiliser uniquement l'interface de ligne de commande AWS pour vérifier les politiques de ressources de CloudWatch.
Pour vérifier vos politiques de ressources actuelles et les modifier, procédez comme suit :
-
Exécutez la commande describe-resource-policies de l’AWS CLI pour vérifier vos politiques de ressources CloudWatch actuelles :
aws logs describe-resource-policies --REGION-NAME > resource.json
Remarque : Remplacez REGION-NAME par votre région AWS.
-
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-resource-policy de l’AWS CLI 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. »
Vous pouvez avoir 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 résoudre ce problème, exécutez la commande delete-resource-policy de l’AWS CLI pour supprimer une politique existante :
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 votre région compte moins de 10 politiques de ressources, vous pouvez créer une nouvelle politique de ressources.
Informations connexes
Affichage des événements de gestion récents à l'aide de la console
Quotas CloudWatch Logs
Activer la journalisation à partir des services AWS