

# 쿼리 결과 위치 지정
<a name="query-results-specify-location"></a>

Athena가 사용하는 쿼리 결과 위치는 작업 그룹 설정과 *클라이언트 측 설정*의 조합으로 결정됩니다. 클라이언트 측 설정은 쿼리를 실행하는 방식을 기반으로 합니다.
+  Athena 콘솔을 사용하여 쿼리를 실행하는 경우 탐색 모음의 **설정**에 입력한 **쿼리 결과 위치**가 클라이언트 측 설정을 결정합니다.
+ Athena API를 사용하여 쿼리를 실행하는 경우 [StartQueryExecution](https://docs.aws.amazon.com/athena/latest/APIReference/API_StartQueryExecution.html) 작업의 `OutputLocation` 파라미터가 클라이언트 측 설정을 결정합니다.
+ ODBC 또는 JDBC 드라이버를 사용하여 쿼리를 실행하는 경우 연결 URL에 지정된 `S3OutputLocation` 속성에 따라 클라이언트 측 설정이 결정됩니다.

**중요**  
API를 사용하거나 ODBC 또는 JDBC 드라이버를 사용하여 쿼리를 실행할 때는 콘솔 설정이 적용되지 않습니다.

각 작업 그룹 구성에는 활성화할 수 있는 [Override client-side settings(클라이언트 측 설정 재정의)](https://docs.aws.amazon.com/athena/latest/ug/workgroups-settings-override.html) 옵션이 있습니다. 이 옵션을 활성화하면 해당 작업 그룹과 연결된 IAM 보안 주체가 쿼리를 실행할 때 작업 그룹 설정이 적용 가능한 클라이언트 측 설정보다 우선적으로 적용됩니다.

## 이전에 생성한 기본 위치 관련 사항
<a name="query-results-specify-location-previous-defaults"></a>

이전에 Athena에서는 **쿼리 결과 위치(Query result location)**의 값을 지정하지 않은 상태로 쿼리를 실행하고 작업 그룹이 쿼리 결과 위치 설정을 재정의하지 않는 경우 Athena에서 기본 위치를 자동으로 생성했습니다. 기본 위치는 `aws-athena-query-results-MyAcctID-MyRegion`이었습니다. 여기서 *MyAcctID*는 쿼리를 실행한 IAM 보안 주체의 Amazon Web Services 계정 ID이고 *MyRegion*은 쿼리가 실행된 리전(예: `us-west-1`)입니다.

이제 이전에 계정이 Athena를 사용한 적이 없는 리전에서 Athena 쿼리를 실행하려면 먼저, 쿼리 결과 위치를 지정하거나, 쿼리 결과 위치 설정을 재정의하는 작업 그룹을 사용해야 합니다. Athena에서 더 이상 기본 쿼리 결과 위치를 자동으로 생성하지 않지만, 이전에 생성된 기본 `aws-athena-query-results-MyAcctID-MyRegion` 위치는 유효한 상태로 유지되며 계속 사용할 수 있습니다.

**Topics**
+ [이전에 생성한 기본 위치 관련 사항](#query-results-specify-location-previous-defaults)
+ [Athena 콘솔을 사용하여 쿼리 결과 위치 지정](query-results-specify-location-console.md)
+ [작업 그룹을 사용하여 쿼리 결과 위치 지정](query-results-specify-location-workgroup.md)

# Athena 콘솔을 사용하여 쿼리 결과 위치 지정
<a name="query-results-specify-location-console"></a>

쿼리를 실행하려면 먼저, Amazon S3에서 쿼리 결과 버킷 위치를 지정하거나, 버킷을 지정했고 구성이 클라이언트 설정을 재정의하는 작업 그룹을 사용해야 합니다.

**Athena 콘솔을 사용하여 클라이언트 측 설정 쿼리 결과 위치를 지정하려면**

1. 쿼리 결과 위치를 지정할 작업 그룹으로 [전환](switching-workgroups.md)합니다. 기본 작업 그룹의 이름은 **Primary**입니다.

1. 탐색 모음에서 **설정**을 선택합니다.

1. 탐색 모음에서 **관리(Manage)**를 선택합니다.

1. **설정 관리(Manage settings)**에서 다음 중 하나를 수행합니다.
   + **쿼리 결과 위치(Location of query result)** 상자에서 Amazon S3에서 쿼리 결과를 위해 생성한 버킷의 경로를 입력합니다. 경로 앞에 `s3://`를 붙입니다.
   + **S3 검색(Browse S3)** 아이콘을 선택하고 현재 리전에서 생성한 Amazon S3 버킷을 선택한 다음 **선택(Choose)**을 선택합니다.
**참고**  
작업 그룹의 모든 사용자에 대해 쿼리 결과 위치를 지정하는 작업 그룹을 사용하는 경우 쿼리 결과 위치를 변경하는 옵션을 사용할 수 없습니다.

1. (선택 사항) **View lifecycle configuration**(수명 주기 구성 보기)를 선택하여 쿼리 결과 버킷에서 [Amazon S3 수명 주기 규칙](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html)을 보고 구성합니다. 생성하는 Amazon S3 수명 주기 규칙은 만료 규칙 또는 전환 규칙일 수 있습니다. 만료 규칙은 일정 시간이 지나면 쿼리 결과를 자동으로 삭제합니다. 전환 규칙은 쿼리 결과를 다른 Amazon S3 스토리지 계층으로 이동합니다. 자세한 내용은 Amazon Simple Storage Service Console 사용 설명서의 [버킷에서 수명 주기 구성 설정](https://docs.aws.amazon.com/AmazonS3/latest/userguide/how-to-set-lifecycle-configuration-intro.html)을 참조하세요.

1. (선택 사항) **예상 버킷 소유자(Expected bucket owner)**에 출력 위치 버킷의 소유자가 될 것으로 예상되는 AWS 계정의 ID를 입력합니다. 이는 추가 보안 조치입니다. 버킷 소유자의 계정 ID가 여기에서 지정한 ID와 일치하지 않으면 버킷으로의 출력 시도가 실패합니다. 자세한 내용은 *Amazon S3 사용 설명서*의 [버킷 소유자 조건을 사용하여 버킷 소유권 확인](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-owner-condition.html)을 참조하세요.
**참고**  
예상 버킷 소유자 설정은 Athena 쿼리 결과에 대해 지정한 Amazon S3 출력 위치에만 적용됩니다. 외부 Amazon S3 버킷의 데이터 소스 위치, `CTAS` 및 `INSERT INTO` 대상 테이블 위치, `UNLOAD` 문 출력 위치, 연합 쿼리의 유출 버킷 작업 또는 다른 계정의 테이블에 대해 실행되는 `SELECT` 쿼리 등의 다른 Amazon S3 위치에는 적용되지 않습니다.

1. (선택 사항) Amazon S3 저장된 쿼리 결과를 암호화하려면 **쿼리 결과 암호화(Encrypt query results)**를 선택하세요. Athena에서 암호화 사용에 대한 자세한 내용은 [저장 시 암호화](encryption.md) 섹션을 참조하세요.

1. (선택 사항) 쿼리 결과 버킷에 대해 [ACL이 사용 설정](https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html)되어 있을 때 버킷 소유자에게 쿼리 결과에 대한 전체 제어 액세스 권한을 부여하려면 **버킷 소유자에게 쿼리 결과에 대한 전체 제어 할당**을 선택하세요. 예를 들어, 쿼리 결과 위치가 다른 계정이 소유한 경우 쿼리 결과에 대한 소유권 및 전체 제어 권한을 다른 계정에 부여할 수 있습니다. 자세한 내용은 *Amazon S3 사용자 안내서*의 [객체 소유권 제어 및 버킷에 대해 ACL 사용 중지](https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html)를 참조하세요.

1. **저장**을 선택합니다.

# 작업 그룹을 사용하여 쿼리 결과 위치 지정
<a name="query-results-specify-location-workgroup"></a>

AWS Management Console, AWS CLI 또는 Athena API를 사용하여 작업 그룹 구성에서 쿼리 결과 위치를 지정합니다.

AWS CLI를 사용할 경우 [https://docs.aws.amazon.com/cli/latest/reference/athena/create-work-group.html](https://docs.aws.amazon.com/cli/latest/reference/athena/create-work-group.html) 또는 [https://docs.aws.amazon.com/cli/latest/reference/athena/update-work-group.html](https://docs.aws.amazon.com/cli/latest/reference/athena/update-work-group.html) 명령을 실행할 때 `--configuration` 옵션의 `OutputLocation` 파라미터를 사용하여 쿼리 결과 위치를 지정합니다.

**Athena 콘솔을 사용하여 작업 그룹에 대한 쿼리 결과 위치를 지정하려면**

1. 콘솔 탐색 창이 표시되지 않으면 왼쪽의 확장 메뉴를 선택합니다.  
![\[확장 메뉴를 선택합니다.\]](http://docs.aws.amazon.com/ko_kr/athena/latest/ug/images/nav-pane-expansion.png)

1. 탐색 창에서 **작업 그룹(Workgroups)**을 선택합니다.

1. 작업 그룹 목록에서 편집할 작업 그룹의 링크를 선택합니다.

1. **편집**을 선택합니다.

1. **쿼리 결과 위치 및 암호화**에 대해 다음 중 하나를 수행합니다.
   + **쿼리 결과 위치(Location of query result)** 상자에 쿼리 결과에 대한 Amazon S3의 버킷 경로를 입력합니다. 경로 앞에 `s3://`를 붙입니다.
   + **S3 검색(Browse S3)**을 선택하고 사용하고 싶은 현재 리전에 대한 Amazon S3 버킷을 선택한 다음 **선택(Choose)**을 선택합니다.

1. (선택 사항) **예상 버킷 소유자(Expected bucket owner)**에 출력 위치 버킷의 소유자가 될 것으로 예상되는 AWS 계정의 ID를 입력합니다. 이는 추가 보안 조치입니다. 버킷 소유자의 계정 ID가 여기에서 지정한 ID와 일치하지 않으면 버킷으로의 출력 시도가 실패합니다. 자세한 내용은 *Amazon S3 사용 설명서*의 [버킷 소유자 조건을 사용하여 버킷 소유권 확인](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-owner-condition.html)을 참조하세요.
**참고**  
예상 버킷 소유자 설정은 Athena 쿼리 결과에 대해 지정한 Amazon S3 출력 위치에만 적용됩니다. 외부 Amazon S3 버킷의 데이터 소스 위치, `CTAS` 및 `INSERT INTO` 대상 테이블 위치, `UNLOAD` 문 출력 위치, 연합 쿼리의 유출 버킷 작업 또는 다른 계정의 테이블에 대해 실행되는 `SELECT` 쿼리 등의 다른 Amazon S3 위치에는 적용되지 않습니다.

1. (선택 사항) Amazon S3 저장된 쿼리 결과를 암호화하려면 **쿼리 결과 암호화(Encrypt query results)**를 선택하세요. Athena에서 암호화 사용에 대한 자세한 내용은 [저장 시 암호화](encryption.md) 섹션을 참조하세요.

1. (선택 사항) 쿼리 결과 버킷에 대해 [ACL이 사용 설정](https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html)되어 있을 때 버킷 소유자에게 쿼리 결과에 대한 전체 제어 액세스 권한을 부여하려면 **버킷 소유자에게 쿼리 결과에 대한 전체 제어 할당**을 선택하세요. 예를 들어, 쿼리 결과 위치가 다른 계정이 소유한 경우 쿼리 결과에 대한 소유권 및 전체 제어 권한을 다른 계정에 부여할 수 있습니다.

   버킷의 S3 객체 소유권 설정이 **버킷 소유자 기본**인 경우 버킷 소유자는 이 작업 그룹에서 작성된 모든 쿼리 결과 객체도 소유합니다. 예를 들어, 외부 계정의 작업 그룹에서 이 옵션을 활성화하고 쿼리 결과 위치를 계정의 **버킷 소유자 기본**의 S3 객체 소유권 설정을 가진 Amazon S3 버킷으로 설정한 경우, 외부 작업 그룹의 쿼리 결과에 대한 전체 제어 권한을 갖습니다.

   쿼리 결과 버킷의 S3 객체 소유권 설정이 **버킷 소유자 시행**인 경우 이 옵션은 아무 영향이 없습니다. 자세한 내용은 *Amazon S3 사용자 안내서*의 [객체 소유권 제어 및 버킷에 대해 ACL 사용 중지](https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html)를 참조하세요.

1. 작업 그룹의 모든 사용자가 지정한 쿼리 결과 위치를 사용하도록 요청하려면 **설정(Settings)** 섹션까지 아래로 스크롤하고 **고객 측 설정 재정의(Override client-side settings)**를 선택합니다.

1. **변경 사항 저장**을 선택합니다.