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à.
Limita l'accesso a un AWS Lambda Origine della funzione Web
Puoi utilizzare Origin Access Control (OAC) per limitare l'accesso a un'origine di AWS Lambda Web Function. Una funzione Web Lambda fornisce il proprio endpoint HTTPS regionale o globale, che viene utilizzato come dominio di origine per la distribuzione. CloudFront Per ulteriori informazioni su Lambda Web Functions, consulta AWS Lambda Web Functions nella AWS Lambda Developer Guide.
Nota
OAC con Lambda Web Functions non è supportato per gli endpoint globali che includono regioni opt-in. Se l'endpoint indirizza una richiesta a una regione opt-in, CloudFront non può firmare la richiesta per quella regione. L'origine restituisce quindi un errore HTTP 403 (Forbidden). Tutte le regioni associate all'endpoint globale devono essere regioni abilitate per impostazione predefinita.
Per informazioni sull'utilizzo di OAC con l'origine dell'URL di una funzione Lambda, vedere. Limita l'accesso a un AWS Lambda origine dell'URL della funzione
Prerequisiti
Prima di creare e configurare OAC, è necessario disporre di una CloudFront distribuzione con una funzione Web Lambda come origine. Il nome di dominio di origine è il nome host dell'endpoint della funzione Web Lambda. CloudFront identifica il tipo di endpoint dal nome host:
-
Endpoint regionale (
HomeRegione tipi diPerRegionendpoint): il nome host termina con.lambda-web.AWS-Region.on.aws -
Endpoint globale (tipo di
MultiRegionendpoint): il nome host termina con.lambda-web.global.on.aws
La configurazione deve inoltre soddisfare i seguenti requisiti:
-
Tipo di autenticazione dell'endpoint: il tipo di autenticazione dell'endpoint deve essere.
IamAuthConIamAuth, l'endpoint utilizza AWS Identity and Access Management (IAM) per autenticare e autorizzare le richieste. Per le richieste provenienti da CloudFront, l'autorizzazione si basa sulla politica basata sulle risorse di Lambda Web Function. CloudFront firma le richieste per conto del visualizzatore e l'endpoint convalida la firma. Per ulteriori informazioni, consulta CloudFront l'integrazione nella Guida per gli AWS Lambda sviluppatori. -
Politica della cache: se la tua funzione Web Lambda utilizza l'Authorizationintestazione del visualizzatore, devi aggiungere l'intestazione alla politica della cache. Questo requisito si applica a ogni comportamento della cache che utilizza l'origine. Per
HEADle richiesteGETe, CloudFront rimuove l'Authorizationintestazione prima di inoltrare la richiesta, a meno che l'intestazione non sia inclusa nella politica della cache. Per ulteriori informazioni, consulta Intestazioni e CloudFront comportamento delle richieste HTTP (origini personalizzate e Amazon S3). -
Politica di richiesta di origine: utilizza una politica di richiesta di origine che escluda l'intestazione del visualizzatore.
HostGli endpoint di Lambda Web Function si aspettano che l'Hostintestazione contenga il nome di dominio di origine, non il nome di dominio della distribuzione. CloudFront Se l'Hostintestazione contiene il nome di dominio della distribuzione, l'endpoint restituisce un errore HTTP 404 (Not Found). Se utilizzi una policy di richiesta di origine gestita, usaAllViewerExceptHostHeader, no.AllViewerPer ulteriori informazioni, consulta AllViewerExceptHostHeader.
Nota
I trigger di richiesta di origine Lambda @Edge e origin response non sono supportati nei comportamenti della cache che utilizzano un'origine di Lambda Web Function con OAC. Questo vale per gli endpoint regionali e globali e per le origini a cui si accede direttamente o tramite un gruppo di origine. CloudFront rifiuta una configurazione di distribuzione che li contiene entrambi.
Concedi CloudFront l'autorizzazione per accedere alla funzione Web Lambda
Allega una policy basata sulle risorse alla funzione Web Lambda che consente al CloudFront service principal (cloudfront.amazonaws.com) di richiamare l'endpoint. L'azione IAM per richiamare un endpoint è. lambda:InvokeWebFunctionEndpoint La policy è allegata alla funzione Web Lambda, ma ogni istruzione può riferirsi Resource a un ARN di endpoint specifico. Utilizza un Condition elemento per consentire l'accesso CloudFront all'endpoint solo quando la richiesta è per conto della CloudFront distribuzione che contiene l'origine.
Esempio Resource-based politica per CloudFront OAC
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCloudFrontOACAccess", "Effect": "Allow", "Principal": { "Service": "cloudfront.amazonaws.com" }, "Action": "lambda:InvokeWebFunctionEndpoint", "Resource": "arn:aws:lambda:us-east-1:111122223333:web-function/my-function/endpoint/prod", "Condition": { "StringEquals": { "aws:SourceArn": "arn:aws:cloudfront::111122223333:distribution/EDFDVBD6EXAMPLE" } } } ] }
Per allegare la policy basata sulle risorse, usa il put-resource-policy comando con la funzione ARN (non un endpoint ARN):
aws lambda-web put-resource-policy \ --resource-arn "arn:aws:lambda:us-east-1:111122223333:web-function/my-function" \ --policy file://policy.json \ --region us-east-1
È possibile rivedere o rimuovere la politica con i comandi and. get-resource-policy delete-resource-policy
Nota
Per gli endpoint che si estendono su più di una regione, Lambda replica le modifiche alle policy in tutte le regioni che servono l'endpoint. L'entrata in vigore di una policy nuova o aggiornata può richiedere poco tempo per diventare effettiva in ogni regione. Per ulteriori informazioni, consulta Replica ed eventuale coerenza nella Guida per gli AWS Lambda sviluppatori.
Creazione del controllo di accesso origine
Per creare un controllo di accesso all'origine (OAC), puoi utilizzare l' Console di gestione AWS, CloudFormation AWS CLI, o l'API. CloudFront
L'OAC ha effetto per ogni richiesta solo al termine della distribuzione. Per un endpoint che si estende su più di una regione, la policy basata sulle risorse allegata in precedenza deve inoltre completare la replica in ogni regione che serve l'endpoint. Fino al completamento di entrambe le richieste, alcune richieste possono ricevere una risposta HTTP 403 transitoria dall'origine. Questi errori si risolvono automaticamente al termine della distribuzione e della replica della policy.
Comportamento della firma
Le origini di Lambda Web Function supportano solo il comportamento di always-amz-auth firma (firma sempre, conserva l'autorizzazione del visualizzatore nella console). CloudFront firma sempre tutte le richieste che invia alla funzione Web Lambda, ma non sostituisce l'Authorizationintestazione della richiesta del visualizzatore. Al contrario, CloudFront aggiunge la sua firma in un' CloudFront intestazione dedicata e passa l'intestazione del visualizzatore all'Authorizationorigine senza modifiche. Con questo comportamento, la tua funzione Web Lambda può ricevere l'Authorizationintestazione originale del visualizzatore (ad esempio, per eseguire la propria autenticazione o autorizzazione). CloudFront continua a firmare ogni richiesta che invia all'origine. Per inoltrare l'Authorizationintestazione del visualizzatore, è necessario aggiungerla a una politica di cache per ogni comportamento della cache che utilizza l'origine.
Gli altri comportamenti di firma (alwaysnever, eno-override) non sono supportati per le origini di Lambda Web Function. Il comportamento di always-amz-auth firma non è supportato per nessun altro tipo di origine, incluse le origini degli URL della funzione Lambda.
PerPUT, and POST PATCH requests, CloudFront firma la richiesta di origine con un payload () non firmato. UNSIGNED-PAYLOAD Il corpo della richiesta non è coperto dalla CloudFront firma. La firma copre ancora il metodo di richiesta, il percorso, la stringa di query e le intestazioni che identificano la distribuzione. L'endpoint può quindi verificare che ogni richiesta provenga per CloudFront conto della distribuzione prima di richiamare la funzione Web Lambda. Il corpo della richiesta è protetto in transito dalla connessione HTTPS tra CloudFront e l'endpoint. Non è necessario includere un'x-amz-content-sha256intestazione nelle richieste di. CloudFront Se uno spettatore ne invia una, CloudFront non la usa quando firma la richiesta di origine.