View a markdown version of this page

Risoluzione dei problemi delle funzioni Web Lambda - 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à.

Risoluzione dei problemi delle funzioni Web Lambda

Inizia con lo stato della risorsa, la risposta HTTP e i log della richiesta. Le funzioni Web espongono uno stato separato per la funzione, la revisione, l'endpoint e ogni regione di un endpoint. MultiRegion PerRegion Un errore in una risorsa non sempre modifica lo stato delle altre.

Nota

Prima di eseguire i comandi di diagnostica in questo argomento, assicurati di disporre dell' AWS CLI accesso e dell'autorizzazione per chiamare le operazioni della funzione get-* Web Lambda.

Raccogliere informazioni diagnostiche

  1. Ottieni la funzione Web, la revisione e l'endpoint. Registra ognistate, stateReasonupdateStatus, e updateStatusReason valore.

    aws lambda-web get-web-function \ --function-name my-web-app aws lambda-web get-web-function-revision \ --function-name my-web-app \ --revision-id revision-id aws lambda-web get-web-function-endpoint \ --function-name my-web-app \ --endpoint-name prod

    Sostituisci my-web-app con il nome della funzione, revision-id con la revisione da esaminare e prod con il nome dell'endpoint.

  2. Invia una richiesta e registra il codice di stato e le intestazioni di risposta.

    curl --include https://endpoint-domain/path

    L'lambda-web-request-idintestazione identifica la richiesta. Se presente, l'lambda-web-logstreamintestazione identifica il flusso di log di Amazon CloudWatch Logs che ha gestito la richiesta e l'lambda-web-error-typeintestazione identifica un errore della piattaforma.

  3. Esamina i log delle applicazioni e del sistema nel gruppo di log centralizzato nella regione principale di Web Function. Per i nomi dei gruppi di log e le indicazioni sulla correlazione, vedere. Registri delle funzioni Web in Amazon CloudWatch Logs

  4. Per MultiRegion e per gli PerRegion endpoint, ispeziona ogni ingresso. regionalEndpoints Un corretto stato a livello di endpoint non significa che l'aggiornamento più recente sia riuscito in ogni regione.

Problemi di distribuzione e avvio

Caratteristiche Cosa controllare Risoluzione
Una revisione è Failed Le revisionistateReason, la versione dell'oggetto Amazon S3 di riferimento, la policy del bucket, il ruolo di esecuzione, il runtime e la chiave. AWS KMS Correggi la configurazione sottostante e crea una nuova revisione. Le revisioni sono immutabili e una revisione non riuscita non viene ripristinata. Active
L'endpoint lo èActive, ma le richieste falliscono durante l'avvio dell'applicazione Registri di sistema e delle applicazioni per errori nei file di immissione, errori di dipendenza o server che non sono mai in ascolto. AWS_LAMBDA_HTTP_ENDPOINT Esegui l'applicazione pacchettizzata localmente, verifica il file di ingresso e le dipendenze di produzione e ascolta sull'host e sulla porta esatti forniti da Lambda. Implementa la correzione come nuova revisione.
Un aggiornamento dell'endpoint non riesce updateStatusReasonsull'endpoint e, per MultiRegion e PerRegion endpoint, su ogni voce regionale. Correggi la dipendenza segnalata o l'errore regionale, quindi richiama per UpdateWebFunctionEndpoint riprovare l'aggiornamento.
does not have s3:GetObject - create-web-function-revision Il codice viene letto da Amazon S3 e la policy del bucket o la policy di identità del chiamante non hanno accesso in lettura. Grant s3:GetObject e s3:GetObjectVersion nella policy bucket (per il servizio Lambda) e nella policy di identità del chiamante.
AccessDenied - get-web-function-endpoint La policy IAM Resource non include l'endpoint. web-function/name/*Includi nella policyResource.

Per evitare errori di distribuzione ripetuti, convalida la configurazione e l'avvio in una revisione di test prima di creare una revisione di produzione.

Errori della CLI e dei pacchetti

