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

Invoke

Richiama una funzione Lambda. È possibile richiamare una funzione in modo sincrono (e attendere la risposta) o asincrono. Per impostazione predefinita, Lambda richiama la funzione in modo sincrono (ad esempio, InvocationType è RequestResponse). Per richiamare una funzione in modo asincrono, impostare InvocationType su Event. Lambda invia l'oggetto ClientContext alla funzione solo per chiamate sincrone.

Per l'invocazione sincrona, i dettagli sulla risposta della funzione, compresi gli errori, sono inclusi nel corpo e nelle intestazioni della risposta. Per entrambi i tipi di invocazione, sono disponibili ulteriori informazioni nel log di esecuzione e nella traccia.

Quando si verifica un errore, la funzione può essere richiamata più volte. Il comportamento dei tentativi varia in base al tipo di errore, al client, all'origine evento e al tipo di invocazione. Ad esempio, se richiami una funzione in modo asincrono e questa restituisce un errore, Lambda esegue la funzione fino ad altre due volte al massimo. Per ulteriori informazioni, consulta Gestione di errori e tentativi automatici in Lambda.

Per l'invocazione asincrona, Lambda aggiunge eventi a una coda prima di inviarli alla funzione. Se la funzione non dispone di capacità sufficiente per tenere il passo con la coda, gli eventi potrebbero andare persi. Talvolta la funzione può ricevere lo stesso evento più volte, anche se non si verifica alcun errore. Per mantenere gli eventi che non sono stati elaborati, configurare la funzione con una coda DLQ (coda di messaggi non instradabili).

Il codice di stato della risposta API non riflette gli errori della funzione. I codici di errore sono riservati agli errori che impediscono l'esecuzione della funzione, ad esempio gli errori relativi alle autorizzazioni, gli errori relativi alle quote o i problemi relativi al codice e alla configurazione della funzione. Ad esempio, Lambda restituisce TooManyRequestsException se l'esecuzione della funzione provoca il superamento di un limite di simultaneità a livello di account (ConcurrentInvocationLimitExceeded) o a livello di funzione (ReservedFunctionConcurrentInvocationLimitExceeded).

Per le funzioni con un lungo timeout, il client potrebbe essere scollegato durante la chiamata sincrona mentre è in attesa della risposta. Configurare il client HTTP, l'SDK, il firewall o il sistema operativo per consentire le connessioni lunghe con timeout o le impostazioni keep-alive.

Questa operazione richiede l'autorizzazione per l'InvokeFunctionazione lambda:. Per ulteriori informazioni su come configurare le autorizzazioni per le chiamate tra account, consulta Concessione dell'accesso alle funzioni ad altri account.

Sintassi della richiesta

POST /2015-03-31/functions/FunctionName/invocations?Qualifier=Qualifier HTTP/1.1 X-Amz-Invocation-Type: InvocationType X-Amz-Log-Type: LogType X-Amz-Client-Context: ClientContext Payload

Parametri della richiesta URI

La richiesta utilizza i seguenti parametri URI.

ClientContext

Fino a 3.583 byte di dati codificati in base64 sul client dell'invocazione da passare alla funzione nell'oggetto contesto. Lambda invia l'oggetto ClientContext alla funzione solo per chiamate sincrone.

FunctionName

Il nome, la versione o l'alias della funzione Lambda.

Formati di nome
  • Nome della funzione: my-function (solo nome), my-function:v1 (con alias).

  • ARN funzione: arn:aws:lambda:us-west-2:123456789012:function:my-function.

  • ARN parziale: 123456789012:function:my-function.

Puoi aggiungere un numero di versione o un alias a qualsiasi formato. Il vincolo di lunghezza si applica solo all'ARN completo. Se specifichi solo il nome della funzione, questo avrà un limite di lunghezza di 64 caratteri.

Limitazioni di lunghezza: lunghezza minima di 1. Lunghezza massima di 170.

Modello: (arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}(-gov)?-[a-z]+-\d{1}:)?(\d{12}:)?(function:)?([a-zA-Z0-9-_\.]+)(:(\$LATEST|[a-zA-Z0-9-_]+))?

Campo obbligatorio: sì

InvocationType

