Come posso risolvere l'errore "Lambda non ha i permessi per accedere all'immagine ECR..." per una funzione Lambda con un'immagine contenitore?

3 minuti di lettura
0

Ho provato a creare una funzione AWS Lambda con un'immagine container, ma ho ricevuto un errore di autorizzazione da parte di Amazon Elastic Container Registry (Amazon ECR).

Breve descrizione

Per creare una funzione Lambda da un'immagine container, l'utente o il ruolo che crea la funzione e l’archivio Amazon ECR devono disporre di policy che consentano l'accesso.

**Nota:**Prima di creare la funzione Lambda, prima crea un'immagine container Lambda. Quindi, carica l'immagine in un archivio Amazon ECR.

Per ulteriori informazioni, consulta Implementazione di funzioni Lambda come immagini container.

Risoluzione

Segui questi passaggi per impostare una dichiarazione sulla policy dell’archivio privato.

**Nota:**È consigliabile concedere il privilegio minimo solo per le autorizzazioni necessarie per eseguire un'attività. Per ulteriori informazioni, consulta Applicare le autorizzazioni con privilegi minimi.

1. Crea una funzione Lambda dall'URI dell'immagine Amazon ECR nello stesso account AWS

Nell'esempio seguente, le autorizzazioni dell’archivio Amazon ECR devono consentire le azioni delle API ecr:BatchGetImage e ecr:GetDownloadUrlForLayer sul servizio Lambda.

Esempio di policy relativa all’archivio Amazon ECR:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "LambdaECRImageRetrievalPolicy",
      "Effect": "Allow",
      "Principal": {
        "Service": "lambda.amazonaws.com"
      },
      "Action": [
        "ecr:BatchGetImage",
        "ecr:GetDownloadUrlForLayer"
      ]
    }
  ]
}

2. Creare una funzione Lambda dall'URI dell'immagine ECR di Amazon in un account trasversale

Nell'esempio seguente, le funzioni Lambda create nell'account AWS 111111111111 e nell’archivio Amazon ECR si trovano nell'account AWS 222222222222.

L'utente o il ruolo che ha creato o aggiornato la funzione Lambda deve disporre delle autorizzazioni ecr:BatchGetImage ed ecr:GetDownloadUrlForLayer per l'archivio ECR.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "ECR Repository Access Permissions",
      "Effect": "Allow",
      "Action": [
        "ecr:GetDownloadUrlForLayer",
        "ecr:BatchGetImage"
      ],
      "Resource": "arn:aws:ecr:us-east-1:222222222222:repository/hello-repository"
    }
  ]
}

Nell'esempio seguente, l'istruzione CrossAccountPermission consente all'account AWS111111111111 di creare e aggiornare funzioni Lambda che utilizzano immagini dall’archivio Amazon ECR.

Esempio di policy diaccount trasversale dell’archivio Amazon ECR:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "CrossAccountPermission",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111111111111:root"
      },
      "Action": [
        "ecr:BatchGetImage",
        "ecr:GetDownloadUrlForLayer"
      ]
    },
    {
      "Sid": "LambdaECRImageCrossAccountRetrievalPolicy",
      "Effect": "Allow",
      "Principal": {
        "Service": "lambda.amazonaws.com"
      },
      "Action": [
        "ecr:BatchGetImage",
        "ecr:GetDownloadUrlForLayer"
      ],
      "Condition": {
        "StringLike": {
          "aws:sourceARN": "arn:aws:lambda:us-east-1:111111111111:function:*"
        }
      }
    }
  ]
}

Lambda alla fine imposta lo stato di una funzione su inattivo se non viene richiamata per un periodo di tempo prolungato.

**Nota:**L'istruzione LambdaECRImageCrossAccountRetrievalPolicy è necessaria affinché Lambda possa recuperare l'immagine container per l'account AWS 111111111111.

Per ulteriori informazioni, consulta la sezione Autorizzazioni account trasversali Amazon ECR.

Informazioni correlate

Presentazione dell'accesso ad Amazon ECR di account trasversali per AWS Lambda

Come posso risolvere i problemi relativi alle autorizzazioni con Lambda?

AWS UFFICIALE
AWS UFFICIALEAggiornata un anno fa