

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

# WorkSpaces 애플리케이션 사용 보고서
<a name="configure-usage-reports"></a>

Amazon WorkSpaces 애플리케이션 사용 보고서를 구독하여 사용자가 서비스를 사용하는 방법에 대한 자세한 보고서를 받을 수 있습니다. .csv 파일 2개가 매일 계정의 Amazon Simple Storage Service(Amazon S3) 버킷으로 내보내집니다.

**참고**  
WorkSpaces 애플리케이션 사용 보고서를 활성화하려면 2019년 5월 7일 또는 그 이후에 릴리스된 WorkSpaces 애플리케이션 에이전트 버전을 사용하는 이미지를 사용해야 합니다.

**Topics**
+ [WorkSpaces 애플리케이션 사용 보고서 활성화](enable-usage-reports.md)
+ [WorkSpaces 애플리케이션 사용 보고서 필드](usage-reports-fields.md)
+ [사용자 지정 보고서 생성 및 WorkSpaces 애플리케이션 사용 데이터 분석](configure-custom-reports-analyze-usage-data.md)

# WorkSpaces 애플리케이션 사용 보고서 활성화
<a name="enable-usage-reports"></a>

사용 보고서를 수신하려면 WorkSpaces 애플리케이션 콘솔, AWS Command Line Interface (AWS CLI) 또는 `CreateUsageReportSubscription` API 작업을 사용하여 사용 보고서를 구독합니다. 사용량 데이터를 수신하려는 각 AWS 리전에 대해 사용 보고서를 개별적으로 활성화해야 합니다.

