Passer au contenu

Comment puis-je résoudre les problèmes liés à l'échec d'une tâche d'exportation dans CloudWatch Logs ?

Lecture de 6 minute(s)
0

Je souhaite résoudre les problèmes liés à l'échec d'une tâche d'exportation dans Amazon CloudWatch Logs.

Brève description

Vous pouvez configurer une tâche d'exportation pour un compartiment Amazon Simple Storage Service (Amazon S3) au sein du même compte ou d'un compte différent. Si le compartiment Amazon S3 de destination ne dispose pas des autorisations nécessaires, les erreurs suivantes peuvent apparaître :

  • Impossible de créer une tâche d'exportation. L'appel GetBucketACL sur le compartiment donné a échoué. Vérifiez si CloudWatch Logs est autorisé à effectuer cette opération.
  • Impossible de créer une tâche d'exportation. L'appel PutObject sur le compartiment donné a échoué. Vérifiez si CloudWatch Logs est autorisé à effectuer cette opération.
  • Impossible de créer une tâche d'exportation. Limite de ressources dépassée.
  • L'appel PutObject sur le compartiment donné a échoué. Vérifiez si CloudWatch Logs est autorisé à effectuer cette opération. Cela peut être dû à une mauvaise configuration du chiffrement d'une clé KMS ou d'un compartiment.
  • L'appel GetBucketACL sur le compartiment donné a échoué. Vérifiez si le compartiment Amazon S3 spécifié se trouve dans la même région AWS que CloudWatch Logs.

Résolution

Pour résoudre les problèmes liés à l'échec d'une tâche d'exportation dans CloudWatch Logs, procédez comme suit :

Accorder des autorisations pour la tâche d'exportation

Pour accorder les autorisations nécessaires à la tâche d'exportation, utilisez les autorisations suivantes pour vos utilisateurs, groupes ou rôles :

{
  "Version": "2012-10-17",
  "Statement": [
      {
      "Effect": "Allow",
      "Action": "s3:PutObject",
      "Resource": "arn:aws:s3:::my-exported-logs/*"
    },
    {
      "Effect": "Allow",
      "Action": [
      "kms:GenerateDataKey",
      "kms:Decrypt"
       ],
    "Resource": "ARN_OF_KMS_KEY"
    }
  ]
}

Pour exécuter la tâche d'exportation, assurez-vous d'authentifier le rôle AWS Identity and Access Management (IAM) AmazonS3ReadOnlyAccess avec les autorisations suivantes :

  • logs:CreateExportTask
  • logs:CancelExportTask
  • logs:DescribeExportTasks
  • logs:DescribeLogStreams
  • logs:DescribeLogGroups

Accorder des autorisations sur le compartiment Amazon S3 de destination

Par défaut, tous les compartiments et objets Amazon S3 sont privés. Seul le propriétaire de la ressource ou le compte AWS qui a créé le compartiment peut accéder au compartiment et aux objets qu'il contient. Si nécessaire, le propriétaire de la ressource peut rédiger une stratégie d'accès pour accorder des autorisations d'accès à d'autres ressources et utilisateurs.

Remarque : Lorsque vous définissez une stratégie, il est recommandé d'inclure une chaîne générée de manière aléatoire comme préfixe du compartiment. Cela permet d'exporter uniquement les flux de journaux prévus vers le compartiment.

Pour accorder des autorisations sur le compartiment Amazon S3 de destination, procédez comme suit :

  1. Ouvrez la console Amazon S3 et choisissez le compartiment vers lequel vous souhaitez exporter les journaux.

  2. Sélectionnez Autorisations, puis Stratégie de compartiment.

  3. Dans l'Éditeur de stratégie de compartiment, ajoutez la stratégie suivante :

    Remarque : Remplacez example-s3-bucket par le nom de votre compartiment Amazon S3. Remplacez également example-region par le point de terminaison AWS Region requis pour le paramètre Principal.

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Action": "s3:GetBucketAcl",
          "Effect": "Allow",
          "Resource": "arn:aws:s3:::exammple-s3-bucket",
          "Principal": {
            "Service": "logs.example-region.amazonaws.com"
          },
          "Condition": {
            "StringEquals": {
              "aws:SourceAccount": [
                "AccountId1",
                "AccountId2",
                ...
              ]
            },
            "ArnLike": {
              "aws:SourceArn": [
                "arn:aws:logs:Region:AccountId1:log-group:",
                "arn:aws:logs:Region:AccountId2:log-group:",
                ...
              ]
            }
          }
        },
        {
          "Action": "s3:PutObject",
          "Effect": "Allow",
          "Resource": "arn:aws:s3:::example-s3-bucket/",
          "Principal": {
            "Service": "logs.example-region.amazonaws.com"
          },
          "Condition": {
            "StringEquals": {
              "s3:x-amz-acl": "bucket-owner-full-control",
              "aws:SourceAccount": [
                "AccountId1",
                "AccountId2",
                ...
              ]
            },
            "ArnLike": {
              "aws:SourceArn": [
                "arn:aws:logs:Region:AccountId1:log-group:",
                "arn:aws:logs:Region:AccountId2:log-group:",
                ...
              ]
            }
          }
        },
        {
          "Effect": "Allow",
          "Principal": {
            "AWS": "arn:aws:iam::create_export_task_caller_account:role/role_name"
          },
          "Action": "s3:PutObject",
          "Resource": "arn:aws:s3:::example-s3-bucket/",
          "Condition": {
            "StringEquals": {
              "s3:x-amz-acl": "bucket-owner-full-control"
            }
          }
        }
      ]
    }
  4. Sélectionnez Enregistrer. La stratégie précédente est définie comme stratégie d'accès sur votre compartiment Amazon S3. Cette stratégie permet à CloudWatch Logs d'exporter les données des journaux vers votre compartiment Amazon S3 et le propriétaire du compartiment dispose des autorisations complètes sur tous les objets exportés.

