Lambda 권한 문제를 해결하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2022년 10월 26일

AWS Lambda 함수와 관련된 몇 가지 권한 문제가 있습니다. 어떤 문제 해결 단계를 수행해야 하나요?

간략한 설명

Lambda 함수 권한 문제는 다음과 같은 이유로 인해 발생합니다.

  • Lambda 함수는 코드에 포함된 작업을 실행할 권한이 없습니다.
  • Lambda 함수 호출을 담당하는 AWS 서비스에 함수를 호출할 권한이 충분하지 않습니다.
  • 사용자 계정에는 Lambda 리소스를 생성, 업데이트 또는 삭제할 수 있는 적절한 권한이 없습니다.
  • Amazon Elastic Compute Cloud(Amazon EC2) 권한이 없기 때문에 Lambda는 탄력적 네트워크 인터페이스를 생성할 권한이 없습니다.

해결 방법

권한 고려 사항

  • Lambda 함수의 실행 역할은 AWS 서비스 및 리소스에 액세스할 수 있는 권한을 함수에 부여하는 AWS Identity and Access Management(IAM) 역할입니다. 함수를 생성할 때 이 역할을 제공하면 함수가 호출될 때 Lambda가 역할을 수임합니다. Amazon CloudWatch로 로그를 전송하고 추적 데이터를 AWS X-Ray에 업로드할 권한이 있는 실행 역할을 생성할 수 있습니다.
  • 언제든지 Lambda 함수의 실행 역할에 권한을 추가하거나 제거할 수 있습니다. 다른 역할을 사용하도록 Lambda 함수를 구성할 수도 있습니다. AWS SDK를 사용하여 함수가 호출하는 모든 AWS 서비스에 대한 권한을 추가합니다. 그런 다음 Lambda가 선택적 기능을 켜는 데 사용하는 AWS 서비스에 대한 권한을 추가합니다.
  • Lambda 함수를 생성할 때 실행 역할을 제공합니다. 새 Lambda 함수를 호출하면 Lambda는 실행 역할을 수임하여 함수에 임시 보안 인증을 자동으로 제공합니다. 함수 코드에서 sts:AssumeRole을 호출할 필요는 없습니다. Lambda 함수에 권한을 추가할 때 함수의 코드 또는 구성도 업데이트합니다. 함수의 코드나 구성을 업데이트하면 함수의 실행 중인 인스턴스가 강제로 중지되어 교체될 수 있습니다. 자세한 내용은 Lambda에서 리소스 기반 정책 사용을 참조하세요.
  • 리소스 기반 정책을 사용하여 각 리소스의 다른 AWS 계정 또는 조직에 사용 권한을 부여합니다. 리소스 기반 정책은 사용자를 대신하여 Lambda 함수를 호출할 수 있는 권한을 AWS 서비스에 부여할 수 있습니다.
  • Lambda 함수를 호출하거나 관리하려면 계정에 권한을 부여하세요. 단일 리소스 기반 정책을 생성하여 AWS Organizations의 전체 조직에 권한을 부여합니다. 리소스 기반 정책을 사용하여 AWS 서비스에 호출 권한을 부여하면 지정된 계정 활동에 대한 응답으로 함수를 호출할 수 있습니다.
  • 리소스 기반 정책은 단일 함수, 버전, 별칭 또는 계층 버전에 적용됩니다. 리소스 기반 정책은 하나 이상의 AWS 서비스 및 계정에 권한을 부여합니다. 여러 리소스에 액세스해야 하는 신뢰할 수 있는 계정이나 리소스 기반 정책에서 지원하지 않는 API 작업을 사용하려면 계정 간 역할을 사용하세요. 자세한 내용은 Lambda 권한을 참조하세요.
  • IAM 자격 증명 기반 정책을 사용하여 계정 사용자에게 Lambda에 대한 액세스 권한을 합니다. 자격 증명 기반 정책은 사용자에게 직접 적용되거나 사용자와 연결된 그룹 및 역할에 적용될 수 있습니다. 다른 계정의 사용자에게 본인 계정 내 역할을 수임하고 Lambda 리소스에 액세스할 수 있는 권한을 부여합니다.
  • Lambda는 Lambda API 작업에 대한 액세스 권한을 부여하는 AWS 관리형 정책을 제공합니다. 관리형 정책은 Lambda 리소스를 개발하고 관리하는 데 사용되는 다른 AWS 서비스에 대한 액세스 권한을 부여할 수 있습니다. Lambda는 필요에 따라 이러한 관리형 정책을 업데이트하여 사용자가 새로운 기능이 출시될 때 이를 이용할 수 있도록 합니다. 자세한 내용은 Identity-based IAM policies for Lambda를 참조하세요.