Errore o sintomo Causa Risoluzione
invalid choice: lambda-web L'installazione è AWS CLI precedente ai comandi di Web Function. Aggiorna AWS CLI e verifica che aws lambda-web help elenchi le operazioni della funzione Web.
Unknown parameter: BuildConfig La richiesta utilizza i nomi dei PascalCase membri. Usa i membri della richiesta CamelCase mostrati in questa guida, ad esempio, buildConfig ecodeConfig. serviceConfig
Cannot find module '/var/task/index.js' Il file di immissione richiesto non è presente nella radice dell'archivio. index.jsInseriscilo nella radice del pacchetto di distribuzione. Includi tutti i file e le dipendenze di produzione che importa.
ERR_MODULE_NOT_FOUNDper un file di applicazione L'archivio omette un file sorgente o creato importato daindex.js. Ispeziona l'archivio conunzip -l, aggiungi il file mancante e crea una nuova revisione.
Application.TimeoutListenErroro HTTP 502 alla prima richiesta L'applicazione esegue l'ascolto su un indirizzo di solo loopback, ad esempio 127.0.0.1 orlocalhost, o su una porta diversa da quella in ingresso. AWS_LAMBDA_HTTP_ENDPOINT Analizza AWS_LAMBDA_HTTP_ENDPOINT e ascolta esattamente su quell'host e sulla stessa porta.
EMFILE o too many open files L'applicazione perde socket, file o connessioni al database tra richieste simultanee. Chiudi gli handle per richiesta, i pool di connessioni associati e monitora gli handle aperti in caso di concorrenza sostenuta.
JavaScript heap out of memory L'applicazione ha raggiunto il limite di heap V8 predefinito, che è inferiore al limite di memoria di 2 GB dell'ambiente di esecuzione, oppure le richieste simultanee hanno esaurito la memoria di ambiente rimanente. Verifica la presenza di oggetti conservati e cache illimitate e riduci la concorrenza. Se l'applicazione richiede un heap più grande, imposta un limite di heap V8 più grande con in. --max-old-space-size NODE_OPTIONS Lasciate memoria per i buffer, le allocazioni native e il runtime.
Dipendenza/in fase di esecuzione Cannot find module ERR_MODULE_NOT_FOUND node_modulesnon è stato incluso nel pacchetto di distribuzione. Installa le dipendenze di produzione e includile nel pacchetto: eseguinpm ci --omit=dev, quindi conferma conunzip -l function.zip.
I file statici restituiscono HTTP 404 L'applicazione risolve i percorsi dei file relativi alla directory di lavoro oppure i file non sono stati impacchettati. Risolvi i percorsi dalla directory del modulo (__dirnamein CommonJS o import.meta.dirname nei moduli ES) e conferma che i file siano nel pacchetto con. unzip -l
Errori di importazione ESM, come «Impossibile utilizzare l'istruzione di importazione all'esterno di un modulo» package.jsonnon dichiara il tipo di modulo. Aggiungi "type": "module" o usa CommonJS in modo coerente. package.json

Richieste HTTP non riuscite

Risposta Cause comuni Risoluzione
HTTP 400 Il client ha utilizzato un metodo HTTP non supportato o ha inviato una richiesta che l'endpoint non è riuscito a elaborare. Utilizza un metodo supportato e rivedi le intestazioni e i limiti della richiesta in. Richieste e risposte HTTP
HTTP 403

L'autorizzazione di una IamAuth richiesta non è riuscita per uno dei seguenti motivi:

  • La richiesta non è firmata.

  • La richiesta omette l'intestazione dell'hash del contenuto richiesta.

  • La richiesta ha una firma non valida.

  • Il chiamante non dispone dell'autorizzazione. Per le chiamate tra più account, potrebbe mancare la politica di identità o la politica basata sulle risorse.

