CloudFormation에서 "Parameter validation failed: parameter value 'abc' for parameter name 'ABC' does not exist" 오류를 해결하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2022년 8월 30일

AWS CloudFormation 스택을 생성하거나 업데이트할 때 "Parameter validation failed: parameter value 'abc' for parameter name 'ABC' does not exist."라는 오류가 발생합니다. 이 오류를 해결하려면 어떻게 해야 합니까?

간략한 설명

CloudFormation 템플릿에 사용된 파라미터 중 하나가 AWS 특정 파라미터 유형인 경우 AWS CloudFormation은 파라미터 검증 실패 오류를 반환합니다.

AWS 특정 파라미터를 다음과 같이 사용하는 경우 이 오류가 발생할 수 있습니다.

  • 스택 생성 중 AWS 리전 또는 계정에 존재하지 않는 값을 전달하기 위해 사용하는 경우
  • 리소스의 속성으로 파라미터를 사용한 다음 스택 업데이트 중에 리소스를 업데이트하기 전에 대역 외에서 이 값을 삭제하는 경우
  • 하위 스택의 파라미터로 사용하는 경우. 상위 스택에서 전달된 하위 스택의 값이 파라미터 유형과 일치하지 않을 때 오류가 발생합니다. 파라미터의 리소스가 해당 리전의 계정에 없는 경우에도 오류가 발생합니다.

해결 방법

참고: AWS Command Line Interface(AWS CLI) 명령을 실행할 때 오류가 발생할 경우 AWS CLI의 최신 버전을 사용하고 있는지 확인하세요.

스택 생성

1.    AWS CloudFormation 콘솔을 엽니다.

2.    탐색 창에서 [스택]을 선택합니다.

3.    스택 이름(Stack Name) 열에서 실패한 스택을 선택합니다.

4.    [파라미터] 탭을 선택합니다.

5.    키(Key) 열에서 abc 값을 사용하여 ABC 파라미터를 검색합니다.

6.    리소스 abc가 AWS 특정 파라미터 유형과 일치하는지 확인하려면 스택을 생성하는 데 사용되는 템플릿의 파라미터(Parameters) 섹션을 확인하세요.

7.    ABC 파라미터에 대한 abc 리소스가 리전 또는 계정에 있는지 확인합니다. AWS Management Console 또는 리소스 설명을 위한 AWS CLI 명령을 사용합니다. 리소스에 적합한 명령을 찾으려면 리소스에 대한 describe 명령 찾기(Find the describe command for your resource) 섹션을 참조하세요.

참고: 예를 들어 AWS::EC2::VPC::Id 파라미터 유형을 사용하는 경우 Amazon Virtual Private Cloud(VPC) 콘솔에서 리소스를 확인합니다.

8.    ABC가 하위 스택에 대한 파라미터인 경우 abc 값을 전달해야 합니다. 옵션 A 또는 옵션 B를 선택합니다.

(옵션 A) 상위 스택의 다른 리소스를 참조하는 경우 이 리소스가 하위 스택에 사용된 AWS 특정 파라미터 유형과 일치하는지 확인합니다.

참고: 예를 들어 파라미터 유형 AWS::EC2::Subnet::Id(서브넷)를 사용하고 리소스 유형 AWS::EC2::VPC를 참조하면 스택이 실패합니다.

(옵션 B) abc 값이 상위 스택에서 직접 전달되는 경우 ABC 파라미터에 대한abc 리소스가 리전 또는 계정에 있는지 확인합니다. AWS Management Console 또는 리소스 설명을 위한 AWS CLI 명령을 사용합니다. 리소스에 적합한 명령을 찾으려면 리소스에 대한 describe 명령 찾기(Find the describe command for your resource) 섹션을 참조하세요.

예를 들어 하위 스택에서 다음 List 파라미터를 고려해 보세요.

"SecurityGroups": {
    "Description": "List of security group IDs for the instances",
    "Type": "List<AWS::EC2::SecurityGroup::Id>"
}

이 파라미터에 대한 값은 상위 스택에서 전달됩니다. 예를 들어 다음과 같습니다.

"ChildStack" : {
 "Type" : "AWS::CloudFormation::Stack",
 "Properties" : {
    "Parameters":{
      "KeyPair" : { "Ref": "KeyPair" },
      "ImageID" : { "Ref": "ImageID" },
      "InstanceType" : { "Ref": "InstanceType" },
      "SecurityGroups" : { "Ref": "SecurityGroup" }
    }

중요: 앞의 예에서 SecurityGroup 파라미터에 전달된 보안 그룹 ID의 값이 리전 또는 계정에 존재하는지 확인합니다.

9.    리전 또는 계정에 존재하고 AWS 관련 파라미터 유형과 일치하는 파라미터의 유효한 값을 사용하여새 스택을 생성합니다.

스택 업데이트

스택 업데이트가 실패하면 CloudFormation이 변경 사항을 롤백합니다. 즉, AWS CloudFormation 콘솔을 통해 업데이트된 파라미터 값을 볼 수 없습니다.

업데이트 중에 ABC 파라미터의 값을 변경해야 합니다. 값을 변경하지 않으면 이름 또는 PhysicalIDabc인 리소스가 대역 외 계정에서 삭제될 수 있습니다.

1.    리소스가 있는지 확인하려면 AWS Management Console 또는 AWS CLI 명령을 사용하여 리소스를 설명합니다. 리소스에 적합한 명령을 찾으려면 리소스에 대한 describe 명령 찾기(Find the describe command for your resource) 섹션을 참조하세요.

2.    ABC 파라미터를 업데이트하여 스택을 업데이트하는 경우 이전 스택 생성(Create a stack) 섹션의 6, 7 및 8단계를 따릅니다.

3.    유효한 값을 ABC 파라미터에 전달하여 스택을 업데이트합니다.

리소스에 대한 describe 명령 찾기

리소스에 적합한 명령을 선택합니다.

  • AWS::EC2::Image::Id 또는 List 의 경우 AWS CLI 버전 1 또는 버전 2의 명령을 사용합니다.
  • AWS::EC2::Instance::Id 또는 List 의 경우 AWS CLI 버전 1 또는 버전 2의 명령을 사용합니다.
  • AWS::EC2::KeyPair::KeyName의 경우 AWS CLI 버전 1 또는 버전 2의 명령을 사용합니다.
  • AWS::EC2::SecurityGroup::GroupName, AWS::EC2::SecurityGroup::Id, List 또는 List 의 경우 AWS CLI 버전 1 또는 버전 2의 명령을 사용합니다.
  • AWS::EC2::Subnet::Id 또는 List 의 경우 AWS CLI 버전 1 또는 버전 2의 명령을 사용합니다.
  • AWS::EC2::VPC::Id 또는 List 의 경우 AWS CLI 버전 1 또는 버전 2의 명령을 사용합니다.
  • AWS::Route53::HostedZone::Id 또는 List 의 경우 AWS CLI 버전 1 또는 버전 2의 명령을 사용합니다.
  • AWS::EC2::AvailabilityZone::Name 또는 List 의 경우 AWS CLI 버전 1 또는 버전 2의 명령을 사용합니다.
  • AWS::EC2::Volume::Id 또는 List 의 경우 AWS CLI 버전 1 또는 버전 2의 명령을 사용합니다.

이 문서가 도움이 되었나요?


결제 또는 기술 지원이 필요하세요?