View a markdown version of this page

Exportez les données du journal vers Amazon S3 à l'aide du AWS CLI - CloudWatch Journaux Amazon

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Exportez les données du journal vers Amazon S3 à l'aide du AWS CLI

Dans l'exemple suivant, vous utilisez une tâche d'exportation pour exporter toutes les données d'un groupe de CloudWatch journaux Logs nommé my-log-group vers un compartiment Amazon S3 nomméamzn-s3-demo-bucket. Cet exemple suppose que vous avez déjà créé un groupe de journaux appelé my-log-group.

L'exportation des données de journal vers des compartiments S3 chiffrés par AWS KMS est prise en charge. L'exportation vers des compartiments chiffrés n' DSSE-KMS est pas prise en charge.

Les détails de la configuration de l'exportation varient selon que le compartiment Amazon S3 vers lequel vous souhaitez exporter se trouve dans le même compte que vos journaux à exporter ou dans un compte différent.

Same-account exportation (CLI)

Si le compartiment Amazon S3 se trouve dans le même compte que les journaux à exporter, suivez les instructions de cette section.

Création d'un compartiment S3 (CLI)

Nous vous recommandons d'utiliser un bucket créé spécifiquement pour les CloudWatch journaux. Toutefois, si vous souhaitez utiliser un compartiment existant, vous pouvez ignorer cette procédure.

Note

Le compartiment S3 doit résider dans la même région que les données de journal à exporter. CloudWatch Logs ne prend pas en charge l'exportation de données vers des compartiments S3 situés dans une autre région.

Pour créer un compartiment S3 à l'aide du AWS CLI

À partir d'une invite de commande, exécutez la commande create-bucket suivante, où LocationConstraint correspond à la région dans laquelle vous exportez les données de journal.

aws s3api create-bucket --bucket amzn-s3-demo-bucket --create-bucket-configuration LocationConstraint=us-east-2

Voici un exemple de sortie.

{ "Location": "/amzn-s3-demo-bucket" }

Configuration des autorisations d'accès (CLI)

Pour créer la tâche d'exportation ultérieurement, vous devez être connecté avec le rôle AmazonS3ReadOnlyAccess IAM et disposer des autorisations suivantes :

  • logs:CreateExportTask

  • logs:CancelExportTask

  • logs:DescribeExportTasks

  • logs:DescribeLogStreams

  • logs:DescribeLogGroups

Pour activer l’accès, ajoutez des autorisations à vos utilisateurs, groupes ou rôles :

Définir les autorisations sur un compartiment S3 (CLI)

Par défaut, tous les objets et les compartiments S3 sont privés. Seul le propriétaire de la ressource, le compte ayant créé le compartiment, peut accéder au compartiment et aux objets qu’il contient. Le propriétaire de la ressource peut toutefois accorder des autorisations d'accès à d'autres ressources et à d'autres utilisateurs en créant une stratégie d'accès.

Important

Pour sécuriser davantage les exportations vers les compartiments S3, nous vous demandons désormais de spécifier la liste des comptes sources autorisés à exporter les données des journaux vers votre compartiment S3.

Dans l'exemple suivant, la liste des ID de compte figurant dans la aws:SourceAccount clé correspond aux comptes à partir desquels un utilisateur peut exporter les données du journal vers votre compartiment S3. La clé aws:SourceArn correspond à la ressource pour laquelle l'action est entreprise. Vous pouvez limiter cela à un groupe de journaux spécifique ou utiliser un caractère générique, comme indiqué dans cet exemple.

Nous vous recommandons d'inclure également l'ID du compte sur lequel le compartiment S3 est créé, afin de permettre l'exportation au sein du même compte.

