-
[2019.06.11] 오늘의 TIL - serverless offline에서는 돌아가는데, 배포 후 internal error나는 현상개발 블로깅/오늘의 TIL 2019. 6. 11. 12:07
lambda 함수에서 s3에 이미지를 업로드 하는 함수를 작성했었는데, serverless offline에서는 잘 되던 함수가, AWS로 배포 후에 엔드포인트로 실행시키면, 서버 내부 에러 메세지를 반환하는 현상이 있었다.
처음에는, 엔드포인트로 요청하는 자체가 외부 서버 요청이므로 cors 문제인 줄 알았다. 그래서 API Gateway에서 cors 설정을 다 열어주는 법을 이것저것 찾아보는 삽질을 하였다..
그런데 알고보니 IAM role 설정이 문제였던 것.
IAM role 설정에, 해당하는 버킷에만 접근할 수 있는 권한을 주지 않아, 문제가 일어났던 것이다.
serverless.yml
iamRoleStatements: - Effect: "Allow" Action: - "s3:ListBucket" - "s3:getObject" - "s3:putObject" Resource: - "arn:aws:s3::*:*"
serverless.yml 파일 중간쯤에 IAM Role 설정 부분이 있는데, 나는 임시로 위 코드와 같이 s3의 모든 버킷 접근을 허용하도록 했다.
그리고 배포 후에 다시 실행해보니 아주 잘 된다~!
# 문제를 해결하는 중에 알게된 내용
- serverless Framework 안의 serverless.yml에서 APM GateWay, IAM Role 등 여러가지 트리거를 설정하여 배포하면 AWS에 바로 적용이 된다.
- lambda함수에서 express를 설치하여 아예 서버로 대체할 수 있다.
- serverless Framework에 설치된 모듈들이 용량이 커서, AWS 배포 시에 모듈들이 압축파일로 S3에 먼저 업로드 후 lambda에 적용된다. 그래서 s3에 모듈 관련 버킷이 새로 생긴다.
향후에 시간이 된다면, lambda에서 image file 업로드를 하는 부분을 블로깅을 할 예정이다
반응형'개발 블로깅 > 오늘의 TIL' 카테고리의 다른 글
[2019.06.25] 오늘의 TIL - node 실행 시, 포트 충돌로 돌아가지 않는 문제 (0) 2019.06.25 [2019.06.12] 오늘의 TIL - lambda에서 sharp 라이브러리로 이미지 resizing 작업 시 주의사항. (0) 2019.06.12 [2019.0611] 오늘의 TIL - image base64 인코딩 및 디코딩 작업 시 주의사항 (0) 2019.06.11 [2019.06.07] 오늘의 TIL - typeScript 빌드 후, js파일이 여전히 .ts파일을 참조하는 문제 (0) 2019.06.07 [2019.06.06] 오늘의 TIL - TypeORM relation column update하는 방법 (3) 2019.06.06