

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

# 애플리케이션 구성 요소에 대한 AWS Cloud Map 서비스 생성
<a name="creating-services"></a>

네임스페이스를 생성한 후 특정 목적에 맞는 애플리케이션의 다양한 구성 요소를 나타내는 서비스를 생성할 수 있습니다. 예를 들어 결제를 처리하는 애플리케이션의 리소스에 대한 서비스를 생성할 수 있습니다.

**참고**  
대/소문자만 다른 이름(예: EXAMPLE 및 예제)으로 DNS 쿼리에서 액세스할 수 있는 여러 서비스를 생성할 수 없습니다. 이렇게 하면 이러한 서비스의 DNS 이름이 동일합니다. API 호출로만 액세스할 수 있는 네임스페이스를 사용하는 경우, 철자는 같지만 대소문자는 다른 이름을 가진 서비스를 생성할 수 있습니다.

다음 단계에 따라 AWS Management Console AWS CLI및 SDK for Python을 사용하여 서비스를 생성합니다.

------
#### [ AWS Management Console ]

1. 에 로그인 AWS Management Console 하고 [https://console.aws.amazon.com/cloudmap/](https://console.aws.amazon.com/cloudmap/) AWS Cloud Map 콘솔을 엽니다.

1. 탐색 창에서 **네임스페이스**를 선택합니다.

1. **네임스페이스** 페이지에서 서비스를 추가하려는 네임스페이스를 선택합니다.

1. **네임스페이스: *namespace-name*** 페이지에서 **서비스 생성**을 선택합니다.

1. **서비스 이름**에이 서비스를 사용할 때 등록하는 인스턴스를 설명하는 이름을 입력합니다. 값은 API 호출 또는 DNS 쿼리에서 AWS Cloud Map 서비스 인스턴스를 검색하는 데 사용됩니다.
**참고**  
인스턴스를 등록할 때 **SRV** 레코드를 AWS Cloud Map 생성하고 특정 **SRV** 형식(예: [HAProxy](http://www.haproxy.org/))이 필요한 시스템을 사용하는 경우 **서비스 이름**에 다음을 지정합니다.  
이름은 밑줄(\$1)로 시작합니다**(예: \$1exampleservice)**.
이름을 *.\$1protocol*로 끝냅니다(예: **.\$1tcp**).
인스턴스를 등록할 때 AWS Cloud Map 는 **SRV** 레코드를 생성하고 서비스 이름과 네임스페이스 이름을 연결하여 이름을 할당합니다. 예를 들면 다음과 같습니다.  
**\$1exampleservice.\$1tcp.example.com**

1. (선택 사항) **서비스 설명**에 서비스에 대한 설명을 입력합니다. 여기에 입력하는 설명은 **서비스** 페이지와 각 서비스의 세부 정보 페이지에 표시됩니다.

1. 네임스페이스가 DNS 쿼리를 지원하는 경우 **서비스 검색 구성**에서 서비스 수준에서 검색 가능성을 구성할 수 있습니다. API 호출과 DNS 쿼리를 모두 허용하거나이 서비스의 인스턴스 검색을 위한 API 호출만 허용하도록 선택합니다.
**참고**  
**API 호출**을 선택하면 AWS Cloud Map 는 인스턴스를 등록할 때 SRV 레코드를 생성하지 않습니다.

   **API 및 DNS**를 선택하는 경우 다음 단계에 따라 DNS 레코드를 구성합니다. DNS 레코드를 추가하거나 제거할 수 있습니다.

   1. **라우팅 정책**에서 인스턴스를 등록할 때가 생성하는 AWS Cloud Map DNS 레코드에 대한 Amazon Route 53 라우팅 정책을 선택합니다. **가중치 기반 라우팅**과 **다중값 응답 라우팅** 중에서 선택할 수 있습니다. 자세한 내용은 [라우팅 정책](services-route53.md#services-dns-routing-policy) 단원을 참조하십시오.
**참고**  
인스턴스를 등록할 때 콘솔을 사용하여 Route 53 별칭 레코드를 생성 AWS Cloud Map 하도록를 구성할 수 없습니다. 프로그래밍 방식으로 인스턴스 AWS Cloud Map 를 등록할 때 Elastic Load Balancing 로드 밸런서에 대한 별칭 레코드를 생성하려면 **라우팅 정책에** **대해 가중치 기반 라우팅**을 선택합니다.

   1. **레코드 유형**에서 DNS 쿼리에 대한 응답으로 Route 53가 반환하는 대상을 결정하는 DNS 레코드 유형을 선택합니다 AWS Cloud Map. 자세한 내용은 [레코드 유형](services-route53.md#services-dns-record-type) 단원을 참조하십시오.

   1. **TTL**의 경우 숫자 값을 지정하여 서비스 수준에서 TTL(Time to Live) 값을 초 단위로 정의합니다. TTL 값은 업데이트된 설정을 얻기 위해 DNS 해석기가 다른 DNS 쿼리를 Amazon Route 53에 전달하기 전에 이 레코드에 대한 정보를 캐싱하는 기간을 결정합니다.

1. **상태 확인 구성**의 **상태 확인 옵션**에서 서비스 인스턴스에 적용할 수 있는 상태 확인 유형을 선택합니다. 상태 확인을 구성하지 않도록 선택하거나 인스턴스에 대한 Route 53 상태 확인 또는 외부 상태 확인 중에서 선택할 수 있습니다. 자세한 내용은 [AWS Cloud Map 서비스 상태 확인 구성](services-health-checks.md) 단원을 참조하십시오.
**참고**  
Route 53 상태 확인은 퍼블릭 DNS 네임스페이스의 서비스에 대해서만 구성할 수 있습니다.

   **Route 53 상태 확인을** 선택하는 경우 다음 정보를 제공합니다.

   1. **실패 임계값**에 서비스 인스턴스가 상태를 변경하기 위해 통과하거나 실패해야 하는 연속 Route 53 상태 확인 수를 정의하는 1\$110 사이의 숫자를 입력합니다.

   1. **상태 확인 프로토콜**에서 Route 53가 서비스 인스턴스의 상태를 확인하는 데 사용할 방법을 선택합니다.

   1. **HTTP** 또는 **HTTPS** 상태 확인 프로토콜을 선택하는 경우 **상태 확인 경로**에 상태 확인을 수행할 때 Amazon Route 53에서 요청할 경로를 제공합니다. 경로는 `/docs/route53-health-check.html` 파일과 같은 모든 값이 될 수 있습니다. 리소스가 정상일 때 반환되는 값은 2xx 또는 3xx 형식의 HTTP 상태 코드입니다. 쿼리 문자열 파라미터를 포함해도 됩니다(예: `/welcome.html?language=jp&login=y`). AWS Cloud Map 콘솔에서는 앞에 슬래시(/) 문자를 자동으로 덧붙입니다.

   Route 53 상태 확인에 대한 자세한 내용은 [Amazon Route 53 개발자 안내서의 Amazon Route 53가 상태 확인이 정상인지 확인하는 방법을](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover-determining-health-of-endpoints.html) 참조하세요. * *

1. (선택 사항) **태그**에서 **태그 추가**를 선택한 다음 네임스페이스에 태그를 지정할 키와 값을 지정합니다. 네임스페이스에 추가할 태그를 하나 이상 지정할 수 있습니다. 태그를 사용하면 AWS 리소스를 보다 쉽게 관리할 수 있도록 리소스를 분류할 수 있습니다. 자세한 내용은 [AWS Cloud Map 리소스에 태그 지정](using-tags.md) 단원을 참조하십시오.

1. **서비스 생성**을 선택합니다.

------
#### [ AWS CLI ]
+ `[create-service](https://docs.aws.amazon.com/cli/latest/reference/servicediscovery/create-service.html)` 명령을 사용하여 서비스를 생성합니다. *빨간색* 값을 사용자 값으로 바꿉니다.

  ```
  aws servicediscovery create-service \
      --name service-name \
      --namespace-id  ns-xxxxxxxxxxx \
      --dns-config "NamespaceId=ns-xxxxxxxxxxx,RoutingPolicy=MULTIVALUE,DnsRecords=[{Type=A,TTL=60}]"
  ```

  출력:

  ```
  {
          "Service": {
          "Id": "srv-xxxxxxxxxxx",
          "Arn": "arn:aws:servicediscovery:us-west-2:123456789012:service/srv-xxxxxxxxxxx",
          "Name": "service-name",
          "NamespaceId": "ns-xxxxxxxxxxx",
          "DnsConfig": {
              "NamespaceId": "ns-xxxxxxxxxxx",
              "RoutingPolicy": "MULTIVALUE",
              "DnsRecords": [
                  {
                      "Type": "A",
                      "TTL": 60
                  }
              ]
          },
          "CreateDate": 1587081768.334,
          "CreatorRequestId": "567c1193-6b00-4308-bd57-ad38a8822d25"
      }
  }
  ```

------
#### [ AWS SDK for Python (Boto3) ]

아직 `Boto3`이 설치되지 않은 경우, `Boto3`을 사용하여 [여기](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html#installation)에서 설치, 구성, 사용에 대한 지침을 찾을 수 있습니다.

1. `Boto3`을 가져와서 서비스로 `servicediscovery`를 사용하세요.

   ```
   import boto3
   client = boto3.client('servicediscovery')
   ```

1. 를 사용하여 서비스를 생성합니다`create_service()`. *빨간색* 값을 사용자 값으로 바꿉니다. 자세한 내용은 [create\$1service](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/servicediscovery/client/create_service.html)를 참조하세요.

   ```
   response = client.create_service(
       DnsConfig={
           'DnsRecords': [
               {
                   'TTL': 60,
                   'Type': 'A',
               },
           ],
           'NamespaceId': 'ns-xxxxxxxxxxx',
           'RoutingPolicy': 'MULTIVALUE',
       },
       Name='service-name',
       NamespaceId='ns-xxxxxxxxxxx',
   )
   ```

   예시 응답 출력

   ```
   {
       'Service': {
           'Arn': 'arn:aws:servicediscovery:us-west-2:123456789012:service/srv-xxxxxxxxxxx',
           'CreateDate': 1587081768.334,
           'DnsConfig': {
               'DnsRecords': [
                   {
                       'TTL': 60,
                       'Type': 'A',
                   },
               ],
               'NamespaceId': 'ns-xxxxxxxxxxx',
               'RoutingPolicy': 'MULTIVALUE',
           },
           'Id': 'srv-xxxxxxxxxxx',
           'Name': 'service-name',
           'NamespaceId': 'ns-xxxxxxxxxxx',
       },
       'ResponseMetadata': {
           '...': '...',
       },
   }
   ```

------

## 다음 단계
<a name="create-services-next-steps"></a>

서비스를 생성한 후 애플리케이션이 리소스를 찾는 방법에 대한 정보가 포함된 애플리케이션 리소스를 서비스 인스턴스로 등록할 수 있습니다. AWS Cloud Map 서비스 인스턴스 등록에 대한 자세한 내용은 섹션을 참조하세요[리소스를 AWS Cloud Map 서비스 인스턴스로 등록](registering-instances.md).

서비스를 생성한 후 엔드포인트 가중치, API 제한 시간 및 재시도 정책과 같은 사용자 지정 메타데이터를 서비스 속성으로 지정할 수도 있습니다. 자세한 내용은 API 참조[https://docs.aws.amazon.com/cloud-map/latest/api/API_UpdateServiceAttributes.html](https://docs.aws.amazon.com/cloud-map/latest/api/API_UpdateServiceAttributes.html)의 [ServiceAttributes](https://docs.aws.amazon.com/cloud-map/latest/api/API_ServiceAttributes.html) 및 섹션을 참조하세요. *AWS Cloud Map * 