Définition des autorisations sur un compartiment S3
  1. Créez un fichier nommé policy.json et ajoutez la stratégie d'accès suivante, en changeant amzn-s3-demo-bucket par le nom de votre compartiment S3 et Principal par le point de terminaison de la région où vous exportez les données du journal, tel que us-east-1. Utilisez un éditeur de texte créer ce fichier de stratégie. N'utilisez pas la console IAM.

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Sid": "AllowGetBucketAcl", "Action": "s3:GetBucketAcl", "Effect": "Allow", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket", "Principal": { "Service": "logs.us-east-1.amazonaws.com" }, "Condition": { "StringEquals": { "aws:SourceAccount": [ "123456789012", "111122223333" ] }, "ArnLike": { "aws:SourceArn": [ "arn:aws:logs:us-east-1:123456789012:log-group:*", "arn:aws:logs:us-east-1:111122223333:log-group:*" ] } } }, { "Sid": "AllowPutObject", "Action": "s3:PutObject", "Effect": "Allow", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*", "Principal": { "Service": "logs.us-east-1.amazonaws.com" }, "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control", "aws:SourceAccount": [ "123456789012", "111122223333" ] }, "ArnLike": { "aws:SourceArn": [ "arn:aws:logs:us-east-1:123456789012:log-group:*", "arn:aws:logs:us-east-1:111122223333:log-group:*" ] } } } ] }
  2. Définissez la stratégie que vous venez d'ajouter en tant que stratégie d'accès à votre compartiment à l'aide de la commande put-bucket-policy. Cette politique permet à CloudWatch Logs d'exporter les données des journaux vers votre compartiment S3. Le propriétaire du compartiment disposera des autorisations d'accès complet à tous les objets exportés.

    aws s3api put-bucket-policy --bucket amzn-s3-demo-bucket --policy file://policy.json
    Avertissement

    Si une ou plusieurs politiques sont déjà associées au bucket existant, ajoutez les instructions pour l'accès aux CloudWatch journaux à cette ou ces politiques. Nous vous recommandons d'évaluer le jeu d'autorisations obtenu pour vérifier son adéquation pour les utilisateurs appelés à accéder au compartiment.

(Facultatif) Exportation vers un compartiment Amazon S3 de destination chiffré avec SSE-KMS (CLI)

Cette procédure n'est nécessaire que si vous exportez vers un compartiment S3 qui utilise le chiffrement côté serveur avec. AWS KMS keys Ce cryptage est connu sous le nom de SSE-KMS.

Pour exporter vers un bucket chiffré avec SSE-KMS
  1. Utilisez un éditeur de texte pour créer un fichier nommé key_policy.json et ajoutez la stratégie d'accès suivante. Lorsque vous ajoutez la politique, apportez les modifications suivantes :

    • RegionRemplacez-la par la région de vos journaux.

    • account-ARNRemplacez-le par l'ARN du compte propriétaire de la clé KMS.

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Sid": "Allow CWL Service Principal usage", "Effect": "Allow", "Principal": { "Service": "logs.Region.amazonaws.com" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "*" }, { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": "account-ARN" }, "Action": [ "kms:GetKeyPolicy*", "kms:PutKeyPolicy*", "kms:DescribeKey*", "kms:CreateAlias*", "kms:ScheduleKeyDeletion*", "kms:Decrypt" ], "Resource": "*" } ] }
  2. Entrez la commande suivante :

    aws kms create-key --policy file://key_policy.json

    Voici un exemple de sortie de la commande :

    { "KeyMetadata": { "AWSAccountId": "account_id", "KeyId": "key_id", "Arn": "arn:aws:kms:us-east-2:account-ARN:key/key_id", "CreationDate": "time", "Enabled": true, "Description": "", "KeyUsage": "ENCRYPT_DECRYPT", "KeyState": "Enabled", "Origin": "AWS_KMS", "KeyManager": "CUSTOMER", "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT", "KeySpec": "SYMMETRIC_DEFAULT", "EncryptionAlgorithms": [ "SYMMETRIC_DEFAULT" ], "MultiRegion": false }
  3. À l'aide d'un éditeur de texte, créez un fichier nommé bucketencryption.json avec le contenu suivant.

    { "Rules": [ { "ApplyServerSideEncryptionByDefault": { "SSEAlgorithm": "aws:kms", "KMSMasterKeyID": "{KMS Key ARN}" }, "BucketKeyEnabled": true } ] }
  4. Entrez la commande suivante, en la amzn-s3-demo-bucket remplaçant par le nom du compartiment vers lequel vous exportez les journaux.

    aws s3api put-bucket-encryption --bucket amzn-s3-demo-bucket --server-side-encryption-configuration file://bucketencryption.json

    Si la commande ne renvoie pas d'erreur, le processus est réussi.

Création d'une tâche d'exportation (CLI)

Utilisez la commande suivante pour créer la tâche d'exportation. Une fois que vous l'avez créée, la tâche d'exportation peut prendre de quelques secondes à quelques heures, en fonction de la taille des données à exporter.

Pour exporter des données vers Amazon S3 à l'aide du AWS CLI
  1. Connectez-vous avec les autorisations suffisantes, comme indiqué dans Configuration des autorisations d'accès (CLI).

  2. À partir d'une invite de commande, utilisez la commande create-export-task suivante pour créer la tâche d'exportation.

    aws logs create-export-task --profile CWLExportUser --task-name "my-log-group-09-10-2015" --log-group-name "my-log-group" --from 1441490400000 --to 1441494000000 --destination "amzn-s3-demo-bucket" --destination-prefix "export-task-output"

    Voici un exemple de sortie.

    { "taskId": "cda45419-90ea-4db5-9833-aade86253e66" }

Cross-account exportation (CLI)

Si le compartiment Amazon S3 se trouve dans un compte différent de celui des journaux à exporter, suivez les instructions de cette section.

Création d'un compartiment S3 pour l'exportation entre comptes (CLI)

Nous vous recommandons d'utiliser un bucket créé spécifiquement pour les CloudWatch journaux. Cependant, si vous souhaitez utiliser un compartiment existant, vous pouvez passer à l'étape 2.

Note

Le compartiment S3 doit résider dans la même région que les données de journal à exporter. CloudWatch Logs ne prend pas en charge l'exportation de données vers des compartiments S3 situés dans une autre région.

Pour créer un compartiment S3 à l'aide du AWS CLI

À partir d'une invite de commande, exécutez la commande create-bucket suivante, où LocationConstraint correspond à la région dans laquelle vous exportez les données de journal.

aws s3api create-bucket --bucket amzn-s3-demo-bucket --create-bucket-configuration LocationConstraint=us-east-2

Voici un exemple de sortie.

{ "Location": "/amzn-s3-demo-bucket" }

Configurer les autorisations d'accès pour l'exportation entre comptes (CLI)

Tout d'abord, vous devez créer une nouvelle politique IAM pour permettre à CloudWatch Logs d'avoir l's3:PutObjectaction pour le compartiment Amazon S3 de destination dans le compte de destination.

Outre les s3:PutObject actions, les actions supplémentaires incluses dans la politique dépendent du fait que le compartiment de destination utilise le AWS KMS chiffrement ou que les ACL sont activées à l'aide du paramètre S3 Object Ownership.

  • Si vous utilisez le chiffrement KMS, ajoutez les kms:Decrypt actions kms:GenerateDataKey et pour la ressource clé

  • Si les ACL sont activées sur le bucket, ajoutez l's3:PutObjectAclaction pour la ressource du bucket

amzn-s3-demo-bucketChangez le nom de votre compartiment S3 de destination dans les politiques suivantes.

La politique que vous créez varie selon que le compartiment de destination utilise ou non le chiffrement AWS KMS . S'il n'utilise pas AWS KMS le chiffrement, créez une politique avec le contenu suivant.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*" } ] }

Si le compartiment de destination utilise AWS KMS le chiffrement, créez une politique avec le contenu suivant.

JSON
{ "Version":"2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*" }, { "Effect": "Allow", "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "arn:aws:kms:us-east-1:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab" } ] }

Si les ACL sont activées sur le compartiment de destination, ajoutez s3 : PutObjectAcl à s3 : PutObject Action block dans les politiques ci-dessus.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:PutObjectAcl" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*" } ] }