Verifica che la richiesta includa l'X-Amz-Content-SHA256intestazione richiesta, rivedi la firma e verifica lambda:InvokeWebFunctionEndpoint nelle politiche di identità e risorse richieste. Per i requisiti di firma, consultaFirma delle richieste. Per i requisiti di autorizzazione, vedereConcessione del permesso di invocazione a un preside.
HTTP 404 L'applicazione non definisce la route richiesta o il client utilizza un dominio endpoint obsoleto. L'Hostintestazione potrebbe inoltre non corrispondere al dominio dell'endpoint. Se configuri una porta principale come Amazon CloudFront per inoltrare l'Hostintestazione del visualizzatore all'origine, Lambda restituisce questo errore lambda-web-error-type con set to. Platform.InvalidEndpoint Verifica l'attualedomainName, il percorso della richiesta e i percorsi dell'applicazione. Utilizza lambda-web-error-type e registra per distinguere una risposta della piattaforma da una risposta dell'applicazione.
HTTP 409 L'endpoint non lo èActive, oppure l'endpoint è stato risolto in una revisione che non lo è. Active Ispeziona lo stato della revisione e dell'endpoint. Se l'endpoint èPending, attendi e riprova; se lo èFailed, crea un nuovo endpoint. Per le revisioni, rimuovi le revisioni non riuscite o inattive dai pesi dell'endpoint e crea una revisione sostitutiva quando necessario.
HTTP: 429

Si è verificato uno degli eventi seguenti:

  • La richiesta ha superato il limite di velocità dell'endpoint.

  • L'endpoint ha esaurito la capacità dell'ambiente.

  • L'account ha raggiunto un limite di richieste regionali o vCPU.

  • Troppi ambienti di esecuzione si inizializzavano contemporaneamente per l'endpoint.

Leggi l'lambda-web-error-typeintestazione per identificare il limite applicato. Consulta Tipi di errore delle funzioni Web. Esamina le metriche relative all'acceleratore (EndpointRequestThrottles,, eAccountActiveVCPUArm64Throttles) AccountRequestThrottlesEndpointActiveEnvironmentThrottles, le metriche della capacità attiva, le impostazioni degli endpoint e i limiti applicati all'account. L'inizializzazione simultanea throttling () non incrementa una metrica di accelerazione. Platform.EndpointConcurrentInitThrottle Riprova solo le richieste idempotenti, usando backoff e jitter.
HTTP 502 L'applicazione non è riuscita prima di iniziare a servire le richieste, Lambda non è riuscita a preparare l'ambiente di esecuzione per la funzione Web oppure l'applicazione ha restituito una risposta non valida. Utilizza lambda-web-error-type i registri di sistema per identificare la causa. Consulta Tipi di errore delle funzioni Web.
HTTP 503 L'applicazione si è bloccata durante la gestione di una richiesta, l'endpoint è disabilitato o Lambda non è riuscita a ottenere capacità o a raggiungere l'applicazione. Utilizzalambda-web-error-type, se presenti, i log dell'applicazione e del sistema per identificare la causa. Consulta Tipi di errore delle funzioni Web. Un 503 senza lambda-web-error-type può indicare una perdita di carico temporanea o un errore interno. In entrambi i casi, riprova le richieste idempotenti con backoff e jitter.
HTTP 504 L'applicazione non ha risposto entro il timeout di revisione (). Runtime.RequestTimeout Controllate la latenza della revisione timeoutSeconds e quella successiva.
Altro HTTP 5xx L'applicazione ha restituito lo stato 5xx oppure Lambda ha riscontrato un errore interno (lambda-web-error-typenessuna intestazione). Utilizza l'ID della richiesta, l'intestazione del flusso di log, i registri delle applicazioni e i registri di sistema per identificare l'origine e verificare lo stato del processo.
La richiesta si blocca o scade in caso di caricamento di grandi dimensioni; i log mostrano 0 byte ricevuti Il gestore ha iniziato a scrivere la risposta mentre il corpo della richiesta era ancora in arrivo. Il percorso di richiesta della funzione Web è half-duplex: Lambda inoltra l'intero corpo della richiesta prima di fornire la risposta dell'applicazione. Leggi completamente il corpo della richiesta prima di scrivere la risposta. I corpi con dimensioni inferiori a circa 1 MB si adattano ai buffer dei socket e possono mascherarlo.

Limiti di intestazione della richiesta

Alle intestazioni delle richieste si applicano due limiti. Lambda limita il blocco di intestazione a 128 KB e rifiuta le richieste più grandi prima che raggiungano la tua funzione. Il server Node.js HTTP della tua funzione limita anche il numero di righe di intestazione che accetta. Entrambi restituiscono campi di intestazione della richiesta HTTP 431 troppo grandi, come mostrato nella tabella seguente. Per i limiti della piattaforma, vedi. Limiti dell'intestazione

