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à.
Usa il AWS FIS azioni aws:lambda:function
Puoi usare le azioni aws:lambda:function per inserire errori nelle invocazioni delle tue funzioni. AWS Lambda
Queste azioni utilizzano un'estensione gestita per inserire errori. AWS FIS Per utilizzare le azioni aws:lambda:function, dovrai collegare l'estensione come livello alle tue funzioni Lambda e configurare un bucket Amazon S3 per comunicare tra e l'estensione. AWS FIS
Quando esegui un AWS FIS esperimento mirato a aws:lambda:function, AWS FIS legge la configurazione di Amazon S3 dalla tua funzione Lambda e scrive le informazioni sull'iniezione dei guasti nella posizione Amazon S3 specificata, come mostrato nel diagramma seguente.
Azioni
Limitazioni
L'estensione AWS FIS Lambda non può essere utilizzata con funzioni che utilizzano lo streaming delle risposte. Anche quando non vengono applicati errori, l'estensione AWS FIS Lambda sopprimerà le configurazioni di streaming. Per ulteriori informazioni, consulta Response streaming for Lambda functions nella guida per l'utente. AWS Lambda
Prerequisiti
Prima di utilizzare le azioni AWS FIS Lambda, assicurati di aver completato queste attività una tantum:
Crea un bucket Amazon S3 nella regione da cui intendi iniziare un esperimento ‐ Puoi utilizzare un singolo bucket Amazon S3 per più esperimenti e condividere il bucket tra più account. AWS Tuttavia, è necessario disporre di un bucket separato per ciascuno. Regione AWS
Crea una policy IAM per concedere l'accesso in lettura per l'estensione Lambda al bucket Amazon S3 ‐ Nel modello seguente, sostituiscilo
my-config-distribution-bucketcon il nome del bucket Amazon S3 che hai creato sopra eFisConfigscon il nome di una cartella nel tuo bucket Amazon S3 che desideri utilizzare.Crea una policy IAM per concedere l'accesso in scrittura per l' AWS FIS esperimento al bucket Amazon S3 ‐ Nel modello seguente, sostituisci
my-config-distribution-bucketcon il nome del bucket Amazon S3 che hai creato sopra eFisConfigscon il nome di una cartella nel tuo bucket Amazon S3 che desideri utilizzare.
Configurazione di funzioni Lambda
Segui i passaggi seguenti per ogni funzione Lambda su cui desideri influire:
-
Allega la policy di accesso in lettura di Amazon S3 creata sopra alla funzione Lambda.
-
Collega l' AWS FIS estensione come livello alla funzione. Per ulteriori informazioni sugli ARN del livello, vedereVersioni disponibili di AWS FIS estensione per Lambda.
-
Imposta la
AWS_FIS_CONFIGURATION_LOCATIONvariabile sull'ARN della cartella di configurazione di Amazon S3, ad esempio.arn:aws:s3:::my-config-distribution-bucket/FisConfigs/ -
Impostare la variabile
AWS_LAMBDA_EXEC_WRAPPERsu/opt/aws-fis/bootstrap.
Configura un AWS FIS esperimento
Prima di eseguire l'esperimento, assicurati di aver allegato la policy di accesso in scrittura di Amazon S3 creata nei prerequisiti ai ruoli dell'esperimento che utilizzeranno le azioni AWS FIS Lambda. Per ulteriori informazioni su come impostare un AWS FIS esperimento, consulta. Gestione dei AWS modelli di esperimento FIS
Registrazione dei log
L'estensione AWS FIS Lambda scrive i log sulla console e li CloudWatch registra. La registrazione può essere configurata utilizzando la AWS_FIS_LOG_LEVEL variabile. I valori supportati sono INFO, WARN e ERROR. I log verranno scritti nel formato di registro configurato per la funzione Lambda.
Di seguito è riportato un esempio di log in formato testo:
2024-08-09T18:51:38.599984Z INFO AWS FIS EXTENSION - extension enabled 1.0.1
Di seguito è riportato un esempio di log in formato JSON:
{ "timestamp": "2024-10-08T17:15:36.953905Z", "level": "INFO", "fields": { "message": "AWS FIS EXTENSION - adding 5000 milliseconds of latency to function invocation", "requestId":"0608bf70-908f-4a17-bbfe-3782cd783d8b" } }
I log emessi possono essere utilizzati con i filtri metrici di Amazon per generare CloudWatch metriche personalizzate. Per ulteriori informazioni sui filtri metrici, consulta Creazione di metriche da eventi di log utilizzando filtri nella guida per l'utente di Amazon Logs. CloudWatch
Utilizzo del formato CloudWatch Embedded Metric Format (EMF)
È possibile configurare l'estensione AWS FIS Lambda per emettere registri EMF impostando la variabile su. AWS_FIS_EXTENSION_METRICS all Per impostazione predefinita, l'estensione non emette log EMF e per impostazione predefinita è. AWS_FIS_EXTENSION_METRICS none I log EMF vengono pubblicati nella console. aws-fis-extension namespace CloudWatch
All'interno del aws-fis-extension namespace, puoi selezionare determinate metriche da visualizzare in un grafico. L'esempio seguente mostra alcune delle metriche disponibili nel namespace. aws-fis-extension
Argomenti avanzati
Questa sezione fornisce informazioni aggiuntive su come AWS FIS funziona con l'estensione Lambda e su casi d'uso speciali.
Argomenti
Comprendere il polling
Potresti notare un periodo di accelerazione fino a 60 minuti prima che i guasti inizino a influire su tutte le chiamate. Questo perché l'estensione Lambda esegue il polling delle informazioni di configurazione raramente in attesa dell'inizio di un esperimento. È possibile regolare l'intervallo di polling impostando la variabile di AWS_FIS_SLOW_POLL_INTERVAL_SECONDS ambiente (default 60s). Un valore inferiore comporterà il polling più spesso ma comporterà un impatto e un costo maggiori sulle prestazioni. È inoltre possibile notare un periodo di rallentamento fino a 20 secondi dopo l'iniezione del guasto. Questo perché l'estensione esegue i sondaggi più frequentemente durante l'esecuzione degli esperimenti.
Comprendere la concorrenza
È possibile indirizzare le stesse funzioni Lambda con più azioni contemporaneamente. Se le azioni sono tutte diverse l'una dall'altra, verranno applicate tutte. Ad esempio, è possibile aggiungere un ritardo iniziale prima di restituire un errore. Se alla stessa funzione vengono applicate due azioni identiche o in conflitto, verrà applicata solo l'azione con la prima data di inizio.
La figura seguente mostra due azioni in conflitto, aws:lambda:invocation-error e aws:lambda:invocation-http-integration-response, che si sovrappongono. Inizialmente, aws:lambda:invocation-error si attiva alle 11:38 e viene eseguito per 2 minuti. Quindi, aws:lambda:invocation-http-integration-response tenta di iniziare alle 11:39, ma non entra in vigore fino alle 11:40 dopo la conclusione della prima azione. Per mantenere la tempistica dell'esperimento, aws:lambda:invocation-http-integration-response termina comunque all'ora originariamente prevista, ossia le 11:41.
Comprensione della percentuale di invocazione
Le azioni AWS Fault Injection Service Lambda utilizzano un target aws:lambda:function che consente di selezionare uno o più ARN di funzioni. AWS Lambda Utilizzando questi ARN, le azioni AWS Fault Injection Service Lambda possono iniettare errori in ogni chiamata della funzione Lambda selezionata. Per consentire di inserire errori solo in una frazione delle invocazioni, ogni azione consente di specificare un parametro con valori compresi tra 0 e 100. invocationPercentage Utilizzando il invocationPercentage parametro, è possibile garantire che le azioni siano simultanee anche per percentuali di richiamo inferiori al 100%.
Considerazioni speciali per SnapStart
AWS Lambda le funzioni SnapStart abilitate avranno una maggiore probabilità di attendere l'intera durata di AWS_FIS_SLOW_POLL_INTERVAL_SECONDS prima di rilevare la prima configurazione di errore, anche se è già in corso un esperimento. Questo perché Lambda SnapStart utilizza una singola istantanea come stato iniziale per più ambienti di esecuzione e mantiene l'archiviazione temporanea. Per l'estensione AWS Fault Injection Service Lambda, mantiene la frequenza di polling e salta il controllo di configurazione iniziale all'inizializzazione dell'ambiente di esecuzione. Per ulteriori informazioni su Lambda SnapStart, consulta Miglioramento delle prestazioni di avvio con Lambda nella guida per l'utente. SnapStart AWS Lambda
Considerazioni speciali per funzioni rapide e poco frequenti
Se la funzione Lambda viene eseguita per meno della durata media del polling di 70 millisecondi, il thread di polling potrebbe richiedere più invocazioni per ottenere le configurazioni di errore. Se la funzione viene eseguita raramente, ad esempio una volta ogni 15 minuti, il sondaggio non verrà mai completato. Per garantire che il thread di polling possa terminare, imposta il parametro. AWS_FIS_POLL_MAX_WAIT_MILLISECONDS L'estensione attenderà fino alla durata impostata per il completamento di un sondaggio in corso prima di avviare la funzione. Tieni presente che ciò aumenterà la durata della funzione fatturata e comporterà un ulteriore ritardo in alcune chiamate.
Configurazione di più estensioni utilizzando il proxy API Lambda Runtime
L'estensione Lambda utilizza il proxy AWS Lambda Runtime API per intercettare le chiamate alle funzioni prima che raggiungano il runtime. Lo fa esponendo un proxy per l'API AWS Lambda Runtime al runtime e pubblicizzando la sua posizione nella variabile. AWS_LAMBDA_RUNTIME_API
Il diagramma seguente mostra la configurazione per una singola estensione utilizzando il proxy Lambda Runtime API:
Per utilizzare l'estensione AWS FIS Lambda con un'altra estensione utilizzando il pattern proxy AWS Lambda Runtime API, dovrai concatenare i proxy utilizzando uno script di bootstrap personalizzato. L'estensione AWS FIS Lambda accetta le seguenti variabili di ambiente:
AWS_FIS_PROXY_RUNTIME_API_ENDPOINT‐ Accetta una stringa nel formato127.0.0.1:9876che rappresenta l'IP locale e la porta del listener per l'API AWS Lambda Runtime. Potrebbe essere il valore originaleAWS_LAMBDA_RUNTIME_APIo la posizione di un altro proxy.AWS_FIS_PROXY_LISTENER_PORT‐ Richiede un numero di porta su cui l' AWS FIS estensione dovrebbe avviare il proprio proxy, per impostazione predefinita9100.
Con queste impostazioni è possibile concatenare l' AWS FIS estensione con un'altra estensione utilizzando il proxy API Lambda Runtime in due ordini diversi.
Per ulteriori informazioni sul proxy AWS Lambda Runtime API, consulta Miglioramento della sicurezza e della governance del AWS Lambda runtime con l'estensione proxy Runtime API
Utilizzo AWS FIS con runtime dei container
Per AWS Lambda le funzioni che utilizzano immagini contenitore che accettano la variabile di AWS_LAMBDA_RUNTIME_API ambiente, puoi impacchettare l'estensione AWS FIS Lambda nell'immagine del contenitore seguendo i passaggi seguenti:
Determina l'ARN del livello da cui estrarre l'estensione. Per ulteriori informazioni su come trovare l'ARN, vedere. Configurazione di funzioni Lambda
Usa la AWS Command Line Interface (CLI) per richiedere dettagli sull'estensione.
aws lambda get-layer-version-by-arn --arn fis-extension-arnLa risposta conterrà unLocationcampo contenente un URL prefirmato da cui è possibile scaricare l'estensione FIS come file ZIP.Decomprimi il contenuto dell'estensione nel tuo file system
/optDocker. Quello che segue è un esempio di Dockerfile basato sul runtime NodeJS Lambda:# extension installation # FROM amazon/aws-lambda-nodejs:12 AS builder COPY extension.zip extension.zip RUN yum install -y unzip RUN mkdir -p /opt RUN unzip extension.zip -d /opt RUN rm -f extension.zip FROM amazon/aws-lambda-nodejs:12 WORKDIR /opt COPY --from=builder /opt . # extension installation finished # # JS example. Modify as required by your runtime WORKDIR ${LAMBDA_TASK_ROOT} COPY index.js package.json . RUN npm install CMD [ "index.handler" ]
Per ulteriori informazioni sulle immagini dei contenitori, vedi Creare una funzione Lambda utilizzando un'immagine del contenitore nella guida per l'utente. AWS Lambda
AWS FIS Variabili di ambiente Lambda
Di seguito è riportato un elenco di variabili di ambiente per l'estensione AWS FIS Lambda
AWS_FIS_CONFIGURATION_LOCATION‐ Obbligatorio. Posizione in cui AWS FIS scriverà le configurazioni di errore attive e l'estensione leggerà le configurazioni di errore. Le posizioni devono essere in formato Amazon S3 ARN, inclusi un bucket e un percorso. Ad esempio,arn:aws:s3:::my-fis-config-bucket/FisConfigs/.AWS_LAMBDA_EXEC_WRAPPER‐ Obbligatorio. Posizione dello script AWS Lambda wrapper utilizzato per configurare l'estensione AWS FIS Lambda. Dovrebbe essere impostato sullo/opt/aws-fis/bootstrapscript incluso nell'estensione.AWS_FIS_LOG_LEVEL‐ Opzionale. Livello di registro per i messaggi emessi dall'estensione AWS FIS Lambda. I valori supportati sonoINFO,WARNeERROR. Se non è impostata, AWS FIS l'estensione sarà predefinita su.INFOAWS_FIS_EXTENSION_METRICS‐ Opzionale. I valori possibili sonoallenone. Se impostatoallsull'estensione, emetterà le metriche EMF sotto il.aws-fis-extension namespaceAWS_FIS_SLOW_POLL_INTERVAL_SECONDS‐ Opzionale. Se impostato, sovrascriverà l'intervallo di polling (in secondi) mentre l'estensione non sta iniettando errori e attende che una configurazione di errore venga aggiunta alla posizione di configurazione. L’impostazione predefinita è60.AWS_FIS_PROXY_RUNTIME_API_ENDPOINT‐ Opzionale. Se impostato, sovrascriverà il valore diAWS_LAMBDA_RUNTIME_APIper definire dove l' AWS FIS estensione interagisce con l'API di AWS Lambda runtime per controllare l'invocazione della funzione. Si aspetta IP:PORT, ad esempio,.127.0.0.1:9000Per ulteriori informazioni suAWS_LAMBDA_RUNTIME_API, consulta Using the Lambda runtime API for custom runtimes nella guida per l'AWS Lambda utente.AWS_FIS_PROXY_LISTENER_PORT‐ Opzionale. Definisce la porta su cui l'estensione AWS FIS Lambda espone un proxy API AWS Lambda di runtime che può essere utilizzato da un'altra estensione o dal runtime. L’impostazione predefinita è9100.AWS_FIS_POLL_MAX_WAIT_MILLISECONDS‐ Opzionale. Se impostata su un valore diverso da zero, questa variabile definisce il numero di millisecondi che l'estensione attenderà per il completamento di un sondaggio asincrono in corso prima di valutare le configurazioni di errore e avviare l'invocazione del runtime. L’impostazione predefinita è0. Quando si utilizzapreventExecutionset totruenell'aws:lambda:invocation-errorazione, si consiglia di impostare questa variabile su almeno2000(2 secondi) per garantire che l'estensione abbia una configurazione di errore aggiornata prima di decidere se bloccare l'esecuzione della funzione.