를 사용하여 DNS 쿼리 및 API 호출과 함께 AWS Cloud Map 서비스 검색을 사용하는 방법을 알아봅니다. AWS CLI - AWS Cloud Map

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

를 사용하여 DNS 쿼리 및 API 호출과 함께 AWS Cloud Map 서비스 검색을 사용하는 방법을 알아봅니다. AWS CLI

이 자습서에서는 AWS Command Line Interface (CLI)를 사용하여 AWS Cloud Map 서비스 검색을 사용하는 방법을 보여줍니다. 두 개의 백엔드 서비스로 마이크로서비스 아키텍처를 생성합니다. 하나는 DNS 쿼리를 사용하여 검색할 수 있고 다른 하나는 AWS Cloud Map API만 사용하여 검색할 수 있습니다.

AWS Cloud Map 콘솔 단계가 포함된 자습서는 단원을 참조하십시오DNS 쿼리 및 API 호출과 함께 AWS Cloud Map 서비스 검색을 사용하는 방법을 알아봅니다..

사전 조건

자습서를 성공적으로 완료하려면 다음 사전 조건을 충족해야 합니다.

  • 시작하기 전에 를 사용하도록 설정 AWS Cloud Map의 단계를 완료해야 합니다.

  • 아직를 설치하지 않은 경우 의 최신 버전 설치 또는 업데이트 AWS CLI 단계에 AWS Command Line Interface따라 설치합니다.

    이 자습서에서는 명령을 실행할 셸 또는 명령줄 터미널이 필요합니다. Linux 및 macOS에서는 선호하는 셸과 패키지 관리자를 사용합니다.

    참고

    Windows에서는 Lambda와 함께 일반적으로 사용하는 일부 Bash CLI 명령(예:zip)은 운영 체제의 기본 제공 터미널에서 지원되지 않습니다. Ubuntu와 Bash의 Windows 통합 버전을 가져오려면 Linux용 Windows Subsystem을 설치합니다.

  • 자습서에는 dig DNS 조회 유틸리티 명령이 있는 로컬 환경이 필요합니다.

AWS Cloud Map 네임스페이스 생성

먼저 퍼블릭 AWS Cloud Map 네임스페이스를 생성합니다. AWS Cloud Map 는 동일한 이름으로 Route 53 호스팅 영역을 생성하여 DNS 레코드와 API 호출을 통해 서비스 검색을 활성화합니다.

  1. 퍼블릭 DNS 네임스페이스를 생성합니다.

    aws servicediscovery create-public-dns-namespace \ --name cloudmap-tutorial.com \ --creator-request-id cloudmap-tutorial-request-1 \ --region us-east-2

    명령은 네임스페이스 생성 상태를 확인하는 데 사용할 수 있는 작업 ID를 반환합니다.

    { "OperationId": "gv4g5meo7ndmeh4fqskygvk23d2fijwa-k9xmplyzd" }
  2. 작업 상태를 확인하여 네임스페이스가 성공적으로 생성되었는지 확인합니다.

    aws servicediscovery get-operation \ --operation-id gv4g5meo7ndmeh4fqskygvk23d2fijwa-k9xmplyzd \ --region us-east-2
  3. 작업이 성공하면 네임스페이스 ID를 가져옵니다.

    aws servicediscovery list-namespaces \ --region us-east-2 \ --query "Namespaces[?Name=='cloudmap-tutorial.com'].Id" \ --output text

    이 명령은 후속 단계에 필요한 네임스페이스 ID를 반환합니다.

    ns-abcd1234xmplefgh

AWS Cloud Map 서비스 생성

이제 네임스페이스 내에 두 개의 서비스를 생성합니다. 첫 번째 서비스는 DNS 및 API 호출을 모두 사용하여 검색할 수 있고, 두 번째 서비스는 API 호출만 사용하여 검색할 수 있습니다.

  1. DNS 검색이 활성화된 첫 번째 서비스를 생성합니다.

    aws servicediscovery create-service \ --name public-service \ --namespace-id ns-abcd1234xmplefgh \ --dns-config "RoutingPolicy=MULTIVALUE,DnsRecords=[{Type=A,TTL=300}]" \ --region us-east-2

    명령은 생성된 서비스에 대한 세부 정보를 반환합니다.

    { "Service": { "Id": "srv-abcd1234xmplefgh", "Arn": "arn:aws:servicediscovery:us-east-2:123456789012:service/srv-abcd1234xmplefgh", "Name": "public-service", "NamespaceId": "ns-abcd1234xmplefgh", "DnsConfig": { "NamespaceId": "ns-abcd1234xmplefgh", "RoutingPolicy": "MULTIVALUE", "DnsRecords": [ { "Type": "A", "TTL": 300 } ] }, "CreateDate": 1673613600.000, "CreatorRequestId": "public-service-request" } }
  2. API 전용 검색을 사용하여 두 번째 서비스를 생성합니다.

    aws servicediscovery create-service \ --name backend-service \ --namespace-id ns-abcd1234xmplefgh \ --type HTTP \ --region us-east-2

    명령은 생성된 서비스에 대한 세부 정보를 반환합니다.

    { "Service": { "Id": "srv-ijkl5678xmplmnop", "Arn": "arn:aws:servicediscovery:us-east-2:123456789012:service/srv-ijkl5678xmplmnop", "Name": "backend-service", "NamespaceId": "ns-abcd1234xmplefgh", "Type": "HTTP", "CreateDate": 1673613600.000, "CreatorRequestId": "backend-service-request" } }