Pour créer une tâche d'exportation, vous devez être connecté avec un rôle IAM auquel est associée la stratégie AmazonS3ReadOnlyAccess gérée, la stratégie IAM créée ci-dessus, et disposer des autorisations suivantes :

  • logs:CreateExportTask

  • logs:CancelExportTask

  • logs:DescribeExportTasks

  • logs:DescribeLogStreams

  • logs:DescribeLogGroups

Pour activer l’accès, ajoutez des autorisations à vos utilisateurs, groupes ou rôles :

Définir des autorisations sur un compartiment S3 pour l'exportation entre comptes (CLI)

Par défaut, tous les objets et les compartiments S3 sont privés. Seul le propriétaire de la ressource, le compte ayant créé le compartiment, peut accéder au compartiment et aux objets qu’il contient. Le propriétaire de la ressource peut toutefois accorder des autorisations d'accès à d'autres ressources et à d'autres utilisateurs en créant une stratégie d'accès.

Important

Pour sécuriser davantage les exportations vers les compartiments S3, nous vous demandons désormais de spécifier la liste des comptes sources autorisés à exporter les données des journaux vers votre compartiment S3.

Dans l'exemple suivant, la liste des ID de compte figurant dans la aws:SourceAccount clé correspond aux comptes à partir desquels un utilisateur peut exporter les données du journal vers votre compartiment S3. La clé aws:SourceArn correspond à la ressource pour laquelle l'action est entreprise. Vous pouvez limiter cela à un groupe de journaux spécifique ou utiliser un caractère générique, comme indiqué dans cet exemple.

