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à.
Componenti della soluzione
Sala d'attesa pubblica e privata APIs
Lo scopo principale della AWS soluzione Virtual Waiting Room on è controllare la generazione di JSON Web Tokens (JWT) per i client in modo controllato per evitare esplosioni di nuovi utenti che potrebbero sovraccaricare il sito Web di destinazione. JWTs Può essere utilizzato per la protezione del sito, impedendo l'accesso alle pagine Web fino all'ottenimento del token della sala d'attesa e anche per l'autorizzazione all'accesso all'API.
Il modello principale installa un'API pubblica e un'API privata (autorizzata da IAM) utilizzata per la maggior parte delle operazioni di Virtual Waiting Room. AWS L'API pubblica è configurata con una CloudFront distribuzione con più politiche di memorizzazione nella cache basate sul percorso dell'API. Vengono creati una tabella DynamoDB EventBridge e un bus eventi. Il modello aggiunge un nuovo VPC con due zone di disponibilità (AZs), un cluster Elasticache (Redis OSS) in entrambe AZs e diverse funzioni Lambda. Le funzioni Lambda che interagiscono con Elasticache (Redis OSS) dispongono di interfacce di rete all'interno del VPC e tutte le altre funzioni Lambda hanno una connettività di rete predefinita. Il nucleo è il livello più basso APIs di interazione con la soluzione. Altre funzioni Lambda, l'istanza Amazon Elastic Compute Cloud (Amazon EC2) e i contenitori possono fungere da estensioni e richiamare il core APIs per creare sale d'attesa, controllare il traffico in ingresso e reagire agli eventi generati dalla soluzione.
Inoltre, lo stack principale genera un allarme per tutti gli errori della funzione Lambda e le condizioni di accelerazione, nonché allarmi per ogni implementazione di API Gateway per i codici di stato 4XX e 5XX.
Sala d'attesa virtuale su AWS APIs Componente pubblico e privato
-
CloudFront la distribuzione fornisce chiamate API pubbliche per il client e memorizza nella cache i risultati laddove appropriato.
-
L'API pubblica di Amazon API Gateway elabora le richieste di coda dalla sala d'attesa virtuale, monitora la posizione della coda e supporta la convalida dei token che consentono l'accesso al sito Web di destinazione.
-
La coda SQS regola il traffico verso la funzione che elabora i AWS Lambda messaggi in coda.
-
La funzione
AssignQueueNumLambda convalida ogni messaggio ricevuto nel batch, incrementa il contatore di coda in Elasticache (Redis OSS) e archivia ogni richiesta in Elasticache (Redis OSS) con la posizione di coda associata. -
La funzione
GetPublicKeyLambda recupera il valore della chiave pubblica da Secrets Manager. -
La funzione
GenerateTokenLambda genera un JWT per una richiesta valida a cui è stato consentito di completare la transazione nel sito di destinazione. Scrive un evento nel bus degli eventi personalizzato della sala d'attesa che indica che è stato generato un token. Se in precedenza è stato generato un token per questa richiesta, non viene generato alcun nuovo token. -
La funzione
GetQueueNumberLambda recupera e restituisce la posizione numerica del client nella coda da Elasticache (Redis OSS). -
La funzione
GetServingNumberLambda recupera e restituisce il numero attualmente servito dalla sala d'attesa da Elasticache (Redis OSS). -
La funzione
GetWaitingNumLambda restituisce il numero attualmente in coda nella sala d'attesa e non ha ancora ricevuto un token. -
Gli endpoint VPC consentono alle funzioni Lambda nel VPC di comunicare con i servizi all'interno della soluzione.
-
Il cluster Elasticache (Redis OSS) archivia tutte le richieste di accesso alla sala d'attesa con un ID evento valido. Memorizza inoltre diversi contatori come il numero di richieste in coda, il numero attualmente servito, il numero di token generati, il numero di sessioni completate e il numero di sessioni abbandonate.
-
Risorse API private API Gateway per supportare le funzioni amministrative. Le private APIs sono autenticate da AWS IAM.
-
La funzione
GetExpiredTokensLambda restituisce un elenco di richieste IDs con token scaduti. -
La funzione
AuthGenerateTokenLambda genera un token per una richiesta valida a cui è stato consentito di completare la transazione nel sito di destinazione. L'emittente e il periodo di validità di un token inizialmente impostati durante l'implementazione dello stack principale possono essere ignorati. Scrive un evento nel bus degli eventi personalizzato della sala d'attesa che indica che è stato generato un token. Se il token è stato precedentemente generato per questa richiesta, non viene generato alcun nuovo token. -
La funzione
IncrementServingCounterLambda incrementa il bancone di servizio della sala d'attesa memorizzato in Elasticache (Redis OSS) con un incremento in base al valore. -
La funzione
GetNumActiveTokensLambda interroga DynamoDB per il numero di token che devono ancora scadere, non sono stati utilizzati per completare la transazione e non sono stati contrassegnati come abbandonati. -
La funzione
ResetStateLambda reimposta tutti i contatori memorizzati in Elasticache (Redis OSS). Inoltre, elimina e ricrea le tabelleTokenTableQueuePositionEntryTime, e DynamoDBServingCounterIssuedAt. Inoltre, esegue l'invalidazione della cache. CloudFront -
La funzione
UpdateSessionLambda aggiorna lo stato di una sessione (token) memorizzata nella tabella DynamoDBTokenTable. Lo stato della sessione è indicato da un numero intero. Le sessioni impostate su uno stato di1indicano completate e-1indicano abbandonate. Scrive un evento nel bus degli eventi personalizzato della sala d'attesa indicante che una sessione è stata aggiornata. -
La tabella
TokenTableDynamoDB memorizza i dati dei token. -
La tabella
QueuePositionEntryTimeDynamoDB memorizza i dati sulla posizione della coda e sull'ora di immissione. -
La tabella
ServingCounterIssuedAtDynamoDB memorizza gli aggiornamenti del contatore di servizio. -
La funzione
GetQueuePositionExpireTimeLambda viene richiamata quando il client richiede il tempo di scadenza della posizione di coda rimanente. -
La funzione
SetMaxQueuePositionExpiredLambda imposta la posizione massima della coda scaduta corrispondente ai valori della tabella.ServingCounterIssuedAtViene eseguita ogni minuto se ilIncrSvcOnQueuePositionExpiryparametro è impostato sutruedurante la distribuzione dello stack principale. -
La funzione
GenerateEventsLambda scrive diverse metriche della sala d'attesa nel bus eventi personalizzato della sala d'attesa. Viene eseguita ogni minuto se il parametro Enable Events Generation è impostato sutruedurante l'implementazione dello stack principale. -
AWS Secrets Manager archivia le chiavi per le operazioni con i token e altri dati sensibili.
-
Amazon EventBridge Custom Event Bus riceve un evento ogni volta che viene generato un token e una sessione viene aggiornata nella tabella
TokenTableDynamoDB. Riceve anche eventi quando il bancone di servizio viene spostato nellaSetMaxQueuePositionExpiredLambda. Viene scritto con varie metriche relative alla sala d'attesa, se attivato durante l'implementazione del core stack. -
La regola CloudWatch degli eventi Amazon viene creata se il parametro Enable Events Generation è impostato su true durante la distribuzione dello stack principale. Questa regola di evento avvia la funzione
GenerateEventsLambda ogni minuto.
Authorizers
La soluzione include uno stack di autorizzazioni API Gateway Lambda. Lo stack è composto da un ruolo IAM e una funzione Lambda. La funzione APIGatewayAuthorizer Lambda è un autorizzatore per API Gateway in grado di convalidare la firma e le attestazioni di un token emesso dalla Virtual Waiting Room on API. AWS La funzione Lambda fornita con lo stack può essere utilizzata per proteggere il cloud APIs fino a quando un utente non ha attraversato la sala d'attesa e non riceve un token di accesso. L'autorizzatore recupera e memorizza automaticamente nella cache la chiave pubblica e la configurazione dall'API principale per la verifica dei token. Può essere utilizzato senza modifiche e può essere installato in qualsiasi AWS regione che supporti. AWS Lambda
Adattatore OpenID
Lo stack di adattatori OpenID
Sala d'attesa virtuale sul AWS componente adattatore OpenID
-
CloudFront la distribuzione fornisce il contenuto del bucket S3 all'utente.
-
Il bucket S3 ospita pagine di esempio per le sale d'attesa.
-
L'API Amazon API Gateway fornisce un set di funzionalità compatibili con OIDC APIs che possono essere utilizzate con i software di hosting Web esistenti che supportano la funzione di autorizzazione Lambda del provider di identità OIDC.
-
La funzione
APIHandlerLambda gestisce le richieste per tutti i percorsi di risorse API Gateway. Diverse funzioni Python all'interno dello stesso modulo sono mappate su ciascun percorso API. Ad esempio, il percorso della/authorizerisorsa in API Gateway richiama la funzioneauthorize()Lambda. -
Le impostazioni OIDC sono memorizzate in Secrets Manager.
Esempi di strategie di ingresso
Le strategie di ingresso determinano quando il banco di servizio della soluzione deve passare ad accogliere più utenti nel sito di destinazione. Per ulteriori informazioni concettuali sulle strategie di ingresso nelle sale d'attesa, consulta Considerazioni di progettazione.
La soluzione fornisce due esempi di strategie di ingresso: e periodica. MaxSize
Componente delle strategie Virtual Waiting Room on AWS Inlet
Opzione strategica di ingresso Max Size:
-
Un client emette una notifica Amazon SNS che richiama la funzione
MaxSizeInletLambda per aumentare il contatore di server in base al payload del messaggio. -
La funzione
MaxSizeInletLambda prevede di ricevere un messaggio indicante che utilizza per determinare di quanto incrementare il contatore di servizio.
Opzione di strategia di ingresso periodica:
-
Una CloudWatch regola richiama una funzione Lambda ogni minuto per aumentare il contatore di servizio di una quantità fissa.
-
La funzione
PeriodicInletLambda incrementa il contatore di servizio in base alla dimensione specificata se il tempo è compreso tra l'ora di inizio e quella di fine fornita. Facoltativamente, controlla un CloudWatch allarme e, se l'allarme è attivo, esegue l'incremento, altrimentiOKlo salta.
Esempio di sala d'attesa
La sala d'attesa campione si integra con quella pubblica e privata oltre APIs all'autorizzazione personalizzata per dimostrare una soluzione minimale per le sale end-to-end d'attesa. La pagina Web principale viene archiviata in un bucket S3 e utilizzata come origine per. CloudFront Guida l'utente attraverso i seguenti passaggi:
-
Mettiti in fila nella sala d'attesa per entrare nel sito.
-
Ottieni la posizione del cliente in fila.
-
Ottieni la posizione di servizio della sala d'attesa.
-
Ottieni un set di token quando la posizione di servizio è uguale o superiore a quella del cliente.
-
Usa il token per chiamare un'API protetta dall'autorizzatore Lambda.
Sala d'attesa virtuale su AWS Sample Componente del sito dell'evento
-
Il bucket S3 ospita il contenuto di esempio per la sala d'attesa e il pannello di controllo.
-
CloudFront la distribuzione fornisce il contenuto del bucket S3 all'utente.
-
Esempio di implementazione di API Gateway con percorsi di risorse simili allo shopping come e.
/search/checkoutQuesta API viene installata dallo stack e configurata con il token authorizer. È inteso come esempio di un modo semplice per proteggere un'API con la sala d'attesa. Le richieste che presentano un token valido vengono inoltrate a Lambda, altrimenti viene restituito un errore. L'API non presenta funzionalità diverse dalla risposta della funzione Lambda allegata.