Esporta i dati di registro su Amazon S3 utilizzando il AWS CLI - CloudWatch Registri Amazon

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Esporta i dati di registro su Amazon S3 utilizzando il AWS CLI

Nell'esempio seguente, si utilizza un'attività di esportazione per esportare tutti i dati da un gruppo di log CloudWatch Logs denominato in un my-log-group bucket Amazon S3 denominato. my-exported-logs Questo esempio presuppone che tu abbia già creato il gruppo di log my-log-group.

È supportata l'esportazione dei dati di registro in bucket S3 crittografati da. AWS KMS L'esportazione in bucket crittografati con DSSE-KMS non è supportata.

I dettagli su come configuri l'esportazione dipendono dal fatto che il bucket Amazon S3 in cui desideri esportare si trovi nello stesso account dei log che vengono esportati o in un account diverso.

Esportazione nello stesso account

Se il bucket Amazon S3 si trova nello stesso account dei log che vengono esportati, segui le istruzioni in questa sezione.

Fase 1: Creazione di un bucket S3

Ti consigliamo di utilizzare un bucket creato appositamente per i log. CloudWatch Tuttavia, se intendi utilizzare un bucket esistente, puoi passare alla fase 2.

Nota

Il bucket S3 deve risiedere nella stessa regione dei dati di registro da esportare. CloudWatch I registri non supportano l'esportazione di dati in bucket S3 in una regione diversa.

Per creare un bucket S3 utilizzando il AWS CLI

Al prompt dei comandi, eseguire il seguente comando create-bucket, in cui LocationConstraint è la regione in cui esportare i dati di log.

aws s3api create-bucket --bucket my-exported-logs --create-bucket-configuration LocationConstraint=us-east-2

Di seguito è riportato un output di esempio.

{ "Location": "/my-exported-logs" }

Fase 2: configurare le autorizzazioni di accesso

Per creare l'attività di esportazione nella fase 5, è necessario essere registrati con il ruolo IAM AmazonS3ReadOnlyAccess e con le seguenti autorizzazioni:

  • logs:CreateExportTask

  • logs:CancelExportTask

  • logs:DescribeExportTasks

  • logs:DescribeLogStreams

  • logs:DescribeLogGroups

Per fornire l'accesso, aggiungi autorizzazioni agli utenti, gruppi o ruoli:

  • Utenti e gruppi in: AWS IAM Identity Center

    Crea un set di autorizzazioni. Segui le istruzioni riportate nella pagina Create a permission set (Creazione di un set di autorizzazioni) nella Guida per l'utente di AWS IAM Identity Center .

  • Utenti gestiti in IAM tramite un provider di identità:

    Crea un ruolo per la federazione delle identità. Segui le istruzioni riportate nella pagina Create a role for a third-party identity provider (federation) della Guida per l'utente IAM.

  • Utenti IAM:

Passaggio 3: Impostazione delle autorizzazioni su un bucket S3

Per impostazione predefinita, tutti i bucket e gli oggetti S3 sono privati. Solo il proprietario della risorsa, l'account che ha creato il bucket, può accedere al bucket e agli oggetti in esso contenuti. Tuttavia, il proprietario della risorsa può concedere le autorizzazioni di accesso ad altre risorse e ad altri utenti mediante una policy di accesso.

Importante

Per rendere più sicure le esportazioni verso i bucket S3, ora ti chiediamo di specificare l'elenco degli account di origine autorizzati a esportare i dati di log nel tuo bucket S3.

Nell'esempio seguente, l'elenco di account IDs nella aws:SourceAccount chiave sarebbe costituito dagli account da cui un utente può esportare i dati di registro nel bucket S3. La chiave aws:SourceArn è la risorsa per la quale viene intrapresa l'azione. Puoi limitarla a un gruppo di log specifico o utilizzare un jolly come mostrato in questo esempio.

Ti consigliamo di includere anche l'ID dell'account in cui è stato creato il bucket S3 per consentire l'esportazione all'interno dello stesso account.

Impostazione delle autorizzazioni su un bucket S3
  1. Crea il file policy.json e aggiungi la seguente policy di accesso, modificando my-exported-logs con il nome del bucket S3 e Principal con l'endpoint della regione di esportazione dei dati di log, come us-west-1. Utilizza un editor di testo per creare questo file di policy. Non utilizzare 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:*", ... ] } } } ] }
  2. Imposta la politica che hai appena aggiunto come politica di accesso sul tuo bucket utilizzando il comando. put-bucket-policy Questa politica consente a CloudWatch Logs di esportare i dati di registro nel bucket S3. Il proprietario del bucket disporrà di autorizzazioni complete su tutti gli oggetti esportati.

    aws s3api put-bucket-policy --bucket my-exported-logs --policy file://policy.json
    avvertimento

    Se al bucket esistente sono già associate una o più politiche, aggiungi le istruzioni per CloudWatch Logs access a quella o più policy. Consigliamo di valutare il set di autorizzazioni risultante per verificare che siano adeguate agli utenti che accederanno al bucket.

