Registrazione delle chiamate API di Esploratore di risorse AWS tramite AWS CloudTrail
AWS Lambda si integra con AWS CloudTrail, un servizio che offre un record delle operazioni eseguite da un utente, un ruolo o un Servizio AWS. CloudTrail acquisisce le chiamate API per Lambda come eventi. Le chiamate acquisite includono le chiamate dalla console di Lambda e le chiamate di codice alle operazioni delle API di Lambda. Con le informazioni raccolte da CloudTrail è possibile determinare la richiesta effettuata a Lambda, l'indirizzo IP da cui è partita la richiesta, il momento in cui è stata eseguita e altri dettagli.
Ogni evento o voce di log contiene informazioni sull'utente che ha generato la richiesta. Le informazioni di identità consentono di determinare quanto segue:
-
Se la richiesta è stata effettuata con le credenziali utente root o utente.
-
Se la richiesta è stata effettuata per conto di un utente del Centro identità IAM.
-
Se la richiesta è stata effettuata con le credenziali di sicurezza temporanee per un ruolo o un utente federato.
-
Se la richiesta è stata effettuata da un altro Servizio AWS.
CloudTrail è attivo nel tuo Account AWS quando create l'account e hai automaticamente accesso alla cronologia degli eventi di CloudTrail. La cronologia degli eventi di CloudTrail fornisce una registrazione visualizzabile, ricercabile, scaricabile e immutabile degli eventi di gestione verificatisi negli ultimi 90 giorni in una Regione AWS. Per ulteriori informazioni, consulta Working with CloudTrail Event history nella Guida per l'utente di AWS CloudTrail. Non sono previsti costi CloudTrail per la visualizzazione della cronologia degli eventi.
Per una registrazione continua degli eventi nell'Account AWS oltre i 90 giorni, creare un trail o un datastore di eventi Data Lake CloudTrail.
- Trail CloudTrail
-
Un trail abilita la distribuzione da parte di CloudTrail dei file di log in un bucket Amazon S3. Tutti i trail creati utilizzando la Console di gestione AWS sono multi-regione. È possibile creare un trail per una singola Regione o per più Regioni tramite AWS CLI. Si consiglia di creare un trail per più Regioni in quanto consente di acquisire l'attività in tutte le Regioni AWS dell'account. Se si crea un trail per una singola Regione, è possibile visualizzare solo gli eventi registrati nella Regione AWS del trail. Per ulteriori informazioni sui trail, consulta Creating a trail for your Account AWS e Creating a trail for an organization nella Guida per l'utente di AWS CloudTrail.
Puoi fornire gratuitamente una copia dei tuoi eventi di gestione in corso al tuo bucket Amazon S3 da CloudTrail creando un percorso, tuttavia dovranno essere considerati i costi di archiviazione di Amazon S3. Per maggiori informazioni sui prezzi di CloudTrail, consultare Prezzi di AWS CloudTrail
. Per informazioni sui prezzi di Amazon S3, consulta Prezzi di Amazon S3 . - Datastore di eventi CloudTrail Lake
-
Data Lake CloudTrail consente di eseguire query SQL sugli eventi. CloudTrail Lake converte gli eventi esistenti in formato JSON basato su righe in formato Apache ORC
. ORC è un formato di archiviazione a colonne ottimizzato per il recupero rapido dei dati. Gli eventi vengono aggregati in archivi di dati degli eventi, che sono raccolte di eventi immutabili basate sui criteri selezionati applicando i selettori di eventi avanzati. I selettori applicati a un archivio di dati degli eventi controllano quali eventi persistono e sono disponibili per l'esecuzione della query. Per ulteriori informazioni su Data Lake CloudTrail, consulta Working with AWS CloudTrail Lake nella Guida per l'utente di AWS CloudTrail. I datastore di eventi e le query di Data Lake CloudTrail comportano costi. Quando crei un datastore di eventi, scegli l'opzione di prezzo da utilizzare per tale datastore. L'opzione di prezzo determina il costo per l'importazione e l'archiviazione degli eventi, nonché il periodo di conservazione predefinito e quello massimo per il datastore di eventi. Per maggiori informazioni sui prezzi di CloudTrail, consultare Prezzi di AWS CloudTrail
.
Eventi di dati Lambda in CloudTrail
Gli eventi di dati forniscono informazioni sulle operazioni delle risorse eseguite su o in una risorsa (ad esempio, lettura o scrittura su un oggetto Amazon S3). Queste operazioni sono definite anche operazioni del piano dei dati. Gli eventi di dati sono spesso attività che interessano volumi elevati di dati. Per impostazione predefinita, CloudTrail non registra la maggior parte degli eventi relativi ai dati e la cronologia degli eventi CloudTrail non li registra.
Un evento di dati CloudTrail che viene registrato per impostazione predefinita per i servizi supportati è LambdaESMDisabled. Per ulteriori informazioni sull'utilizzo di questo evento per risolvere i problemi relativi agli strumenti di mappatura dell'origine degli eventi Lambda, consulta Utilizzo di CloudTrail per risolvere i problemi relativi alle origini eventi Lambda disabilitate.
Per gli eventi di dati sono previsti costi aggiuntivi. Per maggiori informazioni sui prezzi di CloudTrail, consultare Prezzi di AWS CloudTrail
È possibile registrare gli eventi di dati per il tipo di risorse AWS::Lambda::Function utilizzando la console CloudTrail, AWS CLI o le operazioni dell'API CloudTrail. Per ulteriori informazioni su come registrare gli eventi di dati, consulta Registrazione degli eventi di dati con Console di gestione AWS e Registrazione degli eventi di dati con AWS Command Line Interface nella Guida per l'utente di AWS CloudTrail.
La tabella seguente elenca il tipo di risorse Lambda per i quali è possibile registrare gli eventi relativi ai dati. La colonna Tipo di evento di dati (console) mostra il valore da scegliere dall'elenco Tipo di evento di dati sulla console CloudTrail. La colonna resources.type value mostra il valore resources.type, da specificare quando si configurano selettori di eventi avanzati utilizzando le API AWS CLI o CloudTrail. La colonna Dati API registrati su CloudTrail mostra le chiamate API registrate su CloudTrail per il tipo di risorsa.
| Tipo di evento di dati (console) | Valore resources.type | API di dati registrate su CloudTrail |
|---|---|---|
| Lambda |
AWS::Lambda::Function
|
È possibile configurare selettori di eventi avanzati per filtrare in base ai campi eventName, readOnly, e resources.ARN per registrare solo gli eventi che sono importanti per l'utente. L'esempio seguente è la vista JSON di una configurazione di eventi di dati che registra gli eventi solo per una funzione specifica. Per ulteriori informazioni su questi campi, consulta AdvancedFieldSelector nella Documentazione di riferimento delle API di AWS CloudTrail.
[ { "name": "function-invokes", "fieldSelectors": [ { "field": "eventCategory", "equals": [ "Data" ] }, { "field": "resources.type", "equals": [ "AWS::Lambda::Function" ] }, { "field": "resources.ARN", "equals": [ "arn:aws:lambda:us-east-1:111122223333:function:hello-world" ] } ] } ]
Eventi di gestione Lambda in CloudTrail
Gli eventi di gestione forniscono informazioni sulle operazioni di gestione eseguite sulle risorse nell’Account AWS. Queste operazioni sono definite anche operazioni del piano di controllo (control-plane). Per impostazione predefinita, CloudTrail registra gli eventi di gestione.
Lambda supporta la registrazione delle operazioni seguenti come eventi di gestione nei file di log CloudTrail.
Nota
Nel file di log CloudTrail, eventName potrebbe includere informazioni sulla data e sulla versione, ma si riferisce comunque alla stessa API pubblica. Ad esempio, l'operazione GetFunction potrebbe apparire come GetFunction20150331v2. L'elenco seguente specifica quando il nome dell'evento è diverso dal nome dell'operazione API.
-
AddPermission (nome evento:
AddPermission20150331v2) -
CreateAlias (nome evento:
CreateAlias20150331) -
CreateEventSourceMapping (nome evento:
CreateEventSourceMapping20150331) -
CreateFunction (nome evento:
CreateFunction20150331)(I parametri
EnvironmenteZipFilesono omessi dai log di CloudTrail perCreateFunction.) -
DeleteAlias (nome evento:
DeleteAlias20150331) -
DeleteEventSourceMapping (nome evento:
DeleteEventSourceMapping20150331) -
DeleteFunction (nome evento:
DeleteFunction20150331) -
DeleteFunctionConcurrency (nome evento:
DeleteFunctionConcurrency20171031) -
GetAlias (nome evento:
GetAlias20150331) -
PublishLayerVersion (nome evento:
PublishLayerVersion20181031)(Il parametro
ZipFileè omesso dai log di CloudTrail perPublishLayerVersion.) -
PublishVersion (nome evento:
PublishVersion20150331) -
PutFunctionConcurrency (nome evento:
PutFunctionConcurrency20171031) -
RemovePermission (nome evento:
RemovePermission20150331v2) -
TagResource (nome evento:
TagResource20170331v2) -
UntagResource (nome evento:
UntagResource20170331v2) -
UpdateAlias (nome evento:
UpdateAlias20150331) -
UpdateEventSourceMapping (nome evento:
UpdateEventSourceMapping20150331) -
UpdateFunctionCode (nome evento:
UpdateFunctionCode20150331v2)(Il parametro
ZipFileè omesso dai log di CloudTrail perUpdateFunctionCode.) -
UpdateFunctionConfiguration (nome evento:
UpdateFunctionConfiguration20150331v2)(Il parametro
Environmentè omesso dai log di CloudTrail perUpdateFunctionConfiguration.)
Utilizzo di CloudTrail per risolvere i problemi relativi alle origini eventi Lambda disabilitate
Quando si modifica lo stato di uno strumento di mappatura dell'origine degli eventi utilizzando l'operazione API UpdateEventSourceMapping, la chiamata API viene registrata come evento di gestione in CloudTrail. Gli strumenti di mappatura dell'origine degli eventi possono anche passare direttamente allo stato Disabled a causa di errori.
Per i seguenti servizi, Lambda pubblica l'evento di dati LambdaESMDisabled su CloudTrail quando l'origine eventi passa allo stato Disabilitato:
-
Amazon Simple Queue Service (Amazon SQS)
-
Amazon DynamoDB
-
Amazon Kinesis
Lambda non supporta questo evento per alcun altro tipo di strumento di mappatura dell'origine degli eventi.
Per ricevere avvisi quando gli strumenti di mappatura dell'origine degli eventi per i servizi supportati passano allo stato Disabled, configura un allarme in Amazon CloudWatch utilizzando l'evento CloudTrail LambdaESMDisabled. Per ulteriori informazioni sulla configurazione di un allarme CloudWatch, consulta Creazione di allarmi CloudWatch per eventi CloudTrail: esempi.
L'entità serviceEventDetails nel messaggio dell'evento LambdaESMDisabled contiene uno dei seguenti codici di errore.
RESOURCE_NOT_FOUND-
La risorsa specificata nella richiesta non esiste.
FUNCTION_NOT_FOUND-
La funzione associata all'origine eventi non esiste.
REGION_NAME_NOT_VALID-
Il nome di una regione fornito all'origine o alla funzione evento non è valido.
AUTHORIZATION_ERROR-
Le autorizzazioni non sono state impostate o non sono configurate correttamente.
FUNCTION_IN_FAILED_STATE-
Il codice della funzione non viene compilato, ha rilevato un'eccezione irrecuperabile o si è verificata una distribuzione non valida.
Esempi di eventi Lambda
Un evento rappresenta una singola richiesta da qualsiasi fonte e include informazioni sull'operazione API richiesta, la data e l'ora dell'operazione, i parametri della richiesta e così via. I file di log di CloudTrail non sono uno stack trace ordinato delle chiamate API pubbliche, quindi gli eventi non appaiono in un ordine specifico.
L'esempio seguente mostra le voci di log CloudTrail per le operazioni GetFunction e DeleteFunction.
Nota
La voce eventName potrebbe includere informazioni sulla data e sulla versione, ad esempio "GetFunction20150331", ma si riferisce comunque alla stessa API pubblica.
{ "Records": [ { "eventVersion": "1.03", "userIdentity": { "type": "IAMUser", "principalId": "A1B2C3D4E5F6G7EXAMPLE", "arn": "arn:aws:iam::111122223333:user/myUserName", "accountId": "111122223333", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "userName": "myUserName" }, "eventTime": "2015-03-18T19:03:36Z", "eventSource": "lambda.amazonaws.com", "eventName": "GetFunction", "awsRegion": "us-east-1", "sourceIPAddress": "127.0.0.1", "userAgent": "Python-httplib2/0.8 (gzip)", "errorCode": "AccessDenied", "errorMessage": "User: arn:aws:iam::111122223333:user/myUserName is not authorized to perform: lambda:GetFunction on resource: arn:aws:lambda:us-west-2:111122223333:function:other-acct-function", "requestParameters": null, "responseElements": null, "requestID": "7aebcd0f-cda1-11e4-aaa2-e356da31e4ff", "eventID": "e92a3e85-8ecd-4d23-8074-843aabfe89bf", "eventType": "AwsApiCall", "recipientAccountId": "111122223333" }, { "eventVersion": "1.03", "userIdentity": { "type": "IAMUser", "principalId": "A1B2C3D4E5F6G7EXAMPLE", "arn": "arn:aws:iam::111122223333:user/myUserName", "accountId": "111122223333", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "userName": "myUserName" }, "eventTime": "2015-03-18T19:04:42Z", "eventSource": "lambda.amazonaws.com", "eventName": "DeleteFunction20150331", "awsRegion": "us-east-1", "sourceIPAddress": "127.0.0.1", "userAgent": "Python-httplib2/0.8 (gzip)", "requestParameters": { "functionName": "basic-node-task" }, "responseElements": null, "requestID": "a2198ecc-cda1-11e4-aaa2-e356da31e4ff", "eventID": "20b84ce5-730f-482e-b2b2-e8fcc87ceb22", "eventType": "AwsApiCall", "recipientAccountId": "111122223333" } ] }
Per informazioni sui contenuti delle registrazioni CloudTrail, consulta i contenuti delle registrazioni CloudTrail nella Guida per l'utente AWS CloudTrail.