[소소한 개발 일지] serverless-next.js를 사용한 배포에서 새로운 Role이 계속 생성되는 문제 해결하기

Explanation

오늘은 serverless-next.js를 사용한 프로젝트 배포에서 새로운 Role이 계속 생성되는 문제를 해결하는 방법에 대하여 적어보려 합니다.

간단한 글이지만, 이전에 작성했던 https://falsy.me/새로운-버전-serverless-framework를-사용하여-nextjs-프로젝트를-aws-lambda를-통/ 글에서 사용한 serverless.yml 파일을 가지고 이어서 사용합니다.

1. 문제의 상황

이전 글에서 적었던 것 처럼 위와 같은 설정으로 배포를 하면,

이렇게 xxxxxx-xxxxxxx 형식의 이름으로 매번 배포할 때마다 Role이 생성된답니다.

2. 문제의 해결

우선 깃헙에서 관련한 내용을 확인해보니
https://github.com/serverless-nextjs/serverless-next.js

위와 같이 role을 지정해주면 된다고 써있답니다.

우선 Role에 적용할 Policy를 만들어야겠죠?

AWS의 IAM에서 ‘정책’ 메뉴로 가서 ‘정책 생성’ 버튼을 눌러서 새로운 정책을 만들어 줍니다.
정책은 JSON 탭으로 가서 아래와 같이 만들어 줍니다.

arn:aws:s3:::falsy-exemple-s3/*
여기에 버킷 이름을 적어주세요.

이름은 falsy-exemple-policy 로 할게요.

이어서 Role을 만들어 줍니다.

AWS의 IAM에서 ‘역할’ 메뉴로 가서 ‘역할 만들기’ 버튼을 눌러서 새로운 역할을 만들어 줍니다.
사용 사례에 Lambda를 선택하고 다음 탭에서 조금 전에 만들었던 falsy-exemple-policy를 선택해줍니다.
이름은 falsy-exemple-role 로 할게요.

다음으로 만들어진 falsy-exemple-role을 선택한후 ‘신뢰 관계’ 탭으로 가서, ‘신뢰 관계 편집’ 버튼을 눌러서

edgelambda.amazonaws.com – 엣지람다도 추가해줍니다.

이렇게 역할을 만드는 건 끝났고 이제 위 ‘역할 ARN’ 을 복사합니다.
대충 arn:aws:iam::123456789012:role/falsy-exemple-role 이런식이겠죠?

이제 다시 serverless.yml에 깃헙에서 봤던 것처럼 roleArn을 지정해줍니다.

이제 다시 배포를 해보면 새로운 역할이 생성되지 않…
을 줄 알았지만. 왠 걸 roleArn 이 적용되지 않고 새로운 또 xxxxxx-xxxxxxx 역할이 추가되었습니다…

다시 깃헙으로 가서 이슈를 찾아본 결과.

https://github.com/serverless-nextjs/serverless-next.js/issues/854
‘evangow’님께서 1.19.0-alpha.30 버전에서 새로운 롤이 생기는 문제가 있다라고 이야기 해주셨고
‘dphang’님께서 업데이트 해주셨다고 2월 11일에 답변을 달아주셨답니다.

그리고 Releases를 확인해보니 2월 11일에 1.19.0-alpha.31 버전이 프리 릴리스 된 것으로 보아 alpha.31 버전부터 해당 문제가 해결되었을 거 같아요. 그리고 이왕 알파버전을 사용하는 거 최신 버전(alpha.37)으로 적용하면.

이제 다시 npx serverless 커맨드를 통해 배포하면 람다에 falsy-exemple-role 역할이 적용되고 새로운 역할이 만들어지지 않는답니다!