AWS Lambda 리소스 기반 정책의 크기가 한도에 도달하여 어려움

소개



AWS sam을 사용하여 API gateway + Lambda 구성을 만들었지만 Cloudformation 변경 세트를 실행하는 동안 다음 오류를 얻었습니다.
The final policy size (20857) is bigger than the limit (20480). 
(Service: AWSLambda; Status Code: 400; Error Code: PolicyLengthExceededException; 
Request ID: xxxxxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx)

이 오류는 람다 리소스 기반 정책이 크기 한계에 도달했음을 나타냅니다.
이 상태가 되면 API의 메소드의 통합 요구의 타입에 이 Lambda를 지정할 수 없게 됩니다.

알아봐



몇 가지 기사를 잡고 있다면 다음 기사를 발견했습니다.
Lambda 오류 "최종 정책 크기가 제한을 초과했습니다."를 해결하는 방법을 알려주십시오.

이 문서에서는 여러 리소스 기반 정책을 정책의 리소스 지정에 와일드카드를 사용하여 정책의 크기를 줄이는 방법을 설명합니다.

우선, 지금 있는 정책을 삭제해 새롭게 와일드 카드를 포함한 정책을 세트 해 주면 좋을 것 같습니다.
불행히도 AWS Lambda의 리소스 기반 정책은 관리 콘솔에서 작동할 수 없으므로 CLI를 사용하여 작업합니다.

추가
지우는 방법이있었습니다. (웃음)


트리거에서 API Gateway를 선택하면 등록된 리소스 기반 정책을 리소스별로 확인할 수 있으며 여기에서 삭제하면 정책에서도 삭제할 수 있습니다!

삭제 명령



다음 명령을 사용하여 Lambda 리소스 기반 정책을 삭제할 수 있습니다.
불행히도 일괄 삭제를 할 수없는 것 같습니다.
그래서 대량으로 있는 경우는 둘이서 상하로부터 삭제해 가는지, 포기하고 Lambda를 재작성한다든가 하는 것이 좋을 것 같네요.
$ aws lambda remove-permission \
--function-name my-function \
--statement-id sid

작성 명령



다음 명령을 사용하여 Lambda 리소스 기반 정책을 추가할 수 있습니다.
aws lambda add-permission --function-name my-function \
--statement-id sid \
--action 'lambda:InvokeFunction' \
--principal 'events.amazonaws.com' \
--source-arn 'arn:aws:events:region:account-id:rule/test-*' 

여기서, API gateway의 지정 방법을 모르게 막고 있었습니다만, 어떻게든 이하의 지정으로 통과할 수 있었습니다.
이와 같이 지정하는 것으로 1개의 API로부터 요구의 종류가 증가해도, 이 정책 1개로 보충할 수가 있습니다.
aws lambda add-permission 
--function-name my-function \
--statement-id 1 \
--action lambda:InvokeFunction \
--principal apigateway.amazonaws.com \
--source-arn arn:aws:execute-api:${region}:${AWSアカウントID}:${APIの識別子}/*

sam으로 이것을 할 때의주의 사항



아마 sam에 한정된 이야기는 아닐 것이라고 생각합니다만, 새롭게 와일드 카드를 포함한 정책을 추가 후, 새롭게 메소드를 추가한 template를 실행하면, 추가한 분의 정책이 추가되어 버렸습니다. 내버려두면 장래에 같은 사건에 부딪힐 것 같아서 순차적으로 지울 필요가 있다고 생각합니다.

마지막으로



API의 지정 방법을 알고 어떻게든 해결할 수 있어서 좋았습니다.
이런 일도 있을 수 있으므로 AWS Lambda는 최대한 분할해 나가는 것이 좋겠지요.

그럼 또.

참고 자료



Lambda 오류 "최종 정책 크기가 제한을 초과했습니다."를 해결하는 방법을 알려주십시오.

좋은 웹페이지 즐겨찾기