View a markdown version of this page

Transmission des journaux d'accès au serveur à CloudWatch Logs - Amazon Simple Storage Service

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.

Transmission des journaux d'accès au serveur à CloudWatch Logs

Vous pouvez transmettre les journaux d'accès au serveur Amazon S3 à un groupe de CloudWatch journaux à l'aide de la livraison CloudWatch automatique des journaux Amazon Logs. Une fois les CloudWatch journaux enregistrés dans Logs, vous pouvez les interroger avec CloudWatch Logs Insights, les agréger entre comptes et régions, les chiffrer avec AWS Key Management Service (AWS KMS) et éventuellement les transmettre aux tables Amazon S3 au format Apache Iceberg pour les analyses SQL. Vous pouvez également envoyer des journaux à Amazon S3 au format JSON ou Apache Parquet ou les acheminer via Amazon Data Firehose.

Vous configurez la livraison à l'aide CloudWatch des API Logs, et non des API Amazon S3. Vous spécifiez un groupe de journaux pour chaque compartiment source. Plusieurs compartiments peuvent partager le même groupe de journaux, ou chaque compartiment peut être livré à son propre groupe de journaux.

Astuce

Vous pouvez configurer plusieurs destinations pour le même compartiment. Par exemple, transmettez-le à un groupe de CloudWatch journaux pour des requêtes interactives et livrez-le simultanément à Amazon S3 au format Parquet pour une conservation à long terme à moindre coût.

Note

CloudWatch La livraison automatique des journaux prend également en charge Amazon Data Firehose et Amazon S3 comme destinations de livraison, y compris le format de sortie Apache Parquet. Cette page couvre la destination du groupe de CloudWatch journaux Logs, qui prend également en charge l'intégration des tables S3 pour les analyses SQL. Pour plus d'informations sur les destinations Firehose et Amazon S3, consultez la section Activer la journalisation à partir AWS des services dans le guide de l'utilisateur Amazon CloudWatch Logs.

Note

Pour plus d'informations sur la transmission des journaux d'accès au serveur vers un compartiment à usage général Amazon S3, consultezActivation de la journalisation des accès au serveur Amazon S3.

Conditions préalables

Avant de configurer la livraison, vous devez disposer des éléments suivants :

  • Un compartiment Amazon S3 à usage général (le compartiment source que vous souhaitez enregistrer).

  • Un groupe de CloudWatch journaux se trouve dans le même compartiment Région AWS que le compartiment source.

  • Autorisations IAM pour l'appelant. Au minimum, vous devez disposer des autorisations suivantes :

    • logs:PutDeliverySource

    • logs:PutDeliveryDestination

    • logs:CreateDelivery

    • s3:AllowVendedLogDeliveryForResource(sur le compartiment source)

    Si vous envisagez d'activer l'intégration des tables S3, vous devez également :

    • observabilityadmin:CreateS3TableIntegration

    • logs:AssociateSourceToS3TableIntegration

    • s3tables:CreateTableBucket

    • s3tables:PutTableBucketEncryption

    • s3tables:PutTableBucketPolicy

Configuration de la livraison (AWS CLI)

Pour configurer la transmission des journaux d'accès au serveur aux CloudWatch journaux à l'aide du AWS Command Line Interface, effectuez les trois étapes suivantes.

  1. Créez une source de diffusion. Cela enregistre votre compartiment Amazon S3 en tant que source de journal auprès de CloudWatch Logs.

    aws logs put-delivery-source \ --name my-sal-source \ --resource-arn arn:aws:s3:::my-bucket \ --log-type S3_SERVER_ACCESS_LOGS
  2. Créez une destination de livraison. Cela indique le groupe de CloudWatch journaux dans lequel les journaux seront livrés.

    aws logs put-delivery-destination \ --name my-sal-destination \ --delivery-destination-configuration '{"destinationResourceArn": "arn:aws:logs:us-east-1:123456789012:log-group:my-sal-logs"}'
  3. Créez une livraison. Cela lie la source à la destination et démarre la livraison du journal.

    aws logs create-delivery \ --delivery-source-name my-sal-source \ --delivery-destination-arn arn:aws:logs:us-east-1:123456789012:delivery-destination:my-sal-destination

