Come posso configurare una notifica di eventi Amazon S3 per invocare una funzione Lambda presente in un altro account AWS?
Desidero che il mio bucket Amazon Simple Storage Service (Amazon S3) invochi una funzione AWS Lambda in un altro account AWS.
Risoluzione
Per configurare un bucket Amazon S3 in modo che invochi una funzione Lambda in un altro account AWS, completa i seguenti passaggi:
- Aggiorna la policy delle autorizzazioni basata sulle risorse della funzione Lambda per concedere l'autorizzazione di invocazione ad Amazon S3.
- Crea una notifica di evento Amazon S3 che invochi la funzione Lambda.
Importante: la funzione Lambda deve trovarsi nella stessa Regione AWS del bucket S3.
Per informazioni sulla migrazione delle funzioni, consulta Come faccio a eseguire la migrazione di una funzione Lambda verso un altro account o Regione AWS utilizzando la console Lambda?
Aggiorna la policy delle autorizzazioni basata sulle risorse della funzione Lambda per concedere l'autorizzazione di invocazione ad Amazon S3
Console di gestione AWS
Per aggiornare la policy delle autorizzazioni basata sulle risorse della funzione Lambda per concedere l'autorizzazione di invocazione ad Amazon S3, completa i seguenti passaggi:
- Apri la pagina Funzioni della console Lambda con l'account AWS in cui si trova la funzione Lambda.
- Scegli il nome della funzione Lambda che desideri venga invocata da Amazon S3.
- Nella scheda Configurazione, scegli ** Autorizzazioni**.
- Nel pannello Policy basata sulle risorse, scegli Aggiungi autorizzazioni.
- Nel pannello Istruzione della policy, scegli Servizio AWS. Viene visualizzato l'elenco a discesa Servizio.
- Nell'elenco a discesa Servizio, scegli S3 per visualizzare altri campi.
- Per ID istruzione, inserisci un ID univoco per l'istruzione per differenziare l'istruzione che crei all'interno della policy.
- Per Account di origine, inserisci l'ID dell'account AWS che ospita il bucket S3.
- Per ARN di origine, inserisci l'ARN del bucket S3. Utilizza il seguente formato:
Nota: sostituisci bucket_name con il nome del tuo bucket S3.arn:aws:s3:::bucket_name - Per Operazione, seleziona lambda:InvokeFunction dall'elenco a discesa.
- Scegli Salva.
Per ulteriori informazioni, consulta Visualizzazione delle policy IAM basate sulle risorse in Lambda.
AWS CLI
Nota: se ricevi messaggi di errore durante l'esecuzione dei comandi dell'interfaccia della linea di comando AWS (AWS CLI), consulta la sezione Troubleshoot AWS CLI errors. Inoltre, assicurati di utilizzare la versione più recente di AWS CLI.
Aggiorna la policy delle autorizzazioni basata sulle risorse della funzione Lambda per concedere l'autorizzazione di invocazione ad Amazon S3 con l'API add-permission simile alla seguente:
aws lambda add-permission \--function-name LambdaFunction_name \ --action lambda:InvokeFunction \ --principal s3.amazonaws.com \ --source-arn arn:aws:s3:::bucket_name \ --source-account account-id \ --statement-id "unique_statement_ID"
Nota: sostituisci LambdaFunction_name, bucket_name e unique_statement_ID con le tue variabili.
Crea una notifica di evento Amazon S3 che invochi la funzione Lambda
Console di gestione AWS
Segui le istruzioni per attivare e configurare le notifiche di evento utilizzando la console Amazon S3.
AWS CLI
Per creare una notifica di evento Amazon S3 che invochi la funzione Lambda, utilizza il comando put-bucket-notification-configuration.
Importante: prima di utilizzare il comando put-bucket-notification, verifica di non avere altre notifiche di evento configurate nel bucket S3. Il comando put-bucket-notification-configuration esegue un'operazione di sostituzione su qualsiasi configurazione di notifica esistente anziché un'aggiunta.
Per verificare se sono già presenti configurazioni Notifica evento per il bucket, esegui questo comando:
aws s3api get-bucket-notification-configuration --bucket bucket_name
Se il comando precedente restituisce un oggetto JSON vuoto o nessuna risposta, ciò significa che non è presente alcuna configurazione Notifica evento esistente. Crea e salva un nuovo file denominato notification.json con la seguente configurazione:
{ "LambdaFunctionConfigurations": [ { "Id": "my-lambda-function-s3-event-configuration", "LambdaFunctionArn": "LambdaFunction_ARN", "Events": [ "s3:ObjectCreated:" ], "Filter": { "Key": { "FilterRules": [ { "Name": "prefix"|"suffix", "Value": "string" } ] } } } ] }
Nota: sostituisci LambdaFunction_ARN con l'ARN della tua funzione Lambda. Sostituisci il prefisso e il suffisso con le tue variabili per la regola di filtro.
Se get-bucket-notification-configuration restituisce il JSON di una configurazione Notifica evento esistente, salva la configurazione JSON esistente come file denominato notification.json. Aggiungi la nuova configurazione di notifica Lambda a una chiave LambdaFunctionConfigurations esistente o crea una nuova chiave con la sintassi JSON mostrata nell'esempio seguente. Aggiungi la chiave al file notification.json:
{ ... # Non Lambda event configurations like SNS, SQS etc. , "LambdaFunctionConfigurations": [ { "Id": "my-lambda-function-s3-event-configuration", "LambdaFunctionArn": "LambdaFunction_ARN", "Events": [ "s3:ObjectCreated:" ], "Filter": { "Key": { "FilterRules": [ { "Name": "prefix"|"suffix", "Value": "string" } ] } } }, {...}, #Other pre-existing Lambda Function configurations ] }
Dopo aver creato notification.json, esegui questo comando per aggiornare la configurazione Notifica evento di S3:
aws s3api put-bucket-notification-configuration \ --bucket bucket_name \ --notification-configuration file://notification.json
Nota: sostituisci bucket_name con il nome del tuo bucket S3.
Testa la funzione Lambda
Per testare la funzione Lambda con la console Lambda, consulta Test di una funzione Lambda con un evento fittizio. Se la funzione non viene invocata dalla Notifica evento, consulta Come posso risolvere il problema delle notifiche degli eventi Amazon S3 che non invocano una funzione Lambda?
Informazioni correlate
Come posso consentire alla mia funzione Lambda di accedere al mio bucket Amazon S3?
- Argomenti
- ServerlessCompute
- Tag
- AWS Lambda
- Lingua
- Italiano
Video correlati

