View a markdown version of this page

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

Rete

È possibile configurare l'accesso alla rete per la AWS Lambda microVM associando le risorse di Network Connector alla microVM in fase di esecuzione. I connettori di rete vengono specificati al momento della chiamata run-microvm e non possono essere modificati mentre una MicroVM è in esecuzione.

Panoramica di

Ogni microVM può avere configurazioni di rete in ingresso (in entrata) e in uscita (in uscita) indipendenti:

  • I connettori di rete in ingresso consentono la connettività in ingresso. I client si connettono a un endpoint HTTPS gestito dal servizio e Lambda inoltra il traffico alle porte configurate all'interno della MicroVM. I connettori di ingresso sono AWS gestiti: si fa riferimento ad essi tramite ARN quando si esegue una microVM.

  • I connettori di rete in uscita consentono il traffico in uscita. Per impostazione predefinita, le microVM dispongono di un accesso pubblico a Internet. Puoi invece creare un connettore di uscita VPC gestito dal cliente per indirizzare il traffico in uscita attraverso il tuo VPC.

Un singolo connettore può essere riutilizzato su più microVM: questo è il modello di utilizzo previsto.

Connettività in entrata

Ogni Lambda MicroVM è raggiungibile tramite un URL di endpoint HTTPS univoco, assegnato al momento della chiamata. run-microvm I client inviano richieste a questo endpoint tramite HTTPS. Lambda indirizza ogni richiesta a una porta all'interno della microVM, dove l'applicazione la riceve.

Per impostazione predefinita, le richieste ricevute all'endpoint vengono indirizzate alla porta 8080 all'interno della microVM. Per il routing verso una porta diversa, vedere. Routing delle porte

I seguenti protocolli sono supportati sull'endpoint in entrata:

  • HTTP/1.1

  • HTTP/2

  • WebSockets

  • gRPC

  • Server-Sent Eventi (SSE)

Nota

Il traffico tra il client e l'endpoint MicroVM è sempre crittografato con TLS. L'applicazione può gestire internamente le richieste tramite HTTP o HTTPS.

Routing delle porte

Lambda seleziona la porta di destinazione all'interno della microVM utilizzando il seguente ordine di priorità:

  1. X-aws-proxy-portheader: per le richieste HTTP standard, includi questa intestazione con il numero di porta di destinazione.

  2. WebSocket sottoprotocollo: se il WebSocket client non è in grado di impostare intestazioni personalizzate, specifica la porta di destinazione come sottoprotocollo denominatolambda-microvms.port.N, dov'è N il numero di porta. Fornisci dei sottoprotocolli quando apri la connessione. WebSocket Per un esempio, consulta Protocolli.

  3. Predefinito (8080): se non viene specificato nessuno dei due, richiede l'instradamento verso la porta 8080.

Importante

La porta di destinazione deve rientrare in quella allowedPorts definita nel token di autenticazione. Le richieste verso porte non autorizzate ricevono una risposta 403 Forbidden.

Autenticazione

Tutte le richieste a un endpoint MicroVM richiedono un token di autenticazione valido nell'intestazione. X-aws-proxy-auth I token vengono generati utilizzando. create-microvm-auth-token Ogni token è una stringa JWE (JSON Web Encryption) crittografata con l'ambito di:

  • Una microVM specifica (identificata da un ID).

  • Un set di porte consentite (porta singola, intervallo o tutte le porte).

  • Un'ora di scadenza (configurata al momento della creazione del token).

L'esempio seguente crea un token e lo utilizza per inviare una richiesta autenticata:

aws lambda-microvms create-microvm-auth-token \ --microvm-identifier microvm-id \ --expiration-in-minutes 30 \ --allowed-ports '[{"port":8080}]'
curl 'https://microvm-endpoint' \ -H 'X-aws-proxy-auth: TOKEN' \ -H 'X-aws-proxy-port: 8080'

Per una procedura dettagliata sulla creazione di token e sulla connessione a una MicroVM, comprese le connessioni, consulta. WebSocket Connessione a una microVM

Risposte agli errori

I seguenti codici di stato HTTP vengono restituiti dall'endpoint MicroVM quando non è in grado di elaborare o consegnare una richiesta all'applicazione. Queste risposte provengono dall'endpoint, non dall'applicazione.