**참고**  
언제든지 사용 보고서 구독을 시작하거나 중지할 수 있습니다. 사용 보고서 구독은 무료지만 S3 버킷에 저장된 보고서에는 표준 Amazon S3 요금이 적용될 수 있습니다. 자세한 내용은 [Amazon S3 요금](https://aws.amazon.com/s3/pricing/)을 참조하세요.

WorkSpaces 애플리케이션 콘솔을 사용하여 WorkSpaces 애플리케이션의 사용 보고서를 구독하려면 다음 단계를 수행합니다.

1. [https://console.aws.amazon.com/appstream2/home](https://console.aws.amazon.com/appstream2/home) WorkSpaces 애플리케이션 콘솔을 엽니다.

1. 사용 보고서를 활성화할 AWS 리전을 선택합니다.

1. 탐색 창에서 **Usage Reports(사용 보고서)**를 선택합니다.

1. **사용**을 선택한 후 **적용**을 선택합니다.

세션 스크립트 구성에 대해 인스턴스 세션 스크립트 및 Amazon S3 로깅을 활성화한 경우 WorkSpaces 애플리케이션은 스크립트 출력을 저장할 S3 버킷을 생성했습니다. 이 버킷은 계정과 리전에 고유합니다. 이 경우 사용 보고를 활성화하면 WorkSpaces 애플리케이션은 동일한 버킷을 사용하여 사용 보고서를 저장합니다. 인스턴스 세션 스크립트를 아직 활성화하지 않은 경우 사용 보고서를 활성화하면 WorkSpaces 애플리케이션은 다음 위치에 새 S3 버킷을 생성합니다.

```
appstream-logs-region-code-account-id-without-hyphens-random-identifier
```

***region-code***  
사용 보고가 활성화된 AWS 리전의 리전 코드입니다.

***account-id-without-hyphens***  
Amazon Web Services 계정 식별자입니다. 임의의 ID를 사용하면 같은 리전의 다른 버킷과 충돌하지 않습니다. 버킷 이름의 첫 번째 부분인 `appstream-logs`은 계정이나 리전 간에 변경되지 않습니다.

예를 들어 계정 번호 123456789012의 미국 서부(오레곤) 리전(us-west-2)에서 사용 보고를 활성화하면 WorkSpaces 애플리케이션은 다음 예제에 표시된 이름과 유사한 Amazon S3 버킷을 해당 리전의 계정 내에 생성합니다.

```
appstream-logs-us-west-2-1234567890123-abcdefg
```

충분한 권한이 있는 관리자만 이 버킷을 삭제할 수 있습니다.

**Topics**
+ [WorkSpaces 애플리케이션 세션 보고서](usage-report-types-sessions-reports.md)
+ [WorkSpaces 애플리케이션 애플리케이션 보고서](usage-report-types-applications-reports.md)

# WorkSpaces 애플리케이션 세션 보고서
<a name="usage-report-types-sessions-reports"></a>

사용자가 Amazon Web Services 계정에서 스트리밍 세션을 하나 이상 시작하는 날마다 WorkSpaces 애플리케이션은 세션 보고서를 Amazon S3 버킷으로 내보냅니다. **daily-session-report-[YYYY]-[MM]-[DD].csv**라는 보고서가 다음 폴더 경로를 사용하여 Amazon S3 계정의 중첩된 폴더 구조에 저장됩니다.

[bucket\$1name]/sessions/schedule=DAILY/year=[YYYY]/month=[MM]/day=[DD]/

Amazon Athena를 사용하여 보고서를 쿼리하는 경우 이 중첩 구조를 사용하면 파티셔닝이 용이해집니다. Athena는 서버리스 대화형 쿼리 서비스이며, 표준 SQL를 사용하여 S3 버킷에 저장된 데이터를 분석하는 데 사용할 수 있습니다. 자세한 내용은 [사용자 지정 보고서 생성 및 WorkSpaces 애플리케이션 사용 데이터 분석](configure-custom-reports-analyze-usage-data.md) 단원을 참조하십시오.

세션 보고서의 레코드 하나에서 각 사용자 세션을 설명합니다. 보고서 제목이 되는 하루가 끝나면 24시간 이내에 UTC 시간에 따라 매일 세션 보고서가 생성됩니다. 세션이 하루를 넘어가면 세션이 끝나는 날에 해당하는 세션 보고서에 세션 레코드가 나타납니다. 세션 보고서에 포함되는 데이터에 대한 자세한 내용은 [세션 보고서 필드](usage-reports-fields-sessions-reports.md) 단원을 참조하십시오.

# WorkSpaces 애플리케이션 애플리케이션 보고서
<a name="usage-report-types-applications-reports"></a>

사용자가 스트리밍 세션 중에 애플리케이션을 하나 이상 시작하는 날마다 WorkSpaces 애플리케이션은 애플리케이션 보고서를 Amazon S3 버킷으로 내보냅니다. **daily-app-report-[YYYY]-[MM]-[DD].csv**라는 보고서가 다음 폴더 경로를 사용하여 Amazon S3 계정의 중첩된 폴더 구조에 저장됩니다.

[bucket\$1name]/applications/schedule=DAILY/year=[YYYY]/month=[MM]/day=[DD]/

Amazon Athena를 사용하여 보고서를 쿼리하는 경우 이 중첩 구조를 사용하면 파티셔닝이 용이해집니다. Athena는 서버리스 대화형 쿼리 서비스이며, 표준 SQL를 사용하여 S3 버킷에 저장된 데이터를 분석하는 데 사용할 수 있습니다. 자세한 내용은 [사용자 지정 보고서 생성 및 WorkSpaces 애플리케이션 사용 데이터 분석](configure-custom-reports-analyze-usage-data.md) 단원을 참조하십시오.

애플리케이션 보고서의 레코드 하나에서 각 애플리케이션 시작을 설명합니다. 예를 들어, 사용자가 세션 중에 별도의 애플리케이션 5개를 시작할 경우 별도의 레코드 5개가 관련된 애플리케이션 보고서에 나타납니다. 다음 이벤트가 발생하면 애플리케이션이 시작될 때 기록됩니다.
+ 애플리케이션 ID가 스트리밍 URL 또는 릴레이 상태에 포함되므로 세션이 시작될 때 애플리케이션이 바로 시작됩니다.
+ 새 스트리밍 세션을 시작할 때 사용자가 애플리케이션 카탈로그에서 애플리케이션을 선택합니다.
+ 스트리밍 세션 중에 사용자가 애플리케이션 카탈로그에서 애플리케이션을 선택합니다.

다른 방식으로 시작된 애플리케이션은 애플리케이션 보고서에 포함되지 않습니다. 예를 들어, Windows Explorer, PowerShell 또는 Windows 데스크톱 **Start** 메뉴에 대한 액세스를 사용자에게 제공하고 사용자가 이 도구를 사용하여 애플리케이션을 직접 시작하는 경우 또는 다른 프로그램이나 스크립트가 애플리케이션을 시작하는 경우 이 애플리케이션 시작은 애플리케이션 보고서에 포함되지 않습니다.

보고서 제목이 되는 하루가 끝나면 24시간 이내에 UTC 시간에 따라 매일 애플리케이션 보고서가 생성됩니다. 세션이 하루를 넘어가면 세션 중에 시작된 애플리케이션이 세션이 끝나는 날에 해당하는 애플리케이션 보고서에 반영됩니다. 애플리케이션 보고서에 포함되는 데이터에 대한 자세한 내용은 [애플리케이션 보고서 필드](usage-reports-fields-applications-reports.md) 단원을 참조하십시오.

# WorkSpaces 애플리케이션 사용 보고서 필드
<a name="usage-reports-fields"></a>

이 주제에서는 WorkSpaces 애플리케이션 사용 보고서에 포함된 필드에 대한 정보를 제공합니다.

**Topics**
+ [세션 보고서 필드](usage-reports-fields-sessions-reports.md)
+ [애플리케이션 보고서 필드](usage-reports-fields-applications-reports.md)

# 세션 보고서 필드
<a name="usage-reports-fields-sessions-reports"></a>

다음 표에서는 WorkSpaces 애플리케이션 세션 보고서에 포함된 필드를 설명합니다.


| 필드 이름 | 설명 | 
| --- | --- | 
| user\$1session\$1id | 세션의 고유 식별자(ID)입니다. | 
| aws\$1account\$1id | Amazon Web Services 계정 ID입니다. | 
| region |  AWS 리전입니다. | 
| session\$1start\$1time |  세션이 시작된 날짜와 시간입니다. ISO 8601 형식 및 UTC로 지정해야 합니다.  | 
| session\$1end\$1time |  세션이 끝난 날짜와 시간입니다. ISO 8601 형식 및 UTC로 지정해야 합니다.  | 
| session\$1duration\$1in\$1seconds | 세션 지속 시간입니다(초). | 
| user\$1id | 인증 유형에 속한 사용자의 고유 ID입니다. | 
| user\$1arn | 사용자의 Amazon 리소스 이름(ARN)입니다. | 
| authentication\$1type |  사용자 인증에 사용되는 방법입니다. 가능한 값: `CUSTOM` \$1 `SAML` \$1 `USERPOOL`  | 
| authentication\$1type\$1user\$1id | 사용자 ID와 인증 유형의 연결이며, 사용자 요금을 평가하기 위해 사용자를 고유하게 식별합니다. 자세한 내용은 [WorkSpaces 애플리케이션 요금을](https://aws.amazon.com/appstream2/pricing/) 참조하세요. | 
| fleet\$1name | 세션과 연결된 플릿 이름입니다. | 
| stack\$1name | 세션과 연결된 스택 이름입니다. | 
| instance\$1type | 세션에 사용되는 WorkSpaces 애플리케이션 인스턴스 유형입니다. 인스턴스 유형 목록은 [WorkSpaces 애플리케이션 요금을](https://aws.amazon.com/appstream2/pricing/) 참조하세요. | 
| eni\$1private\$1ip\$1address | 네트워크 통신을 위해 WorkSpaces 애플리케이션 인스턴스에서 사용하는 탄력적 네트워크 인터페이스의 IP 주소입니다. | 
| connected\$1at\$1least\$1once |  사용자가 적어도 한 번 세션에 연결되었는지 여부를 나타냅니다. 가능한 값: `true` \$1 `false`  | 
| client\$1ip\$1addresses | 세션에 연결하기 위해 사용된 사용자 디바이스와 연결된 IP 주소입니다. 사용자가 두 번 이상 세션에 연결되었다가 연결 해제된 경우 별개의 IP 주소가 최근 10개까지 저장되고 세미콜론으로 구분됩니다. | 
| google\$1drive\$1enabled |  Google Drive가 세션의 영구 스토리지 옵션으로 활성화되었는지 여부를 나타냅니다. 자세한 내용은 [WorkSpaces 애플리케이션 사용자를 위한 Google Drive 활성화 및 관리](google-drive.md) 단원을 참조하십시오. 가능한 값: `true` \$1 `false`  | 
| one\$1drive\$1enabled |  OneDrive가 세션의 영구 스토리지 옵션으로 활성화되었는지 여부를 나타냅니다. 자세한 내용은 [WorkSpaces 애플리케이션 사용자를 위한 Google Drive 활성화 및 관리](google-drive.md) 단원을 참조하십시오. 가능한 값: `true` \$1 `false`  | 
| home\$1folders\$1storage\$1location | 홈 폴더를 사용하여 저장된 파일에 사용되는 Amazon S3 버킷입니다. | 
| user\$1settings\$1clipboard\$1copy\$1from\$1local\$1device |  사용자가 세션 중에 클립보드를 사용하여 로컬 디바이스에서 스트리밍 세션으로 데이터를 복사할 수 있는지 여부를 나타냅니다. 가능한 값: `ENABLED` \$1 `DISABLED`  | 
| user\$1settings\$1clipboard\$1copy\$1to\$1local\$1device |  사용자가 세션 중에 클립보드를 사용하여 스트리밍 세션에서 로컬 디바이스로 데이터를 복사할 수 있는지 여부를 나타냅니다. 가능한 값: `ENABLED` \$1 `DISABLED`  | 
| user\$1settings\$1file\$1upload |  사용자가 세션 중에 로컬 디바이스에서 스트리밍 세션으로 파일을 업로드할 수 있는지 여부를 나타냅니다. 가능한 값: `ENABLED` \$1 `DISABLED`  | 
| user\$1settings\$1file\$1download |  사용자가 세션 중에 스트리밍 세션에서 로컬 디바이스로 파일을 다운로드할 수 있는지 여부를 나타냅니다. 가능한 값: `ENABLED` \$1 `DISABLED`  | 
| user\$1settings\$1printing\$1to\$1local\$1device |  사용자가 세션 중에 스트리밍 세션에서 로컬 디바이스로 파일을 인쇄할 수 있는지 여부를 나타냅니다. 가능한 값: `ENABLED` \$1 `DISABLED`  | 
| application\$1settings\$1enabled |  애플리케이션 설정 지속성이 세션에 대해 활성화되었는지 여부를 나타냅니다. 가능한 값: `true` \$1 `false`  | 
| domain\$1joined |  세션 시작 시 WorkSpaces 애플리케이션 스트리밍 인스턴스가 Active Directory 도메인에 조인되었는지 여부를 나타냅니다. 자세한 내용은 [WorkSpaces 애플리케이션에서 Active Directory 사용](active-directory.md) 단원을 참조하십시오. 가능한 값: `Y` \$1 `N`  | 
| max\$1session\$1duration | 세션에 허용된 최대 지속 시간입니다(초). | 
| session\$1type |  세션 유형입니다. 가능한 값: `ALWAYS_ON` \$1 `ON_DEMAND`  | 
| stream\$1view |  스트림 뷰입니다. 가능한 값: `APPLICATION` \$1 `DESKTOP`  | 
| streaming\$1experience\$1settings\$1protocol |  세션이 스트리밍을 종료할 때 사용한 프로토콜입니다. 가능한 값: `UDP` \$1 `TCP`  | 
| instance\$1id | 사용자 세션과 연결된 인스턴스 ID입니다. | 
| is\$1multisession |  세션이 다중 세션 플릿에 속하는지 여부를 나타냅니다. 가능한 값: `true` \$1 `false`  | 

# 애플리케이션 보고서 필드
<a name="usage-reports-fields-applications-reports"></a>

다음 표에서는 WorkSpaces 애플리케이션 애플리케이션 보고서에 포함된 필드를 설명합니다.


| 필드 이름 | 설명 | 
| --- | --- | 
| user\$1session\$1id | 세션의 고유 식별자(ID)입니다. | 
| application\$1name | Image Assistant에서 지정한 것과 같은 애플리케이션 이름입니다. 이 값은 사용자가 WorkSpaces 애플리케이션 인터페이스를 통해 애플리케이션을 시작할 때 제공됩니다. | 
| schedule | 보고서가 생성되는 빈도입니다. 가능한 값: DAILY | 
| 년 | 보고서 연도입니다. | 
| 개월 | 보고서 월입니다. | 
| day | 보고서 일입니다. | 

# 사용자 지정 보고서 생성 및 WorkSpaces 애플리케이션 사용 데이터 분석
<a name="configure-custom-reports-analyze-usage-data"></a>

Amazon Athena는 서버리스 대화형 쿼리 서비스이며, 표준 SQL 쿼리를 사용하여 S3 버킷에 저장된 데이터를 분석하는 데 사용할 수 있습니다. Athena를 사용하여 사용 보고서를 집계하거나 다른 유형의 사용자 지정 보고서를 생성할 수 있습니다.

**Topics**
+ [AWS Glue 크롤러 생성](configure-custom-reports-create-crawler.md)
+ [AWS Glue 크롤러를 사용하여 데이터 카탈로그 생성](configure-custom-reports-create-data-catalog.md)
+ [Athena 쿼리 생성 및 실행](configure-custom-reports-create-run-athena-queries.md)
+ [Athena 쿼리 작업](configure-custom-reports-example-sql-queries.md)

# AWS Glue 크롤러 생성
<a name="configure-custom-reports-create-crawler"></a>

AWS Glue 는 Amazon S3 데이터에서 데이터베이스를 생성하고 Athena를 사용하여 해당 데이터베이스를 쿼리할 수 있는 완전 관리형 추출, 변환 및 로드(ETL) 서비스입니다. 이 데이터베이스를 AWS Glue 데이터 카탈로그라고도 합니다. AWS Glue 크롤러는 Amazon S3 데이터의 스키마를 자동으로 감지하고 해당 데이터베이스 및 테이블을 생성할 수 있습니다. WorkSpaces 애플리케이션은 필요한 AWS Glue 리소스를 생성하는 데 사용할 수 있는 CloudFormation 템플릿을 제공합니다.

**중요**  
다음 절차의 단계를 완료하면 AWS Glue 크롤러가 생성됩니다. 하지만 이 단계로 크롤러가 시작되지는 않습니다. 크롤러를 시작하려면 그 다음 절차의 단계를 수행해야 합니다. AWS Glue 크롤러에 대한 자세한 내용은 [크롤러 정의를 참조하세요](https://docs.aws.amazon.com/glue/latest/dg/add-crawler.html).

**AWS Glue 크롤러를 생성하려면**

1. [https://console.aws.amazon.com/appstream2/home](https://console.aws.amazon.com/appstream2/home) WorkSpaces 애플리케이션 콘솔을 엽니다.

1. 사용 보고서를 구독한 AWS 리전을 선택합니다.

1. 탐색 창에서 **Usage Reports(사용 보고서)**를 선택하고 사용 보고서 로깅이 활성화되었는지 확인합니다.

1. **Report Details(보고서 세부 정보)** 탭에서 **분석** 옆 단락에 있는 **CloudFormation 템플릿** 링크를 선택합니다.

   링크를 선택하면 실행하기 전에 템플릿에 지정된 CloudFormation 스택의 파라미터를 검토할 수 있는 CloudFormation 콘솔이 열립니다. 템플릿은 실행 시 AWS Glue 크롤러와 여러 샘플 Athena 쿼리를 생성합니다.

1. **세부 정보 지정** 페이지의 **ScheduleExpression** 옆에서 크롤러를 실행할 빈도에 대해 기본값을 유지하거나 다른 cron 표현식 값을 지정합니다. 다른 기본값은 변경하지 마십시오. 완료했으면 **다음**을 선택합니다.

   기본적으로 크롤러는 매일 실행되도록 예약되지만 매주, 매월 또는 다른 빈도로 실행되도록 크롤러를 구성할 수 있습니다. cron 구문에 대한 자세한 내용은 [Cron 표현식](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/ScheduledEvents.html#CronExpressions)을 참조하십시오.

1. **옵션** 페이지에서 기본값을 그대로 두고 **다음**을 선택합니다.

1. **검토 **페이지에서가 사용자 지정 이름으로 IAM 리소스를 생성할 CloudFormation 수 있음을 승인합니다. 옆의 확인란을 선택한 다음 **생성을** 선택합니다.

    CloudFormation 스택을 생성하고 실행하려면 충분한 AWS Glue 및 AWS Identity and Access Management (IAM) 권한이 있어야 합니다. 다음 권한이 없으면 Amazon Web Services 계정 관리자에게 해당 계정으로 이 단계를 수행하거나 다음의 권한을 부여해 달라고 요청하세요.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "athena:CreateNamedQuery",
                   "athena:BatchGetNamedQuery",
                   "athena:GetNamedQuery",
                   "athena:StartQueryExecution",
                   "athena:GetQueryResults",
                   "athena:GetQueryExecution",
                   "athena:ListNamedQueries",
                   "cloudformation:DescribeStacks",
                   "cloudformation:GetStackPolicy",
                   "cloudformation:DescribeStackEvents",
                   "cloudformation:CreateStack",
                   "cloudformation:GetTemplate",
                   "cloudformation:ListChangeSets",
                   "cloudformation:ListStackResources",
                   "iam:GetRole",
                   "iam:CreateRole",
                   "iam:GetRolePolicy",
                   "s3:GetBucketLocation",
                   "s3:ListBucketMultipartUploads",
                   "s3:ListBucket",
                   "s3:ListMultipartUploadParts",
                   "s3:PutObject",
                   "s3:GetObject",
                   "s3:AbortMultipartUpload"
               ],
               "Resource": [
                   "arn:aws:iam::*:role/AppStreamUsageReports-AppStreamUsageReportGlueRole*",
                   "arn:aws:cloudformation:*:*:stack/AppStreamUsageReports/*",
                   "arn:aws:athena:*:*:workgroup/primary",
                   "arn:aws:s3:::aws-athena-query-results-*"
               ]
           },
           {
               "Effect": "Allow",
               "Action": [
                   "iam:AttachRolePolicy",
                   "iam:PutRolePolicy",
                   "s3:GetObject",
                   "s3:ListBucket"
               ],
               "Resource": [
                   "arn:aws:s3:::appstream-logs-*",
                   "arn:aws:iam::*:role/AppStreamUsageReports-AppStreamUsageReportGlueRole*"
               ]
           },
           {
               "Effect": "Allow",
               "Action": [
                   "iam:PassRole"
               ],
               "Resource": [
                   "arn:aws:iam::*:role/AppStreamUsageReports-AppStreamUsageReportGlueRole*"
               ],
               "Condition": {
                   "StringEquals": {
                       "iam:PassedToService": "glue.amazonaws.com"
                   }
               }
           },
           {
               "Effect": "Allow",
               "Action": [
                   "cloudformation:GetTemplateSummary",
                   "glue:GetResourcePolicy",
                   "glue:GetCrawlers",
                   "glue:BatchGetCrawlers",
                   "glue:GetClassifiers",
                   "glue:CreateClassifier",
                   "glue:ListCrawlers",
                   "glue:GetTags",
                   "glue:GetCrawlerMetrics",
                   "glue:GetClassifier",
                   "tag:GetResources"
               ],
               "Resource": "*"
           },
           {
               "Effect": "Allow",
               "Action": "athena:RunQuery",
               "Resource": "arn:aws:athena:*:*:workgroup/primary"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "glue:GetTables",
                   "glue:GetPartitions",
                   "glue:GetTable"
               ],
               "Resource": [
                   "arn:aws:glue:*:*:table/appstream-usage/*",
                   "arn:aws:glue:*:*:database/appstream-usage",
                   "arn:aws:glue:*:*:catalog"
               ]
           },
           {
               "Effect": "Allow",
               "Action": [
                   "glue:GetDatabase",
                   "glue:CreateDatabase",
                   "glue:GetDatabases"
               ],
               "Resource": [
                   "arn:aws:glue:*:*:database/appstream-usage",
                   "arn:aws:glue:*:*:catalog"
               ]
           },
           {
               "Effect": "Allow",
               "Action": [
                   "glue:GetCrawler",
                   "glue:StartCrawler",
                   "glue:CreateCrawler"
               ],
               "Resource": "arn:aws:glue:*:*:crawler/appstream-usage*"
           },
           {
               "Effect": "Allow",
               "Action": "glue:GetCatalogImportStatus",
               "Resource": "arn:aws:glue:*:*:catalog"
           }
       ]
   }
   ```

------

# AWS Glue 크롤러를 사용하여 데이터 카탈로그 생성
<a name="configure-custom-reports-create-data-catalog"></a>

 AWS Glue 크롤러는 실행 시 세션 및 애플리케이션 보고서의 구조에 매핑되는 데이터 카탈로그 및 스키마를 생성합니다. 새 보고서가 Amazon S3 버킷에 저장될 때마다 크롤러를 실행하여 새 보고서의 데이터로 AWS Glue 데이터 카탈로그를 업데이트해야 합니다.

**참고**  
 AWS Glue 크롤러 실행에 요금이 적용될 수 있습니다. 자세한 내용은 [AWS Glue 요금](https://aws.amazon.com/glue/pricing/)을 참조하세요.

1. [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/) AWS Glue 콘솔을 엽니다.

1. 사용 보고서를 구독한 AWS 리전을 선택합니다.

1. **appstream-usage-sessions-crawler**라는 크롤러 옆의 확인란을 선택한 후 **크롤러 실행**을 선택합니다. 이름이 **appstream-usage-apps-crawler**인 크롤러에 이 단계를 반복합니다.

   이 단계를 수행하면 크롤러가 실행되고 CloudFormation 스택에 지정된 일정에 따라 자동으로 실행되도록 예약됩니다.

1. 두 크롤러가 모두 실행을 마친 후 탐색 창에서 **데이터베이스**를 선택합니다. 사용 보고서를 나타내는 **appstream-usage** 데이터베이스가 표시됩니다. 이 데이터베이스는 **appstream-usage-sessions-crawler** 및 **appstream-usage-apps-crawler**가 실행될 때 생성된 AWS Glue 데이터 카탈로그입니다.

1. 데이터베이스의 테이블을 보려면 **appstream-usage**, **테이블**을 선택합니다. 각각 애플리케이션 및 세션 사용 보고서를 나타내는 두 테이블 **applications**와 **sessions**가 표시됩니다. 테이블 하나를 선택하여 스키마를 봅니다.

   이제 SQL을 사용하여 Athena에서 이 테이블을 쿼리할 수 있습니다.

# Athena 쿼리 생성 및 실행
<a name="configure-custom-reports-create-run-athena-queries"></a>

Athena를 사용하여 사용 보고서를 쿼리하려면 다음 단계를 수행하세요.
**참고**  
실행하는 Athena 쿼리에 요금이 적용될 수 있습니다. 자세한 내용은 [Amazon Athena 요금](https://aws.amazon.com/athena/pricing/)을 참조하세요.

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

1. **데이터베이스**에서 **appstream-usage**를 선택합니다.

1. 쿼리 창에서 SQL 쿼리를 입력하고 **쿼리 실행**을 선택합니다.

# Athena 쿼리 작업
<a name="configure-custom-reports-example-sql-queries"></a>

이 섹션에서는 Athena에서 실행하여 Amazon S3 버킷의 사용 보고서 데이터를 분석할 수 있는 SQL 쿼리를 제공합니다.

주어진 달에 모든 세션의 통합 보고서를 생성하려면 다음 쿼리를 실행하십시오.

```
SELECT *
FROM "appstream-usage"."sessions"
WHERE year='four-digit-year'
AND month='two-digit-month'
```

쿼리에서 **applications** 테이블과 **sessions** 테이블 간에 조인 작업을 수행할 수도 있습니다. 예를 들어, 주어진 달에 각 애플리케이션을 시작한 서로 다른 사용자를 보려면 다음 쿼리를 실행하십시오.

```
SELECT DISTINCT apps.application_name, sessions.user_id
FROM "appstream-usage"."applications" apps
   INNER JOIN "appstream-usage"."sessions" sessions ON (apps.user_session_id = sessions.user_session_id AND sessions.year='four-digit-year' AND sessions.month='two-digit-month')
WHERE apps.year='four-digit-year'
  AND apps.month='two-digit-month'
ORDER BY 1, 2
```

Athena 쿼리 결과는 이름이 `aws-athena-query-results-account-id-without-hyphens-region-code`인 계정의 Amazon S3 버킷에 .csv 파일로 저장됩니다. 쿼리 결과를 쉽게 찾으려면 **다른 이름으로 저장**을 선택하고, 쿼리를 실행하기 전에 쿼리 이름을 제공합니다. **Athena 결과** 창에서 다운로드 아이콘을 선택하여 .csv 파일로 쿼리 결과를 다운로드할 수도 있습니다.

성능을 향상시키고 비용을 줄이기 위해 Athena에서는 파티셔닝을 사용하여 쿼리에서 스캔되는 데이터 양을 줄입니다. 자세한 내용은 [데이터 파티셔닝](https://docs.aws.amazon.com/athena/latest/ug/partitions.html)을 참조하세요. 사용 보고서가 연, 월, 일 단위로 Amazon S3 버킷에 분할됩니다. 쿼리에 **year**,** month** 및 **day** 필드를 조건으로 사용하여 특정한 날짜 범위 파티션으로 쿼리를 제한할 수 있습니다. 예를 들어, 다음 쿼리는 2019년 5월 19일 주간의 세션 보고서만 수집합니다.

```
SELECT SUBSTRING(session_start_time, 1, 10) AS report_date, 
    COUNT(DISTINCT user_session_id) AS num_sessions
FROM "appstream-usage"."sessions"
WHERE year='2019'
   AND month='05'
   AND day BETWEEN '19' and '25'
GROUP BY 1
ORDER BY 1
```

반대로 다음 쿼리에서는 같은 결과를 생성하지만, 어느 파티션으로도 제한되지 않으므로 Amazon S3 버킷에 저장된 모든 세션 보고서를 수집합니다.

```
SELECT SUBSTRING(session_start_time, 1, 10) AS report_date, 
    COUNT(DISTINCT user_session_id) AS num_sessions
FROM "appstream-usage"."sessions"
WHERE session_end_time BETWEEN '2019-05-19' AND '2019-05-26'
GROUP BY 1
ORDER BY 1
```

세션이 하루를 넘어가면 각각 세션이 끝난 날에 해당하는 세션 및 애플리케이션 보고서에 세션 및 애플리케이션 레코드가 나타납니다. 따라서 주어진 날짜 범위에 활성화된 모든 세션에 대한 레코드를 찾으려면 플릿에 구성한 최대 세션 길이로 쿼리의 파티션 세트를 확장해 보십시오.

예를 들어, 플릿의 최대 세션 지속 시간이 100시간이고, 1개월 동안 주어진 플릿에 대해 활성화된 모든 세션을 보려면 다음 쿼리를 실행하여 파티션 세트를 5일 확장하십시오.

```
SELECT *
FROM "appstream-usage"."sessions"
WHERE fleet_name = 'fleet_name'
   AND session_start_time BETWEEN '2019-05-01' AND '2019-06-01'
   AND year='2019'
   AND (month='05' OR (month='06' AND day<='05'))
ORDER BY session_start_time
```

또한 AWS Glue 크롤러를 생성한 CloudFormation 템플릿은 사용 데이터를 분석하는 데 사용할 수 있는 Athena 계정에 여러 샘플 쿼리를 생성하고 저장했습니다. 이 샘플 쿼리에 다음 항목이 포함됩니다.
+ 집계된 월별 세션 보고서
+ 스택당 평균 세션 길이
+ 일일 세션 수
+ 사용자당 총 스트리밍 시간
**참고**  
온디맨드 사용 요금은 각 세션에 대해 다음 시간으로 반올림됩니다.
+ 앱당 고유한 사용자

이 쿼리 중 하나를 사용하려면 다음 단계를 수행하십시오.

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

1. **저장된 쿼리**를 선택합니다. 이 절차 전에 언급된 쿼리 5개가 표시되어야 합니다. 각 쿼리 이름은 "AS2"로 시작합니다. 예: "AS2\$1users\$1per\$1app\$1curr\$1mo."

1. 쿼리를 실행하려면 이름 옆의 옵션이 아니라 쿼리 이름을 선택합니다.

1. 쿼리 텍스트가 쿼리 창에 나타납니다. **쿼리 실행**을 선택합니다.

별도의 CloudFormation 템플릿에서 이러한 쿼리를 보려면 코드 샘플 카탈로그의 [athena-sample-queries-appstream-usage-data\$1template.yml](https://docs.aws.amazon.com/code-samples/latest/catalog/cloudformation-appstream2-athena-sample-queries-appstream-usage-data_template.yml.html)을 참조하세요. *AWS * 