(Opzionale) Passaggio 4: Esportazione in un bucket crittografato con SSE-KMS

Questo passaggio è necessario solo se si esegue l'esportazione in un bucket S3 che utilizza la crittografia lato server con. AWS KMS keys Questa crittografia è nota come SSE-KMS.

Esportazione di un bucket crittografato con SSE-KMS
  1. Utilizza un editor di testo per creare un file denominato key_policy.json e aggiungi la seguente policy di accesso. Quando aggiungi la policy della chiave, apporta le modifiche seguenti:

    • Sostituisci Region con la regione dei tuoi log.

    • Sostituisci account-ARN con l'ARN dell'account che possiede la chiave KMS.

    { "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. Immetti il comando seguente:

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

    Di seguito è fornito un esempio dell'output di questo comando:

    { "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 }
  3. Utilizza un editor di testo per creare un file denominato bucketencryption.json con il seguente contenuto.

    { "Rules": [ { "ApplyServerSideEncryptionByDefault": { "SSEAlgorithm": "aws:kms", "KMSMasterKeyID": "{KMS Key ARN}" }, "BucketKeyEnabled": true } ] }
  4. Immettete il seguente comando, sostituendolo bucket-name con il nome del bucket in cui state esportando i log.

    aws s3api put-bucket-encryption --bucket bucket-name --server-side-encryption-configuration file://bucketencryption.json

    Se il comando non restituisce un errore, il processo ha esito positivo.

Passaggio 5: Creazione di un'attività di esportazione

Usare il comando seguente per creare l'attività di esportazione. Dopo averla creata, potrebbero essere necessari da pochi secondi ad alcune ore per l'attività di esportazione, in base alla dimensione dei dati da esportare.

Per esportare i dati in Amazon S3 utilizzando AWS CLI
  1. Accedi con le autorizzazioni sufficienti come documentato in Fase 2: configurare le autorizzazioni di accesso.

  2. Al prompt dei comandi, usa il seguente create-export-taskcomando per creare l'attività di esportazione.

    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 "my-exported-logs" --destination-prefix "export-task-output"

    Di seguito è riportato un output di esempio.

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

Esportazione in account diversi

Se il bucket Amazon S3 si trova in un account diverso da quello dei log che vengono esportati, segui le istruzioni in questa sezione.

Fase 1: Creazione di un bucket S3

Si consiglia di utilizzare un bucket creato appositamente per CloudWatch i registri. Tuttavia, se intendi utilizzare un bucket esistente, puoi passare alla fase 2.

Nota

Il bucket S3 deve risiedere nella stessa regione dei dati di registro da esportare. CloudWatch I registri non supportano l'esportazione di dati in bucket S3 in una regione diversa.

Per creare un bucket S3 utilizzando il AWS CLI

Al prompt dei comandi, eseguire il seguente comando create-bucket, in cui LocationConstraint è la regione in cui esportare i dati di log.

aws s3api create-bucket --bucket my-exported-logs --create-bucket-configuration LocationConstraint=us-east-2

Di seguito è riportato un output di esempio.

{ "Location": "/my-exported-logs" }

Fase 2: configurare le autorizzazioni di accesso

Innanzitutto, devi creare una nuova policy IAM per consentire a CloudWatch Logs di avere l's3:PutObjectautorizzazione per il bucket Amazon S3 di destinazione.

Per creare l'attività di esportazione nella fase 5, sarà necessario essersi registrati con il ruolo IAM AmazonS3ReadOnlyAccess e altre autorizzazioni. È possibile creare una policy che contenga alcune di queste altre autorizzazioni necessarie.

La policy che crei dipende dal fatto che il bucket di destinazione utilizzi la crittografia. AWS KMS Se non utilizza la AWS KMS crittografia, crea una politica con i seguenti contenuti.

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

Se il bucket di destinazione utilizza AWS KMS la crittografia, create una policy con i seguenti contenuti.

{ "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" } ] }

Per creare l'attività di esportazione nella fase 5, devi avere effettuato l'accesso con il ruolo IAM AmazonS3ReadOnlyAccess, la policy IAM appena creata e anche con le seguenti autorizzazioni:

  • logs:CreateExportTask

  • logs:CancelExportTask

  • logs:DescribeExportTasks

  • logs:DescribeLogStreams

  • logs:DescribeLogGroups