Codice Stato Causa e risoluzione
400 Richiesta non valida Richiesta non valida o intestazione di porta o sottoprotocollo non validi. WebSocket Verifica il formato.
403 Accesso negato Token mancante, scaduto o non valido; oppure la porta richiesta non è inclusa in quella del token. allowedPorts Genera un nuovo token o utilizza una porta consentita.
429 Troppe richieste Limite di velocità superato (a livello di account o per microVM). Riprova con un backoff esponenziale.
500 Errore interno del server Si è verificato un errore interno. Riprova la richiesta .
502 Gateway non valido L'applicazione non risponde o il ripristino automatico non è riuscito entro il numero massimo di tentativi di ripetizione. Consulta Auto-resume.

Intestazioni della richiesta

Lo spazio dei nomi dell'X-aws-proxy-*intestazione è riservato da Lambda per i metadati della richiesta, come il token di autenticazione () e la porta di destinazione (). X-aws-proxy-auth X-aws-proxy-port Lambda rimuove le X-aws-proxy-* intestazioni prima di inoltrare la richiesta all'applicazione.

Request/response larghezza di banda

Ogni Lambda MicroVM ha una request/response larghezza di banda che si ridimensiona linearmente in base alle sue dimensioni. Questa larghezza di banda si applica a tutto il traffico attraverso l'endpoint MicroVM, sia alle richieste in entrata che alle risposte in uscita.

Dimensioni della microVM (linea di base) Larghezza di banda massima
0,5 GB, 0,25 vCPU MB/s (18 Mbps)
1 GB, 0,5 vCPU 2 MB/s (16 Mbps)
2 GB, 1 vCPU 4 MB/s (32 Mbps)
4 GB, 2 vCPU 8 MB/s (64 Mbps)
8 GB, 4 vCPU 16 MB/s (128 Mbps)

Se riscontri una maggiore latenza delle richieste a causa della saturazione della rete, riduci la concorrenza delle richieste o le dimensioni del payload oppure seleziona una microVM di dimensioni maggiori per aumentare la larghezza di banda disponibile.

HTTP/2 supporto

Supporto per Lambda MicroVMS HTTP/2 sull'endpoint in ingresso. Lambda negozia il protocollo tramite ALPN (Protocol Negotiation) durante l'Application-Layer handshake TLS, preferendo e ricorrendo a. HTTP/2 HTTP/1.1 Un client lo utilizza automaticamente. HTTP/2-capable

Da utilizzare HTTP/2 tra l'endpoint e l'applicazione all'interno della MicroVM:

  • La tua applicazione funziona con TLS: Lambda negozia HTTP/2 con la tua applicazione tramite ALPN, ricorrendo a se non è supportata. HTTP/1.1 HTTP/2

  • L'applicazione utilizza il protocollo HTTP in chiaro: includi l'X-aws-proxy-force-h2: trueintestazione nella richiesta da utilizzare HTTP/2 per la connessione all'applicazione.

Connettività in uscita

Per impostazione predefinita, le microVM Lambda dispongono di un accesso pubblico a Internet sul percorso di uscita. Per connettere le microVM alle risorse dei tuoi VPC privati, come RDS, ElastiCache API interne e sistemi locali tramite Direct Connect o VPN, crea un Lambda Network Connector con la tua configurazione VPC.

Quando si utilizza il VPC in uscita, il traffico in uscita è soggetto alle regole del gruppo di sicurezza e agli ACL di rete che regolano il traffico nel VPC.

Utilizzo dei connettori di rete in uscita

I connettori di rete in uscita indirizzano il traffico in uscita dalla tua MicroVM al tuo VPC. Si crea un connettore una volta, quindi si fa riferimento ad esso tramite ARN all'avvio di MicroVMS tramite il comando. run-microvm

Prerequisiti

