Come faccio a configurare le funzioni Lambda come obiettivi per Application Load Balancer e risolvere i problemi correlati?

6 minuti di lettura
0

Devo configurare le funzioni AWS Lambda come obiettivi per gli Application Load Balancer e sapere come risolvere i problemi che potrei incontrare.

Risoluzione

Elastic Load Balancing supporta l'utilizzo delle funzioni Lambda come obiettivi per elaborare le richieste provenienti da Application Load Balancer. Per ulteriori informazioni, consulta Utilizzo di AWS Lambda con un Application Load Balancer.

Fase 1: Creare una funzione Lambda

1.    Apri la pagina Funzioni della console Lambda.

2.    Seleziona Crea funzione.

3.    Scegli Crea da zero.

4.    Immetti un Nome della funzione.

5.    Nel menu a tendina Runtime, scegli Python 3.9 come runtime per questo scenario.

6.    Per il ruolo di esecuzione, scegli ** Crea un nuovo ruolo con autorizzazioni Lambda di base**.

Nota: Per ulteriori informazioni sui ruoli di esecuzione, consulta Ruolo di esecuzione Lambda.

7.    Seleziona Crea funzione.

8.     Dopo aver creato la funzione, scegli la scheda Codice. Nella sezione Codice sorgente, sostituisci il codice della funzione esistente con il seguente codice:

import json

def lambda_handler(event, context):
  return {
    "statusCode": 200,
    "statusDescription": "200 OK",
    "headers": {
      "Content-Type": "text/html"
    },
    "isBase64Encoded": False,
    "body": "<h1>Hello from Lambda!</h1>"
  }

9.    Scegli Implementa.

Fase 2: Crea un gruppo target per la funzione Lambda

Nota: Per ulteriori informazioni, consulta la Fase 1: Configurazione di un gruppo target.

1.    Apri la console Amazon EC2.

2.    Nel riquadro di navigazione, in Load Balancing, scegli Gruppi di destinazione.

3.    Scegli Crea gruppo di destinazione.

4.    In Configurazione di base, per Scegli un tipo di destinazione, scegli Funzione Lambda.

5.    In Nome del gruppo di destinazione, inserisci un nome per il gruppo di destinazione.

6.    (Facoltativo) Per attivare i controlli dell'integrità, nella sezione Controlli dell'integrità, scegli Abilita.

7.    (Facoltativo) Aggiungi uno o più tag come segue:

  • Espandi la sezione Tag.
  • Scegli Aggiungi tag.
  • Inserisci la chiave del tag e il valore del tag.

8.    Scegli Avanti.

9.    Scegli una funzione Lambda come destinazione.
-oppure-
Scegli Aggiungi una funzione più tardi per specificare una funzione Lambda in un secondo momento.

10.    Scegli Crea gruppo di destinazione.

**Nota:**Le autorizzazioni del sistema di bilanciamento del carico per richiamare una funzione Lambda vengono concesse in modo diverso a seconda del metodo utilizzato per creare un gruppo target e registrare una funzione. Per ulteriori informazioni, consulta Autorizzazioni per richiamare la funzione Lambda.

Fase 3: Configura un sistema di bilanciamento del carico e un ascoltatore

Per configurare un sistema di bilanciamento del carico e un ascoltatore, segui i passaggi della fase 3: Configura un sistema di bilanciamento del carico e un ascoltatore.

Fase 4: Testa il sistema di bilanciamento del carico

Per testare il sistema di bilanciamento del carico, segui i passaggi indicati nella fase 4: Testa il sistema di bilanciamento del carico. Se la configurazione funziona, il browser visualizza il messaggio "Hello from Lambda!" (Ciao da Lambda!)

Nota: Se non hai attivato i controlli dell'integrità per la funzione Lambda, lo stato dell'integrità non è disponibile. È possibile testare il sistema di bilanciamento del carico senza un controllo dell'integrità in quanto non influisce sulle funzioni Lambda come obiettivi per gli Application Load Balancer.

Limiti delle funzioni Lambda come obiettivi

Per ulteriori informazioni sui limiti delle funzioni Lambda come destinazioni, consulta Funzioni Lambda come destinazioni e le informazioni in Limiti.

I gruppi di destinazione Lambda sono limitati a una singola destinazione della funzione Lambda. Per ulteriori informazioni, consulta Prepara la funzione Lambda.