문제 해결 단계

1.    Lambda 함수가 다른 함수나 다른 AWS 서비스를 호출해야 하는데 실패하는 경우 Lambda 실행 역할을 확인합니다.
자세한 내용은 Lambda 실행 역할을 참조하세요.

2.    AWS 서비스 또는 사용자에게 Lambda:InvokeFunction 작업에 대한 권한이 설정되어 있는지 확인합니다.
자세한 내용은 AWS Lambda에 대한 작업, 리소스 및 조건 컨텍스트 키를 참조하십시오.

3.    교차 계정 시나리오에서 소스 및 대상 계정에 액세스하여 Lambda 함수를 호출하는 IAM 역할을 수임하는 데 필요한 권한을 확인합니다.
자세한 내용은 Lambda 함수가 다른 AWS 계정의 IAM 역할을 수임하도록 구성하려면 어떻게 해야 합니까?를 참조하세요.

4.    VPC에 연결하려면 Lambda 함수의 실행 역할에 다음 권한이 있어야 합니다.
ec2:CreateNetworkInterface
ec2:DescribeNetworkInterfaces
ec2:DeleteNetworkInterface

5.    작동하지 않는 권한을 작업 중인 설정과 비교하여 권한 문제를 해결합니다. AWS 설명서를 참조하여 권한을 확인할 수도 있습니다.

6.    소스 계정에는 Lambda 함수를 호출할 권한이 필요합니다. Lambda 함수에 필요한 이벤트 소스 매핑 권한을 검토합니다. 이벤트 소스 매핑은 함수 실행 역할의 권한을 사용하여 이벤트 소스의 항목을 읽고 관리합니다. 권한, 이벤트 구조, 설정 및 폴링 동작은 이벤트 소스에 따라 다릅니다. 자세한 내용은 AWS Lambda Identity and Access 문제 해결을 참조하십시오.

7.    AWS CloudTrail 로그를 확인하여 Lambda에 대한 API 호출을 추적합니다. CloudTrail에서 수집한 정보를 검토하여 다음을 확인합니다.
Lambda에 제출된 요청입니다.
요청이 이루어진 IP 주소입니다.
요청한 주체.
요청이 이루어진 시점.
자세한 내용은 CloudTrail을 사용하여 Lambda API 호출 로깅을 참조하세요.

8.    여전히 문제를 해결할 수 없는 경우 AWS Support에 사례를 개설하세요. 그리고 다음 정보를 제공하세요.

  • Lambda 함수 ARN.
  • 포함된 모든 AWS 서비스로 설정된 Lambda 함수의 워크플로우.
  • 문제가 간헐적인지 지속적인지에 대한 세부 정보.
  • 문제가 교차 계정 시나리오인지 여부에 대한 세부 정보입니다.
  • 관련된 권한 및/또는 IAM 역할 이름
  • 문제가 발생한 시점부터 .txt 형식으로 된 전체 CloudWatch 로그. 이러한 CloudWatch 로그는 제한 시간 문제, 초기화 기간 및 권한 문제를 포함하는 Lambda 함수 오류를 식별하는 데 사용됩니다.
  • UTC로 표시된 시간대 또는 타임스탬프와 관련된 문제의 정확한 타임스탬프.

참고: AWS Support 담당자는 보안 및 개인 정보 보호상의 이유로 고객의 CloudWatch 로그에 액세스할 수 없습니다.