Scegliere tra le seguenti opzioni.

  • RequestResponse (predefinito): richiama la funzione in modo sincrono. Tiene la connessione aperta fino a quando la funzione non restituisce una risposta o un timeout. La risposta API include la risposta della funzione e dati aggiuntivi.

  • Event: richiama la funzione in modo asincrono. Invia eventi che non riescono più volte alla coda DLQ della funzione (se è configurata). La risposta API include solo un codice di stato.

  • DryRun: convalida i valori dei parametri e verifica che l'utente o il ruolo disponga dell'autorizzazione per richiamare la funzione.

Valori validi: Event | RequestResponse | DryRun

LogType

Impostare su Tail per includere il log di esecuzione nella risposta. Si applica solo alle funzioni richiamate in modo sincrono.

Valori validi: None | Tail

Qualifier

Specifica una versione o un alias per richiamare una versione pubblicata della funzione.

Limitazioni di lunghezza: lunghezza minima di 1. La lunghezza massima è 128 caratteri.

Modello: (|[a-zA-Z0-9$_-]+)

Corpo della richiesta

La richiesta accetta i seguenti dati binari.

Payload

Il codice JSON che vuoi fornire come input alla funzione Lambda.

È possibile inserire direttamente il JSON. Ad esempio, --payload '{ "key": "value" }'. Puoi inoltre specificare un percorso file. Ad esempio, --payload file://payload.json.

Sintassi della risposta

HTTP/1.1 StatusCode X-Amz-Function-Error: FunctionError X-Amz-Log-Result: LogResult X-Amz-Executed-Version: ExecutedVersion Payload

Elementi di risposta

Se l'operazione riesce, il servizio restituisce la seguente risposta HTTP.

StatusCode

Per una richiesta riuscita, il codice di stato HTTP è compreso nell'intervallo 200. Per il tipo di invocazione RequestResponse, questo codice di stato è 200. Per il tipo di invocazione Event, questo codice di stato è 202. Per il tipo di invocazione DryRun, il codice di stato è 204.

La risposta restituisce le seguenti intestazioni HTTP.

ExecutedVersion

La versione della funzione eseguita. Quando si richiama una funzione con un alias, indica a quale versione è stato risolto l'alias.

Limitazioni di lunghezza: lunghezza minima di 1. La lunghezza massima è 1024 caratteri.

Modello: (\$LATEST|[0-9]+)

FunctionError

Se presente, indica che si è verificato un errore durante l'esecuzione della funzione. I dettagli sull'errore sono inclusi nel payload di risposta.

LogResult

Gli ultimi 4 KB del log di esecuzione, che è codificato in base64.

La risposta restituisce quanto segue come corpo HTTP.

Payload

Risposta della funzione o oggetto di errore.

Errori

Per informazioni sugli errori comuni a tutte le operazioni, consultare Errori comuni.

EC2AccessDeniedException

Sono necessarie autorizzazioni aggiuntive per configurare le impostazioni VPC.

Codice di stato HTTP: 502

EC2ThrottledException

Amazon EC2 ha limitato AWS Lambda durante l'inizializzazione della funzione Lambda tramite il ruolo di esecuzione fornito per la funzione.

Codice di stato HTTP: 502

EC2UnexpectedException

AWS Lambda ha ricevuto un'eccezione client Amazon EC2 imprevista durante la configurazione della funzione Lambda.

Codice di stato HTTP: 502

EFSIOException

Si è verificato un errore durante la lettura o la scrittura su un file system connesso.

Codice di stato HTTP: 410

EFSMountConnectivityException

La funzione Lambda non è riuscita a stabilire una connessione di rete al file system configurato.

Codice di stato HTTP: 408

EFSMountFailureException

La funzione Lambda non è riuscita a montare il file system configurato a causa di un problema di autorizzazione o di configurazione.

Codice di stato HTTP: 403

EFSMountTimeoutException

La funzione Lambda ha stabilito una connessione di rete al file system configurato, ma l'operazione di montaggio è scaduta.

Codice di stato HTTP: 408

ENILimitReachedException

AWS Lambda non ha creato un'interfaccia di rete elastica nel VPC, specificata come parte della configurazione della funzione Lambda, perché è stato raggiunto il limite per le interfacce di rete. Per ulteriori informazioni, consulta la pagina relativa alle quote di .