Errori comuni delle funzioni Lambda come obiettivi

"The connection has timed out" ("La connessione è scaduta")

Questo errore indica che i gruppi di sicurezza del sistema di bilanciamento del carico non consentono il traffico sulla porta dell'ascoltatore. Per risolvere questo errore, gestisci i tuoi gruppi di sicurezza e assicurati che le regole in entrata del gruppo di sicurezza consentano il traffico in entrata sulle porte dell'ascoltatore. Le regole in uscita non sono necessarie per i gruppi di sicurezza perché i gruppi di sicurezza sono validi. Le risposte al traffico in entrata consentito sono consentite, indipendentemente dalle regole in uscita.

"The target group could not be found" ("Il gruppo target non è stato trovato")

Questo errore indica che il gruppo di destinazione è stato eliminato. Per risolvere questo errore, elimina la politica sulle risorse con il gruppo di destinazione eliminato. L'eliminazione della politica sulle risorse rimuove il trigger.

1.    Apri la pagina Funzioni della console Lambda.

2.    Scegli la funzione Lambda relativa al gruppo di destinazione.

3.    Scegli la scheda Configurazione, quindi scegli Autorizzazioni.

4.    Scorri verso il basso fino alla sezione Dichiarazioni delle politiche basate sulle risorse, quindi seleziona la politica che desideri rimuovere.

5.    Scegli Elimina, quindi seleziona Elimina nell'avviso per confermare che desideri eliminare definitivamente la dichiarazione dalla politica delle risorse.

Puoi anche utilizzare il comando Interfaccia della linea di comando AWS (AWS CLI) remove-permission per rimuovere la politica basata sulle risorse:

**Nota:**Nel comando seguente, sostituisci EXAMPLE\ _FUNCTION con il nome della tua funzione Lambda e EXAMPLE\ _ID con l'ID della tua istruzione.

aws lambda remove-permission --function-name EXAMPLE_FUNCTION --statement-id EXAMPLE_ID

Nota: Se ricevi errori durante l'esecuzione dei comandi dell'interfaccia della linea di comando AWS, assicurati di utilizzare la versione più recente di AWS CLI.

"Si è verificato un errore (AccessDenied) durante la chiamata all'operazione: RegisterTargets: elasticloadbalancing principal non dispone dell'autorizzazione per invocare arn <Lambda ARN> dal gruppo di destinazione <Target Group ARN>"

Quando una richiesta a una funzione Lambda fallisce, il sistema di bilanciamento del carico memorizza un codice del motivo dell'errore nel campo error_reason del log degli accessi. Il sistema di bilanciamento del carico incrementa anche la metrica Amazon CloudWatch corrispondente. Per ulteriori informazioni, consulta Codici dei motivi degli errori.

Registra una funzione Lambda come obiettivo utilizzando l'AWS CLI. Usa il comando add-permission dell'AWS CLI per concedere a Elastic Load Balancing l'autorizzazione a richiamare la funzione Lambda.

Errori noti delle funzioni Lambda come obiettivi

"Le nuove metriche relative a questa funzionalità (LambdaUserError, LambdaInternalError, LambdaTargetProcessedBytes e StandardProcessedBytes) non sono disponibili nel pannello di monitoraggio della console ELB".

Accedi alle nuove metriche Lambda dalla console Amazon CloudWatch.

"La nuova API ModifyTargetGroup consente di configurare un valore di timeout di controllo dell'integrità di 120 secondi, ma la console ELB non consente valori superiori a 60 secondi".

Per configurare un timeout per il controllo dell'integrità superiore a 60 secondi, richiama l'API ModifyTargetGroup tramite l'AWS CLI. È possibile configurare un valore massimo di 120 secondi.

Esempio di comando modify-target-group:

**Nota:**Nel comando seguente, sostituisci EXAMPLE\ _TARGET\ _GROUP\ _ARN con il tuo gruppo di destinazione ARN e EXAMPLE\ _REGION con il codice della tua regione AWS.

aws elbv2 modify-target-group \
--target-group-arn EXAMPLE_TARGET_GROUP_ARN \
--health-check-timeout-seconds 120 \
--region EXAMPLE_REGION

Informazioni correlate

Funzioni Lambda come obiettivi

Controllo delle versioni e alias delle funzioni Lambda

Spostamento del traffico tramite alias

AWS UFFICIALE
AWS UFFICIALEAggiornata un anno fa