View a markdown version of this page

Invio dei log di Lambda Event Function ad Amazon S3 - AWS Lambda

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à.

Invio dei log di Lambda Event Function ad Amazon S3

Puoi configurare la tua Lambda Event Function per inviare i log direttamente ad Amazon S3 utilizzando la console Lambda. Questa funzionalità offre una soluzione conveniente per l'archiviazione dei log a lungo termine e consente potenti opzioni di analisi utilizzando servizi come Athena.

Nota

Puoi configurare i log di Lambda Event Function da inviare ad Amazon S3 utilizzando la console AWS CLI Lambda e tutti gli SDK. AWS CloudFormation AWS

Prezzi

Per informazioni dettagliate sui prezzi, consulta la pagina CloudWatch dei prezzi di Amazon.

Autorizzazioni richieste per la destinazione dei log di Amazon S3

Quando utilizzi la console Lambda per configurare Amazon S3 come destinazione del registro di Event Function, hai bisogno di:

  1. Le autorizzazioni IAM richieste per utilizzare CloudWatch Logs with Lambda.

  2. A Configura un filtro CloudWatch Logs (abbonamenti) per inviare i log di Lambda Event Function ad Amazon S3.. Questo filtro definisce quali eventi di log vengono distribuiti al tuo bucket Amazon S3.

Configura un filtro CloudWatch Logs (abbonamenti) per inviare i log di Lambda Event Function ad Amazon S3.

Per inviare i log da CloudWatch Logs ad Amazon S3, devi creare un filtro di abbonamento. Questo filtro definisce quali eventi di log vengono distribuiti al tuo bucket Amazon S3. Il bucket Amazon S3 deve trovarsi nella stessa regione del gruppo di log.

Creazione di un filtro di sottoscrizione per Amazon S3

  1. Crea un bucket Amazon Simple Storage Service (Amazon 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.

    Esegui il comando seguente, sostituendo il segnaposto Regione con la Regione che desideri utilizzare:

    aws s3api create-bucket --bucket amzn-s3-demo-bucket2 --create-bucket-configuration LocationConstraint=region
    Nota

    amzn-s3-demo-bucket2è un esempio di nome di bucket Amazon S3. È riservato. Affinché questa procedura funzioni, è necessario sostituirla con il nome univoco del bucket Amazon S3.

    Di seguito è riportato un output di esempio:

    { "Location": "/amzn-s3-demo-bucket2" }
  2. Crea il ruolo IAM che concede a CloudWatch Logs l'autorizzazione a inserire dati nel tuo bucket Amazon S3. Questa policy include una chiave di contesto aws: SourceArn global condition per aiutare a prevenire i confusi problemi di vice sicurezza. Per ulteriori informazioni consulta Prevenzione del problema "confused deputy".

    1. Utilizza un editor di testo per creare una politica di attendibilità in un file ~/TrustPolicyForCWL.json come segue:

      { "Statement": { "Effect": "Allow", "Principal": { "Service": "logs.amazonaws.com" }, "Condition": { "StringLike": { "aws:SourceArn": "arn:aws:logs:region:123456789012:*" } }, "Action": "sts:AssumeRole" } }
    2. Utilizza il comando create-role per creare un ruolo IAM, specificando il file della policy di attendibilità. Nota il Role.Arn valore restituito, poiché ti servirà in un passaggio successivo:

      aws iam create-role \ --role-name CWLtoS3Role \ --assume-role-policy-document file://~/TrustPolicyForCWL.json { "Role": { "AssumeRolePolicyDocument": { "Statement": { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": "logs.amazonaws.com" }, "Condition": { "StringLike": { "aws:SourceArn": "arn:aws:logs:region:123456789012:*" } } } }, "RoleId": "AAOIIAH450GAB4HC5F431", "CreateDate": "2015-05-29T13:46:29.431Z", "RoleName": "CWLtoS3Role", "Path": "/", "Arn": "arn:aws:iam::123456789012:role/CWLtoS3Role" } }
  3. Crea una politica di autorizzazioni per definire le azioni che CloudWatch Logs può eseguire sul tuo account. In primo luogo, utilizza un editor di testo per creare una policy di autorizzazione in un file ~/PermissionsForCWL.json:

    { "Statement": [ { "Effect": "Allow", "Action": ["s3:PutObject"], "Resource": ["arn:aws:s3:::amzn-s3-demo-bucket2/*"] } ] }

    Associa la policy di autorizzazioni al ruolo inserendo il comando seguente put-role-policy:

    aws iam put-role-policy --role-name CWLtoS3Role --policy-name Permissions-Policy-For-S3 --policy-document file://~/PermissionsForCWL.json
  4. Scegli un gruppo di log Delivery esistente o creane uno nuovo Delivery.

    aws logs create-log-group --log-group-name my-logs --log-group-class DELIVERY --region REGION_NAME
  5. Configurazione della destinazione PutSubscriptionFilter

    aws logs put-subscription-filter --log-group-name my-logs --filter-name my-lambda-delivery --filter-pattern "" --destination-arn arn:aws:s3:::amzn-s3-demo-bucket2 --role-arn arn:aws:iam::123456789012:role/CWLtoS3Role --region REGION_NAME

Invio dei log di Lambda Event Function ad Amazon S3

Nella console Lambda, puoi inviare i log di Event Function direttamente ad Amazon S3 dopo aver creato una nuova Event Function. A tale scopo, completa questi passaggi:

  1. Accedi alla console di AWS gestione e apri la console Lambda.

  2. Scegli il nome della tua Event Function.

  3. Scegli la scheda Configurazione.

  4. Scegli la scheda Strumenti di monitoraggio e operazioni.

  5. Nel riquadro Configurazione della registrazione, scegli Modifica.

  6. Nella sezione «Contenuto del registro», seleziona un formato di registro.

  7. Nella sezione «Destinazione del registro», completa i seguenti passaggi:

    1. Seleziona un servizio di destinazione.

    2. Scegli un gruppo di log esistente o creane uno nuovo.

      Nota

      Se scegli un gruppo di log esistente per una destinazione Amazon S3, assicurati che il gruppo di log che scegli sia un tipo di gruppo di Delivery log.

    3. Scegli un bucket Amazon S3 come destinazione per i log delle funzioni degli eventi.

    4. Viene visualizzato il gruppo di CloudWatch Delivery log.

  8. Selezionare Salva.

Nota

Se il ruolo IAM fornito nella console non dispone delle autorizzazioni richieste, la configurazione della destinazione non riesce. Per risolvere questo problema, consulta Autorizzazioni richieste per la destinazione dei log di Amazon S3.

Cross-Account Registrazione

Puoi configurare Lambda per inviare i log a un bucket Amazon S3 in un account diverso. AWS Ciò richiede l'impostazione di una destinazione e la configurazione delle autorizzazioni appropriate in entrambi gli account.

Per istruzioni dettagliate sulla configurazione della registrazione tra account, inclusi i ruoli e le politiche IAM richiesti, consulta Configurazione di un nuovo abbonamento tra account nella documentazione di Logs. CloudWatch