Exporter une tâche vers un compartiment chiffré avec SSE-KMS

  1. Ouvrez la console AWS Key Management Service (AWS KMS). Pour modifier la région AWS, utilisez le sélecteur Région situé dans l’angle coin supérieur droit de la page.
  2. Dans la barre de navigation de gauche, sélectionnez Clés gérées par le client, sélectionnez Créer une clé, puis procédez comme suit :
    Pour Type de clé, sélectionnez Symétrique.
    Pour Utilisation de la clé, sélectionnez Chiffrer et déchiffrer.
    Sélectionnez Suivant.
  3. Dans Ajouter des étiquettes, saisissez un alias pour la clé. Vous pouvez éventuellement ajouter une description ou des balises. Puis, sélectionnez Suivant.
  4. Sous Administrateurs de clé, sélectionnez qui peut administrer cette clé, puis sélectionnez Suivant.
  5. Sous Définir les autorisations d'utilisation de clé, n'apportez aucune modification, puis sélectionnez ** Suivant**.
  6. Vérifiez les paramètres, puis sélectionnez Terminer.
  7. Accédez à la page Clés gérées par le client, puis choisissez le nom de la clé que vous venez de créer.
  8. Cliquez sur l'onglet Stratégie de clé, puis sélectionnez Passer à la vue de stratégie.
  9. Dans la section Stratégie de clé, sélectionnez Modifier.
  10. Ajoutez l’instruction suivante à la liste des instructions de stratégie de clé :

Remarque : Remplacez example-region par la région de vos journaux. Remplacez example-account-arn par l'ARN du compte qui détient la clé AWS KMS.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Allow CWL Service Principal usage",
      "Effect": "Allow",
      "Principal": {
        "Service": "logs.example-region.amazonaws.com"
      },
      "Action": [
        "kms:GenerateDataKey",
        "kms:Decrypt"
      ],
      "Resource": ""
    },
    {
      "Sid": "Enable IAM User Permissions",
      "Effect": "Allow",
      "Principal": {
        "AWS": "example-account-arn"
      },
      "Action": [
        "kms:GetKeyPolicy",
        "kms:PutKeyPolicy",
        "kms:DescribeKey",
        "kms:CreateAlias",
        "kms:ScheduleKeyDeletion",
        "kms:Decrypt"
      ],
      "Resource": "*"
    },
    {
      "Sid": "Enable IAM Role Permissions",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::create_export_task_caller_account:role/role_name"
      },
      "Action": [
        "kms:GenerateDataKey",
        "kms:Decrypt"
      ],
      "Resource": "ARN_OF_KMS_KEY"
    }
  ]
}
  1. Sélectionnez Enregistrer les modifications.
  2. Ouvrez la console Amazon S3.
  3. Choisissez le compartiment vers lequel vous souhaitez exporter CloudWatch Logs.
  4. Choisissez l’onglet Propriétés. Puis, sous Chiffrement par défaut, sélectionnez Modifier.
  5. Sous Chiffrement côté serveur, sélectionnez Activer.
  6. Dans Type de chiffrement, choisissez la clé AWS Key Management Service (SSE-KMS).
  7. Sélectionnez Choisir parmi vos clés AWS KMS et recherchez la clé que vous avez créée.
  8. Pour Clé de compartiment, sélectionnez Activer.
  9. Sélectionnez Enregistrer les modifications.

Informations connexes

Exporter les données du journal vers Amazon S3 à l'aide de la console

AWS OFFICIELA mis à jour il y a 2 ans