AWS Cloud Map 서비스 인스턴스 등록

그런 다음 각 서비스에 대한 서비스 인스턴스를 등록합니다. 이러한 인스턴스는 검색될 실제 리소스를 나타냅니다.

  1. DNS 검색을 위해 IPv4 주소로 첫 번째 인스턴스를 등록합니다.

    aws servicediscovery register-instance \ --service-id srv-abcd1234xmplefgh \ --instance-id first \ --attributes AWS_INSTANCE_IPV4=192.168.2.1 \ --region us-east-2

    명령은 작업 ID를 반환합니다.

    { "OperationId": "4yejorelbukcjzpnr6tlmrghsjwpngf4-k9xmplyzd" }
  2. 작업 상태를 확인하여 인스턴스가 성공적으로 등록되었는지 확인합니다.

    aws servicediscovery get-operation \ --operation-id 4yejorelbukcjzpnr6tlmrghsjwpngf4-k9xmplyzd \ --region us-east-2
  3. API 검색을 위한 사용자 지정 속성으로 두 번째 인스턴스를 등록합니다.

    aws servicediscovery register-instance \ --service-id srv-ijkl5678xmplmnop \ --instance-id second \ --attributes service-name=backend \ --region us-east-2

    명령은 작업 ID를 반환합니다.

    { "OperationId": "7zxcvbnmasdfghjklqwertyuiop1234-k9xmplyzd" }
  4. 작업 상태를 확인하여 인스턴스가 성공적으로 등록되었는지 확인합니다.

    aws servicediscovery get-operation \ --operation-id 7zxcvbnmasdfghjklqwertyuiop1234-k9xmplyzd \ --region us-east-2

AWS Cloud Map 서비스 인스턴스 검색

이제 서비스 인스턴스를 생성하고 등록했으므로 DNS 쿼리와 AWS Cloud Map API를 모두 사용하여 인스턴스를 검색하여 모든 것이 작동하는지 확인할 수 있습니다.

  1. 먼저 Route 53 호스팅 영역 ID를 가져옵니다.

    aws route53 list-hosted-zones-by-name \ --dns-name cloudmap-tutorial.com \ --query "HostedZones[0].Id" \ --output text

    이렇게 하면 호스팅 영역 ID가 반환됩니다.

    /hostedzone/Z1234ABCDXMPLEFGH
  2. 호스팅 영역의 이름 서버를 가져옵니다.

    aws route53 get-hosted-zone \ --id Z1234ABCDXMPLEFGH \ --query "DelegationSet.NameServers[0]" \ --output text

    그러면 이름 서버 중 하나가 반환됩니다.

    ns-1234.awsdns-12.org
  3. dig 명령을 사용하여 퍼블릭 서비스의 DNS 레코드를 쿼리합니다.

    dig @ns-1234.awsdns-12.org public-service.cloudmap-tutorial.com

    출력에는 서비스와 연결한 IPv4 주소가 표시되어야 합니다.

    ;; ANSWER SECTION: public-service.cloudmap-tutorial.com. 300 IN A 192.168.2.1
  4. AWS CLI 를 사용하여 백엔드 서비스 인스턴스를 검색합니다.

    aws servicediscovery discover-instances \ --namespace-name cloudmap-tutorial.com \ --service-name backend-service \ --region us-east-2

    출력에는 서비스와 연결한 속성이 표시됩니다.

    { "Instances": [ { "InstanceId": "second", "NamespaceName": "cloudmap-tutorial.com", "ServiceName": "backend-service", "HealthStatus": "UNKNOWN", "Attributes": { "service-name": "backend" } } ], "InstancesRevision": 71462688285136850 }

리소스 정리

자습서를 완료한 후에는 요금이 발생하지 않도록 리소스를 정리합니다. AWS Cloud Map 에서는 먼저 서비스 인스턴스, 서비스, 마지막으로 네임스페이스 순서로 리소스를 정리해야 합니다.

  1. 첫 번째 서비스 인스턴스 등록을 취소합니다.

    aws servicediscovery deregister-instance \ --service-id srv-abcd1234xmplefgh \ --instance-id first \ --region us-east-2
  2. 두 번째 서비스 인스턴스 등록을 취소합니다.

    aws servicediscovery deregister-instance \ --service-id srv-ijkl5678xmplmnop \ --instance-id second \ --region us-east-2
  3. 퍼블릭 서비스를 삭제합니다.

    aws servicediscovery delete-service \ --id srv-abcd1234xmplefgh \ --region us-east-2
  4. 백엔드 서비스를 삭제합니다.

    aws servicediscovery delete-service \ --id srv-ijkl5678xmplmnop \ --region us-east-2
  5. 네임스페이스를 삭제합니다.

    aws servicediscovery delete-namespace \ --id ns-abcd1234xmplefgh \ --region us-east-2
  6. Route 53 호스팅 영역이 삭제되었는지 확인합니다.

    aws route53 list-hosted-zones-by-name \ --dns-name cloudmap-tutorial.com