IAM Role 생성 시 발생하는 [Resource of type 'AWS::IAM::Role' with identifier 'xxxxxxxx' already exists] 문제 해결
안녕하세요 클래스메소드 김재욱(Kim Jaewook) 입니다. 이번에는 IAM Role 생성 시 발생하는 [Resource of type 'AWS::IAM::Role' with identifier 'xxxxxxxx' already exists] 문제를 해결하는 방법에 대해서 정리해 봤습니다.
문제 발생
CloudFormation으로 IAM Role을 생성하는 과정에서 에러가 발생했습니다.
에러 내용으로는 생성하고자 하는 IAM Role과 동일한 이름의 IAM Role이 생성되어 있다는 내용입니다.
문제 해결
먼저 첫 번째로 CloudFormation 스택을 삭제했다면, IAM 콘솔 화면에서 IAM Role을 검색하여 삭제합니다.
IAM Role을 삭제하는 것으로 끝날 수도 있지만, 삭제가 안된다면, AWS CLI 명령어를 이용하여 삭제합시다. 또한, CloudFormation 스택을 생성했어도 동일한 이름의 리소스가 있다고 뜨는 경우 [instance-profile]까지 삭제해 줍시다.
aws iam delete-role --role-name dev-web-role
aws iam delete-instance-profile --instance-profile-name dev-web-role
이제 다시 CloudFormation 스택을 생성하면, 성공적으로 IAM Role이 생성되는 것을 확인할 수 있습니다.
그렇다면 CloudFormation 스택을 삭제했음에도 IAM Role이 계속 남아있는 이유는 뭘까요? 일반적으로 [DeletionPolicy]를 사용했을 때 인데, 이 경우 스택은 삭제되지만 Role은 의도적으로 남겨지게 됩니다.
DeletionPolicy: Retain
DeletionPolicy 속성에 대해서는 아래 AWS 공식 문서를 통해 확인할 수 있습니다.
본 블로그 게시글을 읽고 궁금한 사항이 있으신 분들은 jaewookkim533@yahoo.com로 보내주시면 감사하겠습니다.