AWS Lambda에서 리소스 기반 정책을 사용하여 AWS 서비스에 권한을 부여하려면 어떻게 해야 합니까?
최종 업데이트 날짜: 2021년 9월 27일
AWS Lambda용 리소스 기반 정책을 사용하여 AWS 서비스에 권한을 부여하려고 합니다.
간략한 설명
Lambda와 함께 AWS Command Line Interface(AWS CLI)으로 리소스 기반 정책을 사용하여 AWS 서비스에 권한을 부여할 수 있습니다. 자세한 내용은 AWS Lambda에서 리소스 기반 정책 사용을 참조하세요.
해결 방법
다음 예제에서는 EventBridge에 대한 권한을 추가하고 Lambda 함수가 리소스 기반 정책을 호출하는지 검증합니다.
참고:
- AWS CLI 명령을 실행할 때 오류가 발생하는 경우 최신 버전의 AWS CLI를 사용하고 있는지 확인하세요.
- your-event 및 your-function를 변수로 바꾸고, your-region을 AWS 리전으로 바꿉니다.
Lambda 함수에 리소스 정책이 구성되어 있지 않은지 확인합니다.
EventBridge와 같은 일부 AWS 서비스는 Lambda 함수에 대한 리소스 기반 정책을 생성합니다. 다음과 유사한 AWS CLI 명령 get-policy를 사용하여 리소스 기반 정책에 EventBridge에 대한 권한이 없는지 확인합니다.
aws lambda get-policy --region your-region --function-name your-function
An error occurred (ResourceNotFoundException) when calling the GetPolicy operation: The resource you requested does not exist.
이 오류는 Lambda 함수에 리소스 기반 정책이 구성되어 있지 않음을 확인합니다.
EventBridge에 대한 권한 추가
AWS CLI 명령 add-permission을 실행하여 다음과 유사한 Lambda 함수를 호출합니다.
aws lambda add-permission --region your-region --function-name your-function --statement-id "your-event-permission" --action "lambda:InvokeFunction" --principal "events.amazonaws.com" --source-arn "arn:aws:events:your-region:xxxxxxxxxxxxx:rule/your-event"
{
"Statement": "{\"Sid\":\"your-event-permission\",\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"events.amazonaws.com\"},\"Action\":\"lambda:InvokeFunction\",\"Resource\":\"arn:aws:lambda:your-region:xxxxxxxxxxxxx:function:your-function\",\"Condition\":{\"ArnLike\":{\"AWS:SourceArn\":\"arn:aws:events:your-region:xxxxxxxxxxxxx:rule/your-event\"}}}"
}
Lambda 함수 리소스 기반 정책에 대한 권한 확인
다음과 유사한 AWS CLI 명령 get-policy를 다시 실행합니다.
aws lambda get-policy --region your-region --function-name your-function
{
"Version": "2012-10-17",
"Id": "default",
"Statement": [
{
"Sid": "your-event-permission",
"Effect": "Allow",
"Principal": {
"Service": "events.amazonaws.com"
},
"Action": "lambda:InvokeFunction",
"Resource": "arn:aws:lambda:your-region:xxxxxxxxxxxxx:function:your-function",
"Condition": {
"ArnLike": {
"AWS:SourceArn": "arn:aws:events:your-region:xxxxxxxxxxxxx:rule/your-event"
}
}
}
]
}
(선택 사항) Lambda 함수 리소스 기반 정책에서 권한 제거
Lambda 함수를 트리거하는 데 AWS 서비스가 더 이상 필요하지 않은 경우 다음과 유사한 AWS CLI 명령 remove-permission을 실행할 수 있습니다.
aws lambda remove-permission --region your-region --function-name your-function --statement-id "your-event-permission"
참고: Lambda 함수 리소스 기반 정책 할당량은 20KB입니다. 자세한 내용은 Lambda 할당량을 참조하세요.