Codice di stato HTTP: 502

InvalidParameterValueException

Uno dei parametri della richiesta non è valido.

Codice di stato HTTP: 400

InvalidRequestContentException

Impossibile analizzare il corpo della richiesta come JSON.

Codice di stato HTTP: 400

InvalidRuntimeException

Il runtime o la versione di runtime specificata non sono supportati.

Codice di stato HTTP: 502

InvalidSecurityGroupIDException

L'ID del gruppo di sicurezza fornito nella configurazione VPC della funzione Lambda non è valido.

Codice di stato HTTP: 502

InvalidSubnetIDException

L'ID della sottorete fornito nella configurazione VPC della funzione Lambda non è valido.

Codice di stato HTTP: 502

InvalidZipFileException

AWS Lambda non è riuscito a decomprimere il pacchetto di distribuzione.

Codice di stato HTTP: 502

KMSAccessDeniedException

Lambda non è riuscito a decrittare le variabili d'ambiente perché l'accesso a AWS KMS è stato negato. Controlla le autorizzazioni KMS della funzione Lambda.

Codice di stato HTTP: 502

KMSDisabledException

Lambda non è riuscito a decrittare le variabili d'ambiente perché la AWS KMS key utilizzata è disabilitata. Controlla le impostazioni delle chiavi KMS della funzione Lambda.

Codice di stato HTTP: 502

KMSInvalidStateException

Lambda non è riuscito a decrittare le variabili di ambiente perché lo stato della AWS KMS key utilizzata è non valido per Decrypt (Decritta). Controlla le impostazioni delle chiavi KMS della funzione.

Codice di stato HTTP: 502

KMSNotFoundException

Lambda non è riuscito a decrittare le variabili d'ambiente perché la AWS KMS key non è stata trovata. Controlla le impostazioni delle chiavi KMS della funzione.

Codice di stato HTTP: 502

RecursiveInvocationException

Lambda ha rilevato che la funzione viene richiamata in un ciclo ricorsivo con altre risorse AWS e ha interrotto l'invocazione della funzione.

Codice di stato HTTP: 400

RequestTooLargeException

Il payload della richiesta ha superato la quota di immissione JSON del corpo della richiesta Invoke. Per ulteriori informazioni, consulta la pagina relativa alle quote di .

Codice di stato HTTP: 413

ResourceConflictException

La risorsa esiste già o è in corso un'altra operazione.

Codice di stato HTTP: 409

ResourceNotFoundException

La risorsa specificata nella richiesta non esiste.

Codice di stato HTTP: 404

ResourceNotReadyException

La funzione è inattiva e la sua connessione VPC non è più disponibile. Attendi il ripristino della connessione VPC e riprova.

Codice di stato HTTP: 502

ServiceException

Il servizio AWS Lambda ha riscontrato un errore interno.

Codice di stato HTTP: 500

SnapStartException

L'hook di runtime di afterRestore() ha riscontrato un errore. Per ulteriori informazioni, consulta i CloudWatch log di Amazon.

Codice di stato HTTP: 400

SnapStartNotReadyException

Lambda sta inizializzando la tua funzione. È possibile richiamare la funzione quando lo stato della funzione diventa Active.

Codice di stato HTTP: 409

SnapStartTimeoutException

Lambda non è riuscita a ripristinare lo snapshot entro il limite di timeout.

Codice di stato HTTP: 408

SubnetIPAddressLimitReachedException

AWS Lambda non è riuscito a configurare l'accesso VPC per la funzione Lambda perché una o più sottoreti configurate non hanno indirizzi IP disponibili.

Codice di stato HTTP: 502

TooManyRequestsException

È stato superato il limite di throughput della richiesta. Per ulteriori informazioni, consulta la pagina relativa alle quote di .

Codice di stato HTTP: 429

UnsupportedMediaTypeException

Il tipo di contenuto del corpo della richiesta Invoke non è JSON.

Codice di stato HTTP: 415

Vedi anche

Per ulteriori informazioni sull'utilizzo di questa API in uno degli SDK AWS specifici della lingua, consulta quanto segue: