Come posso consentire alla mia funzione Lambda di accedere al mio bucket Amazon S3?

4 minuti di lettura
0

Voglio che la mia funzione AWS Lambda sia in grado di accedere al mio bucket Amazon Simple Storage Service (Amazon S3).

Breve descrizione

Per dare alla tua funzione Lambda l'accesso a un bucket Amazon S3 nello stesso account AWS, procedi come segue:

  1. Crea un ruolo AWS Identity and Access Management (IAM) per la funzione Lambda che garantisca anche l'accesso al bucket S3.

  2. Configura il ruolo IAM come ruolo di esecuzione delle funzioni Lambda.

  3. Verifica che la policy del bucket S3 non neghi esplicitamente l'accesso alla tua funzione Lambda o al suo ruolo di esecuzione.

Importante: Se il bucket S3 e il ruolo IAM delle funzioni appartengono ad account diversi, devi concedere i permessi necessari anche al criterio del bucket S3. Per ulteriori informazioni, vedi Come posso fornire l'accesso tra account agli oggetti che si trovano nei bucket Amazon S3?

Risoluzione

Crea un ruolo IAM per la funzione Lambda che garantisca anche l'accesso al bucket S3

  1. Segui i passaggi descritti in Creazione di un ruolo di esecuzione nella console IAM.

  2. Dall'elenco dei ruoli IAM, scegli il ruolo che hai appena creato.

  3. La policy di fiducia deve consentire a Lambda di assumere il ruolo di esecuzione aggiungendo lambda.amazonaws.com come servizio affidabile. Scegli la scheda Relazioni di fiducia, scegli Modifica policy di fiducia e sostituisci la policy con la seguente:

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

4. Scegli Aggiorna policy.

  1. Nella scheda Autorizzazioni, scegli Aggiungi policy in linea.

  2. Scegli la scheda JSON.

  3. Inserisci una policy IAM basata sulle risorse che garantisca l'accesso al tuo bucket S3. Per ulteriori informazioni, consulta Utilizzo di policy basate sulle risorse per AWS Lambda.

Il seguente esempio di criterio IAM concede l'accesso a uno specifico bucket Amazon S3 con i permessi Get. Per accedere agli oggetti all'interno del bucket Amazon S3, assicurati di specificare il percorso corretto o di utilizzare un carattere jolly ("*"). Per ulteriori informazioni, consulta Scrittura delle policy IAM: Come concedere l'accesso a un bucket Amazon S3 per ulteriori informazioni.

Importante: Sostituisci "arn:aws:s3:::EXAMPLE-BUCKET" con i tuoi bucket S3 Amazon Resource Name (ARN).

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "ExampleStmt",
      "Action": [
        "s3:GetObject"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:s3:::EXAMPLE-BUCKET/*"
      ]
    }
  ]
}
  1. Scegli Revisione policy.

  2. In Nome, inserisci un nome per la tua policy.

  3. Scegli Crea policy.

Configurare il ruolo IAM come ruolo di esecuzione delle funzioni Lambda

  1. Apri la console Lambda.

  2. Scegli la tua funzione Lambda.

  3. In Ruolo di esecuzione, in Ruolo esistente, seleziona il ruolo IAM che hai creato.

  4. Scegli Salva.

Verifica che il criterio del bucket S3 non neghi esplicitamente l'accesso alla tua funzione Lambda o al suo ruolo di esecuzione

Per rivedere o modificare la policy del bucket S3, segui le istruzioni in Aggiungere una policy dei bucket utilizzando la consolle Amazon S3.

Importante: Se il tuo bucket S3 e il ruolo IAM delle funzioni si trovano in account diversi, devi anche concedere esplicitamente le autorizzazioni richieste sulla policy del bucket S3. Per ulteriori informazioni, vedi Come posso fornire l'accesso tra account agli oggetti che si trovano nei bucket Amazon S3?

La policy del bucket IAM S3 di esempio concede a un ruolo di esecuzione Lambda l'accesso tra account a un bucket S3.

Importante: Sostituisci "arn:aws:s3:::EXAMPLE-BUCKET/*" con l'ARN dei tuoi bucket S3. Sostituisci "arn:aws:iam::123456789012:role/ExampleLambdaRoleFor123456789012" con i tuoi ruoli di esecuzione Lambda ARN.

{
  "Id": "ExamplePolicy",
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "ExampleStmt",
      "Action": [
        "s3:GetObject"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:s3:::EXAMPLE-BUCKET/*"
      ],
      "Principal": {
        "AWS": [
          "arn:aws:iam::123456789012:role/ExampleLambdaRoleFor123456789012"
        ]
      }
    }
  ]
}

Informazioni correlate

Generatore di policy AWS

AWS UFFICIALE
AWS UFFICIALEAggiornata un anno fa