Caratteristiche Causa Risoluzione
HTTP 431 conlambda-web-error-type: Platform.HeaderTooLarge. Nessuna chiamata e nessuna immissione nel registro dell'applicazione. L'intestazione della richiesta supera i 131.072 byte (128 KiB), misurata sull'intestazione completa della richiesta inviata dal client. Riduci la dimensione delle intestazioni della richiesta. Questo limite non può essere aumentato.
HTTP 431 con lambda-web-request-id e lambda-web-logstream ma no. lambda-web-error-type Il gestore non funziona. La richiesta contiene più di 1.000 righe di intestazione ricevute dal Node.js server, incluse le intestazioni aggiunte da Lambda. server.maxHeadersCountIncrementa il codice del server o riduci il numero di righe di intestazione inviate dal client.

Il limite di dimensione conta ogni byte dell'intestazione della richiesta man mano che il client la invia. Ciò include la riga di richiesta, ogni riga di intestazione (incluse Host tutte le intestazioni aggiunte dalla libreria del client) e i terminatori di riga. Le intestazioni aggiunte da Lambda non vengono conteggiate ai fini del limite di dimensione.

Quando una richiesta supera il limite di dimensione, Lambda la rifiuta prima che raggiunga la funzione, quindi la richiesta non produce alcuna chiamata e nessuna immissione nel registro dell'applicazione. L'intestazione della lambda-web-error-type risposta identifica la causa.

Il limite di Node.js conteggio conta le righe di intestazione, non i nomi di intestazione distinti. Un'intestazione ripetuta tre volte conta tre volte. Di conseguenza, una richiesta che accumula x-forwarded-for o traccia le intestazioni attraverso una catena di proxy può raggiungere il limite. Nessuna singola intestazione deve avere un aspetto insolito perché ciò accada. Il limite viene misurato sulla richiesta ricevuta dalla funzione, che include le intestazioni aggiunte da Lambda. Di conseguenza, un client che invia poco meno di 1.000 righe di intestazione può raggiungerlo. Quando ciò accade, la richiesta raggiunge l'ambiente di esecuzione e il Node.js server la rifiuta durante l'analisi. Il tuo gestore non funziona. La risposta contiene le lambda-web-logstream intestazioni lambda-web-request-id and, ma non contiene l'lambda-web-error-typeintestazione.

Se l'applicazione deve accettare più righe di intestazione di quelle consentite dall'Node.jsimpostazione predefinita, aumentate il Node.js limite nel codice del server. Imposta server.maxHeadersCount il numero di righe di intestazione da accettare o impostalo per 0 disabilitare il controllo del Node.js conteggio. Il limite di dimensione di 128 KB è ancora valido.

const server = http.createServer(handler); server.maxHeadersCount = 2000; server.listen(port, host);

Non è necessario modificare il limite di dimensione dell'Node.jsintestazione. I Node.js runtime gestiti lo impostano in modo che corrisponda al limite della piattaforma, quindi il limite della piattaforma si applica alla dimensione dell'intestazione. Non è possibile aumentare il limite della piattaforma dal codice dell'applicazione.

Per rimanere entro i limiti, spostate lo stato di massa dalle intestazioni al corpo della richiesta, eliminate i cookie e comprimete le intestazioni di tracciamento e proxy ridondanti prima che la richiesta raggiunga l'endpoint. Se una CloudFront distribuzione si trova davanti all'endpoint, inoltra solo le intestazioni necessarie all'applicazione nella policy di richiesta di origine.

Tipi di errore delle funzioni Web

Quando una richiesta a un endpoint Web Function fallisce, Lambda restituisce lambda-web-error-type un'intestazione di risposta che identifica l'errore. Il valore utilizza il formato<Prefix>.<ErrorReason>: il prefisso indica dove si è verificato l'errore e il motivo specifica la causa.

Prefix Dove si è verificato l'errore
Platform. Il livello della piattaforma Lambda, che indirizza e convalida le richieste, controlla le autorizzazioni e impone i limiti.
Runtime. Il runtime gestito che carica ed esegue la tua funzione.
Application. Il codice della tua funzione.

Ad esempio, Runtime.RequestTimeout significa che il runtime gestito ha segnalato che la funzione non ha risposto entro il timeout configurato e Application.InitCodeError significa che il codice di inizializzazione utilizzato ha generato un errore.