Une fois ces étapes terminées, Amazon S3 commence à fournir les journaux d'accès au serveur à votre groupe de CloudWatch journaux de journaux. La propagation de la configuration prend 15 à 20 minutes. Après la propagation, la livraison du journal commence généralement en quelques heures. Seules les nouvelles demandes sont enregistrées ; il n'y a pas de remplacement des données historiques.

Configuration de la livraison (console Amazon S3)

  1. Connectez-vous à la console Amazon S3 à l'adresse https://console.aws.amazon.com/s3/.

  2. Dans le panneau de navigation de gauche, choisissez Compartiments.

  3. Choisissez le nom du compartiment source pour lequel vous souhaitez activer la journalisation.

  4. Choisissez l’onglet Propriétés.

  5. Dans la section Livraison du journal d'accès au serveur aux CloudWatch journaux, choisissez Modifier.

  6. Sélectionnez Activer.

  7. Sélectionnez ou créez un groupe de CloudWatch journaux Logs comme destination de livraison.

  8. (Facultatif) Pour envoyer des journaux aux tables S3 au format Apache Iceberg, sélectionnez Activer l'intégration des tables S3.

  9. Sélectionnez Enregistrer les modifications.

Après avoir enregistré, la section Livraison du journal d'accès au serveur aux CloudWatch journaux affiche le groupe de journaux activé.

Configuration de la livraison (CloudFormation)

Vous pouvez l'utiliser AWS CloudFormation pour automatiser la configuration de la transmission des journaux d'accès au serveur à CloudWatch Logs. Le modèle suivant crée les ressources requises : un rôle IAM, un groupe de CloudWatch journaux Logs, une source de diffusion, une destination de livraison et une livraison.

AWSTemplateFormatVersion: '2010-09-09' Description: S3 Access Logs delivery to CloudWatch Logs Parameters: SourceBucketArn: Type: String Description: ARN of the S3 bucket to enable access logging LogGroupName: Type: String Default: /aws/s3/access-logs Description: CloudWatch Log Group name for SAL delivery Resources: SALLogGroup: Type: AWS::Logs::LogGroup Properties: LogGroupName: !Ref LogGroupName RetentionInDays: 180 SALDeliverySource: Type: AWS::Logs::DeliverySource Properties: Name: !Sub '${AWS::StackName}-sal-source' ResourceArn: !Ref SourceBucketArn LogType: S3_SERVER_ACCESS_LOGS SALDeliveryDestination: Type: AWS::Logs::DeliveryDestination Properties: Name: !Sub '${AWS::StackName}-sal-destination' DestinationResourceArn: !GetAtt SALLogGroup.Arn SALDelivery: Type: AWS::Logs::Delivery Properties: DeliverySourceName: !Ref SALDeliverySource DeliveryDestinationArn: !GetAtt SALDeliveryDestination.Arn

Activation de l'intégration des tables S3 (facultatif)

Lorsque vous activez l'intégration des tables S3, CloudWatch Logs fournit automatiquement les journaux d'accès au serveur au format Apache Iceberg au compartiment de tables aws-cloudwatch géré de votre compte. Vous pouvez ensuite interroger ces données à l'aide d'Amazon Athena, d'Amazon Redshift ou de n'importe quel outil. Iceberg-compatible

Il n'y a aucun frais supplémentaire pour le stockage ou la maintenance des tables dans le cadre de l'intégration de S3 Tables. Vous ne payez que pour l'ingestion CloudWatch des journaux et pour les demandes de requêtes selon le tarif de S3 Tables.

  1. Créez l'intégration S3 Tables (une fois par compte et par région).

    aws observabilityadmin create-s3-table-integration \ --role-arn arn:aws:iam::123456789012:role/CWLogsS3TableIntegrationRole \ --encryption '{"SseAlgorithm": "AES256"}'

    Le rôle IAM doit faire confiance au principal du logs.amazonaws.com service et accorder l'logs:integrateWithS3Tableautorisation. Voici un exemple de politique d’approbation :

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "logs.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "123456789012" }, "ArnLike": { "aws:SourceArn": "arn:aws:logs:us-east-1:123456789012:log-group:log-group-name" } } } ] }

    Le rôle nécessite également la politique d'autorisation suivante :

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "logs:integrateWithS3Table", "Resource": "arn:aws:logs:us-east-1:123456789012:log-group:log-group-name", "Condition": { "StringEquals": { "aws:ResourceAccount": "123456789012" } } } ] }
  2. Associez votre source de diffusion à l'intégration.

    aws logs associate-source-to-s3-table-integration \ --integration-arn integration-arn \ --data-source '{"name":"amazon_s3","type":"server_access"}'

