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émy-exported-logs
. Cet exemple suppose que vous avez déjà créé un groupe de journaux appelé my-log-group
.
L'exportation des données du journal vers des compartiments S3 chiffrés par AWS KMS est prise en charge. L'exportation vers des compartiments chiffrés avec DSSE - n'KMSest 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.
Exportation vers le même compte
Si le compartiment Amazon S3 se trouve dans le même compte que les journaux à exporter, suivez les instructions de cette section.
Rubriques
Étape 1 : Créer un compartiment S3
Nous vous recommandons d'utiliser un bucket créé spécifiquement pour CloudWatch Logs. 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 du journal à exporter. CloudWatch Logs ne prend pas en charge l'exportation de données vers des compartiments S3 d'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
my-exported-logs
--create-bucket-configuration LocationConstraint=us-east-2
Voici un exemple de sortie.
{ "Location": "/
my-exported-logs
" }
Étape 2 : définir les autorisations d'accès
Pour créer la tâche d'exportation à l'étape 5, vous devez être connecté avec le AmazonS3ReadOnlyAccess
IAM rôle 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 :
-
Utilisateurs et groupes dans AWS IAM Identity Center :
Créez un jeu d’autorisations. Suivez les instructions de la rubrique Création d’un jeu d’autorisations du Guide de l’utilisateur AWS IAM Identity Center .
-
Utilisateurs gérés IAM par le biais d'un fournisseur d'identité :
Créez un rôle pour la fédération d’identité. Suivez les instructions de la section Création d'un rôle pour un fournisseur d'identité tiers (fédération) dans le guide de IAM l'utilisateur.
-
IAMutilisateurs :
-
Créez un rôle que votre utilisateur peut assumer. Suivez les instructions de la section Création d'un rôle pour un IAM utilisateur dans le Guide de IAM l'utilisateur.
-
(Non recommandé) Attachez une politique directement à un utilisateur ou ajoutez un utilisateur à un groupe d’utilisateurs. Suivez les instructions de la section Ajouter des autorisations à un utilisateur (console) dans le guide de IAM l'utilisateur.
-
Étape 3 : définir les autorisations sur un compartiment S3
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 comptes figurant IDs dans la aws:SourceAccount
clé correspond aux comptes à partir desquels un utilisateur peut exporter des données de 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
-
Créez un fichier nommé
policy.json
et ajoutez la stratégie d'accès suivante, en changeantmy-exported-logs
par le nom de votre compartiment S3 etPrincipal
par le point de terminaison de la région où vous exportez les données du journal, tel queus-west-1
. Utilisez un éditeur de texte créer ce fichier de stratégie. N'utilisez pas la console IAM.{ "Version": "2012-10-17", "Statement": [ { "Action": "s3:GetBucketAcl", "Effect": "Allow", "Resource": "arn:aws:s3:::
my-exported-logs
", "Principal": { "Service": "logs.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:::my-exported-logs
/*", "Principal": { "Service": "logs.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:*", ... ] } } } ] } -
Définissez la politique que vous venez d'ajouter comme politique d'accès à votre compartiment à l'aide de la put-bucket-policycommande. 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 my-exported-logs --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) Étape 4 : Exportation vers un compartiment chiffré avec SSE - KMS
Cette étape 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 compartiment chiffré avec SSE - KMS
-
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 :-
Remplacez
Region
avec la région de vos journaux. -
Remplacez
account-ARN
avec ARN le compte qui possède la KMS clé.
{ "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": "*" } ] } -
-
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_id
: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 } -
À 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 } ] }
-
Entrez la commande suivante, en remplaçant
bucket-name
avec le nom du compartiment vers lequel vous exportez les journaux.aws s3api put-bucket-encryption --bucket
bucket-name
--server-side-encryption-configuration file://bucketencryption.jsonSi la commande ne renvoie pas d'erreur, le processus est réussi.
Étape 5 : créer une tâche d'exportation
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
-
Connectez-vous avec les autorisations suffisantes, comme indiqué dans Étape 2 : définir les autorisations d'accès.
-
À l'invite de commandes, utilisez la create-export-taskcommande 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
" --from1441490400000
--to1441494000000
--destination "my-exported-logs
" --destination-prefix "export-task-output
"Voici un exemple de sortie.
{ "taskId": "
cda45419-90ea-4db5-9833-aade86253e66
" }
Exportation intercomptes
Si le compartiment Amazon S3 se trouve dans un compte différent de celui des journaux à exporter, suivez les instructions de cette section.
Rubriques
Étape 1 : Créer un compartiment S3
Nous vous recommandons d'utiliser un bucket créé spécifiquement pour CloudWatch Logs. 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 du journal à exporter. CloudWatch Logs ne prend pas en charge l'exportation de données vers des compartiments S3 d'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
my-exported-logs
--create-bucket-configuration LocationConstraint=us-east-2
Voici un exemple de sortie.
{ "Location": "/
my-exported-logs
" }
Étape 2 : définir les autorisations d'accès
Tout d'abord, vous devez créer une nouvelle IAM politique pour permettre à CloudWatch Logs d'avoir l's3:PutObject
autorisation d'accéder au compartiment Amazon S3 de destination.
Pour créer la tâche d'exportation à l'étape 5, vous devez être connecté avec le AmazonS3ReadOnlyAccess
IAM rôle et certaines autres autorisations. Vous pouvez créer une politique contenant certaines de ces autres autorisations nécessaires.
La politique que vous créez dépend de l'utilisation ou non du AWS KMS chiffrement par le compartiment de destination. S'il n'utilise pas AWS KMS le chiffrement, créez une politique avec le contenu suivant.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::
my-exported-logs
/*" } ] }
Si le compartiment de destination utilise AWS KMS le chiffrement, créez une politique avec le contenu suivant.
{ "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 créer la tâche d'exportation à l'étape 5, vous devez être connecté avec le AmazonS3ReadOnlyAccess
IAM rôle, la IAM politique que vous venez de créer, ainsi que les 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 :
-
Utilisateurs et groupes dans AWS IAM Identity Center :
Créez un jeu d’autorisations. Suivez les instructions de la rubrique Création d’un jeu d’autorisations du Guide de l’utilisateur AWS IAM Identity Center .
-
Utilisateurs gérés IAM par le biais d'un fournisseur d'identité :
Créez un rôle pour la fédération d’identité. Suivez les instructions de la section Création d'un rôle pour un fournisseur d'identité tiers (fédération) dans le guide de IAM l'utilisateur.
-
IAMutilisateurs :
-
Créez un rôle que votre utilisateur peut assumer. Suivez les instructions de la section Création d'un rôle pour un IAM utilisateur dans le Guide de IAM l'utilisateur.
-
(Non recommandé) Attachez une politique directement à un utilisateur ou ajoutez un utilisateur à un groupe d’utilisateurs. Suivez les instructions de la section Ajouter des autorisations à un utilisateur (console) dans le guide de IAM l'utilisateur.
-
Étape 3 : définir les autorisations sur un compartiment S3
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 comptes figurant IDs dans la aws:SourceAccount
clé correspond aux comptes à partir desquels un utilisateur peut exporter des données de 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
-
Créez un fichier nommé
policy.json
et ajoutez la stratégie d'accès suivante, en changeantmy-exported-logs
par le nom de votre compartiment S3 etPrincipal
par le point de terminaison de la région où vous exportez les données du journal, tel queus-west-1
. Utilisez un éditeur de texte créer ce fichier de stratégie. N'utilisez pas la console IAM.{ "Version": "2012-10-17", "Statement": [ { "Action": "s3:GetBucketAcl", "Effect": "Allow", "Resource": "arn:aws:s3:::
my-exported-logs
", "Principal": { "Service": "logs.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:::my-exported-logs
/*", "Principal": { "Service": "logs.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:::my-exported-logs/*", "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control" } } } ] } -
Définissez la politique que vous venez d'ajouter comme politique d'accès à votre compartiment à l'aide de la put-bucket-policycommande. 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 my-exported-logs --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) Étape 4 : Exportation vers un compartiment chiffré avec SSE - KMS
Cette étape 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 compartiment chiffré avec SSE - KMS
-
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 :-
Remplacez
Region
avec la région de vos journaux. -
Remplacez
account-ARN
avec ARN le compte qui possède la KMS clé.
{ "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": "*" }, { "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
" } ] } -
-
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_id
: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 } -
À 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 } ] }
-
Entrez la commande suivante, en remplaçant
bucket-name
avec le nom du compartiment vers lequel vous exportez les journaux.aws s3api put-bucket-encryption --bucket
bucket-name
--server-side-encryption-configuration file://bucketencryption.jsonSi la commande ne renvoie pas d'erreur, le processus est réussi.
Étape 5 : créer une tâche d'exportation
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
-
Connectez-vous avec les autorisations suffisantes, comme indiqué dans Étape 2 : définir les autorisations d'accès.
-
À l'invite de commandes, utilisez la create-export-taskcommande 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
" --from1441490400000
--to1441494000000
--destination "my-exported-logs
" --destination-prefix "export-task-output
"Voici un exemple de sortie.
{ "taskId": "
cda45419-90ea-4db5-9833-aade86253e66
" }