AWS CloudFormation에서 "Cannot update a stack when a custom-named resource requires replacing" 오류를 해결하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2019년 10월 31일

AWS CloudFormation 스택을 업데이트할 때, 다음과 유사한 오류 메시지 “CloudFormation cannot update a stack when a custom-named resource requires replacing. Rename 'MYResourceXXX' and update the stack again.”를 수신했습니다. 이 오류를 해결하려면 어떻게 해야 합니까?

간략한 설명

이 오류는 일반적으로 속성을 가진 리소스를 사용자 지정 이름으로 교체하려고 할 때 발생합니다. AWS CloudFormation은 사용자 지정 이름을 다른 이름으로 변경하지 않을 경우 사용자 이름을 가진 리소스를 변경하지 않습니다. 스택 실패와 오류 메시지를 방지하기 위해, 스택을 업데이트하기 전에 다른 이름을 사용하려면 모든 리소스를 사용자 지정 이름으로 변경합니다.

이 오류의 해결 방법은 다음과 같이 가정합니다.

  • 기존 스택을 업데이트하는 경우 새 스택을 생성하지 않습니다.
  • 기존 사용자 지정 리소스의 이름을 변경하는 경우 새 사용자 지정 리소스의 이름를 생성하지 않습니다.

​해결 방법

1.    코드 편집기에서 업데이트하려는 스택의 AWS CloudFormation 템플릿을 엽니다.

2.    사용자 지정 이름을 가진 리소스 속성의 값이나 이름을 다른 이름으로 교체합니다.

참고: 다음 예에서 MyRDS 리소스의DBInstanceIdentifier 속성을 사용자 지정 이름PRODdb으로 설정합니다. AWS CloudFormation 스택은 이름 PRODdb이 다른 이름(예: PRODdb1)으로 변경될 때까지 성공적으로 업데이트할 수 없습니다. 또는 템플릿에서 DBInstanceIdentifier 속성을 생략할 수 있습니다. 이렇게 하면 AWS CloudFormation은 DB 인스턴스에 대해 사용할 고유한 물리적 ID를 생성합니다.

"MyRDS": {
    "Type": "AWS::RDS::DBInstance",
    "Properties": {
        "DBInstanceClass": "db.m3.medium",
        "Engine": "MySQL",
        "DBInstanceIdentifier": "PRODdb",
        "AllocatedStorage": "10",
        "AutoMinorVersionUpgrade": "true",
        "BackupRetentionPeriod": "0",
    …
    …
    }
}

중요: custom-named resource의 이름을 변경할 때, AWS CloudFormation에서 해당 리소스를 교체합니다. 자세한 정보는 이름 유형을 참조하십시오. 특정 리소스를 교체하면 적절한 백업 없이 데이터가 손실될 수 있습니다. 자세한 내용은 교체를 참조하십시오.

3.    변경 내용을 AWS CloudFormation 템플릿에 저장한 후 템플릿을 사용하여 스택을 업데이트할 수 있습니다.


이 문서가 도움이 되었습니까?

AWS에서 개선해야 할 부분이 있습니까?


도움이 필요하십니까?