AWS CloudFormation을 사용하여 Route 53 레코드 세트를 생성할 때 발생하는 오류를 해결하려면 어떻게 해야 합니까?
AWS CloudFormation을 사용하여 Amazon Route 53 리소스 레코드 세트를 생성할 때 발생하는 오류를 해결하려고 합니다.
해결 방법
다음은 AWS CloudFormation 템플릿을 사용하여 Route 53 레코드 세트를 생성할 때 발생할 수 있는 몇 가지 일반적인 오류입니다. 문제를 해결하려면 각 오류에 대해 제공한 설명을 따르십시오.
참고: AWS Command Line Interface(AWS CLI) 명령 실행 시 오류가 발생하는 경우, AWS CLI 오류 문제 해결을 참고하십시오. 또한 최신 AWS CLI 버전을 사용하고 있는지 확인하십시오.
오류: "No hosted zones named "domain.com" found"
이 오류는 CloudFormation이 HostedZoneName 속성에 정의된 호스팅 영역 이름을 식별할 수 없을 때 발생합니다. 이 오류를 해결하려면 다음 단계를 확인하십시오.
-
HostedZoneName 속성에 전달된 값을 확인합니다. 이 속성에는 후행 마침표(.)가 포함되어야 합니다. 호스팅 영역 이름(예: domain.com)이 유효하기 위해서는 후행 마침표가 필요합니다.
예를 들면 다음과 같습니다.SampleRecordSet: Type: AWS::Route53::RecordSet Properties: HostedZoneName: "domain.com." #note trailing dot Name: image1.domain.com Type: CNAME TTL: '60' ResourceRecords: - new.example
호스팅 영역 이름에 이미 후행 마침표가 포함된 경우 해당 이름의 호스팅 영역이 AWS 계정에 이미 있는지 확인합니다. 레코드 세트를 생성하기 전에 다음 AWS CLI 명령을 사용하여 호스팅 영역 이름을 사용할 수 있는지 확인하십시오.
aws route53 list-hosted-zones \ --query 'HostedZones[?Name==`YOUR-HOSTED-ZONE-NAME`]'
참고: 위 명령에서 YOUR-HOSTED-ZONE-NAME을 CloudFormation 스택의 HostedZoneName 속성에 전달된 값으로 바꾸십시오.
-
위 명령을 실행해도 레코드가 반환되지 않으면 계정에서 해당 호스팅 영역을 사용할 수 없는 것입니다. 이 오류를 해결하려면 RecordSet를 생성하기 전에 호스팅 영역을 생성합니다.
오류: "RRSet with DNS name a.domain.com is not permitted in zone domain-test.com."
AWS::Route53::RecordSet 리소스의 Name 속성에 전달된 DNS 값이 호스팅 영역과 일치하지 않는 경우 이 오류가 발생합니다. 문제를 해결하려면 다음 옵션을 확인하십시오.
- AWS::Route53::RecordSet 리소스의 Name 속성에 전달된 값은 정규화된 도메인 이름이어야 합니다. DNS 레코드 세트의 정규화된 이름을 전달하고 있는지 확인하십시오. 예를 들어 도메인이 domain.com이면 a.domain.com과 같은 이름을 전달해야 합니다. "a"만 전달하면 정규화된 도메인 이름이 아니기 때문에 오류가 발생하여 실패할 수 있습니다.
- DNS 이름은 호스팅 영역의 하위 도메인이어야 합니다. 예를 들어 호스팅 영역 이름이 domain-test.com인 경우 레코드 세트의 Name 속성은 xxxxx.domain-test.com과 같은 형식이어야 합니다.
오류: "No hosted zone found with ID: Z1234567XXXXXXXXXX"
HostedZoneId 속성에 전달된 값이 계정에 연결된 것을 확인할 수 없는 경우 이 오류 메시지가 표시됩니다. 이 오류를 해결하려면 다음 옵션을 확인하십시오.
-
AWS::Route53::RecordSet 리소스의 스택에 제공된 호스팅 영역 ID 값이 정확하고 AWS 계정에 존재하는지 확인합니다.
-
다음 AWS CLI 명령을 사용하여 계정에서 호스팅 영역 ID를 사용할 수 있는지 확인합니다.
aws route53 get-hosted-zone --id Z1234567XXXXXXXXXX
-
위 명령에서 오류가 반환되면 AWS 계정에서 호스팅 영역 ID를 사용할 수 없는 것입니다. 유효한 호스팅 영역 ID 값을 AWS::Route53::RecordSet 리소스의 HostedZoneId 속성에 전달하여 스택을 다시 생성해 보십시오. 이렇게 하면 레코드 세트가 Route 53에 있는 실제 호스팅 영역과 연결됩니다.
오류: "Duplicate hosted zones for hosted zone name domain.com."
Route 53에서는 동일한 이름으로 여러 호스팅 영역을 생성할 수 있습니다. HostedZoneName 속성을 전달하여 AWS::Route53::RecordSet 리소스를 생성하십시오. 하지만 이름이 같은 호스팅 영역이 여러 개 있는 경우 오류 메시지가 표시됩니다.
이 오류를 해결하려면 AWS::Route53::RecordSet 리소스의 HostedZoneName 속성을 정의하지 마십시오. 대신 HostedZoneId 속성을 정의하십시오. 그런 다음, 레코드 세트를 생성하려는 영역 ID를 전달하십시오. 예를 들면 다음과 같습니다.
SampleRecordSet: Type: AWS::Route53::RecordSet Properties: HostedZoneId: "Z1234567XXXXXXXXXX" Name: image1.domain.com Type: CNAME TTL: '60' ResourceRecords: - new.example
오류: "Expected exactly one of [AliasTarget, all of [TTL, and ResourceRecords], or TrafficPolicyInstanceId], but found none in Change with [Action=CREATE, Name=a.domain.com., Type=A, SetIdentifier=null]"
템플릿에서 AWS::Route53::RecordSet 리소스에 필요한 속성을 모두 정의하지 않은 경우 이 오류가 표시됩니다. 모든 Route 53 RecordSet 리소스에는 특정 구성 속성을 설정해야 합니다. 템플릿에서 이러한 필수 속성이 누락되면 오류가 발생합니다. 이 오류를 해결하려면 다음 옵션을 확인하십시오.
-
AWS::Route53::RecordSet 리소스에 대해 AliasTarget 속성을 정의하거나 TTL 및 ResourceRecords 속성을 둘 모두 정의합니다.
-
AWS::Route53::RecordSet에 대해 AliasTarget 속성을 정의한 경우에는 동일한 리소스에 TTL 또는 ResourceRecords 속성을 정의하지 마십시오.
AliasTarget 속성만 정의하고 TTL 및 ResourceRecords 속성은 정의하지 않으려면 다음 예제를 참조하십시오.
SampleR53AliasRecord: Type: AWS::Route53::RecordSet Properties: Name: 'abc.domain.com' Type: A AliasTarget: DNSName: !GetAtt MyELB.DNSName HostedZoneId: !GetAtt MyELB.CanonicalHostedZoneNameID HostedZoneId: "Z1234567XXXXXXXXXX"
-
AliasTarget 속성을 정의하지 않았다면 TTL 및 ResourceRecords 속성을 모두 정의했는지 확인하십시오.
-
이러한 속성 중 하나만 정의하는 경우에도 오류가 발생합니다. ResourceRecords 속성을 정의하는 경우 템플릿에서 TTL 속성도 정의해야 합니다. 마찬가지로 TTL을 정의하는 경우에는 ResourceRecords도 정의해야 합니다.
다음 예제에서는 TTL 및 ResourceRecords 속성만 정의하는 방법을 보여 줍니다.
SampleRecordSet: Type: AWS::Route53::RecordSet Properties: HostedZoneId: "Z1234567XXXXXXXXXX" Name: image1.domain.com Type: CNAME TTL: '60' ResourceRecords: - new.example
오류: "Tried to create resource record set [name='a.domain.com.', type='A', set-identifier='null'] but it already exists"
별칭 레코드 세트를 이미 포함하고 있는 호스팅 영역에서 동일한 이름의 별칭 레코드 세트를 생성하려고 했습니다. 이 오류를 해결하려면 다음 옵션을 확인하십시오.
- 정확한 호스팅 영역 내에서 별칭 레코드 세트를 생성하는지 확인합니다. 호스팅 영역 ID 또는 이름이 별칭 레코드 세트를 생성하려는 영역과 일치하는지 확인하십시오.
- CloudFormation을 사용하여 생성하려는 A 또는 CNAME 레코드 유형이 호스팅 영역에 이미 존재하는지 확인합니다. 다음 AWS CLI 명령을 사용하면 호스팅 영역에서 해당 리소스 레코드를 이미 사용할 수 있는지 확인할 수 있습니다.
참고: 위 명령에서 YOUR-HOSTED-ZONE-NAME, YOUR-RESOURCE-RECORD-NAME 및 YOUR-TYPE-OF-RECORD를 오류 메시지에 나온 정확한 값으로 바꾸십시오.aws route53 list-resource-record-sets \ --hosted-zone-id YOUR-HOSTED-ZONE-NAME \ --query 'ResourceRecordSets[?(Name==`YOUR-RESOURCE-RECORD-NAME` && Type==`YOUR-TYPE-OF-RECORD`)]
- 위 명령이 값을 반환하면 이 레코드를 생성하기 전에 CloudFormation을 사용하여 호스팅 영역에서 삭제합니다. 호스팅 영역에서 이 레코드를 수동으로 삭제하기 전에 애플리케이션에 대한 영향 평가를 수행하십시오. 해당 단계를 수행하기 전에 이 레코드를 제거하면 애플리케이션에 어떤 영향을 미칠 수 있는지 신중하게 고려하십시오.
관련 정보
관련 콘텐츠
- 질문됨 9일 전lg...
- 질문됨 19일 전lg...
- AWS 공식업데이트됨 일 년 전
- AWS 공식업데이트됨 2년 전
- AWS 공식업데이트됨 2년 전