Lambda include l'lambda-web-error-typeintestazione quando l'errore è stato causato dalla richiesta stessa o dalla funzione, dalla sua configurazione o dal suo codice. Lambda omette l'intestazione per gli errori interni del servizio e per gli errori di autorizzazione, in modo che nessun dettaglio venga rivelato a un chiamante non autorizzato. Un valore indica un problema nel percorso tra la piattaforma Lambda e la tua funzione. Nel percorso della richiesta, l'errore identifica dove la richiesta non è riuscita. Nel percorso di risposta, utilizzate il valore insieme alla telemetria dell'applicazione per capire cosa è successo.

Tipi di errore Description
Platform.MalformedRequest Lambda non è riuscita ad analizzare la richiesta oppure la riga o il metodo della richiesta non sono stati accettati.
Platform.MissingHostHeader La richiesta non includeva un'intestazione Host, quindi Lambda non è riuscita a risolvere l'endpoint di destinazione.
Platform.InvalidEndpoint L'intestazione Host non è stata risolta in un endpoint esistente valido.
Platform.HeaderTooLarge La sezione dell'intestazione della richiesta ha superato il limite di dimensione dell'intestazione Lambda.
Platform.DisallowedHeader La richiesta conteneva un'intestazione che Lambda non accetta. Lambda restituisce HTTP 400.
Platform.UnsupportedHttpVersion La richiesta utilizzava una versione HTTP diversa da quella HTTP/1.1 richiesta da Web Functions.
Platform.CannotAssumeRole Lambda non può assumere il ruolo di esecuzione della funzione.
Platform.KMSDecryptionError Lambda non è riuscita a utilizzare la AWS KMS chiave configurata per decrittografare le variabili di ambiente o altri dati necessari per inizializzare la funzione.
Platform.InvalidNetworkConfiguration Una risorsa di rete VPC da cui dipende la funzione non è valida. Per trovare la causa, consulta. Problemi di rete e connettività
Platform.RevisionNotActive La revisione della funzione oggetto della richiesta non è nello stato Attivo. La revisione potrebbe essere ancora attiva o potrebbe non essere stata attivata. Controlla lo stato della revisione; se l'attivazione è ancora in corso, riprova dopo un breve periodo.
Platform.EndpointNotActive L'endpoint non è nello stato Attivo. L'endpoint potrebbe essere ancora in fase di provisioning o potrebbe non essere altrimenti disponibile. Controlla lo stato dell'endpoint; se è ancora in fase di creazione, riprova dopo un breve periodo.
Platform.EndpointDisabled L'endpoint rateLimit è 0, quindi Lambda rifiuta tutte le richieste con HTTP 503. Imposta un valore diverso rateLimit da zero per riprendere il traffico.
Platform.AccountDisabled Le chiamate alle funzioni Web sono disattivate per l'account. Lambda restituisce HTTP 403. Contatto. Supporto AWS
Platform.AccountRequestThrottle La quota di frequenza delle richieste a livello di account è stata superata.
Platform.EndpointRequestThrottle La quota di frequenza delle richieste dell'endpoint è stata superata.
Platform.AccountActiveVCPUArm64Throttle È stata raggiunta la quota di vCPU attiva dell'account.
Platform.EndpointMaxEnvThrottle È stato raggiunto il limite massimo di ambienti dell'endpoint.
Platform.EndpointConcurrentInitThrottle Troppi ambienti di esecuzione si inizializzavano contemporaneamente per l'endpoint. Riprova con backoff esponenziale.
Runtime.RequestTimeout La funzione non ha restituito una risposta entro il timeout configurato.
Runtime.OutOfMemory La funzione ha superato il limite di memoria e il processo è stato interrotto.
Runtime.Unreachable Il processo di runtime si è bloccato, è terminato o ha rifiutato la connessione.
Runtime.Exit Il processo di runtime è terminato tra una richiesta e l'altra.
Runtime.ExitError Il processo di runtime è terminato con un errore.
Runtime.InvalidResponse Le intestazioni di risposta del runtime hanno superato il buffer di lettura.
Runtime.OriginRequestError Il processo di candidatura non è riuscito durante la gestione di una richiesta. Controlla i registri dell'applicazione per i dettagli.
Runtime.ImportCodeError Il runtime non è riuscito a importare o risolvere il punto di ingresso, ad esempio un modulo mancante o un percorso errato.
Runtime.InitTimeout La tua funzione ha superato il timeout di inizializzazione durante il provisioning della sandbox.
Application.InitCodeError Il codice di inizializzazione ha generato un errore prima che la funzione iniziasse a servire le richieste.
Application.TimeoutListenError Il codice di inizializzazione non ha iniziato ad ascoltare sulla porta prima della scadenza di inizializzazione.

