728x90
반응형
SMALL
이번 글에서는 CloudFormation 스택 생성 중 발생한 실제 오류를 바탕으로,
문제가 발생한 원인과 해결 과정을 정리하였다.
문제 상황

AWS CloudFormation에서 스택을 생성하는 과정에서 위와 같은 오류가 발생했다.
“리소스(STGLabInstanceRole)가 CREATE_FAILED 상태입니다.
STGLabInstanceRole already exists in stack …”

또 다른 오류는 다음과 같았다.
“STGLabRoleForInstances already exists in stack …”
즉, InstanceProfile과 IAM Role 모두 이미 동일한 이름으로 기존 스택에 존재하고 있었기 때문에 새 스택에서 다시 생성하는 데 실패한 것이다.
CloudFormation은 IAM Role, InstanceProfile, ManagedPolicy처럼 Global로 사용되는 리소스에 대해 동일 이름을 중복해서 생성하는 것을 허용하지 않는다.
원인
문제의 핵심은 템플릿 내부의 아래 코드였다.
STGLabInstanceRole:
Type: AWS::IAM::Role
Properties:
RoleName: STGLabInstanceRole
STGLabRoleForInstanceProfile:
Type: AWS::IAM::InstanceProfile
Properties:
InstanceProfileName: STGLabRoleForInstances
즉, RoleName과 InstanceProfileName을 이미 존재하는 이름으로 지정해 놓았기 때문에 새로운 스택을 배포할 때 이미 존재하는 이름과 충돌하게 된 것이다.

IAM을 확인한 결과,
이미 STGLabInstanceRole이라는 이름의 역할이 존재하고 있었다.
해결 과정

템플릿 코드에서 RoleName과 InstanceProfileName을 새 이름으로 수정한 후 다시 스택을 배포하였다.
배포 결과


스택 전체가 정상적으로 CREATE_COMPLETE 상태로 완료되었다.
결론
1) IAM 리소스는 전역 이름(글로벌 리전)이기 때문에 중복 불가하다.
2) RoleName/InstanceProfileName을 고정값으로 두면 충돌 위험이 높다.
3) CloudFormation 이벤트 로그에서 충돌 리소스 파악 가능하다.
끝..
728x90
반응형
LIST
'트러블슈팅' 카테고리의 다른 글
| [Ubuntu] 패키지 설치 시 cache lock 문제 (0) | 2025.09.18 |
|---|---|
| [Windows 서버] NAT 서버 구축 시 인터넷 연결 오류 (NIC에 NAT 속성 적용) (0) | 2025.09.15 |
| [Rocky Linux] 메일 서버 구축 시 MX 레코드 설정 오류 (0) | 2025.09.05 |