Template error: Fn::Select cannot select nonexistent value at index 1

3829 단어 CloudFormationAWS

문제



다음 CloudFormation 템플릿으로 서브넷을 도쿄 리전에 구축하려고 했는데 표제 오류가 발생했습니다.
Resources:

  PrivateSubnet2:
    Type: AWS::EC2::Subnet
    Properties:
      CidrBlock: 10.0.2.0/24
      VpcId: !Ref CFnVPC
      AvailabilityZone: !Select [ 1, !GetAZs ]
      MapPublicIpOnLaunch: true
      Tags:
        - Key: Name
          Value: PrivateSubnet2



원인


Fn::GetAZs는 계정의 기본 서브넷 AZ를 배열로 반환합니다.
내 계정에서 기본 서브넷 AZ를 하나만 등록했습니다.
문제의 CloudFormation 템플릿에서 Fn::GetAZs 에서 얻은 AZ 배열의 두 번째를 참조하지만 존재하지 않기 때문에 오류가 발생했습니다.

해결 방법



기본 서브넷을 만들고 AZ를 늘립니다.
도쿄 리전에는 ap-northeast-1a , ap-northeast-1c , ap-northeast-1d 의 3개의 AZ가 존재합니다. (실제로는 ap-northeast-1b
계정에서 사용할 수 있는 AZ 확인
aws ec2 describe-availability-zones --query 'AvailabilityZones[].ZoneName'



기본 서브넷 AZ 확인( Fn::GetAZs 반환 값)
aws ec2 describe-subnets --filters "Name=default-for-az, Values=true" --query 'Subnets[].AvailabilityZone'



기본 서브넷을 AZ에 생성
aws ec2 create-default-subnet --availability-zone ap-northeast-1c



확인



다시 CloudFormation 템플릿으로 스택을 만들어 봅니다.



오류없이 서브넷을 만들 수있었습니다.

참고


  • CloudFormation의 Fn::GetAZs에서 ap-northeast-1d가 반환되지 않고 빠졌습니다.
  • Template error: Fn::Select cannot select nonexistent value at index 1 #37
  • 기본 서브넷 만들기
  • 도쿄 지역의 새로운 가용 영역 "ap-northeast-1d"가 출시되었습니다.
  • 좋은 웹페이지 즐겨찾기