본문 바로가기

배포자동화

[AWS]no identity-based policy allows the ecs:RegisterTaskDefinition action 에러

나는 GitHub Action을 이용하여 이미지를 빌드하고 ECR로 푸쉬하여 Task Definition을 생성하고 ECS로 배포하는 과정을 자동화하고자 한다. AWS에서 클러스터와 작업정의를 구성하고 GitHub Action에서 만들어진 workflow인 Deploy to ECS를 configure해서 사용중이었다.

그러던 중 다음과 같은 에러를 만났다. 무서운 권한에러이다.

Error: Failed to register task definition in ECS: 
	User: arn:aws:iam::***:user/mason is not authorized to perform: 
    ecs:RegisterTaskDefinition on resource: * because no identity-based policy allows the ecs:RegisterTaskDefinition action
Error: User: arn:aws:iam::***:user/mason is not authorized to perform: 
	ecs:RegisterTaskDefinition on resource: * because no identity-based policy allows the ecs:RegisterTaskDefinition action

너무 무섭지만 해결해보고자했다.

  • IAM 권한에서 ecs full access를 허용했다.
  • IAM 사용자 (여기서는 mason)에게 거의 모든 권한을 쥐여줬다.

근데 실패했다. 생각해보니 이상했다. 난 루트 사용자인데 왜 권한 에러가 나는가? 팀원과 함께 작업하는 것도 아닌, 모든 것이 내 통제에 있는데 왜 권한이 부족한 것일까? 다양한 공식문서를 통해 IAM에 대해 정독하던 중 든 생각이다.

 

그러던 중 같이 프로젝트를 진행하던 팀원분에게 물어보았다. 답은 보안자격증명의 Accesskey를 확인해보라 라는 것이었다.

 

확인해봤더니, 3일전 버지니아에서 사용되었었다. 처음에 만들어놓고 잘 작동할 줄 알았었는데, 그렇지 못한 것이었다. 키를 새로 발급받고 기존의 키를 비활성화 했다. 그리고 GitHub Action으로 들어가 secret의 환경변수를 새로운 키로 적용해주었다.

 

성공적으로 동작했다.

 

이 경험으로 인해 다음을 느꼈다.

  • 타인과 작업할 때에 IAM권한을 항상 잘 확인해야겠다.
  • accesskey가 잘 작동하는지 꼭 확인하자!
  • 모르면 비슷한 길을 걸어가고 있는 팀원에게 꼭 물어보자!
  • 팀원이 없다면 구글에 치면 나온다!