Après ces étapes, CloudWatch Logs crée le bucket de table aws-cloudwatch géré et commence à fournir les journaux au format Iceberg. Les données apparaissent généralement dans l'heure qui suit leur première livraison à CloudWatch Logs.

Pour plus d'informations sur les requêtes relatives à l'intégration des tables S3, consultezInterrogation des journaux d'accès dans les tables S3.

Cross-account et agrégation entre régions

Le chemin de livraison CloudWatch des journaux prend en charge l'agrégation des journaux entre comptes et entre régions avec deux options :

  • CloudWatch l'observabilité entre comptes vous permet d'interroger les journaux en place entre les comptes sans copier les données.

  • CloudWatch La centralisation des journaux vous permet de consolider les journaux de plusieurs comptes et régions dans un groupe de journaux central, en utilisant éventuellement des filtres d'abonnement pour un transfert sélectif.

Pour les configurations multicomptes, les administrateurs peuvent utiliser les règles d'activation de CloudWatch Telemetry Config pour activer automatiquement la diffusion AWS Organizations des journaux d'accès au serveur entre les comptes membres.

Note

Les règles d'activation ne prennent actuellement pas en charge l'activation automatique de l'intégration des tables S3. Vous devez activer l'intégration séparément dans chaque compte.

Chiffrement

Vous pouvez chiffrer les journaux d'accès au serveur transmis à CloudWatch Logs en configurant le AWS KMS chiffrement sur votre groupe de journaux. Lorsque les journaux d'accès au serveur sont transmis à ce groupe de journaux, ils sont chiffrés avec votre AWS KMS clé. Cela corrige une limitation essentielle du chemin de livraison des compartiments à usage général d'Amazon S3, qui prend uniquement en charge SSE-S3 le chiffrement.

Si vous activez l'intégration des tables S3 à un groupe de journaux AWS KMS chiffré, vous devez accorder des autorisations supplémentaires aux principaux de service suivants dans votre politique de AWS KMS clés :

{ "Version": "2012-10-17", "Statement": [ { "Sid": "EnableCWSystemTablesKeyUsage", "Effect": "Allow", "Principal": { "Service": "systemtables.cloudwatch.amazonaws.com" }, "Action": [ "kms:DescribeKey", "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "arn:aws:kms:us-east-1:123456789012:key/key-id", "Condition": { "StringEquals": { "aws:SourceAccount": "123456789012" } } }, { "Sid": "EnableS3TablesMaintenanceKeyUsage", "Effect": "Allow", "Principal": { "Service": "maintenance.s3tables.amazonaws.com" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "arn:aws:kms:us-east-1:123456789012:key/key-id", "Condition": { "StringLike": { "kms:EncryptionContext:aws:s3:arn": "table-bucket-arn/*" } } } ] }

Le systemtables.cloudwatch.amazonaws.com principal est utilisé par CloudWatch Logs pour écrire des journaux dans les tables S3. Le maintenance.s3tables.amazonaws.com principal est utilisé par S3 Tables pour les opérations Iceberg telles que le compactage.

Désactivation de la livraison

Pour arrêter de transmettre les journaux d'accès au serveur à CloudWatch Logs, vous pouvez supprimer la livraison ou la source de diffusion :

  • Supprimer la diffusion : arrête la livraison du journal mais conserve la configuration de la source de diffusion intacte. Vous pouvez créer une nouvelle diffusion ultérieurement sans reconfigurer la source.

    aws logs delete-delivery \ --id delivery-id
  • Supprimer la source de diffusion : supprime complètement la configuration de la source. Utilisez-le si vous ne souhaitez plus que le bucket soit associé à la livraison CloudWatch des journaux.

    aws logs delete-delivery-source \ --name delivery-source-name

Les journaux précédemment fournis restent dans le groupe de journaux et dans l'intégration des tables S3 (si elle est activée). La suppression de la livraison ne supprime pas les données du journal existantes.