컨테이너 이미지가 있는 Lambda 함수의 “Lambda에 ECR 이미지에 액세스할 권한이 없습니다...” 오류를 해결하려면 어떻게 해야 하나요?

2분 분량
0

컨테이너 이미지로 AWS Lambda 함수를 만들려고 했지만 Amazon Elastic Container Registry(Amazon ECR) 권한 오류가 발생했습니다.

간략한 설명

컨테이너 이미지에서 Lambda 함수를 생성하려면 함수와 Amazon ECR 리포지토리를 생성하는 사용자 또는 역할에 액세스를 허용하는 정책이 있어야 합니다.

참고: Lambda 함수를 생성하기 전에 먼저 Lambda 컨테이너 이미지를 생성하세요. 그런 다음 이미지를 Amazon ECR 리포지토리에 업로드합니다.

자세한 내용은 Lambda 함수를 컨테이너 이미지로 배포를 참조하세요.

해결 방법

사설 리포지토리 정책 문을 설정하려면 다음 단계를 따르세요.

참고: 작업을 수행하는 데 필요한 권한에만 최소 권한을 부여하는 것이 가장 좋습니다. 자세한 내용은 최소 권한 적용을 참조하세요.

1. 동일한 AWS 계정에서 Amazon ECR 이미지 URI로부터 Lambda 함수 생성

다음 예에서는 Amazon ECR 리포지토리 권한이 Lambda 서비스에 대한 ECR:BatchGetImageECR:GetDownloadURL ForLayer API 작업을 허용해야 합니다.

Amazon ECR 리포지토리 정책의 예:

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

2. 크로스 계정의 Amazon ECR 이미지 URI에서 Lambda 함수 생성

다음 예에서 AWS 계정 111111111111과 Amazon ECR 리포지토리에서 생성된 Lambda 함수는 AWS 계정 222222222222에 있습니다.

Lambda 함수를 생성하거나 업데이트한 사용자 또는 역할에는 ECR 리포지토리에 대한 ECR:BatchGetImageECR:GetDownloadUrlForLayer 권한이 있어야 합니다.

{
  "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"
    }
  ]
}

다음 예에서 CrossAccountPermission 문을 사용하면 AWS 계정 111111111111에서 Amazon ECR 리포지토리의 이미지를 사용하는 Lambda 함수를 생성하고 업데이트할 수 있습니다.

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는 함수가 장기간 호출되지 않는다면 결국 함수 상태를 비활성으로 설정합니다.

참고: AWS 계정 111111111111에서 Lambda가 컨테이너 이미지를 검색할 수 있으려면 LambdaECRImageCrossAccountRetrievalPolicy 문이 필요합니다.

자세한 내용은 Amazon ECR 크로스 계정 권한을 참조하세요.

관련 정보

AWS Lambda를 위한 크로스 계정 Amazon ECR 액세스 소개

Lambda의 권한 문제를 해결하려면 어떻게 해야 하나요?

AWS 공식
AWS 공식업데이트됨 일 년 전
댓글 없음