Prima di creare un connettore di rete, è necessario un ruolo IAM che consenta a Lambda di creare interfacce di rete elastiche (ENI) nel tuo VPC. Il ruolo richiede le seguenti autorizzazioni:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "CreateENI", "Effect": "Allow", "Action": "ec2:CreateNetworkInterface", "Resource": [ "arn:aws:ec2:*:*:network-interface/*", "arn:aws:ec2:*:*:subnet/*", "arn:aws:ec2:*:*:security-group/*" ] }, { "Sid": "TagENI", "Effect": "Allow", "Action": "ec2:CreateTags", "Resource": "arn:aws:ec2:*:*:network-interface/*", "Condition": { "StringEquals": { "ec2:ManagedResourceOperator": "network-connectors.lambda.amazonaws.com" } } } ] }

Creazione di un connettore di rete

Crea un connettore specificando le sottoreti VPC, i gruppi di sicurezza e il protocollo di rete (oppure): IPv4 DualStack

aws lambda-core create-network-connector \ --name my-connector \ --configuration '{ "VpcEgressConfiguration": { "SubnetIds": ["subnet-xxx"], "SecurityGroupIds": ["sg-xxx"], "NetworkProtocol": "IPv4", "AssociatedComputeResourceTypes": ["MicroVm"] } }' \ --operator-role arn:aws:iam::123456789012:role/NetworkConnectorOperatorRole

Stati del connettore di rete

Un connettore deve essere nello ACTIVE stato prima di potervi fare riferimentorun-microvm.

Stato Description
PENDING Il connettore è in fase di creazione (viene eseguito il provisioning degli ENI sottostanti).
ACTIVE Il connettore è pronto per l'uso.
INACTIVE Il connettore è temporaneamente inattivo.
FAILED Il provisioning o l'aggiornamento non sono riusciti. Controlla StateReason.
DELETING Il connettore è in fase di eliminazione; gli ENI sono in fase di pulizia.
DELETE_FAILED Eliminazione non riuscita.

Esecuzione di una microVM con un connettore di rete

Fai riferimento al connettore ARN quando esegui una microVM:

aws lambda-microvms run-microvm \ --image-identifier arn:aws:lambda:us-east-1:123456789012:microvm-image:my-microvm-image \ --egress-network-connectors connector-arn \ --idle-policy '{"maxIdleDurationSeconds":900,"suspendedDurationSeconds":1800,"autoResumeEnabled":false}'
Nota

Prima di aggiornare o eliminare un connettore, assicurati che tutte le MicroVM che lo utilizzano siano terminate. La modifica di un connettore in uso attivo può causare problemi di connettività di rete per l'esecuzione di MicroVMS.

Puoi utilizzarlo AWS PrivateLink per la connettività privata sulla AWS rete tra le tue risorse VPC e Lambda MicroVMS, senza attraversare la rete Internet pubblica. MicroVMS supporta due endpoint VPC, a seconda della destinazione del traffico desiderata:

  • API di gestione MicroVM (creazione di immagini, esecuzione, sospensione, interruzione): utilizza l'endpoint Lambda VPC esistente (). com.amazonaws.region.lambda

  • Connettività a MicroVMS (traffico HTTPS verso le applicazioni in esecuzione): utilizza un endpoint separato (). com.amazonaws.region.lambda-microvm

Lambda MicroVMS condivide lo stesso servizio di endpoint VPC di Lambda (). com.amazonaws.region.lambda Per istruzioni complete, consulta Creazione di un endpoint di interfaccia per Lambda.

Per controllare chi può utilizzare l'endpoint dell'interfaccia e quali azioni dell'API Lambda MicroVMS può eseguire, allega una policy sugli endpoint. La policy specifica il principale che può eseguire le azioni, le azioni che può eseguire e le risorse su cui può agire. Le azioni Lambda MicroVMS utilizzano il prefisso di azione IAMlambda:.

Per ulteriori informazioni, consulta Controllo degli accessi ai servizi con endpoint VPC nella Guida per l’utente di Amazon VPC.

La seguente policy di esempio consente all'utente di MyUser elencare e ottenere immagini MicroVM tramite l'endpoint:

{ "Statement": [ { "Principal": { "AWS": "arn:aws:iam::111122223333:user/MyUser" }, "Effect": "Allow", "Action": [ "lambda:ListMicrovmImages", "lambda:GetMicrovmImage" ], "Resource": "*" } ] }