Per le metriche di limitazione che identificano il limite applicato (per i tipi,, e Platform.EndpointMaxEnvThrottle di errore) Platform.AccountRequestThrottle Platform.EndpointRequestThrottlePlatform.AccountActiveVCPUArm64Throttle, vedi. Metriche di utilizzo e limitazione a livello regionale

Mancano i log o le metriche

  • Verifica che il ruolo di esecuzione possa creare gruppi e flussi di log e inserire eventi di log sia per il gruppo di log di destinazione che per il relativo gruppo di log. .local

  • Cerca nel gruppo di log centralizzato nella regione di origine. Non create strumenti di diagnostica che dipendono da aree di replica o gruppi di log temporanei. .local

  • Imposta su DEBUG quando systemLogLevel ne hai bisogno. platform.requestComplete

  • Consenti il ritardo nell'invio della telemetria dopo la creazione o l'aggiornamento delle risorse. Non trattate l'assenza temporanea di una metrica o di un evento di registro come prova che una richiesta non è stata eseguita.

  • Ricorda che le metriche sono scarse. Configura gli allarmi in modo che le metriche di errore mancanti non vengano violate, laddove appropriato.

Se non viene visualizzato alcun registro dell'applicazione, il ruolo di esecuzione potrebbe non avere le autorizzazioni Amazon CloudWatch Logs. Allega la policy AWSLambdaBasicExecutionRole gestita al ruolo di esecuzione, oppure concedilogs:CreateLogGroup, elogs:CreateLogStream. logs:PutLogEvents Per le autorizzazioni richieste, consulta Ruolo di esecuzione.

Problemi di archiviazione e crittografia del codice

Versione dell'oggetto Amazon S3 mancante o inaccessibile

Verifica che il bucket abbia ancora il controllo delle versioni abilitato, che esista la versione esatta dell'oggetto e che sia il chiamante che il responsabile del servizio Lambda dispongano delle autorizzazioni di lettura richieste. Se una revisione attiva perde l'accesso alla versione dell'oggetto bloccata, crea una nuova revisione che faccia riferimento a una versione disponibile. Per informazioni dettagliate, vedi Distribuzione del codice Web Function da Amazon S3.

AWS KMS errore di accesso

Controlla le autorizzazioni del chiamante, la politica delle chiavi, il contesto di crittografia, lo stato della chiave e l'autorizzazione del principale del servizio Lambda. kms:Decrypt Per MultiRegion gli PerRegion endpoint, verifica che esista una replica della AWS KMS chiave multiregionale e che sia utilizzabile in ogni regione di destinazione. Per informazioni dettagliate, vedi Crittografia a riposo per Web Functions.

Problemi con gli endpoint MultiRegionPerRegion

Usa il regionalEndpoints campo per identificare la regione interessata. Confronta la sua stateReason e updateStatusReason con le regioni sane. Controlla le quote regionali, le repliche AWS KMS delle chiavi, la disponibilità del runtime e lo stato di replica della revisione. Dopo aver corretto la causa, ripeti l'aggiornamento dell'endpoint. Per il modello di replica, vedere. Multi-Region dispiegamento

Per un MultiRegion endpoint, il routing basato sulla latenza (che indirizza le richieste verso la regione con la latenza misurata più bassa) non garantisce che ogni richiesta vada alla regione con la latenza più bassa. Esegui il test dalla posizione del client interessato e ispeziona i log dell'applicazione per determinare quale regione ha gestito la richiesta. Per un PerRegion endpoint, verificate anche la configurazione del DNS esterno o del routing front-door.

Problemi di rete e connettività

La maggior parte dei problemi di connettività deriva da una revisione in corso che non contiene alcun riferimento al connettore o fa riferimento a una versione precedente del connettore, oppure da sottoreti di connettori, gruppi di sicurezza o percorsi che bloccano il traffico.

