Configurazione di ruoli e autorizzazioni IAM per Lambda@Edge - Amazon CloudFront

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

Configurazione di ruoli e autorizzazioni IAM per Lambda@Edge

Per configurare Lambda@Edge, devi disporre delle seguenti autorizzazioni e ruoli IAM per AWS Lambda:

Autorizzazioni IAM necessarie per associare le funzioni Lambda @Edge alle distribuzioni CloudFront

Oltre alle autorizzazioni IAM necessarie per Lambda, sono necessarie le seguenti autorizzazioni per associare le funzioni Lambda alle distribuzioni: CloudFront

  • lambda:GetFunction: concede l’autorizzazione per ottenere informazioni di configurazione relative alla funzione Lambda e un URL pre-firmato per scaricare un file .zip contenente la funzione.

  • lambda:EnableReplication*: concede l’autorizzazione alla policy delle risorse in modo che il servizio di replica Lambda possa ottenere il codice e la configurazione della funzione.

  • lambda:DisableReplication*: concede l’autorizzazione alla policy delle risorse in modo che il servizio di replica Lambda possa eliminare la funzione.

    Importante

    È necessario aggiungere l’asterisco (*) alla fine delle azioni lambda:EnableReplication* e lambda:DisableReplication*.

  • Per la risorsa, specificate l'ARN della versione della funzione che desiderate eseguire quando si verifica un CloudFront evento, come nell'esempio seguente:

    arn:aws:lambda:us-east-1:123456789012:function:TestFunction:2

  • iam:CreateServiceLinkedRole— Concede l'autorizzazione a creare un ruolo collegato al servizio che Lambda @Edge utilizza per replicare le funzioni Lambda. CloudFront Dopo aver configurato Lambda@Edge per la prima volta, il ruolo collegato al servizio viene creato automaticamente. Non è necessario aggiungere questa autorizzazione ad altre distribuzioni che utilizzano Lambda@Edge.

  • cloudfront:UpdateDistribution o cloudfront:CreateDistribution: concede l’autorizzazione per aggiornare o creare una distribuzione.

Per ulteriori informazioni, consulta i seguenti argomenti:

Ruolo di esecuzione della funzione per i principali del servizio

È necessario creare un ruolo IAM che può essere assunto dai principali servizi lambda.amazonaws.com e edgelambda.amazonaws.com quando eseguono la funzione.

Suggerimento

Quando crei la tua funzione nella console Lambda, puoi scegliere di creare un nuovo ruolo di esecuzione utilizzando un modello di AWS policy. Questa fase aggiunge automaticamente le autorizzazioni Lambda@Edge richieste per eseguire la funzione. Consulta Fase 5 del tutorial: creazione di una semplice funzione Lambda@Edge.

Per ulteriori informazioni sulla creazione manuale di un ruolo IAM, consulta Creazione di ruoli e collegamento di policy (console) nella Guida per l’utente IAM.

Esempio: policy di attendibilità del ruolo

Puoi aggiungere questo ruolo nella scheda Relazioni di attendibilità nella console IAM. Non aggiungere questa policy nella scheda Autorizzazioni.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "lambda.amazonaws.com", "edgelambda.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }

Per ulteriori informazioni sulle autorizzazioni da concedere al ruolo di esecuzione, consulta Autorizzazioni di accesso alle risorse Lambda nella Guida per gli sviluppatori di AWS Lambda .

Note
  • Per impostazione predefinita, ogni volta che un CloudFront evento attiva una funzione Lambda, i dati vengono scritti CloudWatch nei log. Se si desidera utilizzare questi registri, il ruolo di esecuzione richiede l'autorizzazione per scrivere dati nei registri. CloudWatch Puoi utilizzare il ruolo AWSLambdaBasicExecutionRole predefinito per concedere l’autorizzazione al ruolo di esecuzione.

    Per ulteriori informazioni sui CloudWatch registri, vedere. Registri delle funzioni Edge

  • Se il codice della funzione Lambda accede ad altre AWS risorse, ad esempio la lettura di un oggetto da un bucket S3, il ruolo di esecuzione necessita dell'autorizzazione per eseguire tale azione.

Ruoli collegati ai servizi per Lambda@Edge

Lambda@Edge usa un ruolo collegato al servizio IAM. Un ruolo collegato ai servizi è un tipo univoco di ruolo IAM collegato direttamente a un servizio. I ruoli collegati ai servizi sono definiti automaticamente dal servizio stesso e includono tutte le autorizzazioni richieste dal servizio per eseguire chiamate agli altri servizi AWS per tuo conto.

Lambda@Edge usa i seguenti ruoli collegati al servizio IAM:

  • AWSServiceRoleForLambdaReplicator: Lambda@Edge utilizza questo ruolo per consentire a Lambda@Edge di replicare funzioni su Regioni AWS.

    Quando aggiungi per la prima volta un trigger Lambda @Edge CloudFront, AWSServiceRoleForLambdaReplicator viene creato automaticamente un ruolo denominato per consentire a Lambda @Edge di replicare le funzioni. Regioni AWS Tale ruolo è obbligatorio per utilizzare le funzioni Lambda@Edge. L’aspetto dell’ARN per il ruolo AWSServiceRoleForLambdaReplicator è simile a quello dell’esempio seguente:

    arn:aws:iam::123456789012:role/aws-service-role/replicator.lambda.amazonaws.com/AWSServiceRoleForLambdaReplicator

  • AWSServiceRoleForCloudFrontLogger— CloudFront utilizza questo ruolo per inviare file di registro in. CloudWatch Puoi utilizzare i file di log per eseguire il debug degli errori di convalida di Lambda@Edge.

    Il AWSServiceRoleForCloudFrontLogger ruolo viene creato automaticamente quando si aggiunge l'associazione di funzioni Lambda @Edge per consentire di inviare i file di CloudFront registro degli errori Lambda @Edge a. CloudWatch L'ARN per il ruolo AWSServiceRoleForCloudFrontLogger avrà il seguente aspetto:

    arn:aws:iam::account_number:role/aws-service-role/logger.cloudfront.amazonaws.com/AWSServiceRoleForCloudFrontLogger

Un ruolo collegato ai servizi semplifica la configurazione e l'utilizzo di Lambda@Edge perché non dovrai più aggiungere manualmente le autorizzazioni necessarie. Lambda@Edge definisce le autorizzazioni dei relativi ruoli associati ai servizi e solo Lambda@Edge potrà assumere i propri ruoli. Le autorizzazioni definite includono policy di trust e di autorizzazioni. Le policy di autorizzazioni non possono essere attribuite a nessun'altra entità IAM.

È necessario rimuovere tutte le risorse associate CloudFront o Lambda @Edge prima di poter eliminare un ruolo collegato al servizio. Questo aiuta a proteggere le risorse Lambda@Edge in modo da non rimuovere un ruolo collegato al servizio che è ancora necessario per accedere alle risorse attive.

Per ulteriori informazioni sui ruoli collegati al servizio, consulta Ruoli collegati ai servizi per CloudFront.

Autorizzazioni del ruolo collegato ai servizi per Lambda@Edge

Lambda@Edge usa due ruoli collegati ai servizi denominati AWSServiceRoleForLambdaReplicator e AWSServiceRoleForCloudFrontLogger. Nelle sezioni seguenti vengono descritte le autorizzazioni per ognuno di questi ruoli.

Autorizzazioni del ruolo collegato ai servizi per Lambda Replicator

Questo ruolo collegato al servizio consente a Lambda di replicare le funzioni Lambda@Edge su Regioni AWS.

Ai fini dell'assunzione del ruolo AWSServiceRoleForLambdaReplicator, il ruolo collegato ai servizi replicator.lambda.amazonaws.comconsidera attendibile il servizio.

La policy delle autorizzazioni del ruolo consente a Lambda@Edge di eseguire le seguenti operazioni sulle risorse specificate:

  • lambda:CreateFunction - arn:aws:lambda:*:*:function:*

  • lambda:DeleteFunction - arn:aws:lambda:*:*:function:*

  • lambda:DisableReplication - arn:aws:lambda:*:*:function:*

  • iam:PassRole - all AWS resources

  • cloudfront:ListDistributionsByLambdaFunction - all AWS resources

Autorizzazioni relative ai ruoli collegati ai servizi per logger CloudFront