Per fornire l'accesso, aggiungi autorizzazioni agli utenti, gruppi o ruoli:

  • Utenti e gruppi in AWS IAM Identity Center:

    Crea un set di autorizzazioni. Segui le istruzioni riportate nella pagina Create a permission set (Creazione di un set di autorizzazioni) nella Guida per l'utente di AWS IAM Identity Center .

  • Utenti gestiti in IAM tramite un provider di identità:

    Crea un ruolo per la federazione delle identità. Segui le istruzioni riportate nella pagina Create a role for a third-party identity provider (federation) della Guida per l'utente IAM.

  • Utenti IAM:

Passaggio 3: Impostazione delle autorizzazioni su un bucket S3

Per impostazione predefinita, tutti i bucket e gli oggetti S3 sono privati. Solo il proprietario della risorsa, l'account che ha creato il bucket, può accedere al bucket e agli oggetti in esso contenuti. Tuttavia, il proprietario della risorsa può concedere le autorizzazioni di accesso ad altre risorse e ad altri utenti mediante una policy di accesso.

Importante

Per rendere più sicure le esportazioni verso i bucket S3, ora ti chiediamo di specificare l'elenco degli account di origine autorizzati a esportare i dati di log nel tuo bucket S3.

Nell'esempio seguente, l'elenco di account IDs nella aws:SourceAccount chiave sarebbe costituito dagli account da cui un utente può esportare i dati di registro nel bucket S3. La chiave aws:SourceArn è la risorsa per la quale viene intrapresa l'azione. Puoi limitarla a un gruppo di log specifico o utilizzare un jolly come mostrato in questo esempio.

Ti consigliamo di includere anche l'ID dell'account in cui è stato creato il bucket S3 per consentire l'esportazione all'interno dello stesso account.

Impostazione delle autorizzazioni su un bucket S3
  1. Crea il file policy.json e aggiungi la seguente policy di accesso, modificando my-exported-logs con il nome del bucket S3 e Principal con l'endpoint della regione di esportazione dei dati di log, come us-west-1. Utilizza un editor di testo per creare questo file di policy. Non utilizzare 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" } } } ] }
  2. Imposta la politica che hai appena aggiunto come politica di accesso sul tuo bucket utilizzando il comando. put-bucket-policy Questa politica consente a CloudWatch Logs di esportare i dati di registro nel bucket S3. Il proprietario del bucket disporrà di autorizzazioni complete su tutti gli oggetti esportati.

    aws s3api put-bucket-policy --bucket my-exported-logs --policy file://policy.json
    avvertimento

    Se al bucket esistente sono già associate una o più politiche, aggiungi le istruzioni per CloudWatch Logs access a quella o più policy. Consigliamo di valutare il set di autorizzazioni risultante per verificare che siano adeguate agli utenti che accederanno al bucket.

(Opzionale) Passaggio 4: Esportazione in un bucket crittografato con SSE-KMS

Questo passaggio è necessario solo se si esegue l'esportazione in un bucket S3 che utilizza la crittografia lato server con. AWS KMS keys Questa crittografia è nota come SSE-KMS.

Esportazione di un bucket crittografato con SSE-KMS
  1. Utilizza un editor di testo per creare un file denominato key_policy.json e aggiungi la seguente policy di accesso. Quando aggiungi la policy della chiave, apporta le modifiche seguenti:

    • Sostituisci Region con la regione dei tuoi log.

    • Sostituisci account-ARN con l'ARN dell'account che possiede la chiave KMS.

    { "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" } ] }
  2. Immetti il comando seguente:

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

    Di seguito è fornito un esempio dell'output di questo comando:

    { "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 }
  3. Utilizza un editor di testo per creare un file denominato bucketencryption.json con il seguente contenuto.

    { "Rules": [ { "ApplyServerSideEncryptionByDefault": { "SSEAlgorithm": "aws:kms", "KMSMasterKeyID": "{KMS Key ARN}" }, "BucketKeyEnabled": true } ] }
  4. Immettete il seguente comando, sostituendolo bucket-name con il nome del bucket in cui state esportando i log.

    aws s3api put-bucket-encryption --bucket bucket-name --server-side-encryption-configuration file://bucketencryption.json

    Se il comando non restituisce un errore, il processo ha esito positivo.

Passaggio 5: Creazione di un'attività di esportazione

Usare il comando seguente per creare l'attività di esportazione. Dopo averla creata, potrebbero essere necessari da pochi secondi ad alcune ore per l'attività di esportazione, in base alla dimensione dei dati da esportare.

Per esportare i dati in Amazon S3 utilizzando AWS CLI
  1. Accedi con le autorizzazioni sufficienti come documentato in Fase 2: configurare le autorizzazioni di accesso.

  2. Al prompt dei comandi, usa il seguente create-export-taskcomando per creare l'attività di esportazione.

    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 "my-exported-logs" --destination-prefix "export-task-output"

    Di seguito è riportato un output di esempio.

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