AWS CLI를 통해 AWS Cloud Map과 함께 서비스 검색을 구성하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2020년 6월 23일

AWS CLI(AWS 명령줄 인터페이스)를 통해 AWS Cloud Map을 사용하여 호스팅 영역을 생성하려면 어떻게 해야 합니까?

간략한 설명

AWS Cloud Map은 DNS 구성을 자동화하고 Amazon Elastic Container Service(Amazon ECS), AWS Fargate 및 Amazon Elastic Kubernetes Service(Amazon EKS)와 같은 서비스에 대한 인스턴스 프로비저닝을 간소화합니다.

AWS SDK 또는 AWS CLI를 사용하여 다음과 같이 AWS Cloud Map으로 호스팅 영역을 생성할 수 있습니다.

1.    호스팅 영역이 자동으로 생성되는 DNS 네임스페이스를 생성하여 서비스 이름 지정 체계를 정의합니다.

2.    서비스를 생성합니다.

3.    서비스에 인스턴스를 등록합니다.

해결 방법

계속하기 전에 반드시 최신 버전의 AWS CLI를 설치합니다.

DNS 네임스페이스 생성

1.    AWS CLI를 사용하여 네임스페이스를 생성합니다(example.com은 사용할 도메인 이름으로 대체).

참고: 생성할 네임스페이스를 퍼블릭 또는 프라이빗 중에서 선택해야 합니다. 퍼블릭 네임스페이스는 도메인 이름이 등록되어 있는 동안 인터넷에 표시됩니다. 프라이빗 네임스페이스는 Virtual Private Cloud(VPC) 내에서만 표시됩니다. 프라이빗 네임스페이스를 생성할 때 VPC ID를 지정해야 합니다.

퍼블릭 네임스페이스를 생성하는 방법은 다음과 같습니다.

$ aws servicediscovery create-public-dns-namespace --name example.com

프라이빗 네임스페이스를 생성하는 방법은 다음과 같습니다.

$ aws servicediscovery create-private-dns-namespace --name example.com --vpc vpc-0c92f38bf7db24a05

2.    출력에 있는 OperationId 값을 기록해 둡니다.

예:

{
    "OperationId": "igbkufld72o4vbsbwejfi6eyinfprhc3-jkwmz00b"
}

3.    get-operation 명령을 사용하여 작업에 대한 세부 정보를 확인합니다. <OperationId value>를 이전 단계에서 찾은 OperationId 값으로 대체해야 합니다.

aws servicediscovery get-operation --operation-id <OperationId value>

4.    출력된 내용에서 Status 값이 SUCCESS인지 확인합니다. 서비스를 생성하고 인스턴스를 등록하는 데 사용되는 네임스페이스 ID인 NAMESPACE 값을 기록해 둡니다.

예:

{
    "Operation": {
        "Status": "SUCCESS",
        "CreateDate": 1534428266.699,
        "Id": "igbkufld72o4vbsbwejfi6eyinfprhc3-jkwmz00b",
        "UpdateDate": 1534428267.113,
        "Type": "CREATE_NAMESPACE",
        "Targets": {
            "NAMESPACE": "ns-f2wjnv2p7pqtz5f2"
        }
    }
}

참고: 네임스페이스를 생성할 때 Route 53은 자동으로 해당 도메인에 대한 호스팅 영역을 생성합니다. 호스팅 영역의 [도메인 이름] 값은 해당 네임스페이스와 동일한 도메인 이름입니다. [설명] 값은 [Route 53 자동 이름 지정으로 생성]입니다. 호스팅 영역을 확인하는 방법은 다음과 같습니다.

1.    Route 53 콘솔을 엽니다.

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

3.    콘텐츠 창의 호스팅 영역 목록에서 원하는 호스팅 영역을 찾습니다.

서비스 생성

1.    간편 구문servicediscovery create-service 명령 으로 다음과 같이 서비스를 생성합니다. workers를 원하는 서비스 이름으로 대체해야 합니다. Route 53은 레코드를 생성할 때 이 서비스 이름을 사용합니다.

$aws servicediscovery create-service --name workers --dns-config 'NamespaceId="ns-f2wjnv2p7pqtz5f2",RoutingPolicy="WEIGHTED",DnsRecords=[{Type="A",TTL="300"}]'

기본 라우팅 정책은 "MULTIVALUE"입니다. 지원되는 라우팅 정책은 "MULTIVALUE" 및 "WEIGHTED"입니다.

2.    출력을 기록해 둡니다. Id 값은 사용자가 방금 생성한 서비스의 ID입니다.

참고: CreatorRequestId가 요청의 ID입니다. API 호출이 실패하면 CreatorRequestId를 사용하여 작업을 반복합니다.

예:

{
    "Service": {
        "DnsConfig": {
            "NamespaceId": "ns-f2wjnv2p7pqtz5f2",
            "DnsRecords": [
                {
                    "Type": "A",
                    "TTL": 300
                }
            ]
        },
        "CreatorRequestId": "93e0a17a-230b-4c58-b986-f03f3217869f",
        "Id": "srv-iy3d7hhlf5cjciph",
        "Arn": "arn:aws:servicediscovery:eu-west-1:356906700443:service/srv-iy3d7hhlf5cjciph",
        "Name": "workers"
    }
}

인스턴스 등록

1.    servicediscovery register-instance 명령을 사용하여 인스턴스를 등록합니다. <value> 자리표시자를 해당하는 값으로 대체해야 합니다. 한 번에 같은 service-idinstance-id 옵션을 사용한 인스턴스 등록 하나만 요청할 수 있습니다.

중요: service-id, instance-idattributes 파라미터를 제공하지 않으면 API 호출은 실패합니다. 자세한 내용은 register-instance 페이지의 "옵션"을 참조하세요.

$ aws servicediscovery register-instance --service-id srv-iy3d7hhlf5cjciph --instance-id i-039444aa1e2932ca3 --attributes=AWS_INSTANCE_IPV4=172.1.1.1

2.    OperationId이 포함된 출력을 검토합니다. 예:

{
    "OperationId": "z7dfqgeadkvwwid2wa2n5ckicrxs255x-jkwr1x9f"
}

3.    Route 53 콘솔을 엽니다.

4.    탐색 창에서 [호스팅 영역]을 선택합니다.

5.    앞서 생성한 호스팅 영역을 선택합니다.

6.    [레코드 세트로 이동]을 선택한 다음 레코드 세트가 호스팅 영역에 대해 생성되었는지 확인합니다.

참고: 인스턴스를 등록할 때, Route 53은 자동으로 해당 서비스 이름 및 도메인 이름으로 레코드를 생성합니다.

Amazon ECS 및 Route 53 서비스 검색을 사용하는 경우, Route 53 네임스페이스 및 서비스 이름을 사용하여 서비스를 구성할 수 있습니다. 그러면 Route 53은 Amazon ECS 컨테이너 설정에 따라 자동으로 해당 호스팅 영역에서 레코드를 생성, 삭제 또는 업데이트합니다.


서비스 검색(Amazon ECS)

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

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


도움이 필요하십니까?