Nous vous recommandons d'inclure également l'ID du compte sur lequel le compartiment S3 est créé, afin de permettre l'exportation au sein du même compte.

Définition des autorisations sur un compartiment S3
  1. Créez un fichier nommé policy.json et ajoutez la politique d'accès suivante, en remplaçant amzn-s3-demo-bucket le nom de votre compartiment S3 de destination, Principal au point de terminaison de la région où vous exportez les données de journal, par exempleus-west-1. Utilisez un éditeur de texte créer ce fichier de stratégie. N'utilisez pas la console IAM.

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Action": "s3:GetBucketAcl", "Effect": "Allow", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket", "Principal": { "Service": "logs.us-east-1.amazonaws.com" }, "Condition": { "StringEquals": { "aws:SourceAccount": [ "123456789012", "111122223333" ] }, "ArnLike": { "aws:SourceArn": [ "arn:aws:logs:us-east-1:123456789012:log-group:*", "arn:aws:logs:us-east-1:111122223333:log-group:*" ] } } }, { "Action": "s3:PutObject" , "Effect": "Allow", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*", "Principal": { "Service": "logs.us-east-1.amazonaws.com" }, "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control", "aws:SourceAccount": [ "123456789012", "111122223333" ] }, "ArnLike": { "aws:SourceArn": [ "arn:aws:logs:us-east-1:123456789012:log-group:*", "arn:aws:logs:us-east-1:111122223333:log-group:*" ] } } }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/role_name" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::>amzn-s3-demo-bucket/*", "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control" } } } ] }
  2. Définissez la stratégie que vous venez d'ajouter en tant que stratégie d'accès à votre compartiment à l'aide de la commande put-bucket-policy. Cette politique permet à CloudWatch Logs d'exporter les données des journaux vers votre compartiment S3. Le propriétaire du compartiment disposera des autorisations d'accès complet à tous les objets exportés.

    aws s3api put-bucket-policy --bucket amzn-s3-demo-bucket --policy file://policy.json
    Avertissement

    Si une ou plusieurs politiques sont déjà associées au bucket existant, ajoutez les instructions pour l'accès aux CloudWatch journaux à cette ou ces politiques. Nous vous recommandons d'évaluer le jeu d'autorisations obtenu pour vérifier son adéquation pour les utilisateurs appelés à accéder au compartiment.

(Facultatif) Exportation vers un compartiment Amazon S3 de destination chiffré SSE-KMS pour l'exportation entre comptes (CLI)

Cette procédure n'est nécessaire que si vous exportez vers un compartiment S3 qui utilise le chiffrement côté serveur avec. AWS KMS keys Ce cryptage est connu sous le nom de SSE-KMS.

Pour exporter vers un bucket chiffré avec SSE-KMS
  1. Utilisez un éditeur de texte pour créer un fichier nommé key_policy.json et ajoutez la stratégie d'accès suivante. Lorsque vous ajoutez la politique, apportez les modifications suivantes :

    • us-east-1Remplacez-la par la région de vos journaux.

    • account-ARNRemplacez-le par l'ARN du compte propriétaire de la clé KMS.

    • 123456789012Remplacez-le par le numéro de compte auquel appartient la clé KMS.

    • key_idavec l'identifiant de la clé KMS.

    • role_nameavec le rôle utilisé pour créer la tâche d'exportation.

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Sid": "AllowCWLServicePrincipalUsage", "Effect": "Allow", "Principal": { "Service": "logs.us-east-1.amazonaws.com" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "*" }, { "Sid": "EnableIAMUserPermissions", "Effect": "Allow", "Principal": { "AWS": "account-ARN" }, "Action": [ "kms:GetKeyPolicy*", "kms:PutKeyPolicy*", "kms:DescribeKey*", "kms:CreateAlias*", "kms:ScheduleKeyDeletion*", "kms:Decrypt" ], "Resource": "*" }, { "Sid": "EnableIAMRolePermissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/role_name" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "arn:aws:kms:us-east-1:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab" } ] }
  2. Entrez la commande suivante :

    aws kms create-key --policy file://key_policy.json

    Voici un exemple de sortie de la commande :

    { "KeyMetadata": { "AWSAccountId": "account_id", "KeyId": "key_id", "Arn": "arn:aws:kms:us-east-1:123456789012:key/key_id", "CreationDate": "time", "Enabled": true, "Description": "", "KeyUsage": "ENCRYPT_DECRYPT", "KeyState": "Enabled", "Origin": "AWS_KMS", "KeyManager": "CUSTOMER", "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT", "KeySpec": "SYMMETRIC_DEFAULT", "EncryptionAlgorithms": [ "SYMMETRIC_DEFAULT" ], "MultiRegion": false }
  3. À l'aide d'un éditeur de texte, créez un fichier nommé bucketencryption.json avec le contenu suivant.

    { "Rules": [ { "ApplyServerSideEncryptionByDefault": { "SSEAlgorithm": "aws:kms", "KMSMasterKeyID": "{KMS Key ARN}" }, "BucketKeyEnabled": true } ] }
  4. Entrez la commande suivante, en la amzn-s3-demo-bucket remplaçant par le nom du compartiment vers lequel vous exportez les journaux.

    aws s3api put-bucket-encryption --bucket amzn-s3-demo-bucket --server-side-encryption-configuration file://bucketencryption.json

    Si la commande ne renvoie pas d'erreur, le processus est réussi.

Création d'une tâche d'exportation pour l'exportation entre comptes (CLI)

Utilisez la commande suivante pour créer la tâche d'exportation. Une fois que vous l'avez créée, la tâche d'exportation peut prendre de quelques secondes à quelques heures, en fonction de la taille des données à exporter.

Pour exporter des données vers Amazon S3 à l'aide du AWS CLI
  1. Connectez-vous avec les autorisations suffisantes, comme indiqué dans Configuration des autorisations d'accès (CLI).

  2. À partir d'une invite de commande, utilisez la commande create-export-task suivante pour créer la tâche d'exportation.

    aws logs create-export-task --profile CWLExportUser --task-name "my-log-group-09-10-2015" --log-group-name "my-log-group" --from 1441490400000 --to 1441494000000 --destination "amzn-s3-demo-bucket" --destination-prefix "export-task-output"

    Voici un exemple de sortie.

    { "taskId": "cda45419-90ea-4db5-9833-aade86253e66" }