Per mantenere privato il traffico HTTPS verso le microVMS in esecuzione, crea un endpoint di interfaccia per il servizio. com.amazonaws.region.lambda-microvm Questo endpoint gestisce le connessioni agli URL degli endpoint MicroVM (ad esempio). abc123def456.lambda-microvm.us-east-1.on.aws

Per ulteriori informazioni sulle proprietà degli endpoint di interfaccia, consulta la guida agli endpoint di interfaccia nella documentazione di Amazon VPC.

Per creare un endpoint di interfaccia per la connettività MicroVM (console)

  1. Aprire la pagina Endpoint della console Amazon VPC.

  2. Seleziona Crea endpoint.

  3. In Categoria del servizio, assicurati che sia selezionato Servizi di AWS .

  4. Per Service Name (Nome del servizio), selezionare com.amazonaws.region.lambda-microvm. Verifica che il tipo sia Interfaccia.

  5. Creazione di un VPC e delle sottoreti

  6. Per abilitare il DNS privato per l'endpoint dell'interfaccia, seleziona la casella di controllo Abilita nome DNS (scelta consigliata). Ciò garantisce che le richieste che utilizzano il nome host pubblico dell'endpoint MicroVM si risolvano automaticamente nell'endpoint dell'interfaccia, senza che siano necessarie modifiche sul lato client.

  7. Per gruppo di sicurezza, scegliere uno o più gruppi di sicurezza. Il gruppo di sicurezza deve consentire il traffico TCP in uscita sulla porta 443 verso le interfacce di rete degli endpoint.

  8. Seleziona Crea endpoint.

Per utilizzare l'opzione DNS privato, devi impostare gli attributi e del enableDnsHostnames tuo VPC. enableDnsSupport Per ulteriori informazioni, consulta Visualizzazione e aggiornamento del supporto DNS per il VPC nella Guida per l'utente di Amazon VPC.

Per creare un endpoint di interfaccia per la connettività MicroVM (CLI)AWS

aws ec2 create-vpc-endpoint \ --vpc-id vpc-ec43eb89 \ --vpc-endpoint-type Interface \ --service-name com.amazonaws.us-east-1.lambda-microvm \ --subnet-id subnet-abababab \ --security-group-id sg-1a2b3c4d \ --private-dns-enabled

Per verificare che l'endpoint sia disponibile e che il DNS privato sia attivo:

aws ec2 describe-vpc-endpoints \ --vpc-endpoint-ids vpce-1a2b3c4d5e6f7g8h9 \ --query 'VpcEndpoints[0].{State:State,PrivateDns:PrivateDnsEnabled,Dns:DnsEntries[*].DnsName}'

Quando il DNS privato è abilitato: l'endpoint gestisce la risoluzione DNS all'interno del tuo VPC. *.lambda-microvm.region.on.aws I nomi host degli endpoint MicroVM esistenti (ad esempioabc123def456.lambda-microvm.us-east-1.on.aws) vengono risolti negli indirizzi IP privati delle interfacce di rete degli endpoint. Non è richiesta alcuna modifica del client.

Quando il DNS privato è disabilitato, Amazon VPC genera un nome DNS specifico per l'endpoint nel modulo. vpce-id-hash.lambda-microvm.region.vpce.amazonaws.com Per indirizzare il traffico attraverso questo endpoint continuando a raggiungere la microVM corretta, devi conservare il nome host MicroVM originale in due posizioni:

  • Indicazione del nome del server TLS (SNI): l'handshake TLS utilizza questo valore per identificare a quale microVM è destinata la connessione.

  • Intestazione HTTP Host: il proxy utilizza questo valore per indirizzare la richiesta alla MicroVM corretta.

Se uno dei valori è impostato sul nome host dell'endpoint VPC anziché sul nome host MicroVM, la connessione non può essere indirizzata alla MicroVM corretta.

Esempio: connessione tramite un nome DNS specifico dell'endpoint

L'esempio seguente utilizza curl con il --connect-to flag per reindirizzare la connessione TCP all'endpoint VPC mantenendo il nome host MicroVM nell'URL, nell'SNI e nell'intestazione Host:

ENDPOINT_HOST=abc123def456.lambda-microvm.us-east-1.on.aws VPCE_HOST=vpce-0a1b2c3d4e5f67890-a1b2c3d4.lambda-microvm.us-east-1.vpce.amazonaws.com curl --connect-to "$ENDPOINT_HOST:443:$VPCE_HOST:443" \ -H "x-aws-proxy-auth: $MICROVM_AUTH_TOKEN" \ -H "x-aws-proxy-port: 8080" \ "https://$ENDPOINT_HOST/"

Il --connect-to flag indica a curl di aprire la connessione TCP all'indirizzo dell'endpoint VPC, mentre l'URL, l'SNI TLS e l'intestazione Host rimangono impostati sul nome host MicroVM.

Per ulteriori informazioni, consultare Accesso a un servizio tramite un endpoint di interfaccia in Guida per l'utente di Amazon VPC.

È possibile allegare una policy sugli endpoint per controllare quali microVM sono raggiungibili tramite l'endpoint VPC. lambda-microvm Una policy sugli endpoint sul lambda-microvm servizio consente di definire l'ambito delle connessioni a account o organizzazioni specifici. Per impostazione predefinita, l'endpoint consente le connessioni a MicroVMS in qualsiasi account. AWS (Nota: il client che stabilisce la connessione deve ancora possedere un token di autenticazione MicroVM valido per ottenere l'accesso).

Per impostazione predefinita, un endpoint VPC ha una politica di accesso completo che consente tutto il traffico. Quando si sostituisce la policy predefinita con una policy personalizzata, Lambda MicroVMS valuta tale policy rispetto all'lambda:ConnectMicrovmazione su ogni connessione effettuata tramite l'endpoint. Se la policy non consente la connessione a MicroVMS, la connessione viene rifiutata con una risposta HTTP 403 Forbidden. Una policy che non concede lambda:ConnectMicrovm nega tutte le connessioni tramite l'endpoint.

Nota

L'lambda:ConnectMicrovmazione autorizza una connessione a un endpoint MicroVM tramite l'endpoint dell'interfaccia. Non è un'operazione API Lambda e non può essere utilizzata nelle policy IAM basate sull'identità o sulle risorse: è valida solo in una policy sugli endpoint VPC.

Principal e risorsa

Le connessioni a un endpoint MicroVM sono autenticate con un token di autenticazione MicroVM anziché con Signature Version 4. AWS Per questo motivo, nessun principale IAM è associato alla connessione. Invece, Lambda MicroVMS valuta la policy degli endpoint con un principale anonimo. Ciò significa che:

  • Principal deve essere "*". Una policy che nomina un principale specifico non corrisponde a nulla e nega ogni connessione.

  • Le chiavi di condizione che dipendono dall'identità del richiedente (ad esempioaws:PrincipalArn,aws:PrincipalOrgID, eaws:userid) non vengono compilate e non corrisponderanno.

  • Resourcedeve anche esserlo. "*" Lambda MicroVMS non prevede la valutazione delle policy degli endpoint per gli ARN delle singole risorse MicroVM. Per limitare le microVM che l'endpoint può raggiungere, utilizza la chiave di condizione anziché l'elemento. aws:ResourceAccount Resource

Chiavi di condizione supportate

Chiave di condizione Description
aws:ResourceAccount L' AWS account proprietario della microVM a cui si sta connettendo.
aws:ResourceOrgID L'ID dell' AWS organizzazione dell'account proprietario della MicroVM.
aws:SourceVpce L'ID dell'endpoint di interfaccia attraverso il quale è passata la connessione.
aws:SourceVpc L'ID del VPC da cui proviene la connessione.
aws:VpcSourceIp L'indirizzo IP privato del client che ha effettuato la connessione.

Esempio: consenti le connessioni solo a MicroVMS nel tuo account

La seguente politica sugli endpoint consente le connessioni tramite l'endpoint solo a MicroVMS di proprietà dell'account 111122223333. Le connessioni a MicroVMS di proprietà di qualsiasi altro account vengono negate.

{ "Statement": [ { "Principal": "*", "Effect": "Allow", "Action": "lambda:ConnectMicrovm", "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceAccount": "111122223333" } } } ] }