Utilizzate la seguente sequenza per isolare un problema di connettività:

  1. Esegui get-web-function-endpoint. Controlla la modalità di distribuzione automatica e conferma quale revisione o revisioni ricevono traffico.

  2. Esegui get-web-function-revision per ogni revisione in corso. Verifica che lo stato sia Active e che faccia riferimento alla versione del connettore prevista.

  3. Esegui aws lambda-core get-network-connector --identifier con il connettore ARN delle revisioni. egressNetworkConnectorArn Conferma che State è così ACTIVE e, se il connettore è stato aggiornato, è cosìLastUpdateStatus. Successful Altrimenti, usa StateReasonCode o LastUpdateStatusReasonCode per identificare la causa, ad esempio InsufficientRolePermissionsInvalidSubnet, oSubnetOutOfIPAddresses.

  4. Verifica la destinazione in base all'indirizzo IP per separare la raggiungibilità della rete dalla risoluzione DNS.

  5. Controlla i percorsi della sottorete del connettore, i gruppi di sicurezza di destinazione e gli ACL di rete.

  6. Esamina i registri di flusso VPC nelle sottoreti dei connettori.

I sintomi più comuni includono i seguenti.

CaratteristicheVerifica
Internet pubblico funziona, ma le risorse VPC noLa revisione in corso non ha alcun riferimento al connettore.
L'accesso VPC funziona per alcune richiesteL'endpoint esegue il routing verso due revisioni con configurazioni di connettori diverse.
Un aggiornamento del connettore non ha alcun effettoLa revisione corrente fa riferimento a una versione precedente del connettore.
L'accesso pubblico si interrompe dopo l'aggiunta di un connettoreLe sottoreti del connettore non dispongono della route NAT o IPv6 richiesta.
Scadenza di una destinazione VPCIl gruppo di sicurezza di destinazione, la tabella di routing o l'ACL di rete bloccano la connessione.
I log di flusso non contengono record corrispondentiIl traffico non è entrato nel VPC. Ricontrolla la revisione del server e il riferimento al connettore.
I nomi privati falliscono ma le connessioni IP dirette funzionanoControlla gli attributi DNS del VPC e le associazioni di zone ospitate private.
IPv4 funziona ma IPv6 fallisceVerifica la versione del DualStack connettore, le route IPv6 e le regole di sicurezza IPv6.
La revisione in corso è Active ma la funzione non può raggiungere le risorse VPC private La revisione in corso non imposta un connettore di rete in uscita (). egressNetworkConnectorArn Leggi il campo conget-web-function-revision; se è vuoto, crea una revisione che imposta. egressNetworkConnectorArn Per informazioni dettagliate, vedi Configurazione della rete per AWS Lambda Funzioni Web.

Non è disponibile un accesso interattivo a un ambiente di esecuzione di funzioni Web. Utilizza i log delle applicazioni, le intestazioni di risposta degli endpoint, i campi dello stato delle risorse, le CloudWatch metriche e i log di flusso VPC per diagnosticare gli errori.

Prepara un pacchetto di escalation

Se i controlli precedenti non identificano la causa, raccogli le seguenti informazioni prima di aprire un caso. Supporto AWS Ciò consente al tecnico dell'assistenza di correlare il funzionamento del piano di controllo, l'implementazione regionale, la richiesta e la telemetria:

  • L' Account AWS ID, la regione di origine, il nome della funzione, l'ID di revisione, il nome dell'endpoint, il tipo di endpoint e le regioni di destinazione.

  • Il timestamp UTC e il percorso di richiesta per gli errori rappresentativi, insieme allo stato HTTP e alle intestazioni di risposta. lambda-web-request-id lambda-web-logstream lambda-web-error-type

  • La funzione, la revisione, l'endpoint e la regione e i valori. state stateReason updateStatus updateStatusReason

  • Eventi pertinenti del registro centralizzato delle applicazioni e del sistema, metriche di accelerazione e capacità e velocità di traffico approssimativa al momento in cui si è verificato il problema.

  • La AWS CLI versione e una copia redatta della richiesta di gestione. Rimuovi credenziali, segreti dell'applicazione, token e dati sensibili delle richieste.