Questo ruolo collegato al servizio consente di CloudFront inviare file di registro in CloudWatch modo da poter eseguire il debug degli errori di convalida Lambda @Edge.

Ai fini dell'assunzione del ruolo AWSServiceRoleForCloudFrontLogger, il ruolo collegato ai servizi logger.cloudfront.amazonaws.comconsidera attendibile il servizio.

La policy delle autorizzazioni del ruolo consente a Lambda@Edge di eseguire le seguenti azioni sulla risorsa arn:aws:logs:*:*:log-group:/aws/cloudfront/* specificata:

  • logs:CreateLogGroup

  • logs:CreateLogStream

  • logs:PutLogEvents

Per consentire a un'entità IAM (ad esempio un utente, un gruppo o un ruolo) di eliminare ruoli Lambda@Edge collegati ai servizi, devi configurare le autorizzazioni. Per ulteriori informazioni, consulta Autorizzazioni del ruolo collegato ai servizi nella Guida per l'utente IAM.

Creazione di ruoli collegati ai servizi per Lambda@Edge

In genere non si creano manualmente i ruoli collegati ai servizi per Lambda@Edge. Il servizio crea i ruoli automaticamente nei seguenti casi:

  • Quando si crea un trigger per la prima volta, il servizio crea il ruolo AWSServiceRoleForLambdaReplicator (se non esiste già). Questo ruolo consente a Lambda di replicare le funzioni Lambda@Edge su Regioni AWS.

    Se lo elimini, il ruolo collegato ai servizi verrà creato nuovamente quando aggiungi un nuovo trigger per Lambda@Edge in una distribuzione.

  • Quando aggiorni o crei una CloudFront distribuzione con un'associazione Lambda @Edge, il servizio crea il AWSServiceRoleForCloudFrontLogger ruolo (se il ruolo non esiste già). Questo ruolo consente di CloudFront inviare i file di registro a CloudWatch.

    Se elimini il ruolo collegato al servizio, il ruolo verrà creato nuovamente quando aggiorni o crei una CloudFront distribuzione con un'associazione Lambda @Edge.

Per creare manualmente questi ruoli collegati ai servizi, puoi eseguire i seguenti comandi (): AWS Command Line Interface AWS CLI

Per creare il ruolo AWSServiceRoleForLambdaReplicator
  • Esegui il comando seguente.

    aws iam create-service-linked-role --aws-service-name replicator.lambda.amazonaws.com
Per creare il ruolo AWSServiceRoleForCloudFrontLogger
  • Esegui il comando seguente.

    aws iam create-service-linked-role --aws-service-name logger.cloudfront.amazonaws.com

Modifica dei ruoli Lambda@Edge collegati ai servizi

Lambda@Edge non consente di modificare i ruoli collegati al servizio AWSServiceRoleForLambdaReplicator o AWSServiceRoleForCloudFrontLogger. Dopo che è stato creato un ruolo collegato al servizio, non puoi modificare il nome del ruolo perché varie entità possono farvi riferimento. Puoi tuttavia utilizzare IAM per modificare la descrizione del ruolo. Per ulteriori informazioni, consulta Modifica di un ruolo collegato al servizio nella Guida per l’utente di IAM.

Supportato Regioni AWS per i ruoli collegati ai servizi Lambda @Edge

CloudFront supporta l'utilizzo di ruoli collegati ai servizi per Lambda @Edge nei seguenti casi: Regioni AWS

  • Stati Uniti orientali (Virginia settentrionale) – us-east-1

  • Stati Uniti orientali (Ohio) – us-east-2

  • Stati Uniti occidentali (California settentrionale) – us-west-1

  • Stati Uniti occidentali (Oregon) – us-west-2

  • Asia Pacifico (Mumbai) – ap-south-1

  • Asia Pacifico (Seul) - ap-northeast-2

  • Asia Pacifico (Singapore) – ap-southeast-1

  • Asia Pacifico (Sydney) - ap-southeast-2

  • Asia Pacifico (Tokyo) - ap-northeast-1

  • Europe (Francoforte) – eu-central-1

  • Europa (Irlanda) – eu-west-1

  • Europe (Londra) – eu-west-2

  • Sud America (San Paolo) – sa-east-1