

AWS Application Discovery Service는 더 이상 신규 고객에게 공개되지 않습니다. 또는 유사한 기능을 AWS Transform 제공하는를 사용합니다. 자세한 내용은 [AWS Application Discovery Service 가용성 변경을](https://docs.aws.amazon.com/application-discovery/latest/userguide/application-discovery-service-availability-change.html) 참조하세요.

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

# Amazon Athena에서 데이터 탐색
<a name="explore-data"></a>

Amazon Athena에서 데이터를 탐색하면 Discovery Agent가 검색한 모든 온프레미스 서버에서 수집한 데이터를 한 곳에서 분석할 수 있습니다. Amazon Athena의 데이터 탐색이 Migration Hub 콘솔에서 활성화되고(또는 StartContinousExport API를 사용하여) 에이전트에 대한 데이터 수집이 활성화되면 에이전트가 수집한 데이터는 정기적으로 S3 버킷에 자동으로 저장됩니다. 자세한 내용은 [Amazon Athena에서 데이터 탐색](#explore-data) 단원을 참조하십시오.

Amazon Athena에서 데이터를 탐색하면 Discovery Agents가 검색한 모든 온프레미스 서버에서 수집한 데이터를 한 곳에서 분석할 수 있습니다. Amazon Athena에서 데이터 탐색이 Migration Hub 콘솔에서 활성화되고(또는 StartContinousExport API를 사용하여) 에이전트에 대한 데이터 수집이 활성화되면 에이전트가 수집한 데이터가 정기적으로 S3 버킷에 자동으로 저장됩니다.

그런 다음 Amazon Athena를 방문하여 사전 정의된 쿼리를 실행하여 각 서버의 시계열 시스템 성능, 각 서버에서 실행 중인 프로세스 유형 및 서로 다른 서버 간의 네트워크 종속성을 분석할 수 있습니다. 또한 Amazon Athena를 사용하여 자체 사용자 지정 쿼리를 작성하고, 구성 관리 데이터베이스(CMDB) 내보내기와 같은 추가 기존 데이터 소스를 업로드하고, 검색된 서버를 실제 비즈니스 애플리케이션과 연결할 수 있습니다. Athena 데이터베이스를 Amazon Quick과 통합하여 쿼리 출력을 시각화하고 추가 분석을 수행할 수도 있습니다.

이 섹션의 주제에서는 Athena에서 데이터를 사용하여 로컬 환경을 평가하고 마이그레이션할 계획을 세우는 방법을 설명합니다 AWS.

# Amazon Athena에서 데이터 탐색 켜기
<a name="ce-prep-agents"></a>

Amazon Athena의 데이터 탐색은 Migration Hub 콘솔 또는의 API 직접 호출을 사용하여 연속 내보내기를 켜면 활성화됩니다 AWS CLI. Amazon Athena에서 검색된 데이터를 보고 탐색을 시작하려면 먼저 데이터 탐색을 켜야 합니다.

지속적 내보내기를 켜면 계정에서 서비스 연결 역할`AWSServiceRoleForApplicationDiscoveryServiceContinuousExport`이 자동으로 사용됩니다. 이 서비스 연결 역할에 대한 자세한 내용은 [Application Discovery Service에 대한 서비스 연결 역할 권한](service-linked-role-permissions.md) 단원을 참조하십시오.

다음 지침은 콘솔 및를 사용하여 Amazon Athena에서 데이터 탐색을 활성화하는 방법을 보여줍니다 AWS CLI.

------
#### [ Turn on with the console ]

"데이터 수집 시작"Amazon Athena 선택하거나 Migration Hub 콘솔의 Data Collectors 페이지에서 "Amazon Athena의 데이터 탐색"이라는 레이블이 지정된 토글을 클릭하면 암시적으로 연속 내보내기를 켜면 Amazon Athena의 데이터 탐색이 활성화됩니다. **** 

**콘솔에서 Amazon Athena의 데이터 탐색을 켜려면**

1. 탐색 창에서 **Data Collectors(데이터 수집기)**를 선택합니다.

1. **에이전트** 탭을 선택합니다.

1. **데이터 수집 시작**을 선택하거나 데이터 수집이 이미 켜져 있는 경우 ** Amazon Athena에서 데이터 탐색** 토글을 클릭합니다.

1. 이전 단계에서 생성된 대화 상자에서 관련 비용에 대해 동의하는 확인란을 클릭하고 **계속** 또는 **활성화**를 선택합니다.

**참고**  
이제 에이전트가 "연속 내보내기" 모드로 실행되어 Amazon Athena에서 검색된 데이터를 보고 작업할 수 있습니다. 이 기능을 처음 활성화하면 데이터가 Amazon Athena에 표시되는 데 최대 30분이 걸릴 수 있습니다.

------
#### [ Enable with the AWS CLI ]

Amazon Athena의 데이터 탐색은의 API 호출을 통해 명시적으로 설정된 Continuous Export를 통해 활성화됩니다 AWS CLI. 이렇게 하려면 먼저 환경에를 설치해야 AWS CLI 합니다.

**Amazon Athena에서를 설치하고 데이터 탐색을 AWS CLI 켜려면**

1. 운영 체제(Linux, macOS 또는 Windows) AWS CLI 용를 설치합니다. 지침은 [AWS Command Line Interface 사용 설명서를](https://docs.aws.amazon.com/cli/latest/userguide/) 참조하세요.

1. 명령 프롬프트(Windows) 또는 터미널(Linux나 macOS)을 엽니다.

   1. `aws configure`를 입력하고 Enter 키를 누릅니다.

   1.  AWS 액세스 키 ID와 AWS 보안 액세스 키를 입력합니다.

   1. 기본 리전 이름에 `us-west-2`를 입력합니다.

   1. 기본 출력 형식에 `text`를 입력합니다.

1. 다음 명령을 입력합니다.

   ```
   aws discovery start-continuous-export
   ```

**참고**  
이제 에이전트가 "연속 내보내기" 모드로 실행되어 Amazon Athena에서 검색된 데이터를 보고 작업할 수 있습니다. 이 기능을 처음 활성화하면 데이터가 Amazon Athena에 표시되는 데 최대 30분이 걸릴 수 있습니다.

------

# Amazon Athena에서 직접 데이터 탐색
<a name="explore-direct-in-ate"></a>

Amazon Athena에서 데이터 탐색을 활성화한 후 Athena에서 직접 데이터를 쿼리하여 에이전트가 검색한 세부 현재 데이터를 탐색하고 작업할 수 있습니다. 데이터를 사용하여 스프레드시트를 생성하고, 비용 분석을 실행하며, 시각화 프로그램으로 쿼리를 이식하고, 네트워크 종속성을 다이어그램으로 표시할 수 있습니다.

다음 지침에서는 Athena 콘솔에서 직접 에이전트 데이터를 탐색하는 방법을 설명합니다. Athena에 데이터가 없거나 Amazon Athena에서 데이터 탐색을 활성화하지 않은 경우에 설명된 대로 Amazon Athena에서 데이터 탐색을 활성화하라는 대화 상자가 표시됩니다[Amazon Athena에서 데이터 탐색 켜기데이터 탐색 켜기](ce-prep-agents.md).

**Athena에서 에이전트가 검색한 데이터를 직접 탐색하려면**

1.  AWS Migration Hub 콘솔의 탐색 창에서 **서버를** 선택합니다.

1. Amazon Athena 콘솔을 열려면 ** Amazon Athena에서 데이터 탐색**을 선택합니다.

1. **쿼리 편집기** 페이지에서 탐색 창의 **데이터베이스** 아래에 **application\$1discovery\$1service\$1database**가 선택되어 있는지 확인합니다.
**참고**  
**테이블** 아래에 있는 다음 테이블은 에이전트로 그룹화된 데이터 세트를 나타냅니다.  
**os\$1info\$1agent**
**network\$1interface\$1agent**
**sys\$1performance\$1agent**
**processes\$1agent**
**inbound\$1connection\$1agent**
**outbound\$1connection\$1agent**
**id\$1mapping\$1agent**

1. Athena 쿼리 편집기에서 SQL 쿼리를 작성하고 실행하여 Amazon Athena 콘솔에서 데이터를 쿼리합니다. 예를 들어, 검색된 모든 서버 IP 주소를 보려면 다음 쿼리를 사용할 수 있습니다.

   ```
   SELECT * FROM network_interface_agent;
   ```

   더 많은 예제 쿼리는 [Amazon Athena에서 사전 정의된 쿼리 사용사전 정의된 쿼리 사용](predefined-queries.md) 단원을 참조하십시오.

# Amazon Athena 데이터 시각화
<a name="port-query-to-visualization"></a>

데이터를 시각화하기 위해 Amazon Quick과 같은 시각화 프로그램이나 Cytoscape, yEd 또는 Gelphi와 같은 기타 오픈 소스 시각화 도구로 쿼리를 포팅할 수 있습니다. 이러한 도구를 사용하여 네트워크 다이어그램, 요약 차트 및 기타 그래픽을 렌더링할 수 있습니다. 이 방법을 사용하면 수집된 데이터에 소스로 액세스하여 시각화를 생성할 수 있도록 시각화 프로그램을 통해 Athena에 연결합니다.

**Quick을 사용하여 Amazon Athena 데이터를 시각화하려면**

1. [Amazon Quick](https://aws.amazon.com/quicksight/)에 로그인합니다.

1. **Connect to another data source or upload a file(다른 데이터 원본에 연결 또는 파일 업로드)**을 선택합니다.

1. **Athena**를 선택합니다. **새 Athena 데이터 소스** 대화 상자가 표시됩니다.

1. **Data source name(데이터 원본 이름)** 필드에 이름을 입력합니다.

1. **데이터 소스 생성**을 선택합니다.

1. **테이블 선택** 대화 상자에서 **Agents-servers-os** 테이블을 선택한 후 **선택**을 선택합니다.

1. **데이터 세트 생성 완료** 대화 상자에서 **더 빠른 분석을 위해 SPICE로 가져오기**를 선택한 다음 **시각화**를 선택합니다.

   시각화가 렌더링됩니다.

# Amazon Athena에서 사전 정의된 쿼리 사용
<a name="predefined-queries"></a>

이 단원에는 TCO 분석 및 네트워크 시각화와 같은 일반 사용 사례에 대한 미리 정의된 쿼리가 포함되어 있습니다. 이러한 쿼리를 있는 그대로 사용하거나 필요한 대로 수정할 수 있습니다.

**사전 정의된 쿼리를 사용하려면 다음을 수행합니다.**

1.  AWS Migration Hub 콘솔의 탐색 창에서 **서버를** 선택합니다.

1. Amazon Athena 콘솔을 열려면 ** Amazon Athena에서 데이터 탐색**을 선택합니다.

1. **쿼리 편집기** 페이지에서 탐색 창의 **데이터베이스** 아래에 **application\$1discovery\$1service\$1database**가 선택되어 있는지 확인합니다.

1. Query Editor(쿼리 편집기)에서 더하기(**\$1**) 기호를 선택하여 새 쿼리를 위한 탭을 생성합니다.

1. [사전 정의된 쿼리](#pq-query-examples)에서 쿼리 중 하나를 복사합니다.

1. 방금 생성한 새 쿼리 탭의 쿼리 창에 쿼리를 붙여 넣습니다.

1. **쿼리 실행**(Run Query)을 선택합니다.

## 사전 정의된 쿼리
<a name="pq-query-examples"></a>

쿼리에 대한 정보를 보려면 해당 제목을 선택합니다.

### 서버의 IP 주소 및 호스트 이름 가져오기
<a name="pq-helper-function"></a>

이 보기 헬퍼 함수는 특정 서버의 IP 주소와 호스트 이름을 검색합니다. 다른 쿼리에서 이 보기를 사용할 수 있습니다. 뷰를 생성하는 방법에 대한 자세한 내용은 *Amazon Athena 사용 설명서*의 [CREATE VIEW](https://docs.aws.amazon.com/athena/latest/ug/create-view.html)를 참조하세요.

```
CREATE OR REPLACE VIEW hostname_ip_helper AS 
SELECT DISTINCT
  "os"."host_name"
, "nic"."agent_id"
, "nic"."ip_address"
FROM
  os_info_agent os
, network_interface_agent nic
WHERE ("os"."agent_id" = "nic"."agent_id");
```

### 에이전트가 있거나 없는 서버 식별
<a name="pq-agents-installed-or-not"></a>

이 쿼리는 데이터의 유효성을 검증하는 데 도움이 됩니다. 네트워크의 여러 서버에 에이전트를 배포한 경우 이 쿼리를 사용하여 네트워크에 에이전트를 배포하지 않은 다른 서버가 있는지 확인할 수 있습니다. 이 쿼리에서는 인바운드 및 아웃바운드 네트워크 트래픽을 조회하고 프라이빗 IP 주소에 대해서만 트래픽을 필터링합니다. 즉, `192`, `10` 또는 `172`로 시작하는 IP 주소입니다.

```
SELECT DISTINCT "destination_ip" "IP Address" ,
         (CASE
    WHEN (
    (SELECT "count"(*)
    FROM network_interface_agent
    WHERE ("ip_address" = "destination_ip") ) = 0) THEN
        'no'
        WHEN (
        (SELECT "count"(*)
        FROM network_interface_agent
        WHERE ("ip_address" = "destination_ip") ) > 0) THEN
            'yes' END) "agent_running"
    FROM outbound_connection_agent
WHERE ((("destination_ip" LIKE '192.%')
        OR ("destination_ip" LIKE '10.%'))
        OR ("destination_ip" LIKE '172.%'))
UNION
SELECT DISTINCT "source_ip" "IP ADDRESS" ,
         (CASE
    WHEN (
    (SELECT "count"(*)
    FROM network_interface_agent
    WHERE ("ip_address" = "source_ip") ) = 0) THEN
        'no'
        WHEN (
        (SELECT "count"(*)
        FROM network_interface_agent
        WHERE ("ip_address" = "source_ip") ) > 0) THEN
            'yes' END) "agent_running"
    FROM inbound_connection_agent
WHERE ((("source_ip" LIKE '192.%')
        OR ("source_ip" LIKE '10.%'))
        OR ("source_ip" LIKE '172.%'));
```

### 에이전트가 있는 서버의 시스템 성능 데이터 분석
<a name="pq-agents-server-performance"></a>

이 쿼리를 사용하여 에이전트가 설치된 온프레미스의 시스템 성능 및 사용률 패턴 데이터를 분석할 수 있습니다. 이 쿼리는 각 서버의 호스트 이름을 식별하기 위해 `system_performance_agent` 테이블을 `os_info_agent` 테이블과 결합합니다. 이 쿼리는 에이전트가 실행 중인 모든 서버에 대해 시계열 사용률 데이터(15분 간격)를 반환합니다.

```
SELECT "OS"."os_name" "OS Name" ,
    "OS"."os_version" "OS Version" ,
    "OS"."host_name" "Host Name" ,
     "SP"."agent_id" ,
     "SP"."total_num_cores" "Number of Cores" ,
     "SP"."total_num_cpus" "Number of CPU" ,
     "SP"."total_cpu_usage_pct" "CPU Percentage" ,
     "SP"."total_disk_size_in_gb" "Total Storage (GB)" ,
     "SP"."total_disk_free_size_in_gb" "Free Storage (GB)" ,
     ("SP"."total_disk_size_in_gb" - "SP"."total_disk_free_size_in_gb") "Used Storage" ,
     "SP"."total_ram_in_mb" "Total RAM (MB)" ,
     ("SP"."total_ram_in_mb" - "SP"."free_ram_in_mb") "Used RAM (MB)" ,
     "SP"."free_ram_in_mb" "Free RAM (MB)" ,
     "SP"."total_disk_read_ops_per_sec" "Disk Read IOPS" ,
     "SP"."total_disk_bytes_written_per_sec_in_kbps" "Disk Write IOPS" ,
     "SP"."total_network_bytes_read_per_sec_in_kbps" "Network Reads (kbps)" ,
     "SP"."total_network_bytes_written_per_sec_in_kbps" "Network Write (kbps)"
FROM "sys_performance_agent" "SP" , "OS_INFO_agent" "OS"
WHERE ("SP"."agent_id" = "OS"."agent_id") limit 10;
```

### 포트 번호 및 프로세스 세부 정보를 기반으로 서버 간 아웃바운드 통신 추적
<a name="pq-analyze-outbound-connections"></a>

이 쿼리는 포트 번호 및 프로세스 세부 정보와 함께 각 서비스의 아웃바운드 트래픽에 대한 세부 정보를 가져옵니다.

IANA에서 다운로드한 IANA 포트 레지스트리 데이터베이스가 포함된 `iana_service_ports_import` 테이블을 아직 생성하지 않았다면 쿼리를 실행하기 전에 이 테이블을 생성해야 합니다. 이 테이블 생성 방법에 대한 자세한 내용은 [IANA 포트 레지스트리 가져오기 테이블 생성](#pq-create-iana-import-table) 단원을 참조하십시오.

`iana_service_ports_import` 테이블이 생성되었으면 아웃바운드 트래픽을 추적하기 위한 두 가지 보기 헬퍼 함수를 생성합니다. 뷰를 생성하는 방법에 대한 자세한 내용은 *Amazon Athena 사용 설명서*의 [CREATE VIEW](https://docs.aws.amazon.com/athena/latest/ug/create-view.html)를 참조하세요.

**아웃바운드 추적 헬퍼 함수를 생성하려면**

1. [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home)에서 Athena 콘솔을 엽니다.

1. 모든 개별 아웃바운드 대상 IP 주소를 나열하는 다음 헬퍼 함수를 사용하여 `valid_outbound_ips_helper` 뷰를 생성합니다.

   ```
   CREATE OR REPLACE VIEW valid_outbound_ips_helper AS 
   SELECT DISTINCT "destination_ip"
   FROM outbound_connection_agent;
   ```

1. 아웃바운드 트래픽에 대한 통신 빈도를 결정하는 다음 헬퍼 함수를 사용하여 `outbound_query_helper` 보기를 생성합니다.

   ```
   CREATE OR REPLACE VIEW outbound_query_helper AS
   SELECT "agent_id" ,
            "source_ip" ,
            "destination_ip" ,
            "destination_port" ,
            "agent_assigned_process_id" ,
            "count"(*) "frequency"
   FROM outbound_connection_agent
   WHERE (("ip_version" = 'IPv4')
           AND ("destination_ip" IN 
       (SELECT *
       FROM valid_outbound_ips_helper )))
   GROUP BY  "agent_id", "source_ip", "destination_ip", "destination_port", "agent_assigned_process_id";
   ```

1. `iana_service_ports_import` 테이블과 두 가지 헬퍼 함수를 생성한 후에는 다음 쿼리를 실행하여 포트 번호 및 프로세스 세부 정보와 함께 각 서비스의 아웃바운드 트래픽에 대한 세부 정보를 얻을 수 있습니다.

   ```
   SELECT hip1.host_name "Source Host Name",
            outbound_connections_results0.source_ip "Source IP Address",
            hip2.host_name "Destination Host Name",
            outbound_connections_results0.destination_ip "Destination IP Address",
            outbound_connections_results0.frequency "Connection Frequency",
            outbound_connections_results0.destination_port "Destination Communication Port",
            outbound_connections_results0.servicename "Process Service Name",
            outbound_connections_results0.description "Process Service Description"
   FROM 
       (SELECT DISTINCT o.source_ip,
            o.destination_ip,
            o.frequency,
            o.destination_port,
            ianap.servicename,
            ianap.description
       FROM outbound_query_helper o, iana_service_ports_import ianap
       WHERE o.destination_port = TRY_CAST(ianap.portnumber AS integer)) AS outbound_connections_results0 LEFT OUTER
   JOIN hostname_ip_helper hip1
       ON outbound_connections_results0.source_ip = hip1.ip_address LEFT OUTER
   JOIN hostname_ip_helper hip2
       ON outbound_connections_results0.destination_ip = hip2.ip_address
   ```

### 포트 번호 및 프로세스 세부 정보를 기반으로 서버 간 인바운드 통신 추적
<a name="pq-analyze-inbound-connections"></a>

이 쿼리는 포트 번호 및 프로세스 세부 정보와 함께 각 서비스의 인바운드 트래픽에 대한 정보를 가져옵니다.

IANA에서 다운로드한 IANA 포트 레지스트리 데이터베이스가 포함된 `iana_service_ports_import` 테이블을 아직 생성하지 않았다면 쿼리를 실행하기 전에 이 테이블을 생성해야 합니다. 이 테이블 생성 방법에 대한 자세한 내용은 [IANA 포트 레지스트리 가져오기 테이블 생성](#pq-create-iana-import-table) 단원을 참조하십시오.

`iana_service_ports_import` 테이블이 생성되었으면 인바운드 트래픽을 추적하기 위한 두 가지 보기 헬퍼 함수를 생성합니다. 뷰를 생성하는 방법에 대한 자세한 내용은 *Amazon Athena 사용 설명서*의 [CREATE VIEW](https://docs.aws.amazon.com/athena/latest/ug/create-view.html)를 참조하세요.

**가져오기 추적 헬퍼 함수를 생성하려면**

1. [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home)에서 Athena 콘솔을 엽니다.

1. 모든 고유한 인바운드 소스 IP 주소를 나열하는 다음 헬퍼 함수를 사용하여 `valid_inbound_ips_helper` 보기를 생성합니다.

   ```
   CREATE OR REPLACE VIEW valid_inbound_ips_helper AS 
   SELECT DISTINCT "source_ip"
   FROM inbound_connection_agent;
   ```

1. 인바운드 트래픽에 대한 통신 빈도를 결정하는 다음 헬퍼 함수를 사용하여 `inbound_query_helper` 보기를 생성합니다.

   ```
   CREATE OR REPLACE VIEW inbound_query_helper AS 
   SELECT "agent_id" ,
            "source_ip" ,
            "destination_ip" ,
            "destination_port" ,
            "agent_assigned_process_id" ,
            "count"(*) "frequency"
   FROM inbound_connection_agent
   WHERE (("ip_version" = 'IPv4')
           AND ("source_ip" IN 
       (SELECT *
       FROM valid_inbound_ips_helper )))
   GROUP BY  "agent_id", "source_ip", "destination_ip", "destination_port", "agent_assigned_process_id";
   ```

1. `iana_service_ports_import` 테이블과 두 가지 헬퍼 함수를 생성한 후에는 다음 쿼리를 실행하여 포트 번호 및 프로세스 세부 정보와 함께 각 서비스의 인바운드 트래픽에 대한 세부 정보를 얻을 수 있습니다.

   ```
   SELECT hip1.host_name "Source Host Name",
            inbound_connections_results0.source_ip "Source IP Address",
            hip2.host_name "Destination Host Name",
            inbound_connections_results0.destination_ip "Destination IP Address",
            inbound_connections_results0.frequency "Connection Frequency",
            inbound_connections_results0.destination_port "Destination Communication Port",
            inbound_connections_results0.servicename "Process Service Name",
            inbound_connections_results0.description "Process Service Description"
   FROM 
       (SELECT DISTINCT i.source_ip,
            i.destination_ip,
            i.frequency,
            i.destination_port,
            ianap.servicename,
            ianap.description
       FROM inbound_query_helper i, iana_service_ports_import ianap
       WHERE i.destination_port = TRY_CAST(ianap.portnumber AS integer)) AS inbound_connections_results0 LEFT OUTER
   JOIN hostname_ip_helper hip1
       ON inbound_connections_results0.source_ip = hip1.ip_address LEFT OUTER
   JOIN hostname_ip_helper hip2
       ON inbound_connections_results0.destination_ip = hip2.ip_address
   ```

### 포트 번호에서 실행 중인 소프트웨어 식별
<a name="pq-identify-software"></a>

이 쿼리는 포트 번호를 기준으로 실행 중인 소프트웨어를 식별합니다.

IANA에서 다운로드한 IANA 포트 레지스트리 데이터베이스가 포함된 `iana_service_ports_import` 테이블을 아직 생성하지 않았다면 쿼리를 실행하기 전에 이 테이블을 생성해야 합니다. 이 테이블 생성 방법에 대한 자세한 내용은 [IANA 포트 레지스트리 가져오기 테이블 생성](#pq-create-iana-import-table) 단원을 참조하십시오.

다음 쿼리를 실행하여 포트 번호를 기준으로 실행 중인 소프트웨어를 식별합니다.

```
SELECT o.host_name "Host Name",
       ianap.servicename "Service",
       ianap.description "Description",
       con.destination_port,
       con.cnt_dest_port "Destination Port Count"
FROM   (SELECT agent_id,
               destination_ip,
               destination_port,
               Count(destination_port) cnt_dest_port
        FROM   inbound_connection_agent
        GROUP  BY agent_id,
                  destination_ip,
                  destination_port) con,
       (SELECT agent_id,
               host_name,
               Max("timestamp")
        FROM   os_info_agent
        GROUP  BY agent_id,
                  host_name) o,
       iana_service_ports_import ianap
WHERE  ianap.transportprotocol = 'tcp'
       AND con.destination_ip NOT LIKE '172%'
       AND con.destination_port = ianap.portnumber
       AND con.agent_id = o.agent_id
ORDER BY cnt_dest_port DESC;
```

## IANA 포트 레지스트리 가져오기 테이블 생성
<a name="pq-create-iana-import-table"></a>

미리 정의된 쿼리 중 일부에는 IANA(Internet Assigned Numbers Authority)에서 다운로드한 정보가 포함된 `iana_service_ports_import` 테이블이 필요합니다.

**iana\$1service\$1ports\$1import 테이블을 생성하려면**

1. *iana.org* [서비스 이름 및 전송 프로토콜 포트 번호 레지스트리에서 IANA 포트 레지스트리](https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml) 데이터베이스 **CSV** 파일을 다운로드합니다.

1. Amazon S3로 파일을 업로드합니다. 자세한 내용은 [S3 버킷에 파일 및 폴더를 업로드하려면 어떻게 해야 합니까?](https://docs.aws.amazon.com/AmazonS3/latest/userguide/upload-objects.html)를 참조하십시오.

1. Athena에서 라는 새 테이블을 생성합니다`iana_service_ports_import`. 지침은 *Amazon Athena 사용 설명서*의 [테이블 생성을](https://docs.aws.amazon.com/athena/latest/ug/getting-started.html#step-2-create-a-table) 참조하세요. 다음 예제에서는 `my_bucket_name`을 이전 단계에서 CSV 파일을 업로드한 S3 버킷의 이름으로 대치해야 합니다.

   ```
   CREATE EXTERNAL TABLE IF NOT EXISTS iana_service_ports_import (
            ServiceName STRING,
            PortNumber INT,
            TransportProtocol STRING,
            Description STRING,
            Assignee STRING,
            Contact STRING,
            RegistrationDate STRING,
            ModificationDate STRING,
            Reference STRING,
            ServiceCode STRING,
            UnauthorizedUseReported STRING,
            AssignmentNotes STRING
   )
   ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'
   WITH SERDEPROPERTIES (
     'serialization.format' = ',',
     'quoteChar' = '"',
     'field.delim' = ','
   ) LOCATION 's3://my_bucket_name/'
   TBLPROPERTIES ('has_encrypted_data'='false',"skip.header.line.count"="1");
   ```