AWS CloudFormation 스택을 업데이트하려고 하면 다음과 비슷한 오류 메시지가 나타납니다. "사용자 지정 이름이 지정된 리소스를 교체해야 하는 경우 CloudFormation이 스택을 업데이트할 수 없습니다. 'MyResource##'의 이름을 바꾸고 스택을 다시 업데이트하십시오."
간략한 설명
이 오류는 스택 업데이트에서 사용자 지정 이름을 가진 속성이 있는 리소스를 바꾸려고 할 때 발생합니다. CloudFormation은 사용자 지정 이름이 다른 이름으로 변경되지 않는 한 사용자 지정 이름을 가진 리소스를 대체하지 않습니다. 스택 오류를 방지하려면 스택을 업데이트하기 전에 사용자 지정 이름을 가진 리소스가 다른 이름을 사용하도록 변경해야 합니다.
이 오류의 해결 방법은 다음과 같은 상황을 가정합니다.
- 새 스택을 만들지 않고 기존 스택을 업데이트하는 것입니다.
- 사용자 지정 이름을 가진 기존 리소스의 이름을 변경하는 것이지 사용자 지정 이름을 가진 새 리소스를 만들지는 않습니다.
해결 방법
-
코드 편집기에서 업데이트하려는 스택의 CloudFormation 템플릿을 엽니다.
-
사용자 지정 이름을 가진 리소스 속성의 이름 또는 값을 다른 이름을 사용하도록 바꿉니다.
참고: 다음 예에서는 MyRDS 리소스의 DBInstanceIdentifier 속성이 사용자 지정 이름 PRODdb로 설정되어 있습니다. PRODdb라는 이름을 PRODdb1과 같은 다른 이름으로 변경할 때까지 CloudFormation 스택을 업데이트할 수 없습니다. 또는 템플릿에서 DBInstanceIdentifier 속성을 생략하여 CloudFormation이 DB 인스턴스에 사용할 고유한 물리적 ID를 생성하도록 하십시오.
"MyRDS": { "Type": "AWS::RDS::DBInstance",
"Properties": {
"DBInstanceClass": "db.m3.medium",
"Engine": "MySQL",
"DBInstanceIdentifier": "PRODdb",
"AllocatedStorage": "10",
"AutoMinorVersionUpgrade": "true",
"BackupRetentionPeriod": "0",
. . .
. . .
}
}
중요: 사용자 지정 이름이 지정된 리소스의 이름을 변경하면 CloudFormation이 해당 리소스를 대체합니다. 자세한 내용은 이름 유형을 참조하십시오. 특정 리소스를 교체하면 적절한 백업 없이 데이터가 손실될 수 있습니다. 자세한 내용은 교체를 참조하십시오.
-
CloudFormation 템플릿에 변경 사항을 저장한 다음 템플릿을 사용하여 스택을 업데이트합니다.
관련 정보
CloudFormation 스택을 사용하여 AWS 리소스를 단일 단위로 관리
스택 리소스의 업데이트 동작 이해
AWS 리소스 및 속성 유형 참조