

 Amazon Redshift는 패치 198부터 새 Python UDF 생성을 더 이상 지원하지 않습니다. 기존 Python UDF는 2026년 6월 30일까지 계속 작동합니다. 자세한 내용은 [블로그 게시물](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)을 참조하세요.

# 데이터베이스 쿼리
<a name="query-databases"></a>

Amazon Redshift 클러스터에서 호스팅하는 데이터베이스를 쿼리하려면 다음 2가지 옵션이 있습니다.
+ 클러스터에 연결한 다음 쿼리 편집기를 사용해 AWS Management Console에 대한 쿼리를 실행합니다.

  Amazon Redshift 콘솔에서 쿼리 편집기를 사용하는 경우 SQL 클라이언트 애플리케이션을 다운로드해 설치할 필요가 없습니다.
+ SQL 클라이언트 도구(예: SQL Workbench/J)를 통해 클러스터에 연결합니다.

  Amazon Redshift는 JDBC(Java Database Connectivity) 및 ODBC(Open Database Connectivity)를 통해 연결하는 SQL 클라이언트 도구를 지원합니다. Amazon Redshift는 SQL 클라이언트 도구 또는 라이브러리를 제공하거나 설치하지 않으므로 이를 사용하려면 클라이언트 컴퓨터 또는 Amazon EC2 인스턴스에 설치해야 합니다. JDBC 또는 ODBC 드라이버를 지원하는 SQL 클라이언트 도구라면 대부분 사용할 수 있습니다.

**참고**  
 저장 프로시저를 작성할 때는 민감한 값을 보호하기 위한 모범 사례를 참조하는 것이 좋습니다.  
 민감한 정보를 저장 프로시저 로직 내에 하드 코딩하지 마세요. 예를 들어, 저장 프로시저 본문의 CREATE USER 문에 사용자 암호를 할당하지 마세요. 하드 코딩된 값이 카탈로그 테이블에 스키마 메타 데이터로 기록될 수 있기 때문에 보안 위험이 따릅니다. 암호와 같은 민감한 값은 파라미터를 사용하여 저장 프로시저에 인수로 전달하세요.  
저장된 프로시저에 대한 자세한 내용은 [프로시저 생성](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_PROCEDURE.html) 및 [Amazon Redshift에서 저장 프로시저 생성](https://docs.aws.amazon.com/redshift/latest/dg/stored-procedure-overview.html)을 참조하세요. 카탈로그 테이블에 대한 자세한 내용은 [시스템 카탈로그 테이블](https://docs.aws.amazon.com/redshift/latest/dg/c_intro_catalog_views.html)을 참조하세요.

# Amazon Redshift에 연결
<a name="cluster-syntax"></a>

다음 구문을 사용하여 데이터베이스에 연결할 수 있습니다.

```
cluster-name.account-number.aws-region.redshift.amazonaws.com/database-name
```

구문 요소는 다음과 같이 정의됩니다.
+  `cluster-name` 

   클러스터 이름입니다.
+  `account-number` 

   지정된 AWS 리전의 AWS 계정 번호와 연결된 고유 식별자입니다. 지정된 AWS 리전의 특정 계정으로 생성된 모든 클러스터는 동일한 `account-number`를 갖습니다.
+  `aws-region` 

   클러스터가 속한 AWS 리전에 대한 코드입니다.
+  `database-name` 

   데이터베이스 이름입니다.

예를 들어 다음 연결 문자열은 us-east-1 AWS 리전의 `my-cluster` 클러스터에 있는 `my-db` 데이터베이스를 지정합니다.

```
my-cluster.123456789012.us-east-1.redshift.amazonaws.com/my-db
```

# Query Editor V2를 사용하여 데이터베이스 쿼리
<a name="query-editor-v2"></a>

쿼리 편집기 v2는 Amazon Redshift 데이터 웨어하우스에서 쿼리를 작성하고 실행하는 데 사용하는 별도의 웹 기반 SQL 클라이언트 애플리케이션입니다. 쿼리 편집기 v2는 주로 쿼리를 편집 및 실행하고, 결과를 시각화하고, 팀과 작업을 공유하는 데 사용됩니다. 쿼리 편집기 v2를 사용하여 데이터베이스, 스키마, 테이블 및 사용자 정의 함수(UDF)를 생성할 수 있습니다. 트리 보기 패널에서 각 데이터베이스의 스키마를 볼 수 있습니다. 각 스키마의 테이블, 보기, UDF 및 저장 프로시저를 볼 수 있습니다. 쿼리 편집기 v2는 이전 쿼리 편집기를 대체합니다.

**참고**  
쿼리 에디터 v2는 상용 AWS 리전에서 사용할 수 있습니다. 쿼리 에디터 v2를 사용할 수 있는 AWS 리전 목록은 *Amazon Web Services 일반 참조*의 [Redshift 쿼리 에디터 v2](https://docs.aws.amazon.com/general/latest/gr/redshift-service.html)에 나열된 엔트포인트를 참조하세요. 

쿼리 편집기 v2의 데모를 보려면 다음 동영상을 시청하세요.

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/IwZNIroJUnc/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/IwZNIroJUnc)


[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/4EIV4XTE9iI/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/4EIV4XTE9iI)


[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/7y-f1wlyVhI/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/7y-f1wlyVhI)


쿼리 편집기 v2에는 SQL 문을 관리하고 실행하는 데 사용할 수 있는 다양한 기능이 있습니다. 다음 섹션의 주제에서 이러한 다양한 기능을 시작할 수 있습니다. 쿼리 편집기 v2를 직접 탐색하여 기능을 익힙니다.

# AWS 계정 구성
<a name="query-editor-v2-getting-started"></a>

이 태스크 세트를 수행하여 쿼리 에디터 v2가 Amazon Redshift 데이터베이스를 쿼리하도록 구성할 수 있습니다. 적절한 권한을 가지고 현재 AWS 리전에 있는 AWS 계정 소유의 Amazon Redshift 클러스터 또는 작업 그룹의 데이터에 액세스할 수 있습니다.

관리자가 AWS 계정에 대해 쿼리 편집기 v2를 처음 구성할 때 쿼리 편집기 v2 리소스를 암호화하는 데 사용되는 AWS KMS key를 선택합니다. 기본적으로 AWS 소유의 키가 리소스를 암호화하는 데 사용됩니다. 또는 관리자가 구성 페이지에서 키에 대한 Amazon 리소스 이름(ARN)을 선택하여 고객 관리형 키를 사용할 수 있습니다.

계정을 구성한 후에는 AWS KMS 암호화 설정을 변경할 수 없습니다. 쿼리 편집기 v2에서 고객 관리형 키 생성 및 사용에 대한 자세한 내용은 [쿼리 편집기 v2와 함께 사용할 AWS KMS 고객 관리형 키 생성](#query-editor-v2-kms-key) 섹션을 참조하세요. 관리자는 원한다면 파일에서 데이터를 로드하는 등의 일부 기능에서 사용하는 S3 버킷과 경로를 선택할 수도 있습니다. 자세한 내용은 [로컬 파일 설정 및 워크플로우에서 데이터 로드](query-editor-v2-loading-data-local.md) 섹션을 참조하세요.

Amazon Redshift 쿼리 편집기 v2는 인증, 암호화, 격리 및 규정 준수를 지원하여 저장된 데이터와 전송 중인 데이터를 안전하게 보호합니다. 데이터 보안 및 쿼리 편집기 v2에 대한 자세한 내용은 다음 섹션을 참조하세요.
+ [저장 시 암호화](security-server-side-encryption.md)
+ [전송 중 암호화](security-encryption-in-transit.md)
+ [Amazon Redshift의 구성 및 취약성 분석](security-vulnerability-analysis-and-management.md)

AWS CloudTrail은 직접 수행하거나 AWS 계정을 대신하여 수행한 API 호출 및 관련 이벤트를 캡처하고 지정한 Amazon S3 버킷에 로그 파일을 전송합니다. 어떤 사용자 및 계정이 AWS를 호출했는지 어떤 소스 IP 주소에 호출이 이루어졌는지 언제 호출이 발생했는지 확인할 수 있습니다. 쿼리 편집기 v2가 AWS CloudTrail에서 어떻게 작동하는지 자세히 알아보려면 [CloudTrail을 사용하여 로깅](logging-with-cloudtrail.md) 섹션을 참조하세요. CloudTrail에 대한 자세한 내용은 [AWS CloudTrail 사용자 안내서](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html)를 참조하세요.

쿼리 편집기 v2에는 일부 리소스에 대해 조정 가능한 할당량이 있습니다. 자세한 내용은 [Amazon Redshift 객체에 대한 할당량](amazon-redshift-limits.md#amazon-redshift-limits-quota) 섹션을 참조하세요.

## 쿼리 편집기 v2로 생성된 리소스
<a name="query-editor-v2-resources"></a>

쿼리 편집기 v2 내에서 저장된 쿼리 및 차트와 같은 리소스를 생성할 수 있습니다. 쿼리 에디터 v2의 모든 리소스는 IAM 역할 또는 사용자와 연결됩니다. 정책을 IAM 역할에 연결하고 사용자에게 역할을 할당하는 것이 좋습니다.

쿼리 편집기 v2에서 저장된 쿼리와 차트에 대한 태그를 추가하고 제거할 수 있습니다. 사용자 정의 IAM 정책을 설정하거나 리소스를 검색할 때 이러한 태그를 사용할 수 있습니다. AWS Resource Groups 태그 편집기를 사용하여 태그를 관리할 수도 있습니다.

IAM 정책으로 IAM 역할을 설정하여 AWS 리전의 동일한 AWS 계정에 있는 다른 사용자와 쿼리를 공유할 수 있습니다.

## 쿼리 편집기 v2와 함께 사용할 AWS KMS 고객 관리형 키 생성
<a name="query-editor-v2-kms-key"></a>

**대칭 암호화 고객 관리형 키를 생성하려면**:

대칭 암호화 고객 관리형 키를 생성하여 AWS KMS 콘솔 또는 AWS KMS API 작업으로 쿼리 편집기 v2 리소스를 암호화할 수 있습니다. 키 생성에 대한 지침은 *AWS Key Management Service 개발자 안내서*의 [대칭 암호화 AWS KMS 키 생성](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk)을 참조하세요.

**키 정책**

키 정책은 고객 관리형 키에 대한 액세스를 제어합니다. 모든 고객 관리형 키에는 키를 사용할 수 있는 사람과 키를 사용하는 방법을 결정하는 문장이 포함된 정확히 하나의 키 정책이 있어야 합니다. 고객 관리형 키를 생성할 때 키 정책을 지정할 수 있습니다. 자세한 내용은 *AWS Key Management Service 개발자 안내서*의 [AWS KMS 키에 대한 액세스 관리](https://docs.aws.amazon.com/kms/latest/developerguide/control-access-overview.html#managing-access)를 참조하세요.

Amazon Redshift 쿼리 편집기 v2에서 고객 관리형 키를 사용하려면 키 정책에서 다음 API 작업을 허용해야 합니다.
+ `kms:GenerateDataKey` - 데이터를 암호화하기 위해 고유한 대칭 데이터 키를 생성합니다.
+ `kms:Decrypt` - 고객 관리형 키로 암호화된 데이터를 복호화합니다.
+ `kms:DescribeKey` - 서비스에서 키를 검증할 수 있도록 고객 관리형 키 세부 정보를 제공합니다.

다음은 AWS 계정 `111122223333`의 샘플 AWS KMS 정책입니다. 첫 번째 섹션에서 `kms:ViaService`는 쿼리 편집기 v2 서비스(정책에서 `sqlworkbench.region.amazonaws.com`으로 명명됨)에 대한 키 사용을 제한합니다. 키를 사용하는 AWS 계정은 `111122223333`이어야 합니다. 두 번째 섹션에서는 AWS 계정 `111122223333`의 루트 사용자 및 키 관리자가 키에 액세스할 수 있습니다.

 AWS 계정을 생성하는 경우에는 모든 AWS 서비스 서비스와 리소스에 대한 완전한 액세스 권한이 있는 AWS 계정 *루트 사용자*라는 단일 로그인 ID로 시작합니다. 일상적인 태스크에 루트 사용자를 사용하지 않을 것을 강력히 권장합니다. 루트 사용자 자격 증명이 필요한 작업은 *IAM 사용 설명서*의 [루트 사용자 자격 증명이 필요한 작업](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks) 섹션을 참조하세요.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "key-consolepolicy",
    "Statement": [
        {
            "Sid": "Allow access to principals authorized to use Amazon Redshift Query Editor V2",
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": [
                "kms:GenerateDataKey",
                "kms:Decrypt",
                "kms:DescribeKey"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "kms:ViaService": "sqlworkbench.us-east-1.amazonaws.com",
                    "kms:CallerAccount": "111122223333"
                }
            }
        },
        {
            "Sid": "Allow access for key administrators",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:root"
            },
            "Action": [
                "kms:*"
            ],
            "Resource": "arn:aws:kms:us-east-1:111122223333:key/key_ID"
        }
    ]
}
```

------

다음 리소스에서 AWS KMS 키에 대한 추가 정보를 확인할 수 있습니다.
+ AWS KMS 정책에 대한 자세한 내용은 *AWS Key Management Service 개발자 안내서*의 [정책에서 권한 지정](https://docs.aws.amazon.com/kms/latest/developerguide/control-access-overview.html#overview-policy-elements)을 참조하세요.
+ AWS KMS 정책 문제 해결에 대한 자세한 내용은 *AWS Key Management Service 개발자 안내서*의 [키 액세스 문제 해결](https://docs.aws.amazon.com/kms/latest/developerguide/policy-evaluation.html#example-no-iam)을 참조하세요.
+ 키에 대한 자세한 내용은 *AWS Key Management Service 개발자 안내서*의 [AWS KMS 키](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms_keys)를 참조하세요.

## 쿼리 편집기 v2에 액세스
<a name="query-editor-v2-configure"></a>

쿼리 편집기 v2에 액세스하려면 권한이 있어야 합니다. 관리자는 다음 AWS 관리형 정책 중 하나를 역할에 연결하여 권한을 부여할 수 있습니다. (IAM 역할에 정책을 연결하고 사용자에게 역할을 할당하는 것이 좋습니다.) 이러한 AWS 관리형 정책은 리소스 태깅이 쿼리 공유를 허용하는 방법을 제어하는 다양한 옵션으로 작성됩니다. IAM 콘솔(([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)))을 사용하여 IAM 사용자 정책을 연결할 수 있습니다.
+ **AmazonRedshiftQueryEditorV2FullAccess** – Amazon Redshift 쿼리 편집기 v2 작업 및 리소스에 대한 전체 액세스 권한을 부여합니다. 이 정책은 다른 필수 서비스에 대한 액세스 권한도 부여합니다.
+ **AmazonRedshiftQueryEditorV2NoSharing** – 리소스를 공유하지 않고 Amazon Redshift 쿼리 편집기 v2 관련 작업을 수행할 수 있는 권한을 부여합니다. 이 정책은 다른 필수 서비스에 대한 액세스 권한도 부여합니다.
+ **AmazonRedshiftQueryEditorV2ReadSharing** – 제한된 리소스 공유로 Amazon Redshift 쿼리 편집기 v2 관련 작업을 수행할 수 있는 권한을 부여합니다. 부여된 보안 주체는 팀과 공유된 리소스를 읽을 수 있지만 업데이트할 수는 없습니다. 이 정책은 다른 필수 서비스에 대한 액세스 권한도 부여합니다.
+ **AmazonRedshiftQueryEditorV2ReadWriteSharing** – 리소스 공유와 함께 Amazon Redshift 쿼리 편집기 v2 관련 작업을 수행할 수 있는 권한을 부여합니다. 부여된 보안 주체는 팀과 공유하는 리소스를 읽고 업데이트할 수 있습니다. 이 정책은 다른 필수 서비스에 대한 액세스 권한도 부여합니다.

제공된 관리형 정책에서 허용 및 거부된 권한을 기반으로 고유한 정책을 생성할 수도 있습니다. IAM 콘솔 정책 편집기를 사용하여 고유한 정책을 생성하는 경우 시각적 편집기에서 정책을 생성할 서비스로 **SQL Workbench**를 선택합니다. 쿼리 편집기 v2는 시각적 편집기와 IAM 정책 시뮬레이터에서 서비스 이름으로 AWS SQL Workbench를 사용합니다.

보안 주체(IAM 역할이 할당된 사용자)가 Amazon Redshift 클러스터에 연결하려면 쿼리 에디터 v2 관리형 정책 중 하나에서 권한이 필요합니다. 클러스터에 대한 `redshift:GetClusterCredentialsWithIAM` 또는 `redshift:GetClusterCredentials` 권한 중 하나도 필요합니다. 이 권한을 얻기 위해 관리 권한이 있는 사용자가 임시 자격 증명을 사용하여 클러스터에 연결해야 하는 IAM 역할에 정책을 연결할 수 있습니다. 정책의 범위를 특정 클러스터로 지정하거나 보다 일반적으로 지정할 수 있습니다. 임시 자격 증명 사용 권한에 대한 자세한 내용은 [GetClusterCredentialsWithIAM 또는 GetClusterCredentials 직접 호출 권한이 있는 IAM 역할 또는 사용자 생성](generating-iam-credentials-steps.md#generating-iam-credentials-role-permissions)을 참조하세요.

보안 주체(일반적으로 IAM 역할이 할당된 사용자)가 **Account settings**(계정 설정) 페이지에서 계정의 다른 사용자가 **Export result set**(결과 집합 내보내기) 기능을 사용할 수 있도록 설정하려면 해당 역할에 연결된 `sqlworkbench:UpdateAccountExportSettings` 권한이 필요합니다. 이 권한은 `AmazonRedshiftQueryEditorV2FullAccess` AWS 관리형 정책에 포함되어 있습니다.

쿼리 편집기 v2에 새로운 기능이 추가되면 필요에 따라 AWS 관리형 정책이 업데이트됩니다. 제공된 관리형 정책에서 허용 및 거부된 권한을 기반으로 자체 정책을 생성하는 경우 정책을 편집하여 관리형 정책의 변경 사항을 최신 상태로 유지하세요. Amazon Redshift의 관리형 정책에 대한 자세한 내용은 [Amazon Redshift에 대한 AWS 관리형 정책](redshift-iam-access-control-identity-based.md#redshift-policy-resources.managed-policies) 섹션을 참조하세요.

액세스 권한을 제공하려면 사용자, 그룹 또는 역할에 권한을 추가하세요.
+ AWS IAM Identity Center의 사용자 및 그룹:

  권한 세트를 생성합니다. *AWS IAM Identity Center 사용자 안내서*에서 [권한 세트 생성](https://docs.aws.amazon.com//singlesignon/latest/userguide/howtocreatepermissionset.html)의 지침을 따릅니다.
+ ID 제공업체를 통해 IAM에서 관리되는 사용자:

  ID 페더레이션을 위한 역할을 생성합니다. *IAM 사용자 설명서*의 [Create a role for a third-party identity provider (federation)](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-idp.html)의 지침을 따릅니다.
+ IAM 사용자:
  + 사용자가 맡을 수 있는 역할을 생성합니다. *IAM 사용자 설명서*에서 [Create a role for an IAM user](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-user.html)의 지침을 따릅니다.
  + (권장되지 않음) 정책을 사용자에게 직접 연결하거나 사용자를 사용자 그룹에 추가합니다. *IAM 사용 설명서*에서 [사용자(콘솔)에 권한 추가](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_users_change-permissions.html#users_change_permissions-add-console)의 지침을 따릅니다.

**참고**  
AWS IAM Identity Center 관리자가 전체 계정의 특정 권한 세트에 대한 모든 권한 세트 연결을 제거하면 제거된 권한 세트와 원래 연결된 쿼리 에디터 리소스에 더 이상 액세스할 수 없습니다. 나중에 동일한 권한을 다시 만들면 새 내부 식별자가 만들어집니다. 내부 식별자가 변경되었으므로 사용자가 이전에 소유했던 쿼리 에디터 리소스에 액세스할 수 없습니다. 관리자가 권한 세트를 삭제하기 전에 해당 권한 세트의 사용자가 노트북 및 쿼리와 같은 쿼리 에디터 리소스를 백업으로 내보내는 것이 좋습니다.

## 쿼리 에디터 v2에서 클러스터 또는 작업 그룹을 연결하기 위한 보안 주체 태그 설정
<a name="query-editor-v2-principal-tags-iam"></a>

페더레이션 사용자 옵션을 사용하여 클러스터 또는 작업 그룹에 연결하려면 보안 주체 태그를 사용하여 IAM 역할 또는 사용자를 설정합니다. 또는 `RedshiftDbUser` 및 `RedshiftDbGroups`(선택 사항)를 전달하도록 아이덴티티 제공업체(IdP)를 설정합니다. IAM을 사용하여 태그를 관리하는 방법에 대한 자세한 내용은 *IAM 사용 설명서*의 [AWS Security Token Service에서 세션 태그 전달](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_session-tags.html)을 참조하세요. AWS Identity and Access Management를 사용하여 액세스를 설정하려는 경우, 관리자는 IAM 콘솔([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/))을 사용하여 태그를 추가할 수 있습니다.

**IAM 역할에 보안 주체 태그를 추가하려면**

1. AWS Management Console에 로그인하여 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)에서 IAM 콘솔을 엽니다.

1. 탐색 창에서 **역할**을 선택합니다.

1. 페더레이션 사용자를 사용하여 쿼리 편집기 v2에 대한 액세스 권한이 필요한 역할을 선택합니다.

1. **태그** 탭을 선택합니다.

1. **태그 관리(Manage tags)**를 선택합니다.

1. **태그 추가**를 선택한 다음 **키**에 `RedshiftDbUser`를 입력하고 **값**에 페더레이션 사용자 이름을 입력합니다.

1. 필요시 **태그 추가**를 선택한 다음 **키**에 `RedshiftDbGroups`를 입력하고 **값**에 사용자에 연결할 그룹 이름을 입력합니다.

1. **변경 사항 저장(Save changes)**을 선택하여 선택한 IAM 역할에 연결된 태그 목록을 봅니다. 변경 사항을 전파하는 데 몇 초 정도 걸릴 수 있습니다.

1. 페더레이션 사용자를 사용하려면 변경 사항이 전파된 후 쿼리 편집기 v2 페이지를 새로 고칩니다.

**보안 주체 태그를 전달하도록 아이덴티티 제공업체(IdP) 설정**  
아이덴티티 제공업체(IdP)를 사용하여 태그를 설정하는 절차는 IdP에 따라 다릅니다. 사용자 및 그룹 정보를 SAML 속성에 전달하는 방법에 대한 지침은 IdP 설명서를 참조하세요. 올바르게 구성된 경우 AWS Security Token Service에서 `RedshiftDbUser` 및 `RedshiftDbGroups`에 대한 보안 주체 태그를 채우는 데 사용하는 SAML 응답에 다음과 같은 속성이 나타납니다.

```
<Attribute Name="https://aws.amazon.com/SAML/Attributes/PrincipalTag:RedshiftDbUser">
    <AttributeValue>db-user-name</AttributeValue>
</Attribute>
<Attribute Name="https://aws.amazon.com/SAML/Attributes/PrincipalTag:RedshiftDbGroups">
    <AttributeValue>db-groups</AttributeValue>
</Attribute>
```

 선택적 *db\$1groups*는 `group1:group2:group3`와 같이 콜론으로 구분된 목록이어야 합니다.

또한 역할을 함께 묶을 때 태그를 유지하도록 `TransitiveTagKeys` 속성을 설정할 수 있습니다.

```
<Attribute Name="https://aws.amazon.com/SAML/Attributes/TransitiveTagKeys">
  <AttributeValue>RedshiftDbUser</AttributeValue>
  <AttributeValue>RedshiftDbGroups</AttributeValue>
</Attribute>
```

쿼리 편집기 v2 설정에 대한 자세한 내용은 [쿼리 편집기 v2를 사용하는 데 필요한 권한](redshift-iam-access-control-identity-based.md#redshift-policy-resources.required-permissions.query-editor-v2) 섹션을 참조하세요.

Active Directory Federation Services(AD FS)를 설정하는 방법에 대한 자세한 내용은 블로그 게시물 [Federate access to Amazon Redshift query editor v2 with Active Directory Federation Services(AD FS)](https://aws.amazon.com/blogs//big-data/federate-access-to-amazon-redshift-query-editor-v2-with-active-directory-federation-services-ad-fs-part-3/)(Active Directory Federation Services(AD FS)를 사용하여 Amazon Redshift 쿼리 편집기 v2에 대한 페더레이션 액세스)를 참조하세요.

Okta를 설정하는 방법에 대한 자세한 내용은 블로그 게시물 [Federate single sign-on access to Amazon Redshift query editor v2 with Okta](https://aws.amazon.com/blogs//big-data/federate-single-sign-on-access-to-amazon-redshift-query-editor-v2-with-okta/)(Okta를 사용하여 Amazon Redshift 쿼리 편집기 v2에 대한 페더레이션 Single Sign-On 액세스)를 참조하세요.

**참고**  
쿼리 에디터 v2의 **페더레이션된 사용자** 연결 옵션을 사용하여 클러스터 또는 작업 그룹에 연결하는 경우 ID 제공업체(idP)는 `RedshiftDbUser` 및 `RedshiftDbGroups`에 대한 사용자 지정 보안 주체 태그를 제공할 수 있습니다. 현재 AWS IAM Identity Center에서는 쿼리 에디터 v2에 사용자 지정 보안 주체 태그를 직접 전달하는 기능을 지원하지 않습니다.

# 쿼리 편집기 v2 열기
<a name="query-editor-v2-open"></a>

Amazon Redshift를 사용하면 Amazon Redshift 콘솔의 Query Editor V2를 사용하여 데이터 웨어하우스 클러스터에 대해 SQL 쿼리를 실행할 수 있습니다. Query Editor V2는 임시 쿼리 실행, 데이터 탐색 및 데이터 분석 작업 수행 용도로 사용자가 사용하기에 편리한 인터페이스를 제공하는 웹 기반 도구입니다. 다음 섹션에서는 콘솔에서 Query Editor V2를 열고 해당 기능을 효과적으로 활용하는 프로세스를 안내합니다.

**쿼리 편집기 v2를 열려면**

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/redshiftv2/](https://console.aws.amazon.com/redshiftv2/)에서 Amazon Redshift 콘솔을 엽니다.

1. 탐색기 메뉴에서 **편집기(Editor)**, **쿼리 편집기 V2(Query editor V2)**를 차례로 선택합니다. 쿼리 편집기 v2가 새 브라우저 탭에서 열립니다.

쿼리 편집기 페이지에는 다음과 같이 보기를 선택할 수 있는 네비게이터 메뉴가 있습니다.

**편집기 ![\[Horizontal lines representing redacted or censored text.\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/images/qev2-align-left.png)**  
테이블로 정리되고 데이터베이스에 포함된 데이터를 관리하고 쿼리합니다. 데이터베이스는 저장된 데이터를 포함하거나 Amazon S3와 같은 다른 곳에 저장된 데이터에 대한 참조를 포함할 수 있습니다. 클러스터 또는 서버리스 작업 그룹에 들어 있는 데이터베이스에 연결합니다.  
**Editor**(편집기) 보기에서 작업할 때는 다음 컨트롤을 사용할 수 있습니다.  
+ **Cluster**(클러스터) 또는 **Workgroup**(작업 그룹) 필드에는 현재 연결되어 있는 이름이 표시됩니다. **Database(데이터베이스)** 필드에는 클러스터 또는 작업 그룹 내의 데이터베이스가 표시됩니다. **데이터베이스(Database)** 보기에서 수행하는 작업은 기본적으로 선택한 데이터베이스에 작용합니다.
+ 클러스터 또는 작업 그룹, 데이터베이스 및 스키마의 트리 보기 계층 보기. 스키마에서 테이블, 보기, 함수 및 저장 프로시저 관련 작업을 수행할 수 있습니다. 트리 보기의 각 객체는 객체에 대해 **새로 고침(Refresh)** 또는 **삭제(Drop)**와 같은 관련 작업을 수행하는 컨텍스트 메뉴를 지원합니다.
+ 데이터베이스, 스키마, 테이블 및 함수를 생성하는 ![\[The create icon used in the AWS Console.\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/images/qev2-add.png) **생성(Create)** 작업
+ ![\[The upload icon used in the AWS Console.\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/images/qev2-upload.png)**데이터 로드** 작업은 Amazon S3 또는 로컬 파일에서 데이터베이스에 데이터를 로드합니다.
+ 쿼리를 저장하는 ![\[The floppy disk icon used in the AWS Console.\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/images/qev2-floppy-disk.png) **저장(Save)** 아이콘 
+ 편집기의 바로 가기 키를 표시하는 ![\[The shortcut icon used in the AWS Console.\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/images/qev2-key-command.png) **바로 가기(Shortcuts)** 아이콘 
+ 편집기에 더 많은 작업을 표시하는 ![\[The more actions icon used in the AWS Console.\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/images/qev2-more.png) **더 보기** 아이콘 예: 
  + **내 팀과 공유**를 사용하여 팀과 쿼리 또는 노트북을 공유합니다. 자세한 내용은 [팀으로 협업 및 공유](query-editor-v2-team.md) 섹션을 참조하세요.
  + **단축키**를 사용하여 편집기의 키보드 단축키를 표시합니다.
  + **탭 기록**을 사용하여 편집기에 탭의 탭 기록을 표시합니다.
  + **자동 완성 새로 고침**을 사용하여 SQL을 작성할 때 표시된 제안을 새로 고칩니다.
+ 쿼리를 입력하고 실행할 수 있는 ![\[The editor icon in the AWS Console where can enter and run queries.\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/images/add-plus.png) **편집기** 영역입니다.

  쿼리를 실행하면 결과와 함께 **결과(Result)** 탭이 나타납니다. 여기에서 **차트(Chart)**를 설정하여 결과를 시각화할 수 있습니다. 결과를 **Export**(내보내기)할 수도 있습니다.
+ 섹션을 추가하여 SQL을 입력하고 실행하거나 마크다운을 추가할 수 있는 ![\[The icon in the AWS Console where you can add sections to enter and run SQL or add Markdown.\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/images/add-plus.png) **Notebook**(노트북) 영역입니다.

  쿼리를 실행하면 결과와 함께 **결과(Result)** 탭이 나타납니다. 여기에서 결과를 **Export**(내보내기)할 수 있습니다.

**쿼리 ![\[A folder icon used in the AWS Console used to query databases.\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/images/qev2-folder-close.png)**  
쿼리에는 데이터베이스의 데이터를 관리하고 쿼리하는 SQL 명령이 포함되어 있습니다. 쿼리 편집기 v2를 사용하여 샘플 데이터를 로드할 때 샘플 쿼리도 생성되고 저장됩니다.  
 저장된 쿼리를 선택하면 컨텍스트(마우스 오른쪽 버튼) 메뉴를 사용하여 쿼리를 열거나 이름을 바꾸거나 삭제할 수 있습니다. **쿼리 세부 정보**를 선택하여 저장된 쿼리의 **쿼리 ARN**과 같은 속성을 볼 수 있습니다. 버전 기록을 보고, 쿼리에 연결된 태그를 편집하고, 팀과 공유할 수도 있습니다.

**노트북 ![\[A book icon used in the AWS Console used as SQL notebook.\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/images/qev2-manual.png)**  
SQL 노트북에는 SQL 및 마크다운 셀이 포함되어 있습니다. 노트북을 사용하여 하나의 문서에서 여러 SQL 명령을 구성하고 주석을 달고 공유할 수 있습니다.  
 저장된 노트북을 선택하면 컨텍스트(마우스 오른쪽 버튼) 메뉴를 사용하여 노트북을 열거나 이름을 바꾸거나 복제하거나 삭제할 수 있습니다. **노트북 세부 정보**를 선택하여 저장된 노트북의 **노트북 ARN**과 같은 속성을 볼 수 있습니다. 버전 기록을 보고, 노트북에 연결된 태그를 편집하고, 내보내고, 팀과 공유할 수도 있습니다. 자세한 내용은 [Amazon Redshift의 노트북Notebooks](query-editor-v2-notebooks.md) 섹션을 참조하세요.

**차트 ![\[Icon of a chart used in the AWS Console as visual representation of data.\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/images/qev2-chart.png)**  
차트는 데이터를 시각적으로 표현한 것입니다. 쿼리 편집기 v2는 다양한 유형의 차트를 생성하고 저장할 수 있는 도구를 제공합니다.  
 저장된 차트를 선택하면 컨텍스트(마우스 오른쪽 버튼) 메뉴를 사용하여 쿼리를 열거나 이름을 바꾸거나 삭제할 수 있습니다. **차트 세부 정보**를 선택하여 저장된 차트의 **차트 ARN**과 같은 속성을 볼 수 있습니다. 차트에 연결된 태그를 편집하고 내보낼 수도 있습니다. 자세한 내용은 [쿼리 결과 시각화](query-editor-v2-charts.md) 섹션을 참조하세요.

**기록 ![\[Icon of a clock used in the AWS Console for query history.\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/images/qev2-clock.png)**  
쿼리 기록은 Amazon Redshift 쿼리 에디터 v2를 사용하여 실행한 쿼리 목록입니다. 이러한 쿼리는 개별 쿼리로 실행되거나 SQL 노트북의 일부로 실행되었습니다. 자세한 내용은 [쿼리 및 탭 기록 보기](query-editor-v2-history.md) 섹션을 참조하세요.

**예약된 쿼리 ![\[Icon of a calendar used in the AWS Console for scheduled queries.\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/images/qev2-calendar.png)**  
예약된 쿼리는 특정 시간에 시작되도록 설정된 쿼리입니다.

 모든 쿼리 편집기 v2 보기에는 다음과 같은 아이콘이 있습니다.
+ ![\[Icon of a quarter moon used in the AWS Console to switch between light and dark modes.\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/images/qev2-moon.png) **비주얼 모드** 아이콘을 사용하면 라이트 모드와 다크 모드를 전환할 수 있습니다.
+ ![\[Icon of a gear used in the AWS Console to show settings.\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/images/qev2-cog.png) **설정** 아이콘을 사용하면 다양한 설정 화면의 메뉴가 표시됩니다.
  + ![\[Icon used in the AWS Console to show editor preferences.\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/images/qev2-properties.png) **편집기 기본 설정** 아이콘을 사용하면 쿼리 편집기 v2를 사용할 때 기본 설정을 편집할 수 있습니다. 여기서 **Workspace 설정 편집**으로 글꼴 크기, 탭 크기 및 기타 표시 설정을 변경할 수 있습니다. SQL을 입력할 때 제안 사항을 표시하도록 **자동 완성**을 켜거나 끌 수도 있습니다.
  + ![\[Icon used in the AWS Console to view connections used in the editor tab.\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/images/qev2-connection.png) **연결** 아이콘을 사용하면 편집기 탭에서 사용하는 연결을 볼 수 있습니다.

    연결은 데이터베이스에서 데이터를 가져오는 데 사용됩니다. 연결은 특정 데이터베이스에 대해 생성됩니다. 격리된 연결을 사용하면 한 편집기 탭에서 임시 테이블을 생성하는 것과 같이 데이터베이스를 변경하는 SQL 명령의 결과가 다른 편집기 탭에 표시되지 않습니다. 쿼리 편집기 v2에서 편집기 탭을 열 때 기본값은 격리된 연결입니다. 공유 연결을 생성할 때, 즉 **Isolated session**(격리된 세션) 스위치를 해제하면 동일한 데이터베이스에 대한 다른 공유 연결의 결과가 서로 표시됩니다. 그러나 데이터베이스에 대한 공유 연결을 사용하는 편집기 탭은 병렬로 실행되지 않습니다. 동일한 연결을 사용하는 쿼리는 연결이 가능해질 때까지 기다려야 합니다. 한 데이터베이스에 대한 연결은 다른 데이터베이스와 공유될 수 없으므로 다른 데이터베이스 연결에서 SQL 결과를 볼 수 없습니다.

    계정의 사용자가 활성화할 수 있는 연결 수는 쿼리 편집기 v2 관리자가 제어합니다.
  + ![\[Icon used in the AWS Console used by administrators to change settings of user accounts.\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/images/qev2-settings.png) **계정 설정** 아이콘은 관리자가 계정에 있는 모든 사용자의 특정 설정을 변경하는 데 사용합니다. 자세한 내용은 [계정 설정](#query-editor-v2-settings) 섹션을 참조하세요.

## 쿼리 편집기 v2로 작업할 때 고려할 사항
<a name="query-editor-v2-considerations"></a>

쿼리 편집기 v2로 작업할 때는 다음 사항을 고려하세요.
+ 최대 쿼리 기간은 24시간입니다.
+ 최대 쿼리 결과 크기는 100MB입니다. 직접 호출이 100MB를 초과하는 응답 데이터를 반환하면 처음 100MB가 경고와 함께 반환됩니다.
+ 최대 300,000자의 쿼리를 실행할 수 있습니다.
+ 최대 30,000자의 쿼리를 저장할 수 있습니다.
+ 기본적으로 쿼리 편집기 v2는 실행되는 각 개별 SQL 명령을 자동으로 커밋합니다. BEGIN 문이 제공되면 BEGIN-COMMIT 또는 BEGIN-ROLLBACK 블록 내의 문이 단일 트랜잭션으로 실행됩니다. 트랜잭션에 대한 자세한 내용은 *Amazon Redshift 데이터베이스 개발자 안내서*의 [BEGIN](https://docs.aws.amazon.com/redshift/latest/dg/r_BEGIN.html) 섹션을 참조하세요.
+ 쿼리 에디터 v2에서 SQL 문을 실행하는 동안 표시되는 최대 경고 수는 `10`개입니다. 예를 들어 저장 프로시저가 실행되면 RAISE 문이 10개 넘게 표시되지 않습니다.
+ 쿼리 에디터 v2는 쉼표(,)가 포함된 IAM `RoleSessionName`을 지원하지 않습니다. 다음과 비슷한 오류가 표시될 수 있습니다. 오류 메시지: “‘AROA123456789EXAMPLE:mytext,yourtext’ is not a valid value for TagValue - it contains illegal characters” 이 문제는 쉼표가 포함된 `RoleSessionName` IAM을 정의한 다음 해당 IAM 역할로 쿼리 에디터 v2를 사용할 때 발생합니다.

  IAM `RoleSessionName`에 대한 자세한 내용은 **IAM 사용 설명서의 [RoleSessionName SAML 속성](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create_saml_assertions.html#saml_role-session-attribute)을 참조하세요.

## 계정 설정
<a name="query-editor-v2-settings"></a>

적절한 IAM 권한을 가진 사용자는 같은 AWS 계정 내의 다른 사용자에 대한 **Account settings**(계정 설정)를 보고 변경할 수 있습니다. 이 관리자는 다음을 보거나 설정할 수 있습니다.
+ 계정의 사용자당 최대 동시 데이터베이스 연결 수. 여기에는 **Isolated sessions**(격리된 세션)에 대한 연결이 포함됩니다. 이 값을 변경할 때 변경이 적용되기까지 10분이 걸릴 수 있습니다.
+ 계정의 사용자가 SQL 명령의 전체 결과 세트를 파일로 내보낼 수 있도록 허용합니다.
+ 일부 연결된 저장된 쿼리가 있는 샘플 데이터베이스를 로드하고 표시합니다.
+ 계정 사용자가 로컬 파일에서 데이터를 로드하는 데 사용하는 Amazon S3 경로를 지정합니다.
+ 쿼리 편집기 v2 리소스를 암호화하는 데 사용되는 KMS 키 ARN을 알아봅니다.

# Amazon Redshift 데이터베이스에 연결
<a name="query-editor-v2-connecting"></a>

데이터베이스에 연결하려면 트리 보기 패널에서 클러스터 또는 작업 그룹 이름을 선택합니다. 메시지가 나타나면 연결 파라미터를 입력합니다.

클러스터 또는 작업 그룹과 해당 데이터베이스에 연결할 때 일반적으로 **Database(데이터베이스)** 이름을 제공합니다. 다음 인증 방법 중 하나에 필요한 파라미터도 제공합니다.

**IAM Identity Center**  
이 방법을 사용하면 ID 제공업체(idP)의 Single Sign-On 보안 인증 정보를 사용하여 Amazon Redshift 데이터 웨어하우스에 연결할 수 있습니다. Amazon Redshift 콘솔에서 클러스터 또는 작업 그룹에 IAM Identity Center를 활성화해야 합니다. IAM Identity Center에 대한 연결을 설정하는 데 도움이 필요한 경우 [Single Sign-On 경험을 위해 Redshift와 AWS IAM Identity Center 연결](redshift-iam-access-control-idp-connect.md) 섹션을 참조하세요.

**페더레이션 사용자**  
이 방법을 사용하는 경우 IAM 역할 또는 사용자의 보안 주체 태그에서 연결 세부 정보를 제공해야 합니다. 이러한 태그는 AWS Identity and Access Management 또는 아이덴티티 제공업체(IdP)에서 구성합니다. 쿼리 편집기 v2는 다음과 같은 태그를 사용합니다.  
+ `RedshiftDbUser` - 이 태그는 쿼리 편집기 v2에서 사용되는 데이터베이스 사용자를 정의합니다. 이 태그는 필수입니다.
+ `RedshiftDbGroups` - 이 태그는 쿼리 편집기 v2에 연결할 때 조인되는 데이터베이스 그룹을 정의합니다. 이 태그는 선택 사항이며 해당 값은 `group1:group2:group3`와 같이 콜론으로 구분된 목록이어야 합니다. 빈 값은 무시됩니다. 즉, `group1::::group2`는 `group1:group2`로 해석됩니다.
이러한 태그는 클러스터에 대한 보안 인증 정보를 가져오는 `redshift:GetClusterCredentials` API로 전달됩니다. 자세한 내용은 [쿼리 에디터 v2에서 클러스터 또는 작업 그룹을 연결하기 위한 보안 주체 태그 설정](query-editor-v2-getting-started.md#query-editor-v2-principal-tags-iam) 섹션을 참조하세요.

**데이터베이스 사용자 이름을 사용하는 임시 보안 인증 정보**  
이 옵션은 클러스터에 연결할 때만 사용할 수 있습니다. 이 메서드(쿼리 편집기 v2)를 사용하여 데이터베이스의 **User name**(사용자 이름)을 제공합니다. 쿼리 에디터 v2가 데이터베이스 사용자 이름으로 데이터베이스에 연결하기 위한 임시 암호를 생성합니다. 이 메서드를 사용하여 연결하는 사용자에게는 `redshift:GetClusterCredentials`에 대한 IAM 권한이 허용되어야 합니다. 사용자가 이 메서드를 사용하지 못하도록 하려면 IAM 사용자 또는 역할을 수정하여 이 권한을 거부합니다.

**IAM 자격 증명을 사용한 임시 자격 증명**  
이 옵션은 클러스터에 연결할 때만 사용할 수 있습니다. 이 방법을 사용하면 쿼리 에디터 v2가 사용자 이름을 IAM ID에 매핑하고 IAM ID로 데이터베이스에 연결하기 위한 임시 암호를 생성합니다. 이 메서드를 사용하여 연결하는 사용자에게는 `redshift:GetClusterCredentialsWithIAM`에 대한 IAM 권한이 허용되어야 합니다. 사용자가 이 메서드를 사용하지 못하도록 하려면 IAM 사용자 또는 역할을 수정하여 이 권한을 거부합니다.

**데이터베이스 사용자 이름 및 암호**  
이 방법을 사용하는 경우 연결하려는 데이터베이스의 **사용자 이름(User name)** 및 **암호(Password)**도 제공합니다. 쿼리 편집기 v2는 AWS Secrets Manager에 저장된 암호를 대신 생성합니다. 이 보안 암호에는 데이터베이스에 연결하기 위한 자격 증명이 포함되어 있습니다.

**AWS Secrets Manager**  
 이 메서드를 사용하면 데이터베이스 이름 대신 데이터베이스 및 로그인 자격 증명이 포함된 Secrets Manager에 저장된 **Secret**(비밀)을 제공합니다. 보안 암호 생성에 대한 정보는 [데이터베이스 연결 자격 증명을 위한 보안 암호 생성](redshift-secrets-manager-integration-create.md) 섹션을 참조하세요.

쿼리 편집기 v2로 클러스터 또는 작업 그룹을 선택하면 컨텍스트(마우스 오른쪽 버튼 클릭) 메뉴를 사용하여 컨텍스트에 따라 연결을 생성, 편집 및 삭제할 수 있습니다. **연결 세부 정보**를 선택하여 연결의 **연결 ARN**과 같은 속성을 볼 수 있습니다. 연결에 연결된 태그를 편집할 수도 있습니다.

# Amazon Redshift 데이터베이스 찾아보기
<a name="query-editor-v2-object-browse"></a>

트리 보기 패널에서 데이터베이스 내의 스키마, 테이블, 보기, 함수 및 저장 프로시저를 관리할 수 있습니다. 보기의 각 객체에는 컨텍스트(마우스 오른쪽 버튼 클릭) 메뉴에서 연결된 작업이 있습니다.

계층적 트리 보기 패널에는 데이터베이스 객체가 표시됩니다. 트리 보기가 마지막으로 표시된 이후에 생성되었을 수 있는 데이터베이스 객체를 표시하도록 트리 보기 패널을 새로 고치려면 ![\[Circular arrow icon representing a refresh or reload action.\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/images/qev2-refresh.png) 아이콘을 선택합니다. 객체에 대한 컨텍스트(마우스 오른쪽 버튼 클릭) 메뉴를 열어 수행할 수 있는 작업을 확인합니다.

![\[Tree-view icons\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/images/sqlworkbench-tree-view.png)

테이블을 선택한 후 다음을 수행할 수 있습니다.
+ 테이블의 모든 열을 쿼리하는 SELECT 문으로 편집기에서 쿼리를 시작하려면 **테이블 선택(Select table)**을 사용합니다.
+ 속성이나 테이블을 보려면 **테이블 정의 표시(Show table definition)**를 사용합니다. 열 이름, 열 유형, 인코딩, 배포 키, 정렬 키 및 열에 null 값이 포함될 수 있는지 여부를 보려면 이 작업을 사용합니다. 테이블 속성에 대한 자세한 내용은 *Amazon Redshift Database 개발자 안내서*의 [CREATE TABLE](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_TABLE_NEW.html)을 참조하세요.
+ 테이블을 삭제하려면 **삭제(Delete)**를 사용합니다. **테이블 자르기(Truncate table)**를 사용하여 테이블에서 모든 행을 삭제하거나 **테이블 삭제(Drop table)**를 사용하여 데이터베이스에서 테이블을 제거할 수 있습니다. 자세한 내용은 *Amazon Redshift Database 개발자 안내서*의 [TRUNCATE](https://docs.aws.amazon.com/redshift/latest/dg/r_TRUNCATE.html) 및 [DROP TABLE](https://docs.aws.amazon.com/redshift/latest/dg/r_DROP_TABLE.html)을 참조하세요.

**새로 고침(Refresh)** 또는 **스키마 삭제(Drop schema)**를 수행할 스키마를 선택합니다.

**보기 정의 표시(Show view definition)** 또는 **보기 삭제(Drop view)**를 수행할 보기를 선택합니다.

**함수 정의 표시(Show function definition)** 또는 **함수 삭제(Drop function)**를 수행할 함수를 선택합니다.

**프로시저 정의 표시(Show procedure definition)** 또는 **프로시저 삭제(Drop procedure)**를 수행할 저장 프로시저를 선택합니다.

# 데이터베이스 객체 생성
<a name="query-editor-v2-object-create"></a>

데이터베이스, 스키마, 테이블 및 사용자 정의 함수(UDF)를 비롯한 데이터베이스 객체를 생성할 수 있습니다. 데이터베이스 객체를 생성하려면 클러스터 또는 작업 그룹과 데이터베이스에 연결되어 있어야 합니다.

## 데이터베이스 생성
<a name="query-editor-v2-object-create-database"></a>

쿼리 편집기 v2를 사용하여 클러스터 또는 작업 그룹에 데이터베이스를 생성할 수 있습니다.

**데이터베이스를 생성하려면**

데이터베이스에 대한 내용은 *Amazon Redshift Database 개발자 안내서*의 [CREATE DATABASE](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_DATABASE.html)를 참조하세요.

1. ![\[Plus sign icon inside a circle, indicating an add or create action.\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/images/qev2-add.png)**생성(Create)**을 선택한 후 **데이터베이스(Database)**를 선택합니다.

1. **데이터베이스 이름(Database name)**을 입력합니다.

1. (선택 사항) **사용자 및 그룹(Users and groups)**을 선택하고 **데이터베이스 사용자(Database user)**를 선택합니다.

1. (선택 사항) 데이터 공유 또는 AWS Glue Data Catalog에서 데이터베이스를 생성할 수 있습니다. AWS Glue에 대한 자세한 내용은 *AWS Glue 개발자 안내서*의 [AWS Glue란 무엇입니까?](https://docs.aws.amazon.com/glue/latest/dg/what-is-glue.html)를 참조하세요.
   + (선택 사항) **데이터 공유를 사용하여 생성**을 선택하고 **데이터 공유 선택**을 선택합니다. 목록에는 현재 클러스터 또는 작업 그룹에서 소비자 데이터 공유를 생성하는 데 사용할 수 있는 생산자 데이터 공유가 포함됩니다.
   + (선택 사항) **AWS Glue Data Catalog를 사용하여 생성**을 선택하고, **AWS Glue 데이터베이스 선택**을 선택합니다. **데이터 카탈로그 스키마**에서 데이터를 참조할 때 스키마에 사용할 이름을 세 부분으로 구성된 이름(database.schema.table)으로 입력합니다.

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

   새 데이터베이스가 트리 보기 패널에 표시됩니다.

   데이터 공유에서 생성된 데이터베이스를 쿼리하는 단계를 필요에 따라 선택하는 경우 클러스터 또는 작업 그룹(예: 기본 데이터베이스 `dev`)의 Amazon Redshift 데이터베이스에 연결하고, **데이터 공유를 사용하여 생성**을 선택할 때 만든 데이터베이스 이름을 참조하는 세 부분으로 구성된 표기법(database.schema.table)을 사용합니다. 데이터 공유 데이터베이스는 쿼리 편집기 v2 편집기 탭에 나열되지만 직접 연결할 수 있도록 설정되어 있지 않습니다.

   AWS Glue Data Catalog에서 만든 데이터베이스를 쿼리하는 단계를 필요에 따라 선택하는 경우, 클러스터 또는 작업 그룹(예: 기본 데이터베이스 `dev`)에서 Amazon Redshift 데이터베이스에 연결하고, **AWS Glue Data Catalog를 사용하여 생성**을 선택할 때 만든 데이터베이스 이름, **데이터 카탈로그 스키마**에서 이름을 지정한 스키마 및 AWS Glue Data Catalog의 테이블을 참조하는 세 부분으로 구성된 표기법(database.schema.table)을 사용하세요. 다음과 유사합니다.

   ```
   SELECT * FROM glue-database.glue-schema.glue-table
   ```
**참고**  
연결 메서드 **IAM ID를 사용하여 임시 보안 인증**을 사용하여 기본 데이터베이스에 연결되었는지 그리고 IAM 보안 인증에 AWS Glue에 대한 사용 권한이 부여되었는지 확인합니다.  

   ```
   GRANT USAGE ON DATABASE glue-database to "IAM:MyIAMUser"
   ```

   AWS Glue 데이터베이스는 쿼리 편집기 v2 편집기 탭에 나열되지만 직접 연결할 수 있도록 설정되어 있지 않습니다.

   AWS Glue Data Catalog 쿼리에 대한 자세한 내용은 **Amazon Redshift 데이터베이스 개발자 안내서에서 [소비자로서 레이크 포메이션 관리 데이터 공유로 작업](https://docs.aws.amazon.com/redshift/latest/dg/lake-formation-getting-started-consumer.html) 및 [생산자로서 레이크 포메이션 관리 데이터 공유로 작업](https://docs.aws.amazon.com/redshift/latest/dg/lake-formation-getting-started-producer.html)을 참조하세요.

**데이터 공유 소비자로 데이터베이스 생성 예제**

다음 예에서는 쿼리 편집기 v2를 사용하여 데이터 공유에서 데이터베이스를 만드는 데 사용된 특정 시나리오에 대해 설명합니다. 이 시나리오를 검토하여 사용 중인 환경에서 데이터 공유에서 데이터베이스를 만드는 방법을 알아보세요. 시나리오에서는 `cluster-base`(생산자 클러스터)과 `cluster-view`(소비자 클러스터)라는 두 개의 클러스터를 사용합니다.

1. Amazon Redshift 콘솔을 사용하여 `cluster-base` 클러스터에서 `category2` 테이블에 대한 데이터 공유를 생성합니다. 생산자 데이터 공유의 이름은 `datashare_base`입니다.

   데이터 공유 생성에 대한 자세한 내용은 **Amazon Redshift 데이터베이스 개발자 안내서에서 [Amazon Redshift에서 클러스터 간에 데이터 공유](https://docs.aws.amazon.com/redshift/latest/dg/datashare-overview.html)를 참조하세요.

1. Amazon Redshift 콘솔을 사용하여 `cluster-view` 클러스터에서 `category2` 테이블에 대한 소비자로 데이터셰어 `datashare_base`를 수락합니다.

1. 쿼리 편집기 v2의 트리 뷰 패널에서 `cluster-base`의 계층 구조를 다음과 같이 표시합니다.
   + 클러스터: `cluster-base`
     + 데이터베이스: `dev`
       + 스키마: `public`
         + 테이블: `category2`

1. ![\[Plus sign icon inside a circle, indicating an add or create action.\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/images/qev2-add.png)**생성(Create)**을 선택한 후 **데이터베이스(Database)**를 선택합니다.

1. **데이터베이스 이름**에 `see_datashare_base`를 입력합니다.

1. **데이터 공유를 사용하여 생성**을 선택하고 **데이터 공유 선택**을 선택합니다. 생성하려는 데이터베이스의 소스로 사용할 `datashare_base`를 선택합니다.

   쿼리 편집기 v2의 트리 보기 패널에 `cluster-view`의 계층 구조가 다음과 같이 표시됩니다.
   + 클러스터: `cluster-view`
     + 데이터베이스: `see_datashare_base`
       + 스키마: `public`
         + 테이블: `category2`

1. 데이터를 쿼리할 때는 `cluster-view` 클러스터의 기본 데이터베이스(일반적으로 `dev`라는 이름)에 연결하되, SQL에서 데이터 공유 데이터베이스 `see_datashare_base`를 참조하세요.
**참고**  
쿼리 편집기 v2 편집기 뷰에서 선택한 클러스터는 `cluster-view`입니다. 선택한 데이터베이스는 `dev`입니다. 데이터베이스 `see_datashare_base`가 나열되어 있지만 직접 연결할 수 있도록 활성화되어 있지 않습니다. `dev` 데이터베이스를 선택하고 실행하는 SQL에서 `see_datashare_base`를 참조합니다.

   ```
   SELECT * FROM "see_datashare_base"."public"."category2";
   ```

   이 쿼리는 `cluster_base` 클러스터의 데이터 공유 `datashare_base`에서 데이터를 검색합니다.

**AWS Glue Data Catalog에서 데이터베이스 생성 예제**

다음 예에서는 쿼리 편집기 v2를 사용하여 AWS Glue Data Catalog에서 데이터베이스를 만드는 데 사용된 특정 시나리오에 대해 설명합니다. 이 시나리오를 검토하여 사용 중인 환경에서 AWS Glue Data Catalog에서 데이터베이스를 만드는 방법을 알아보세요. 이 시나리오에서는 하나의 클러스터, `cluster-view`를 사용하여 생성한 데이터베이스를 포함합니다.

1. ![\[Plus sign icon inside a circle, indicating an add or create action.\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/images/qev2-add.png)**생성(Create)**을 선택한 후 **데이터베이스(Database)**를 선택합니다.

1. **데이터베이스 이름**에 `data_catalog_database`를 입력합니다.

1. **AWS Glue Data Catalog를 사용하여 생성**을 선택하고, **AWS Glue 데이터베이스 선택**을 선택합니다. 생성하려는 데이터베이스의 소스로 사용할 `glue_db`를 선택합니다.

   **데이터 카탈로그 스키마**를 선택하고 세 부분으로 구성된 표기법으로 사용할 스키마 이름으로 `myschema`를 입력합니다.

   쿼리 편집기 v2의 트리 보기 패널에 `cluster-view`의 계층 구조가 다음과 같이 표시됩니다.
   + 클러스터: `cluster-view`
     + 데이터베이스: `data_catalog_database`
       + 스키마: `myschema`
         + 테이블: `category3`

1. 데이터를 쿼리할 때는 `cluster-view` 클러스터의 기본 데이터베이스(일반적으로 `dev`라는 이름)에 연결하되, SQL에서 데이터베이스 `data_catalog_database`를 참조하세요.
**참고**  
쿼리 편집기 v2 편집기 뷰에서 선택한 클러스터는 `cluster-view`입니다. 선택한 데이터베이스는 `dev`입니다. 데이터베이스 `data_catalog_database`가 나열되어 있지만 직접 연결할 수 있도록 활성화되어 있지 않습니다. `dev` 데이터베이스를 선택하고 실행하는 SQL에서 `data_catalog_database`를 참조합니다.

   ```
   SELECT * FROM "data_catalog_database"."myschema"."category3";
   ```

   쿼리는 AWS Glue Data Catalog에 의해 카탈로그화된 데이터를 검색합니다.

## 스키마 생성
<a name="query-editor-v2-object-create-schema"></a>

쿼리 편집기 v2를 사용하여 클러스터 또는 작업 그룹에 스키마를 생성할 수 있습니다.

**스키마를 생성하려면**

스키마에 대한 내용은 *Amazon Redshift Database 개발자 안내서*의 [CREATE SCHEMA](https://docs.aws.amazon.com/redshift/latest/dg/r_Schemas_and_tables.html)를 참조하세요.

1. ![\[Plus sign icon inside a circle, indicating an add or create action.\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/images/qev2-add.png)**생성(Create)**을 선택한 다음 **스키마(Schema)**를 선택합니다.

1. **스키마 이름(Schema name)**을 입력합니다.

1. **Local**(로컬) 또는 **External**(외부)을 **Schema type**(스키마 유형)으로 선택합니다.

   로컬 스키마에 대한 내용은 *Amazon Redshift 데이터베이스 개발자 안내서*의 [CREATE SCHEMA](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_SCHEMA.html)를 참조하세요. 외부 스키마에 대한 내용은 *Amazon Redshift 데이터베이스 개발자 안내서*의 [CREATE EXTERNAL SCHEMA](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_EXTERNAL_SCHEMA.html)를 참조하세요.

1. **External**(외부)을 선택하면 다음과 같은 외부 스키마를 선택할 수 있습니다.
   + **Glue Data Catalog** - Amazon Redshift에서 AWS Glue의 테이블을 참조하는 외부 스키마를 생성하려는 경우. AWS Glue 데이터베이스를 선택하고 데이터 카탈로그와 연결된 IAM 역할을 선택합니다.
   + **PostgreSQL** - Amazon RDS for PostgreSQL 또는 Amazon Aurora PostgreSQL-Compatible Edition 데이터베이스를 참조하는 Amazon Redshift 외부 스키마를 생성합니다. 데이터베이스 연결 정보도 제공합니다. 연합 쿼리에 대한 자세한 내용은 *Amazon Redshift 데이터베이스 개발자 안내서*의 [연합 쿼리를 사용하여 데이터 쿼리](https://docs.aws.amazon.com/redshift/latest/dg/federated-overview.html)를 참조하세요.
   + **MySQL** - Amazon RDS for MySQL 또는 Amazon Aurora MySQL-Compatible Edition 데이터베이스를 참조하는 Amazon Redshift 외부 스키마를 생성합니다. 데이터베이스 연결 정보도 제공합니다. 연합 쿼리에 대한 자세한 내용은 *Amazon Redshift 데이터베이스 개발자 안내서*의 [연합 쿼리를 사용하여 데이터 쿼리](https://docs.aws.amazon.com/redshift/latest/dg/federated-overview.html)를 참조하세요.

1. **스키마 생성**을 선택합니다.

   새 스키마가 트리 보기 패널에 나타납니다.

## 테이블 생성
<a name="query-editor-v2-object-create-table"></a>

쿼리 편집기 v2를 사용하여 클러스터 또는 작업 그룹에 테이블을 생성할 수 있습니다.

**테이블을 만들려면**

테이블의 각 열을 지정하거나 정의하는 쉼표로 구분된 값(CSV) 파일을 기반으로 테이블을 생성할 수 있습니다. 테이블에 대한 자세한 내용은 *Amazon Redshift Database 개발자 안내서*의 [테이블 설계](https://docs.aws.amazon.com/redshift/latest/dg/c_designing-tables-best-practices.html) 및 [CREATE TABLE](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_TABLE_NEW.html)을 참조하세요.

쿼리를 실행하여 테이블을 생성하기 전에 **편집기에서 쿼리 열기(Open query in editor)**를 선택하여 CREATE TABLE 문을 보고 편집합니다.

1. ![\[Plus sign icon inside a circle, indicating an add or create action.\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/images/qev2-add.png)**Create**(생성)를 선택하고 **Table**(테이블)을 선택합니다.

1. 스키마를 선택합니다.

1. 테이블 이름을 입력합니다.

1. ![\[Plus sign icon representing an addition or new item action.\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/images/add-plus.png) **필드 추가(Add field)**를 선택하여 열을 추가합니다.

1. CSV 파일을 테이블 정의의 템플릿으로 사용합니다.

   1. **CSV에서 로드(Load from CSV)**를 선택합니다.

   1. 파일 위치를 찾습니다.

      CSV 파일을 사용하는 경우 파일의 첫 번째 행에 열 머리글이 포함되어 있는지 확인합니다.

   1. 파일과 **열기(Open)**를 차례로 선택합니다. 열 이름과 데이터 유형이 맞는지 확인합니다.

1. 각 열에 대해 열을 선택하고 원하는 옵션을 선택합니다.
   + **인코딩(Encoding)** 값을 선택합니다.
   + **기본값(Default value)**을 선택합니다.
   + 열 값 증분을 원하는 경우 **자동으로 증분(Automatically increment)**을 설정합니다. 그런 다음 **자동 증분 시드(Auto increment seed)** 및 **자동 증분 단계(Auto increment step)** 값을 지정합니다.
   + 열에 항상 값이 포함되어야 하는 경우 **NULL이 아님(Not NULL)**을 설정합니다.
   + 열의 **크기(Size)** 값을 입력합니다.
   + 열을 기본 키로 사용하려면 **기본 키(Primary key)**를 설정합니다.
   + 열을 고유 키로 사용하려면 **고유 키(Unique key)**를 설정합니다.

1. (선택 사항) **테이블 세부 정보(Table details)**를 선택하고 다음 옵션 중 하나를 선택합니다.
   + 배포 키 열 및 스타일.
   + 정렬 키 열 및 정렬 유형.
   + 스냅샷에 테이블을 포함하려면 **Backup(백업)**을 설정합니다.
   + 테이블을 임시 테이블로 생성하려면 **임시 테이블(Temporary table)**을 설정합니다.

1. **편집기에서 쿼리 열기(Open query in editor)**를 선택하여 테이블 정의 옵션을 계속 지정하거나 **테이블 생성(Create table)**을 선택하여 테이블을 생성합니다.

## 함수 생성
<a name="query-editor-v2-object-create-function"></a>

쿼리 편집기 v2를 사용하여 클러스터 또는 작업 그룹에 함수를 생성할 수 있습니다.

**함수를 만들려면**

1. ![\[Plus sign icon inside a circle, indicating an add or create action.\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/images/qev2-add.png)**생성(Create)**을 선택하고 **함수(Function)**를 선택합니다.

1. **유형(Type)**에서 **SQL** 또는 **Python**을 선택합니다.

1. **스키마(Schema)** 값을 선택합니다.

1. 함수의 **이름(Name)** 값을 입력합니다.

1. 함수의 **휘발성(Volatility)** 값을 입력합니다.

1. 입력 파라미터 순서대로 데이터 유형별로 **파라미터(Parameters)**를 선택합니다.

1. **반환(Returns)**에서 데이터 유형을 선택합니다.

1. 함수에 대한 **SQL 프로그램** 또는 **Python 프로그램** 코드를 입력합니다.

1. **생성(Create)**을 선택합니다.

사용자 정의 함수(UDF)에 대한 자세한 내용은 *Amazon Redshift 데이터베이스 개발자 안내서*의 [사용자 정의 함수 생성](https://docs.aws.amazon.com/redshift/latest/dg/user-defined-functions.html)을 참조하세요.

# 쿼리 및 탭 기록 보기
<a name="query-editor-v2-history"></a>

쿼리 에디터 v2를 사용하여 쿼리 기록을 볼 수 있습니다. 쿼리 에디터 v2를 사용하여 실행한 쿼리만 쿼리 기록에 표시됩니다. **Editor**(편집기) 탭 또는 **Notebook**(노트북) 탭을 사용하여 실행한 쿼리가 모두 표시됩니다. 기간별(예: 한 주가 월요일\$1일요일로 정의되는 `This week`)로 표시된 목록을 필터링할 수 있습니다. 쿼리 목록은 한 번에 필터와 일치하는 쿼리 행 25개를 가져옵니다. **Load more**(추가 로드)를 선택하면 다음 세트를 볼 수 있습니다. 쿼리를 선택하고 **Actions**(작업) 메뉴에서 선택합니다. 사용할 수 있는 작업은 선택한 쿼리가 저장되었는지 여부에 따라 달라집니다. 다음 작업을 선택할 수 있습니다.
+ **View query details**(쿼리 세부 정보 보기) - 실행된 쿼리에 대한 자세한 정보가 포함된 쿼리 세부 정보 페이지를 표시합니다.
+ **Open query in a new tab**(새 탭에서 쿼리 열기) - 새 편집기 탭을 열고 선택한 쿼리로 이동합니다. 계속 연결되어 있으면 클러스터 또는 작업 그룹 및 데이터베이스가 자동으로 선택됩니다. 쿼리를 실행하려면 먼저 올바른 클러스터 또는 작업 그룹과 데이터베이스가 선택되었는지 확인합니다.
+ **Open source tab**(소스 탭 열기) - 계속 열려 있는 경우 쿼리 실행 시 쿼리가 포함된 편집기 또는 노트북 탭으로 이동합니다. 쿼리가 실행된 후에 편집기 또는 노트북의 내용이 변경되었을 수 있습니다.
+ **Open saved query**(저장된 쿼리 열기) - 편집기 또는 노트북 탭으로 이동하여 쿼리를 엽니다.

또한 **Editor**(편집기) 탭에서 실행된 쿼리 기록 또는 **Notebook**(노트북) 탭에서 실행된 쿼리 기록을 볼 수도 있습니다. 탭에서 쿼리 기록을 보려면 **Tab history**(탭 기록)를 선택합니다. 탭 기록 내에서 다음 작업을 수행할 수 있습니다.
+ **Copy query**(쿼리 복사) - 쿼리 버전 SQL 내용을 클립보드에 복사합니다.
+ **Open query in a new tab**(새 탭에서 쿼리 열기) - 새 편집기 탭을 열고 선택한 쿼리로 이동합니다. 쿼리를 실행하려면 클러스터 또는 워크그룹과 데이터베이스를 선택해야 합니다.
+ **View query details**(쿼리 세부 정보 보기) - 실행된 쿼리에 대한 자세한 정보가 포함된 쿼리 세부 정보 페이지를 표시합니다.

# Amazon Q 생성형 SQL과의 상호 작용
<a name="query-editor-v2-generative-ai"></a>

**참고**  
Amazon Q 생성형 SQL 지원은 다음 AWS 리전에서만 이용할 수 있습니다.  
미국 동부(버지니아 북부) 리전(us-east-1)
미국 동부(오하이오) 리전(us-east-2)
미국 서부(오레곤) 리전(us-west-2)
아시아 태평양(뭄바이) 리전(ap-south-1)
아시아 태평양(서울) 리전(ap-northeast-2)
아시아 태평양(싱가포르) 리전(ap-southeast-1)
아시아 태평양(시드니) 리전(ap-southeast-2)
아시아 태평양(도쿄) 리전(ap-northeast-1)
캐나다(중부) 리전(ca-central-1)
유럽(프랑크푸르트) 리전(eu-central-1)
유럽(아일랜드) 리전(eu-west-1)
유럽(런던) 리전(eu-west-2)
유럽(파리) 리전(eu-west-3)
남아메리카(상파울루) 리전(sa-east-1)
자세한 내용은 *Amazon Q Developer 사용 설명서*의 [Cross region inference in Amazon Q Developer](https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/cross-region-inference.html) 섹션을 참조하세요.

Amazon Redshift 쿼리 에디터 v2에서 Amazon Q 생성형 SQL 기능을 사용할 수 있습니다. 생성형 SQL은 프롬프트와 데이터베이스 스키마를 기반으로 SQL 문을 생성하는 코딩 도우미입니다. 이 코딩 도우미는 쿼리 에디터 v2에서 노트북을 작성하는 동안 사용할 수 있습니다. 생성된 SQL은 노트북이 연결된 데이터베이스용입니다.

Amazon Q 생성형 SQL과 상호 작용할 경우 구체적인 질문을 하고, 복잡한 요청이 있으면 반복하고, 답변이 정확한지 검증합니다.

자연어로 분석 요청을 제공할 때는 코딩 도우미가 필요한 내용을 정확히 이해할 수 있도록 최대한 구체적으로 작성하세요. 'find top venues that sold the most tickets(티켓을 가장 많이 판매한 공연장을 찾아줘)'라고 묻는 대신 '2008년에 티켓을 가장 많이 판매한 공연장 세 개의 이름/ID를 찾아줘(find names/ids of top three venues that sold the most tickets in 2008)'와 같이 세부 정보를 더 제공하세요. 객체를 알고 있을 경우 데이터베이스에서 일관되고 구체적인 객체 이름을 사용합니다. 동일한 객체를 서로 다른 방식으로 참조하면 도우미에게 혼동을 줄 수 있으므로 데이터베이스에 정의된 스키마, 테이블, 열 이름 등을 사용합니다.

복잡한 요청을 도우미가 해석하기 쉬운 여러 개의 간단한 명령문으로 나누세요. 반복적으로 후속 질문을 하면 도우미로부터 더 자세한 분석을 받을 수 있습니다. 예를 들어, 먼저 'which state has the most venues?(공연장이 가장 많은 주가 어디야?)'라고 물어보세요. 그런 다음 답변을 바탕으로 'which is the most popular venue from this state?(이 주에서 가장 인기 있는 공연장은 어디야?)'라고 물어보세요.

생성된 SQL을 실행하기 전에 검토하여 정확성을 확인하세요. 생성된 SQL 쿼리에 오류가 있거나 의도와 맞지 않는 경우 요청을 완전히 바꾸는 대신 도우미에게 수정 방법에 대한 지침을 제공하세요. 예를 들어, 쿼리에 연도의 조건자 절이 누락된 경우 '2008년을 기준으로 공연장을 알려줘'라고 요청하세요.

생성된 SQL을 실행하여 받은 오류 텍스트를 Amazon Q 생성형 SQL에 프롬프트로 다시 제출합니다. 이러한 오류를 통해 학습하여 더 나은 SQL이 생성됩니다.

스키마를 사용해야 한다는 신호를 보내려면 SQL 검색 경로에 스키마를 추가합니다. 예를 들어 데이터가 퍼블릭 스키마가 아닌 tickit 스키마에 있으면 tickit 스키마를 추가합니다.

```
set search_path to '$user', tickit;
```

## Amazon Q 생성형 SQL과 상호 작용할 경우의 고려 사항
<a name="query-editor-v2-generative-ai-considerations"></a>

채팅 패널을 사용할 때 다음 사항을 고려하세요.
+ 계정의 쿼리 에디터 v2 관리자가 **생성형 SQL 설정** 페이지에서 채팅 기능을 활성화한 상태여야 합니다.
+ Amazon Q 생성형 SQL을 사용하려면 Query Editor V2의 AWS 관리형 정책에 지정된 기타 권한 외에도 IAM 정책의 `sqlworkbench:GetQSqlRecommendations` 권한이 필요합니다. AWS 관리형 정책에 대한 자세한 정보는 [쿼리 편집기 v2에 액세스](query-editor-v2-getting-started.md#query-editor-v2-configure) 단원을 참조하세요.
+ 질문은 영어로 작성해야 합니다.
+ 질문은 클러스터 또는 작업 그룹에 연결된 데이터베이스를 참조해야 합니다. 빈 상태 오류를 방지하려면 데이터베이스에 하나 이상의 테이블과 어느 정도의 데이터가 있어야 합니다.
+ 질문은 연결된 데이터베이스에 저장된 데이터를 참조해야 합니다. 외부 스키마는 참조할 수 없습니다. 지원되는 스키마에 대한 자세한 내용은 **Amazon Redshift 데이터베이스 개발자 안내서의 [Create schema](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_EXTERNAL_SCHEMA.html)를 참조하세요.
+ SQL 생성으로 인해 연결된 데이터베이스가 변경되는 질문을 하면 경고가 발생할 수 있습니다.
+ 생성형 AI 기술은 새로운 기술이며 응답에 할루시네이션이라고 하는 실수가 있을 수 있습니다. 환경 또는 워크로드에서 사용하기 전에 오류와 취약성이 있는지 모든 코드를 테스트하고 검토하세요.
+ 계정의 다른 사용자가 실행한 SQL 쿼리를 공유하여 제안을 개선할 수 있습니다. 계정 관리자는 다음 SQL 명령을 실행하여 계정의 쿼리 기록에 대한 액세스를 허용할 수 있습니다.

  ```
  GRANT ROLE SYS:MONITOR to "IAMR:role-name";
  GRANT ROLE SYS:MONITOR to "IAM:user-name";
  GRANT ROLE SYS:MONITOR to "database-username";
  ```

  `SYS:MONITOR`에 대한 자세한 내용은 **Amazon Redshift 데이터베이스 개발자 안내서의 [Amazon Redshift 시스템 정의 역할](https://docs.aws.amazon.com/redshift/latest/dg/r_roles-default.html)을 참조하세요.
+ 데이터는 안전하고 공개되지 않습니다. 데이터는 계정 간에 공유되지 않습니다. 쿼리, 데이터, 데이터베이스 스키마는 생성형 AI 파운데이션 모델(FM)을 훈련하는 데 사용되지 않습니다. 입력은 FM에 대한 맥락적 프롬프트로 질문자의 쿼리에만 답변하는 데 사용됩니다.

# 생성형 SQL 사용
<a name="query-editor-v2-generative-ai-interact"></a>

올바른 권한을 구성한 후 쿼리 에디터 v2에서 노트북으로 작업할 때 아이콘을 선택하여 대화를 시작할 수 있습니다.

**Amazon Q 생성형 SQL 채팅을 사용하여 상호 작용하려면 생성형 SQL에 대해 다음과 같이 합니다.**

1. 쿼리 에디터 v2의 **편집기** 탭에서 노트북을 엽니다.

1. ![\[Generative SQL panel\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/images/qev2-amazon-q.png) 생성형 SQL 아이콘을 선택한 다음 채팅 패널에서 안내를 따라 Amazon Redshift 쿼리 에디터 v2 생성형 SQL에 질문하세요.

   프롬프트 필드에 질문을 입력하면 Amazon Q 생성형 SQL에서 제안 SQL을 포함해 응답합니다. 오류가 발생하면 채팅 패널에 반환됩니다.

1. **노트북에 추가**를 선택하여 프롬프트가 있는 마크다운 셀과 제안된 SQL이 포함된 SQL 셀을 노트북에 추가합니다.

1. (선택 사항) 유용한 피드백 아이콘(![\[Helpful feedback\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/images/qev2-thumbs-up.png)) 또는 유용하지 않은 피드백 아이콘(![\[Not helpful feedback\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/images/qev2-thumbs-down.png))을 선택하여 생성된 SQL에 관한 피드백을 제공합니다. 유용하지 않은 피드백은 `Incorrect tables/columns`, `Incorrect predicates/literals/group bys`, `Incorrect SQL structure`, `Other`로 분류할 수 있습니다. 또한 SQL의 정확도에 대한 피드백과 함께 몇 가지 자유 형식 텍스트를 제공할 수 있습니다.

1. (선택 사항) 동일한 프롬프트에 대해 다른 응답을 생성하려면 **SQL 재생성**을 선택합니다. 현재 프롬프트에서 **SQL 재생성**을 한 번 시도할 수 있습니다.

1. (선택 사항) 생성형 SQL 채팅 패널에서 ![\[More\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/images/qev2-vmore.png) **더 보기** 아이콘을 선택한 다음 **데이터베이스 새로 고침**을 선택하여 연결된 데이터베이스를 설명하는 메타데이터를 새로 고칩니다. 이 메타데이터에는 데이터베이스의 스키마, 테이블 및 열에 대한 정의가 포함됩니다.

# 관리자 권한으로 생성형 SQL 설정 업데이트
<a name="query-editor-v2-generative-ai-settings"></a>

적절한 IAM 권한을 가진 사용자는 같은 AWS 계정 내의 다른 사용자에 대한 **생성형 SQL 설정**을 보고 변경할 수 있습니다. 이 관리자는 쿼리 에디터 v2의 AWS 관리형 정책에 지정된 다른 권한 외에도 IAM 정책의 `sqlworkbench:UpdateAccountQSqlSettings` 권한이 있어야 합니다. 관리형 정책에 대한 자세한 정보는 [쿼리 편집기 v2를 사용하는 데 필요한 권한](redshift-iam-access-control-identity-based.md#redshift-policy-resources.required-permissions.query-editor-v2)단원을 참조하세요.

**관리자가 계정의 모든 사용자에 대해 생성형 SQL 채팅을 활성화하는 방법**

1. ![\[Settings\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/images/qev2-cog.png) **설정** 아이콘을 사용하여 다양한 설정 화면의 메뉴를 표시합니다.

1. 그런 다음 ![\[Generative SQL settings\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/images/qev2-amazon-q.png) 생성형 SQL 설정 아이콘을 선택하여 **Q 생성형 SQL 설정** 페이지를 표시합니다.

1. **Q 생성형 SQL 설정**을 선택하여 계정 내 사용자에서 생성형 SQL 기능을 켭니다.

   Amazon Q 생성형 SQL 기능을 사용 설정하면 할당에 남아 있는 프롬프트 수를 확인할 수 있습니다. Query Editor V2 관리자에서 계정의 사용자가 Amazon Q Developer Pro 티어를 사용할 수 있습니다. Pro 티어를 사용하려면 IAM Identity Center로 사용자를 설정하고 각 사용자가 Amazon Q Developer Pro 티어를 구독하도록 합니다. Amazon Redshift로 IAM Identity Center 설정에 관한 자세한 내용은 [Single Sign-On 경험을 위해 Redshift와 AWS IAM Identity Center 연결](redshift-iam-access-control-idp-connect.md) 섹션을 참조하시기 바랍니다. Amazon Q Developer 요금에 관한 자세한 내용은 [Amazon Q Developer 요금](https://aws.amazon.com/q/developer/pricing/) 섹션을 참조하시기 바랍니다.

   Amazon Q Developer 프리 티어를 사용하는 경우 AWS 계정의 모든 사용자에 대한 총 프롬프트 수는 한 달에 1,000개로 제한됩니다. Amazon Q Developer Pro 티어를 사용하는 경우 각 사용자가 제출할 수 있는 총 프롬프트 수는 한 달에 1,000개로 제한됩니다. **설정** 페이지에서 사용 가능한 프롬프트 수를 확인할 수 있습니다. Amazon Q Developer 요금에 관한 자세한 내용은 [Amazon Q Developer 요금](https://aws.amazon.com/q/developer/pricing/) 섹션을 참조하시기 바랍니다.

## 사용자 지정 컨텍스트
<a name="query-editor-v2-generative-custom-context"></a>

Query Editor V2 관리자는 생성형 SQL을 환경에 맞춤화하도록 *사용자 지정 컨텍스트*를 지정할 수 있습니다. 사용자 지정 컨텍스트는 도메인 지식과 기본 설정을 제공하여 SQL 생성에 대한 세분화된 제어 기능을 제공합니다. 사용자 지정 컨텍스트는 Query Editor V2 관리자가 Amazon Q 생성형 SQL에 업로드할 수 있는 JSON 파일에 정의됩니다.

데이터 웨어하우스의 생성형 SQL을 맞춤화하는 데 사용되는 JSON 키는 다음과 같습니다.

모든 테이블 참조는 3부분 표기법(`database.schema.table`)을 따라야 합니다.

**리소스**  
리소스는 사용자 지정 컨텍스트가 적용되는 데이터 자산의 범위 또는 비중을 지정합니다.

**ResourceId**  
고유한 리소스 식별자를 지정합니다. Amazon Redshift 클러스터에서 `cluster id`를 지정합니다. Redshift 서버리스 작업 그룹에서 `workgroup name`을 지정합니다.

**ResourceType**  
유효한 값: `REDSHIFT_WAREHOUSE`.

**TablesToInclude**  
SQL 생성에 고려되는 테이블 모음을 지정합니다. 이 필드는 SQL 쿼리 범위를 사용 가능한 테이블의 정의된 하위 집합으로 제한하려는 경우에 매우 중요합니다. 불필요한 테이블 참조를 줄여 생성 프로세스를 최적화하는 데 도움이 될 수 있습니다. 쿼리 생성을 더 미세하게 제어하려고 `TablesToExclude`와 이 필드를 페어링할 수 있습니다.

**TablesToExclude**  
SQL 생성에서 제외되는 테이블 모음을 지정합니다. 이 옵션은 특정 테이블이 관련이 없거나 쿼리 생성 프로세스에서 영향을 주면 안 되는 경우에 사용합니다.

**TableAnnotations**  
사용 중인 테이블에 관한 메타데이터 또는 보충 정보를 제공합니다. 이러한 주석에는 테이블 설명, 사용 정보 또는 Amazon Q 생성형 SQL이 테이블의 컨텍스트 또는 구조를 더 잘 이해하는 데 도움이 되는 추가 속성이 포함될 수 있습니다. 이는 테이블 정의에 명확성을 더하여 SQL 생성의 정확도를 높이는 데 중요합니다.

**ColumnsToInclude**  
생성형 SQL 쿼리 시 지정된 테이블에서 어떤 열이 포함되는지를 정의합니다. 이 필드는 Amazon Q 생성형 SQL이 관련 열에 집중하고 데이터 검색 범위를 좁혀 성능을 개선하는 데 도움이 됩니다. 이렇게 하면 Amazon Q 생성형 SQL이 지정된 쿼리 컨텍스트에 필요한 데이터만 가져옵니다.

**ColumnsToExclude**  
SQL 생성에서 영향을 주지 않도록 제외할 열을 지정합니다. 특정 열에 Amazon Q 생성형 SQL에서 영향을 주면 안 되는 관련이 없거나 중복된 데이터가 포함되어 있는 경우에 사용할 수 있습니다. 열 포함 및 제외를 관리하여 결과를 구체화하고 검색된 데이터에 대한 제어 기능을 유지 관리할 수 있습니다.

**ColumnAnnotations**  
`TableAnnotations`와 마찬가지로 이 필드는 각 열별로 메타데이터 또는 주석을 제공합니다. 이러한 주석을 통해 열 정의 또는 특정 처리 지침에 대한 인사이트를 제공할 수 있습니다. 이 정보는 SQL 생성 프로세스를 안내하고 쿼리에서 열이 적절하게 사용되도록 하는 데 유용합니다.

**CuratedQueries**  
미리 정의된 질문 및 답변 예제 모음이며, 질문은 자연어(NLQ)로 작성되고 답변으로 해당 SQL 쿼리가 반환됩니다. 이러한 예제를 통해 Amazon Q 생성형 SQL에서 생성되어야 하는 쿼리 유형을 이해할 수 있습니다. 예제는 Amazon Q 생성형 SQL 출력의 정확도와 관련성을 개선하기 위한 기준점 역할을 합니다.

**CustomDocuments**  
정의, 도메인별 지식 또는 설명 등 Amazon Q 생성형 SQL에 제공되는 추가 정보 또는 힌트입니다. 사업부에서 고유한 방식으로 값을 계산하는 경우를 예로 들 수 있습니다. '제조 팀의 총매출은 가격\$1수익'이며, 여기에서 문서화할 수 있습니다. 이러한 문서는 추가 컨텍스트를 제공하여 자연어 입력을 해석하는 Amazon Q 생성형 SQL의 기능을 향상시킵니다.

**AdditionalTables**  
SQL 생성에 영향을 줘야 하지만 데이터 웨어하우스에 저장된 일부 데이터에 포함되지 않은 추가 테이블을 지정합니다. 이렇게 하면 Amazon Q 생성형 SQL에서 외부 데이터 소스를 SQL 생성 로직에 통합하여 복잡한 데이터 환경을 처리할 수 있는 용량을 확장할 수 있습니다.

**AppendToPrompt**  
SQL 생성 프로세스를 안내하도록 Amazon Q 생성형 SQL에 제공되는 추가 지침 또는 가이드라인입니다. 여기에는 쿼리를 구조화하는 방법에 대한 특정 지침, 특정 SQL 구문에 대한 기본 설정 또는 Amazon Q 생성형 SQL 출력의 품질을 향상시키는 기타 개괄적인 지침이 포함될 수 있습니다.

다음 사용자 지정 컨텍스트 예제에서는 JSON 파일의 형식을 보여 주며, 다음 항목을 정의합니다.
+ `mycluster` 클러스터에 대한 Amazon Redshift 데이터 웨어하우스의 사용자 지정 컨텍스트를 정의합니다.
+ SQL 생성 프로세스를 최적화하는 데 도움이 되도록 포함 및 제외할 특정 테이블과 열을 정의합니다.
+ 포함할 직접 호출된 테이블 및 열에 대한 주석을 정의합니다.
+ Amazon Q 생성형 SQL에서 사용할 엄선된 샘플 쿼리를 정의합니다.
+ 생성형 SQL 사용 시의 사용자 지정 문서와 가드레일을 정의합니다.
+ 생성형 SQL 사용 시의 추가 테이블에 대한 DDL을 정의합니다.

```
{
    "resources": [
        {
            "ResourceId": "mycluster",
            "ResourceType": "REDSHIFT_WAREHOUSE",
            "TablesToInclude": [
                "database.schema.table1",
                "database.schema.table2"
            ],
            "TablesToExclude": [
                "database.schema.table3",
                "database.schema.table4"
            ],
            "ColumnsToInclude": {
                "database.schema.table1": [
                    "col1",
                    "col2"
                ],
                "database.schema.table2": [
                    "col1",
                    "col2"
                ]
            },
            "ColumnsToExclude": {
                "database.schema.table5": [
                    "col1",
                    "col2"
                ],
                "database.schema.table6": [
                    "col1",
                    "col2"
                ]
            },
            "TableAnnotations": {
                "database.schema.table1": "table1 refers to Q3 sales",
                "database.schema.table2": "table2 refers to Q4 sales"
            },
            "ColumnAnnotations": {
                "database.schema.table1": {
                    "col1": "col1 refers to Q3 sale total",
                    "col2": "col2 refers to sale location"
                },
                "database.schema.table2": {
                    "col1": "col2 refers to Q4 sale total",
                    "col2": "col2 refers to sale location"
                }
            },
            "CuratedQueries": [
                {
                    "Question": "what is the sales data for Q3",
                    "Answer": "SELECT * FROM table1"
                },
                {
                    "Question": "what is the sales data for Q4",
                    "Answer": "SELECT * FROM table2"
                }
            ],
            "CustomDocuments": [
                "in manufacturing division total sales is price * revenue",
                "in research division total sales is price * revenue"
            ],
            "AdditionalTables": {
                "database.schema.table8": "create table database.schema.table8(col1 int)",
                "database.schema.table9": "create table database.schema.table9(col1 int)"
            },
            "AppendToPrompt": "Apply these guardrails: Queries should never return the secretId field of a user."
        }
    ]
}
```

# 자습서: TICKIT 데이터와 함께 Amazon Q 생성형 SQL 기능 사용
<a name="query-editor-v2-generative-ai-example"></a>

SQL을 생성하기 위한 효율적인 프롬프트를 작성하려면 데이터베이스 스키마와 데이터에 대해 알아야 합니다. TICKIT 데이터는 팩트 테이블 2개와 차원 테이블 5개, 총 7개의 테이블로 구성되어 있습니다. 샘플 데이터에는 2008년에 발생한 엔터테인먼트 이벤트 참석자에 대한 판매 기록이 포함되어 있습니다. TICKIT 데이터 스키마에 대한 자세한 내용은 **Amazon Redshift 데이터베이스 개발자 안내서의 [샘플 데이터베이스](https://docs.aws.amazon.com/redshift/latest/dg/c_sampledb.html)를 참조하세요. Amazon Redshift 콘솔과 쿼리 에디터 v2에서 다양한 방법을 사용하여 TICKIT 데이터를 데이터베이스에 로드할 수 있습니다. 쿼리 에디터 v2는 TICKIT 데이터를 `sample_data_dev` 데이터베이스에 로드하는 방법을 제공합니다. 자세한 내용은 [데이터를 데이터베이스로 로드](query-editor-v2-loading.md) 섹션을 참조하세요. TICKIT 데이터에 대한 예시 프롬프트 또한 제공합니다. 다음 시나리오는 TICKIT 샘플 데이터에 대한 SQL을 생성하기 위한 생성형 SQL과의 대화를 설명합니다. 이 시나리오에서는 TICKIT 샘플 데이터가 Amazon Redshift 클러스터의 `dev` 데이터베이스에 이미 생성되어 있습니다.

**참고**  
이 예는 대화를 설명하기 위한 것입니다. 동일한 프롬프트를 사용해도 사용자가 받는 생성형 SQL의 응답이 여기에 나온 결과와 일치하지 않을 수 있습니다.

**Amazon Q 생성형 SQL과의 상호 작용 예제**

1. **편집기**에서 TICKIT 샘플 데이터가 포함된 클러스터 또는 작업 그룹에 연결합니다.

1. 빈 노트북을 만들고 ![\[Generative SQL\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/images/qev2-amazon-q.png) 생성형 SQL 아이콘을 선택하여 채팅 패널을 엽니다.

1. 다음 프롬프트를 입력하여 `VENUE` 테이블의 레코드 수를 확인하기 위한 SQL을 생성합니다.

   ```
   How many venues are there?
   ```

   ```
   SELECT
     COUNT(*) AS num_venues
   FROM
     tickit.venue
   ```

   **노트북에 추가**를 선택하여 열려 있는 노트북에 두 개의 셀을 추가합니다. 'How many venues are there?'라는 마크다운 셀 1개와 생성된 SQL이 들어 있는 셀 1개입니다.

   SQL 셀에서 **실행**을 선택하여 결과를 수신합니다.

   ```
   count
   ------
   202
   ```

1. 다른 버전의 SQL을 요청하려면 **SQL 재생성**을 선택하면 다음과 같은 답변을 받을 수 있습니다.

   ```
   SELECT
     venuestate,
     COUNT(*) AS num_venues
   FROM
     tickit.venue
   GROUP BY
     venuestate
   ```

   **노트북에 추가**를 선택하여 열려 있는 노트북에 두 개의 셀을 더 추가합니다. 'How many venues are there?'라는 마크다운 셀 1개와 생성된 SQL이 들어 있는 셀 1개입니다.

   SQL 셀에서 **실행**을 선택하여 번호별로 공연장이 있는 주가 나열된 결과를 수신합니다.

   ```
   venuestate num_venues
   ----------------------
   MA         4	
   OH         8	
   MI         5	
   ...
   ```

1. 생성형 SQL 도우미는 사용자가 질문하는 내용을 추측할 수 있습니다. 데이터베이스에 위젯이 없더라도 질문할 수 있습니다. 이 경우 SQL을 생성할 수 없다는 메시지가 표시됩니다.

   ```
   How many widgets are there?
   ```

   ```
   I was not able to generate any SQL
   ```

1. 데이터베이스를 더 자세히 파악하면 더 구체적인 질문으로 SQL을 생성할 수 있습니다. 예를 들어, 데이터베이스에 2008년 몇 개월간의 판매 데이터가 들어 있다는 것을 알고 있다면 다음 프롬프트를 입력하여 SQL을 생성하여 2008년 11월의 판매량을 구할 수 있습니다.

   ```
   How many sales were there in November 2008?
   ```

   ```
   SELECT
     COUNT(*) AS num_sales
   FROM
     tickit.sales s
     JOIN tickit.date d ON s.dateid = d.dateid
   WHERE
     d.month = 'November'
     AND d.year = 2008
   ```

   **노트북에 추가**를 선택하여 열려 있는 노트북에 두 개의 셀을 추가합니다. 'How many sales were there in November 2008?'이라는 마크다운 셀 한 개와 생성된 SQL이 들어 있는 셀 1개입니다.

   SQL 셀에서 **실행**을 선택하여 결과를 수신합니다.

   ```
   num_sales
   -----
   0
   ```

   원했던 결과가 나오지 않았습니다.

1. `date.month='November'` 조건자는 DATE 테이블의 월이 약어로 표현될 것으로 예상한다는 것을 알 수 있습니다. 조건자를 `d.month='NOV'`로 변경하고 SQL을 다시 실행합니다.

   ```
   SELECT
     COUNT(*)
   FROM
     sales
     JOIN date ON sales.dateid = date.dateid
   WHERE
     date.month = 'NOV'
     AND date.year = 2008
   ```

   SQL 셀에서 **실행**을 선택하여 새 결과를 가져옵니다.

   ```
   count
   -----
   14261
   ```

1. 연결된 데이터베이스를 변경하려는 질문을 하면 권장 SQL과 함께 경고 메시지가 반환됩니다. 데이터를 테이블에 삽입하는 SQL을 생성하려면 다음 프롬프트를 입력합니다.

   ```
   Insert 1 into the venue table.
   ```

   ```
   INSERT
   ,
   UPDATE
     OR delete data
   FROM
     the database AS that could potentially change the data.Please provide a query that ONLY selects data
   ```

   ```
   I was not able to generate the correct SQL code. I generated SQL, but you'll have to edit it to work with your database.
   ```

   **노트북에 추가**를 선택하여 열려 있는 노트북에 두 개의 셀을 추가하고 SQL을 실행하면 SQL이 실패합니다.

   ```
   ERROR: syntax error at or near "," Position: 132 [ErrorId: 1-6546764a-011df2691778846219ce6ec2]
   ```

이 시나리오에는 Amazon Q 생성형 SQL과 상호 작용하는 몇 가지 기본 방법만 나와 있습니다. 이 생성형 AI 기술을 더 다양하게 실험하여 데이터베이스 쿼리를 위한 SQL 작성을 시작해 볼 수 있습니다.

# 데이터를 데이터베이스로 로드
<a name="query-editor-v2-loading"></a>

쿼리 편집기 v2를 사용하여 Amazon Redshift 클러스터 또는 작업 그룹의 데이터베이스에 데이터를 로드할 수 있습니다. 이 섹션에서는 샘플 데이터, S3의 데이터, 로컬 파일 설정 및 워크플로의 데이터를 로드하는 방법을 다룹니다.

## 샘플 데이터
<a name="query-editor-v2-loading-sample-data"></a>

쿼리 편집기 v2는 샘플 데이터베이스 및 해당 스키마에 로드할 수 있는 샘플 데이터 및 노트북과 함께 제공됩니다.

샘플 데이터를 로드하려면 로드하려는 샘플 데이터와 연결된 ![\[External\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/images/external.png) 아이콘을 선택합니다. 그런 다음 Query Editor V2는 `sample_data_dev` 데이터베이스의 스키마에 데이터를 로드하고 저장된 노트북 폴더를 만듭니다.

다음 샘플 데이터 세트를 사용할 수 있습니다.

**tickit**  
Amazon Redshift 설명서에 나오는 예제에서는 대부분 `tickit`이라는 샘플 데이터를 사용합니다. 이 데이터는 팩트 테이블 2개와 차원 테이블 5개, 총 7개의 테이블로 구성되어 있습니다. 이 데이터를 로드하면 `tickit` 스키마가 샘플 데이터로 업데이트됩니다. `tickit` 데이터에 대한 자세한 내용은 *Amazon Redshift 데이터베이스 개발자 안내서*의 [샘플 데이터베이스](https://docs.aws.amazon.com/redshift/latest/dg/c_sampledb.html)를 참조하세요.

**tpch**  
이 데이터는 의사 결정 지원 벤치마크에 사용됩니다. 이 데이터를 로드하면 `tpch` 스키마가 샘플 데이터로 업데이트됩니다. `tpch` 데이터에 대한 자세한 내용은 [TPC-H](http://www.tpc.org/tpch/)를 참조하세요.

**tpcds**  
이 데이터는 의사 결정 지원 벤치마크에 사용됩니다. 이 데이터를 로드하면 `tpcds` 스키마가 샘플 데이터로 업데이트됩니다. `tpcds` 데이터에 대한 자세한 내용은 [TPC-DS](http://www.tpc.org/tpcds/)를 참조하세요.

# Amazon S3에서 데이터 로드
<a name="query-editor-v2-loading-data"></a>

Amazon S3 데이터를 기존 테이블 또는 새로운 테이블로 로드할 수 있습니다.

**기존 테이블에 데이터를 로드하려면**

COPY 명령은 쿼리 편집기 v2가 Amazon S3에서 데이터를 로드하는 데 사용됩니다. 쿼리 편집기 v2 데이터 로드 마법사에서 생성되고 사용되는 COPY 명령은 Amazon S3에서 복사하기 위해 COPY 명령 구문에 사용할 수 있는 많은 파라미터를 지원합니다. COPY 명령 및 Amazon S3에서 데이터를 로드하는 데 사용되는 옵션에 대한 자세한 내용은 *Amazon Redshift 데이터베이스 개발자 안내서*의 [Amazon S3에서 COPY](https://docs.aws.amazon.com/redshift/latest/dg/copy-parameters-data-source-s3.html)를 참조하세요.

1. 데이터를 로드하려는 데이터베이스에 테이블이 이미 생성되었는지 확인합니다.

1. 계속하기 전에 쿼리 에디터 v2의 트리 뷰 패널에서 대상 데이터베이스에 연결되어 있는지 확인합니다. 컨텍스트 메뉴(마우스 오른쪽 버튼 클릭)를 사용하여 데이터를 로드할 클러스터 또는 작업 그룹에 연결할 수 있습니다.

   ![\[Load\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/images/qev2-upload.png)**데이터 로드(Load data)**를 선택합니다.

1. **데이터 소스**에서 **S3에서 로드**를 선택합니다.

1. **S3 URI(S3 URIs)**에서 **S3 찾아보기(Browse S3)**를 선택하여 로드할 데이터가 들어 있는 Amazon S3 버킷을 찾습니다.

1. 지정된 Amazon S3 버킷이 대상 테이블과 동일한 AWS 리전에 있지 않은 경우 데이터가 있는 AWS 리전에 대한 **S3 file location**(S3 파일 위치)을 선택합니다.

1. Amazon S3 파일이 실제로 여러 Amazon S3 버킷 URI를 포함하는 매니페스트인 경우 **이 파일은 매니페스트 파일임(This file is a manifest file)**을 선택합니다.

1. 업로드할 파일의 **파일 형식(File format)**을 선택합니다. 지원되는 데이터 형식은 CSV, JSON, DELIMITER, FIXEDWIDTH, SHAPEFILE, AVRO, PARQUET 및 ORC입니다. 지정된 파일 형식에 따라 해당 **파일 옵션(File options)**을 선택할 수 있습니다. 데이터가 암호화된 경우 **데이터가 암호화됨(Data is encrypted)**을 선택하고 데이터 암호화에 사용된 KMS 키의 Amazon 리소스 이름(ARN)을 입력할 수도 있습니다.

   CSV 또는 DELIMITER를 선택하면 **구분자 문자**를 선택하고, 지정한 수의 행이 실제로 열 이름이고 로드할 데이터가 아닌 경우 **헤더 행을 무시**할지 여부도 선택할 수 있습니다.

1. 파일을 압축할 압축 방법을 선택합니다. 기본값은 압축 안 함(no compression)입니다.

1. (선택 사항) **고급 설정(Advanced settings)**은 다양한 **데이터 변환 파라미터(Data conversion parameters)**와 **로드 작업(Load operations)**을 지원합니다. 파일에 필요한 대로 이 정보를 입력합니다.

   데이터 변환 및 데이터 로드 파라미터에 대한 자세한 내용은 *Amazon Redshift 데이터베이스 개발자 안내서*의 [데이터 변환 파라미터](https://docs.aws.amazon.com/redshift/latest/dg/copy-parameters-data-conversion.html)와 [데이터 로드 작업](https://docs.aws.amazon.com/redshift/latest/dg/copy-parameters-data-load.html)을 참조하세요.

1. **다음**을 선택합니다.

1. **기존 테이블 로드**를 선택합니다.

1. 데이터가 로드되는 **클러스터 또는 작업 그룹**, **데이터베이스**, **스키마** 및 **테이블** 이름을 포함한 **대상 테이블**의 위치를 확인하거나 선택합니다.

1. Amazon S3에서 데이터를 로드하는 데 필요한 권한이 있는 **IAM 역할**을 선택합니다.

1. (선택 사항) 열 이름을 선택하여 **Column mapping**(열 매핑)에 이름을 입력하면 입력 데이터 파일의 순서대로 열이 매핑됩니다.

1. **데이터 로드(Load data)**를 선택하여 데이터 로드를 시작합니다.

   로드가 완료되면 데이터를 로드하는 데 사용된 생성된 COPY 명령과 함께 쿼리 편집기가 표시됩니다. COPY의 **결과(Result)**가 표시됩니다. 성공하면 이제 SQL을 사용하여 로드된 테이블에서 데이터를 선택할 수 있습니다. 오류가 발생하면 시스템 보기 STL\$1LOAD\$1ERRORS를 쿼리하여 자세한 내용을 확인합니다. COPY 명령 오류에 대한 내용은 *Amazon Redshift Database 개발자 안내서*의 [STL\$1LOAD\$1ERRORS](https://docs.aws.amazon.com/redshift/latest/dg/r_STL_LOAD_ERRORS.html)를 참조하세요.

새 테이블에 데이터를 로드하면 쿼리 에디터 v2가 먼저 데이터베이스에 테이블을 생성한 다음 동일한 워크플로우에서 별도의 작업으로 데이터를 로드합니다.

**새로운 테이블에 데이터 로드**

COPY 명령은 쿼리 편집기 v2가 Amazon S3에서 데이터를 로드하는 데 사용됩니다. 쿼리 편집기 v2 데이터 로드 마법사에서 생성되고 사용되는 COPY 명령은 Amazon S3에서 복사하기 위해 COPY 명령 구문에 사용할 수 있는 많은 파라미터를 지원합니다. COPY 명령 및 Amazon S3에서 데이터를 로드하는 데 사용되는 옵션에 대한 자세한 내용은 *Amazon Redshift 데이터베이스 개발자 안내서*의 [Amazon S3에서 COPY](https://docs.aws.amazon.com/redshift/latest/dg/copy-parameters-data-source-s3.html)를 참조하세요.

1. 계속하기 전에 쿼리 에디터 v2의 트리 뷰 패널에서 대상 데이터베이스에 연결되어 있는지 확인합니다. 컨텍스트 메뉴(마우스 오른쪽 버튼 클릭)를 사용하여 데이터를 로드할 클러스터 또는 작업 그룹에 연결할 수 있습니다.

   ![\[Load\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/images/qev2-upload.png)**데이터 로드(Load data)**를 선택합니다.

1. **데이터 소스**에서 **S3에서 로드**를 선택합니다.

1. **S3 URI(S3 URIs)**에서 **S3 찾아보기(Browse S3)**를 선택하여 로드할 데이터가 들어 있는 Amazon S3 버킷을 찾습니다.

1. 지정된 Amazon S3 버킷이 대상 테이블과 동일한 AWS 리전에 있지 않은 경우 데이터가 있는 AWS 리전에 대한 **S3 file location**(S3 파일 위치)을 선택합니다.

1. Amazon S3 파일이 실제로 여러 Amazon S3 버킷 URI를 포함하는 매니페스트인 경우 **이 파일은 매니페스트 파일임(This file is a manifest file)**을 선택합니다.

1. 업로드할 파일의 **파일 형식(File format)**을 선택합니다. 지원되는 데이터 형식은 CSV, JSON, DELIMITER, FIXEDWIDTH, SHAPEFILE, AVRO, PARQUET 및 ORC입니다. 지정된 파일 형식에 따라 해당 **파일 옵션(File options)**을 선택할 수 있습니다. 데이터가 암호화된 경우 **데이터가 암호화됨(Data is encrypted)**을 선택하고 데이터 암호화에 사용된 KMS 키의 Amazon 리소스 이름(ARN)을 입력할 수도 있습니다.

   CSV 또는 DELIMITER를 선택하면 **구분자 문자**를 선택하고, 지정한 수의 행이 실제로 열 이름이고 로드할 데이터가 아닌 경우 **헤더 행을 무시**할지 여부도 선택할 수 있습니다.

1. 파일을 압축할 압축 방법을 선택합니다. 기본값은 압축 안 함(no compression)입니다.

1. (선택 사항) **고급 설정(Advanced settings)**은 다양한 **데이터 변환 파라미터(Data conversion parameters)**와 **로드 작업(Load operations)**을 지원합니다. 파일에 필요한 대로 이 정보를 입력합니다.

   데이터 변환 및 데이터 로드 파라미터에 대한 자세한 내용은 *Amazon Redshift 데이터베이스 개발자 안내서*의 [데이터 변환 파라미터](https://docs.aws.amazon.com/redshift/latest/dg/copy-parameters-data-conversion.html)와 [데이터 로드 작업](https://docs.aws.amazon.com/redshift/latest/dg/copy-parameters-data-load.html)을 참조하세요.

1. **다음**을 선택합니다.

1. **새 테이블 로드**를 선택합니다.

   테이블 열은 입력 데이터에서 추론됩니다. 열 및 테이블 세부 정보를 추가하여 테이블 스키마의 정의를 수정할 수 있습니다. 쿼리 에디터 v2 추론 테이블 스키마로 되돌리려면 **기본값으로 복원**을 선택합니다.

1. 데이터가 로드되는 **클러스터 또는 작업 그룹**, **데이터베이스** 및 **스키마**를 포함한 **대상 테이블**의 위치를 확인하거나 선택합니다. 생성할 **테이블** 이름을 입력합니다.

1. Amazon S3에서 데이터를 로드하는 데 필요한 권한이 있는 **IAM 역할**을 선택합니다.

1. **테이블 생성**을 선택하여 표시된 정의를 사용해 테이블을 생성합니다.

   테이블 정의의 검토 요약이 표시됩니다. 데이터베이스에서 테이블이 생성됩니다. 나중에 테이블을 삭제하려면 DROP TABLE SQL 명령을 실행합니다. 자세한 내용은 *Amazon Redshift Database 개발자 안내서*의 [DROP TABLE](https://docs.aws.amazon.com/redshift/latest/dg/r_DROP_TABLE)을 참조하세요.

1. **데이터 로드(Load data)**를 선택하여 데이터 로드를 시작합니다.

   로드가 완료되면 데이터를 로드하는 데 사용된 생성된 COPY 명령과 함께 쿼리 편집기가 표시됩니다. COPY의 **결과(Result)**가 표시됩니다. 성공하면 이제 SQL을 사용하여 로드된 테이블에서 데이터를 선택할 수 있습니다. 오류가 발생하면 시스템 보기 STL\$1LOAD\$1ERRORS를 쿼리하여 자세한 내용을 확인합니다. COPY 명령 오류에 대한 내용은 *Amazon Redshift Database 개발자 안내서*의 [STL\$1LOAD\$1ERRORS](https://docs.aws.amazon.com/redshift/latest/dg/r_STL_LOAD_ERRORS.html)를 참조하세요.

# 로컬 파일 설정 및 워크플로우에서 데이터 로드
<a name="query-editor-v2-loading-data-local"></a>

로컬 파일의 데이터를 기존 테이블 또는 새로운 테이블로 로드할 수 있습니다.

## 로컬 파일의 데이터를 로드하기 위한 관리자 설정
<a name="query-editor-v2-loading-data-local-setup"></a>

쿼리 편집기 v2 관리자는 **Account settings**(계정 설정) 창에서 공통 Amazon S3 버킷을 지정해야 합니다. 계정 사용자는 적절한 권한을 이용해 구성해야 합니다.
+ 필수 IAM 권한 - 로컬 파일에서 로드하는 사용자는 `s3:ListBucket`, `s3:GetBucketLocation`, `s3:putObject`, `s3:getObject` 및 `s3:deleteObject` 권한이 있어야 합니다. *optional-prefix*를 지정하면 쿼리 편집기 v2와 관련한 이 버킷의 사용을 이 접두사를 가진 객체로 제한할 수 있습니다. 동일한 Amazon S3 버킷을 쿼리 편집기 v2 이외의 용도로 사용할 때 이 옵션을 사용할 수 있습니다. 버킷과 접두사에 대한 자세한 내용은 Amazon Simple Storage Service 사용 설명서**의 [특정 폴더에 대한 사용자 액세스 관리](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-bucket-policies.html#example-bucket-policies-folders)를 참조하세요. 사용자 간 데이터 액세스를 허용하지 않게 하려면, 쿼리 에디터 v2 관리자가 Amazon S3 버킷 정책을 사용하여 `aws:userid`를 기준으로 객체 액세스를 제한하는 것이 좋습니다. 다음 예에서는 `aws:userid` 접두사가 있는 Amazon S3 객체에 대해서만 읽기/쓰기 액세스 권한이 있는 *<staging-bucket-name>*에 대한 Amazon S3 권한을 허용합니다.

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

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": [
                  "s3:ListBucket",
                  "s3:GetBucketLocation"
              ],
              "Resource": [
                  "arn:aws:s3:::<staging-bucket-name>"
              ]
          },
          {
              "Effect": "Allow",
              "Action": [
                  "s3:PutObject",
                  "s3:GetObject",
                  "s3:DeleteObject"
              ],
              "Resource": [
                  "arn:aws:s3:::<staging-bucket-name>[/<optional-prefix>]/${aws:userid}/*"
              ]
          }
      ]
  }
  ```

------
+ 데이터 분리 - 사용자가 다른 사용자의 데이터에 (잠깐이라도) 액세스할 수 없도록 하는 것이 좋습니다. 로컬 파일에서 로드할 때는 쿼리 편집기 v2 관리자가 설정한 스테이징 Amazon S3 버킷을 사용합니다. 스테이징 버킷의 버킷 정책을 구성하여 사용자 간에 데이터를 분리합니다. 다음 예제는 *<staging-bucket-name>*의 사용자 간에 데이터를 분리하는 버킷 정책을 보여줍니다.

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

****  

  ```
  {
   "Version":"2012-10-17",		 	 	 
      "Statement": [
          {"Sid": "userIdPolicy",
              "Effect": "Deny",
              "Principal": "*",
              "Action": ["s3:PutObject",
                         "s3:GetObject",
                         "s3:DeleteObject"],
              "NotResource": [
                  "arn:aws:s3:::<staging-bucket-name>[/<optional-prefix>]/${aws:userid}/*"
              ]
           }
      ]
  }
  ```

------

## 로컬 파일의 데이터 로드
<a name="query-editor-v2-loading-data-local-procedure"></a>

**기존 테이블에 로컬 파일 데이터를 로드하려면**

쿼리 에디터 v2 관리자는 **계정 설정** 창에서 공통 Amazon S3 버킷을 지정해야 합니다. 쿼리 에디터 v2는 계정에서 사용하는 공통 Amazon S3 버킷에 로컬 파일을 자동으로 업로드하고, 이후 COPY 명령을 사용하여 데이터를 로드합니다. 쿼리 편집기 v2 로컬 파일 로드 창에서 생성하고 사용하는 COPY 명령은 Amazon S3에서 복사하기 위해 COPY 명령 구문에 사용할 수 있는 많은 파라미터를 지원합니다. COPY 명령 및 Amazon S3에서 데이터를 로드하는 데 사용되는 옵션에 대한 자세한 내용은 *Amazon Redshift 데이터베이스 개발자 안내서*의 [Amazon S3에서 COPY](https://docs.aws.amazon.com/redshift/latest/dg/copy-parameters-data-source-s3.html)를 참조하세요.

1. 데이터를 로드하려는 데이터베이스에 테이블이 이미 생성되었는지 확인합니다.

1. 쿼리 편집기 v2의 트리 뷰 패널에서 대상 데이터베이스에 연결되어 있는지 확인합니다. 컨텍스트 메뉴(마우스 오른쪽 버튼 클릭)를 사용하여 데이터를 로드할 클러스터 또는 작업 그룹에 연결할 수 있습니다.

1. ![\[Load\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/images/qev2-upload.png)**데이터 로드(Load data)**를 선택합니다.

1. **Data source**(데이터 소스)에서 **Load from local file**(로컬 파일에서 로드)을 선택합니다.

1. **찾아보기**를 선택하여 데이터가 포함된 파일을 찾은 다음 **파일 로드**를 선택합니다. 기본적으로 확장자가 `.csv`, `.avro` `.parquet` 및 `.orc`인 파일이 표시되지만 다른 파일 유형을 선택할 수 있습니다. 최대 파일 크기는 100MB입니다.

1. 업로드할 파일의 **파일 형식(File format)**을 선택합니다. 지원되는 데이터 형식은 CSV, JSON, DELIMITER, FIXEDWIDTH, SHAPEFILE, AVRO, PARQUET 및 ORC입니다. 지정된 파일 형식에 따라 해당 **파일 옵션(File options)**을 선택할 수 있습니다. 데이터가 암호화된 경우 **데이터가 암호화됨(Data is encrypted)**을 선택하고 데이터 암호화에 사용된 KMS 키의 Amazon 리소스 이름(ARN)을 입력할 수도 있습니다.

   CSV 또는 DELIMITER를 선택하면 **구분자 문자**를 선택하고, 지정한 수의 행이 실제로 열 이름이고 로드할 데이터가 아닌 경우 **헤더 행을 무시**할지 여부도 선택할 수 있습니다.

1. (선택 사항) **고급 설정(Advanced settings)**은 다양한 **데이터 변환 파라미터(Data conversion parameters)**와 **로드 작업(Load operations)**을 지원합니다. 파일에 필요한 대로 이 정보를 입력합니다.

   데이터 변환 및 데이터 로드 파라미터에 대한 자세한 내용은 *Amazon Redshift 데이터베이스 개발자 안내서*의 [데이터 변환 파라미터](https://docs.aws.amazon.com/redshift/latest/dg/copy-parameters-data-conversion.html)와 [데이터 로드 작업](https://docs.aws.amazon.com/redshift/latest/dg/copy-parameters-data-load.html)을 참조하세요.

1. **다음**을 선택합니다.

1. **기존 테이블 로드**를 선택합니다.

1. 데이터가 로드되는 **클러스터 또는 작업 그룹**, **데이터베이스**, **스키마** 및 **테이블** 이름을 포함한 **대상 테이블**의 위치를 확인하거나 선택합니다.

1. (선택 사항) 열 이름을 선택하여 **Column mapping**(열 매핑)에 입력하면 입력 데이터 파일의 순서대로 열이 매핑됩니다.

1. **데이터 로드(Load data)**를 선택하여 데이터 로드를 시작합니다.

   로드가 완료되면 로드 성공 여부를 알리는 메시지가 표시됩니다. 성공하면 이제 SQL을 사용하여 로드된 테이블에서 데이터를 선택할 수 있습니다. 오류가 발생하면 시스템 보기 STL\$1LOAD\$1ERRORS를 쿼리하여 자세한 내용을 확인합니다. COPY 명령 오류에 대한 내용은 *Amazon Redshift Database 개발자 안내서*의 [STL\$1LOAD\$1ERRORS](https://docs.aws.amazon.com/redshift/latest/dg/r_STL_LOAD_ERRORS.html)를 참조하세요.

   데이터를 로드하는 데 사용한 COPY 명령 템플릿이 **Query history**(쿼리 기록)에 나타납니다. 이 COPY 명령 템플릿은 사용한 파라미터 중 일부를 표시하지만 편집기 탭에서 직접 실행할 수는 없습니다. 쿼리 기록에 대한 자세한 내용은 [쿼리 및 탭 기록 보기](query-editor-v2-history.md) 단원을 참조하십시오.

새 테이블에 데이터를 로드하면 쿼리 에디터 v2가 먼저 데이터베이스에 테이블을 생성한 다음 동일한 워크플로우에서 별도의 작업으로 데이터를 로드합니다.

**새로운 테이블에 로컬 파일 데이터 로드**

쿼리 편집기 v2 관리자는 **Account settings**(계정 설정) 창에서 공통 Amazon S3 버킷을 지정해야 합니다. 로컬 파일은 계정에서 사용하는 공통 Amazon S3 버킷에 자동으로 업로드되고, 이후 쿼리 편집기 v2에서 COPY 명령을 사용하여 데이터를 로드합니다. 쿼리 편집기 v2 로컬 파일 로드 창에서 생성하고 사용하는 COPY 명령은 Amazon S3에서 복사하기 위해 COPY 명령 구문에 사용할 수 있는 많은 파라미터를 지원합니다. COPY 명령 및 Amazon S3에서 데이터를 로드하는 데 사용되는 옵션에 대한 자세한 내용은 *Amazon Redshift 데이터베이스 개발자 안내서*의 [Amazon S3에서 COPY](https://docs.aws.amazon.com/redshift/latest/dg/copy-parameters-data-source-s3.html)를 참조하세요.

1. 쿼리 편집기 v2의 트리 뷰 패널에서 대상 데이터베이스에 연결되어 있는지 확인합니다. 컨텍스트 메뉴(마우스 오른쪽 버튼 클릭)를 사용하여 데이터를 로드할 클러스터 또는 작업 그룹에 연결할 수 있습니다.

1. ![\[Load\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/images/qev2-upload.png)**데이터 로드(Load data)**를 선택합니다.

1. **Data source**(데이터 소스)에서 **Load from local file**(로컬 파일에서 로드)을 선택합니다.

1. **찾아보기**를 선택하여 데이터가 포함된 파일을 찾은 다음 **파일 로드**를 선택합니다. 기본적으로 확장자가 `.csv`, `.avro` `.parquet` 및 `.orc`인 파일이 표시되지만 다른 파일 유형을 선택할 수 있습니다. 최대 파일 크기는 100MB입니다.

1. 업로드할 파일의 **파일 형식(File format)**을 선택합니다. 지원되는 데이터 형식은 CSV, JSON, DELIMITER, FIXEDWIDTH, SHAPEFILE, AVRO, PARQUET 및 ORC입니다. 지정된 파일 형식에 따라 해당 **파일 옵션(File options)**을 선택할 수 있습니다. 데이터가 암호화된 경우 **데이터가 암호화됨(Data is encrypted)**을 선택하고 데이터 암호화에 사용된 KMS 키의 Amazon 리소스 이름(ARN)을 입력할 수도 있습니다.

   CSV 또는 DELIMITER를 선택하면 **구분자 문자**를 선택하고, 지정한 수의 행이 실제로 열 이름이고 로드할 데이터가 아닌 경우 **헤더 행을 무시**할지 여부도 선택할 수 있습니다.

1. (선택 사항) **고급 설정(Advanced settings)**은 다양한 **데이터 변환 파라미터(Data conversion parameters)**와 **로드 작업(Load operations)**을 지원합니다. 파일에 필요한 대로 이 정보를 입력합니다.

   데이터 변환 및 데이터 로드 파라미터에 대한 자세한 내용은 *Amazon Redshift 데이터베이스 개발자 안내서*의 [데이터 변환 파라미터](https://docs.aws.amazon.com/redshift/latest/dg/copy-parameters-data-conversion.html)와 [데이터 로드 작업](https://docs.aws.amazon.com/redshift/latest/dg/copy-parameters-data-load.html)을 참조하세요.

1. **다음**을 선택합니다.

1. **새 테이블 로드**를 선택합니다.

1. 데이터가 로드되는 **클러스터 또는 작업 그룹**, **데이터베이스** 및 **스키마**를 포함한 **대상 테이블**의 위치를 확인하거나 선택합니다. 생성할 **테이블** 이름을 입력합니다.

1. **테이블 생성**을 선택하여 표시된 정의를 사용해 테이블을 생성합니다.

   테이블 정의의 검토 요약이 표시됩니다. 데이터베이스에서 테이블이 생성됩니다. 나중에 테이블을 삭제하려면 DROP TABLE SQL 명령을 실행합니다. 자세한 내용은 *Amazon Redshift Database 개발자 안내서*의 [DROP TABLE](https://docs.aws.amazon.com/redshift/latest/dg/r_DROP_TABLE)을 참조하세요.

1. **데이터 로드(Load data)**를 선택하여 데이터 로드를 시작합니다.

   로드가 완료되면 로드 성공 여부를 알리는 메시지가 표시됩니다. 성공하면 이제 SQL을 사용하여 로드된 테이블에서 데이터를 선택할 수 있습니다. 오류가 발생하면 시스템 보기 STL\$1LOAD\$1ERRORS를 쿼리하여 자세한 내용을 확인합니다. COPY 명령 오류에 대한 내용은 *Amazon Redshift Database 개발자 안내서*의 [STL\$1LOAD\$1ERRORS](https://docs.aws.amazon.com/redshift/latest/dg/r_STL_LOAD_ERRORS.html)를 참조하세요.

   데이터를 로드하는 데 사용한 COPY 명령 템플릿이 **Query history**(쿼리 기록)에 나타납니다. 이 COPY 명령 템플릿은 사용한 파라미터 중 일부를 표시하지만 편집기 탭에서 직접 실행할 수는 없습니다. 쿼리 기록에 대한 자세한 내용은 [쿼리 및 탭 기록 보기](query-editor-v2-history.md) 단원을 참조하십시오.

# Amazon Redshift 쿼리 작성
<a name="query-editor-v2-query-run"></a>

편집기에서 쿼리를 입력하거나 **쿼리(Queries)** 목록에서 저장된 쿼리를 선택하고 **실행(Run)**을 선택할 수 있습니다.

기본적으로 **제한 100(Limit 100)**은 결과를 100행으로 제한하도록 설정됩니다. 더 큰 결과 집합을 반환하기 위해 이 옵션을 해제할 수 있습니다. 이 옵션을 해제하면 매우 큰 결과 집합을 방지하려는 경우 SQL 문에 LIMIT 옵션을 포함할 수 있습니다. 자세한 내용은 *Amazon Redshift 데이터베이스 개발자 안내서*의 [ORDER BY 절](https://docs.aws.amazon.com/redshift/latest/dg/r_ORDER_BY_clause.html)을 참조하세요.

결과 영역에 쿼리 계획을 표시하려면 **설명(Explain)**을 설정합니다. 결과의 **Explain graph**(그래프 설명)를 활성화하여 결과에 계획 설명이 그래픽으로 표시되도록 할 수 있습니다.

**쿼리(Queries)** 폴더에 쿼리를 저장하려면 **저장(Save)**을 선택합니다.

쿼리가 성공하면 성공 메시지가 나타납니다. 쿼리가 정보를 반환하면 **결과(Results)** 섹션에 결과가 표시됩니다. 결과 수가 표시 영역을 초과하면 결과 영역 상단에 숫자가 나타납니다. 숫자를 선택하여 연속적인 결과 페이지를 표시할 수 있습니다.

각 열에 대한 **결과(Result)**를 필터링하고 정렬할 수 있습니다. 결과 열 머리글에 필터 기준을 입력하려면 열 위로 마우스를 가져가서 열을 필터링하는 기준을 입력할 수 있는 메뉴(![\[Filter menu\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/images/menu.png))를 표시합니다.

쿼리에 오류가 포함된 경우 쿼리 편집기 v2는 결과 영역에 오류 메시지를 표시합니다. 이 메시지는 쿼리 수정 방법에 대한 정보를 제공합니다.

다음과 같이 결과 영역에서 컨텍스트(마우스 오른쪽 버튼 클릭) 메뉴를 사용하여 쿼리 결과를 내보내거나 복사할 수 있습니다.
+ **복사 대상**과 **JSON** 또는 **CSV**를 선택하여 선택한 행을 파일로 다운로드합니다.
+ **행 복사**를 선택하여 선택한 행을 클립보드에 복사합니다.
+ **헤더와 함께 행 복사**를 선택하여 열 머리글이 있는 선택한 행을 클립보드에 복사합니다.

결과 영역에서 **내보내기**를 선택하고 **JSON** 또는 **CSV**를 선택하여 전체 행 결과 집합을 파일로 다운로드합니다. 결과 집합의 행 수는 쿼리의 **한도(Limit)** 옵션 또는 SQL `limit` 절에 의해 제한될 수 있습니다. 다운로드된 결과 집합의 최대 크기는 5MB입니다.

바로 가기 키 Ctrl\$1C(Windows) 또는 Cmd\$1C(macOS)를 사용하여 현재 결과 페이지의 데이터를 클립보드로 복사할 수도 있습니다. 행을 선택하지 않으면 포커스가 있는 셀이 클립보드에 복사됩니다. 행을 선택하면 선택한 행이 클립보드에 복사됩니다.

새 쿼리 탭을 추가하려면 ![\[New query tab\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/images/add-plus.png) 아이콘을 선택하고 쿼리 탭이 있는 행에 나타나는 **Editor**(편집기)를 선택합니다. 쿼리 탭은 `Isolated session`을 사용하거나 사용하지 않습니다. 격리된 세션을 사용하면 한 편집기 탭에서 임시 테이블을 생성하는 것과 같이 SQL 명령의 결과가 다른 편집기 탭에 표시되지 않습니다. 쿼리 편집기 v2에서 편집기 탭을 열 때 기본값은 격리된 세션입니다.

**쿼리를 실행하려면**

1. 쿼리 영역에서 다음 중 하나를 수행합니다.
   + 쿼리를 입력합니다.
   + 복사한 쿼리를 붙여넣습니다.
   + **쿼리(Queries)** 폴더를 선택하고 저장된 쿼리에 대한 컨텍스트 메뉴를 열고(마우스 오른쪽 버튼 클릭) **쿼리 열기(Open query)**를 선택합니다.

1. 실행하려는 SQL에 대해 올바른 **Cluster(클러스터)** 또는 **Workgroup(작업 그룹)** 및 **Database(데이터베이스)** 값을 선택했는지 확인합니다.

   처음에는 트리 보기에서 **Cluster**(클러스터) 또는 **Workgroup**(작업 그룹)을 선택할 수 있습니다. 트리 보기에서 **Database**(데이터베이스)도 선택합니다.

   각 편집기 탭에서 **격리된 세션** 헤더 근처에 있는 드롭다운 컨트롤을 사용하여 **클러스터** 또는 **작업 그룹** 및 **데이터베이스**를 변경할 수 있습니다.

   각 편집기 탭에서 **Isolated session**(격리된 세션)에서 SQL을 실행할지 선택할 수 있습니다. 격리된 세션에는 데이터베이스에 대한 자체 연결이 있습니다. 다른 쿼리 편집기 세션과 격리된 SQL을 실행하는 데 사용합니다. 연결에 대한 자세한 내용은 [쿼리 편집기 v2 열기](query-editor-v2-open.md) 섹션을 참조하세요.

1. **실행**을 선택합니다.

   **결과(Result)** 영역이 열리고 쿼리 결과가 표시됩니다.

**쿼리에 대한 설명 계획을 표시하려면**

1. 쿼리를 선택합니다.

1. **설명(Explain)**을 설정합니다.

   기본적으로 **설명 그래프(Explain graph)**도 설정되어 있습니다.

1. **실행**을 선택합니다.

   쿼리가 실행되고 설명 계획이 쿼리 **결과(Result)** 영역에 표시됩니다.

쿼리 편집기 v2는 다음 기능을 지원합니다.
+ 하나의 쿼리 탭에서 여러 SQL 문을 사용하여 쿼리를 작성할 수 있습니다. 쿼리는 순차적으로 실행되고 각 쿼리에 대해 여러 개의 결과 탭이 열립니다.
+ 세션 변수와 임시 테이블을 사용하여 쿼리를 작성할 수 있습니다.
+ `${parameter}`로 지정된 대체 가능한 파라미터를 사용하여 쿼리를 작성할 수 있습니다. 대체 가능한 여러 파라미터를 사용하여 SQL 쿼리를 작성하고 SQL 문의 여러 위치에서 동일한 파라미터를 사용할 수 있습니다.

  쿼리가 실행되면 파라미터 값을 입력하는 창이 표시됩니다. 쿼리를 실행할 때마다 파라미터 값을 입력하는 창이 표시됩니다.

  문제 해결 예는 [예: 매출이 특정 파라미터보다 큼](#query-editor-v2-example-sales-qtysold-greater-than-parameter)을(를) 참조하세요.
+ 쿼리는 자동으로 버전이 관리됩니다. 실행할 쿼리의 이전 버전을 선택할 수 있습니다.
+ 워크플로를 계속하기 전에 쿼리가 완료될 때까지 기다릴 필요가 없습니다. 쿼리 편집기를 닫아도 쿼리는 계속 실행됩니다.
+ 쿼리를 작성할 때 스키마, 테이블 및 열 이름의 자동 완성이 지원됩니다.

SQL 편집기는 다음 기능을 지원합니다.
+ SQL에서 사용되는 시작 괄호와 끝 괄호의 색상이 일치합니다. 편집기에 세로선이 표시되어 대괄호를 일치시키는 데 도움이 됩니다.
+ SQL의 섹션을 축소하거나 확장할 수 있습니다.
+ SQL에서 텍스트를 검색하고 바꿀 수 있습니다.
+ 몇 가지 일반적인 편집 작업에 단축키를 사용할 수 있습니다.
+ 문제 영역을 쉽게 찾을 수 있도록 SQL 오류가 편집기에 강조 표시됩니다.

쿼리 에디터 기능의 데모를 보려면 다음 동영상을 시청하세요.

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/9JAq0yDs0YE/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/9JAq0yDs0YE)


## 쿼리 예제
<a name="query-editor-v2-examples"></a>

다음에서 실행할 수 있는 다양한 쿼리 유형에 대한 설명을 찾을 수 있습니다.

이러한 쿼리 중 많은 부분에 사용된 데이터는 `tickit` 샘플 스키마에서 가져온 것입니다. 샘플 `tickit` 데이터 로딩에 대한 자세한 내용은 [데이터를 데이터베이스로 로드](query-editor-v2-loading.md)을 참조하세요. `tickit` 샘플 데이터에 대한 자세한 내용은 Amazon Redshift 데이터베이스 개발자 안내서에서 [샘플 데이터베이스](https://docs.aws.amazon.com/redshift/latest/dg/c_sampledb.html)를 참조하세요.**

이러한 예제 쿼리를 실행할 때 `sample_data_dev`와 같이 편집기에서 올바른 데이터베이스를 선택하는지 확인합니다.

**Topics**
+ [예: 세션 변수 설정](#query-editor-v2-example-set-session-variable)
+ [예: 총 매출 기준 상위 이벤트](#query-editor-v2-example-top-event-sales)
+ [예: 매출이 특정 파라미터보다 큼](#query-editor-v2-example-sales-qtysold-greater-than-parameter)
+ [예: 임시 테이블 생성](#query-editor-v2-example-create-temporary-table)
+ [예: 임시 테이블에서 선택](#query-editor-v2-example-select-from-temporary-table)

### 예: 세션 변수 설정
<a name="query-editor-v2-example-set-session-variable"></a>

다음 명령은 세션에 대해 `search_path` 서버 구성 파라미터를 *public*으로 설정합니다. 자세한 내용은 *Amazon Redshift 데이터베이스 개발자 안내서*의 [SET](https://docs.aws.amazon.com/redshift/latest/dg/r_SET.html) 및 [search\$1path](https://docs.aws.amazon.com/redshift/latest/dg/r_search_path.html)를 참조하세요.

```
set search_path to public;
```

### 예: 총 매출 기준 상위 이벤트
<a name="query-editor-v2-example-top-event-sales"></a>

다음 쿼리는 매출이 가장 많은 이벤트를 찾습니다.

```
select eventname, count(salesid) totalorders, sum(pricepaid) totalsales
from sales, event
where sales.eventid=event.eventid
group by eventname
order by 3;
```

다음은 결과의 부분 목록입니다.

```
eventname           totalorders       totalsales
White Christmas         20              9352
Joshua Radin            38             23469
Beach Boys              58             30383
Linda Ronstadt          56             35043
Rascal Flatts           76             38214
Billy Idol              67             40101
Stephenie Meyer         72             41509
Indigo Girls            57             45399
...
```

### 예: 매출이 특정 파라미터보다 큼
<a name="query-editor-v2-example-sales-qtysold-greater-than-parameter"></a>

다음 쿼리는 판매 수량이 `${numberoforders}`로 지정된 파라미터보다 큰 매출을 찾습니다. 파라미터 값이 `7`인 경우 결과는 60행입니다. 쿼리를 실행하면 쿼리 편집기 v2는 **쿼리 양식 실행(Run query form)** 창을 표시하여 SQL 문의 파라미터 값을 수집합니다.

```
select salesid, qtysold
from sales 
where qtysold > ${numberoforders}
order by 2;
```

다음은 결과의 부분 목록입니다.

```
salesid	qtysold
20005	8
21279	8
130232	8
42737	8
74681	8
67103	8
105533	8
91620	8
121552	8
...
```

### 예: 임시 테이블 생성
<a name="query-editor-v2-example-create-temporary-table"></a>

다음 문은 *sales* 및 *event* 테이블에서 정보를 선택하여 임시 테이블 *eventsalestemp*를 생성합니다.

```
create temporary table eventsalestemp as
select eventname, count(salesid) totalorders, sum(pricepaid) totalsales
from sales, event
where sales.eventid=event.eventid
group by eventname;
```

### 예: 임시 테이블에서 선택
<a name="query-editor-v2-example-select-from-temporary-table"></a>

다음 문은 총 주문을 기준으로 정렬된 임시 테이블 *eventsalestemp*에서 이벤트, 총 주문 및 총 매출을 선택합니다.

```
select eventname,  totalorders,  totalsales
from eventsalestemp
order by 2;
```

다음은 결과의 부분 목록입니다.

```
eventname          totalorders   totalsales
White Christmas        20          9352
Joshua Radin           38         23469
Martina McBride        50         52932
Linda Ronstadt         56         35043
Indigo Girls           57         45399
Beach Boys             58         30383
...
```

# Amazon Redshift의 노트북
<a name="query-editor-v2-notebooks"></a>

노트북을 사용하여 단일 문서에서 여러 SQL 쿼리를 구성하고 주석을 달고 공유할 수 있습니다. 여러 SQL 쿼리 및 마크다운 셀을 노트북에 추가할 수 있습니다. 노트북은 여러 쿼리 및 마크다운 셀을 사용하여 단일 문서에서 데이터 분석과 관련된 쿼리 및 설명을 그룹화하는 방법을 제공합니다. 마크다운 구문으로 텍스트를 추가하고 모양의 서식을 지정하여 데이터 분석 태스크에 대한 컨텍스트 및 추가 정보를 제공할 수 있습니다. 노트북을 팀원과 공유할 수 있습니다.

노트북을 사용하려면 IAM 보안 주체(IAM 사용자 또는 IAM 역할)에 노트북에 대한 권한을 추가해야 합니다. 가장 좋은 방법은 권한 정책을 IAM 역할에 연결한 다음 필요에 따라 사용자 및 그룹에 할당하는 것입니다. 자세한 내용은 [Amazon Redshift의 Identity and Access Management](https://docs.aws.amazon.com/redshift/latest/mgmt/redshift-iam-authentication-access-control.html)를 참조하세요. 쿼리 편집기 v2 관리형 정책 중 하나에 권한을 추가할 수 있습니다. 자세한 내용은 [쿼리 편집기 v2에 액세스](query-editor-v2-getting-started.md#query-editor-v2-configure) 단원을 참조하십시오.

순차적으로 노트북의 셀을 모두 실행할 수 있습니다. 노트북의 SQL 쿼리 셀에는 쿼리 에디터 탭과 거의 동일한 기능이 있습니다. 자세한 내용은 [Amazon Redshift 쿼리 작성](query-editor-v2-query-run.md) 단원을 참조하십시오. 다음은 노트북의 쿼리 에디터 탭과 SQL 셀 간의 차이점입니다.
+ 노트북에는 SQL 문에 `Explain`을 실행할 수 있는 컨트롤이 없습니다.
+ 노트북 SQL 셀당 하나의 차트만 생성할 수 있습니다.

쿼리 에디터 v2를 사용하여 만든 파일로 노트북을 가져오고 내보낼 수 있습니다. 파일 확장자는 `.ipynb`이며 파일 크기는 최대 5MB일 수 있습니다. SQL 및 마크다운 셀은 파일에 저장되어 있습니다. 클러스터 또는 작업 그룹 및 데이터베이스는 내보낸 노트북에 저장되지 않습니다. 가져온 노트북을 열 때 실행할 클러스터 또는 작업 그룹과 데이터베이스를 선택합니다. SQL 셀을 실행한 후에는 결과 탭에서 현재 결과 페이지를 차트로 표시할지 여부를 선택할 수 있습니다. 쿼리 결과 집합은 노트북에 저장되지 않습니다.

# 노트북 생성
<a name="query-editor-v2-notebooks-create"></a>

노트북을 생성하여 단일 문서에서 여러 SQL 쿼리를 구성하고 주석을 달고 공유할 수 있습니다.

**노트북을 생성하려면**

1. 탐색 메뉴에서 에디터 아이콘(![\[Horizontal lines representing redacted or censored text.\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/images/qev2-align-left.png))을 선택합니다.

1. 더하기 아이콘(![\[Plus sign icon representing an addition or new item action.\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/images/add-plus.png))을 선택한 다음 **노트북**을 선택합니다.

   기본적으로 SQL 쿼리 셀은 선택한 노트북에 나타납니다.

1. SQL 쿼리 셀에서 다음 중 하나를 수행합니다.
   + 쿼리를 입력합니다.
   + 복사한 쿼리를 붙여넣습니다.

1. (선택 사항) 더하기 아이콘(![\[Plus sign icon representing an addition or new item action.\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/images/add-plus.png))을 선택한 다음 **마크다운**을 선택하여 표준 마크다운 구문을 사용하여 설명 또는 설명 텍스트를 제공할 수 있는 마크다운 셀을 추가합니다.

1. (선택 사항) 더하기 아이콘(![\[Plus sign icon representing an addition or new item action.\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/images/add-plus.png))을 선택한 다음 **SQL**을 선택하여 SQL 셀을 삽입합니다.

연필 아이콘(![\[Pencil icon representing an editing or writing function.\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/images/qev2-edit.png))을 사용하여 노트북의 이름을 바꿀 수 있습니다.

노트북 메뉴 아이콘(![\[Three dots arranged horizontally, representing an ellipsis or "more" menu icon.\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/images/qev2-more.png))에서 다음 작업을 수행할 수도 있습니다.
+ ![\[Share\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/images/qev2-share.png) **Share with my team**(내 팀과 공유) - 태그로 정의된 대로 팀과 노트북을 공유합니다. 팀과 노트북을 공유하려면 기본 태그 `sqlworkbench-team`이 계정의 나머지 팀원과 동일한 값으로 설정되어 있는지 확인합니다. 예를 들어, 관리자는 회계 부서의 모든 사람에 대해 값을 `accounting-team`으로 설정할 수 있습니다. 예시는 [쿼리 편집기 v2를 사용하는 데 필요한 권한](redshift-iam-access-control-identity-based.md#redshift-policy-resources.required-permissions.query-editor-v2)을 확인하세요.
+ ![\[Export\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/images/qev2-export.png) **Export**(내보내기) - 노트북을 `.ipynb` 확장자를 가진 로컬 파일로 내보냅니다.
+ ![\[Import query\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/images/qev2-import.png) **쿼리 가져오기** - 로컬 파일에서 노트북의 셀로 쿼리를 가져옵니다. 확장자가 `.sql` 및 `.txt`인 파일을 가져올 수 있습니다.
+  ![\[Save\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/images/qev2-floppy-disk.png) **Save version**(버전 저장) - 노트북 버전을 만듭니다. 노트북 버전을 확인하려면 저장된 노트북으로 이동하여 **Version history**(버전 기록)를 엽니다.
+  ![\[Duplicate\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/images/qev2-duplicate.png) **Duplicate**(복제) – 노트북 사본을 만들고 새 노트북 탭에서 엽니다.
+  ![\[Shortcuts\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/images/qev2-key-command.png) **Shortcuts**(바로 가기) – 노트북을 작성할 때 사용할 수 있는 바로 가기를 표시합니다.

# 노트북으로 가져오기
<a name="query-editor-v2-notebooks-import"></a>

전체 노트북 또는 개별 SQL 셀을 쿼리 에디터 v2 노트북으로 가져올 수 있습니다.

로컬 파일에서 전체 노트북을 **내 노트북**으로 가져오려면 ![\[Import\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/images/qev2-import.png) **가져오기**를 선택한 다음, **노트북 가져오기**를 선택합니다. 노트북이 들어 있는 .`.ipynb` 파일로 이동합니다. 노트북을 현재 열려 있는 노트북 폴더로 가져옵니다. 그런 다음 노트북 편집기를 사용하여 노트북을 열 수 있습니다.

로컬 파일에서 노트북의 SQL 셀로 쿼리를 가져오려면 ![\[Import\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/images/qev2-import.png) **가져오기**를 선택한 다음, **쿼리 가져오기**를 선택합니다. **쿼리 가져오기** 창에서 화면의 지시에 따라 새 노트북 또는 기존 노트북으로 쿼리로 가져올 수 있는 파일과 폴더를 선택합니다. 파일의 확장자는 `.sql` 또는 `.txt`여야 합니다. 각 쿼리는 최대 10,000자까지 가능합니다. 기존 노트북에 추가할 때는 **저장된 노트북** 목록의 모든 노트북 중에서 원하는 노트북을 선택합니다. 가져온 쿼리는 노트북 끝에 SQL 셀로 추가됩니다. 새 노트북을 선택하는 경우, 노트북 이름을 선택하면 현재 열려 있는 저장된 노트북 폴더에 노트북이 만들어집니다.

**참고**  
macOS에서 TextEdit 애플리케이션을 사용하여 `.sql` 파일을 만들 때 파일에 숨겨진 확장자가 추가되는 문제가 발생할 수 있습니다. 예를 들어 TextEdit에서 만든 `Test.sql`이라는 이름의 파일은 `Test.sql.rtf`로 저장될 수 있습니다. 쿼리 에디터 v2는 확장자가 `.rtf`인 파일을 지원하지 않습니다. 그러나 TextEdit을 사용하여 `.sql` 파일을 만든 후 일반 텍스트 파일로 저장하면 파일에 숨겨진 `.txt` 확장자가 추가로 붙습니다. 예를 들어 `Text.sql`이라는 파일은 `Text.sql.txt`로 저장될 수 있습니다. `.rtf` 확장자와 달리, 쿼리 에디터 v2는 `.txt` 확장자를 가진 파일을 지원하므로, 노트북으로 쿼리를 가져올 때 `Text.sql.txt`가 지원됩니다.

노트북 데모를 보려면 다음 동영상을 시청하세요.

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/GNahyu7j98M/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/GNahyu7j98M)


# AWS Glue Data Catalog 쿼리
<a name="query-editor-v2-glue"></a>

쿼리 에디터 v2를 사용하여 특정 SQL 명령을 사용하고 이 섹션에 요약된 권한을 부여하여 AWS Glue Data Catalog에 카탈로그화된 데이터를 쿼리할 수 있습니다. 기본적으로 AWS Glue Data Catalog는 쿼리 편집기 v2 데이터베이스에 `awsdatacatalog`라는 이름으로 나열됩니다. 일부 Amazon Redshift AWS 리전에서는 AWS Glue Data Catalog 쿼리를 사용할 수 없습니다. SHOW 명령을 사용하여 이 기능을 사용할 수 있는지 확인하세요. AWS Glue에 대한 자세한 내용은 *AWS Glue 개발자 안내서*의 [AWS Glue란 무엇입니까?](https://docs.aws.amazon.com/glue/latest/dg/what-is-glue.html)를 참조하세요.

**참고**  
AWS Glue Data Catalog 쿼리는 Amazon Redshift RA3 노드 유형 클러스터와 Amazon Redshift Serverless에서만 지원됩니다.

다음 SQL 명령을 사용하여 데이터 웨어하우스를 구성하고 카탈로그화된 AWS Glue 데이터베이스 객체를 볼 수 있습니다.
+ SHOW - 현재 연결된 데이터 웨어하우스에 대해 `awsdatacatalog`가 마운트되었는지 여부를 표시합니다. 예를 들어 `data_catalog_auto_mount` 파라미터 값을 표시하려면 다음을 실행합니다.

  ```
  SHOW data_catalog_auto_mount;
  ```

  자세한 내용은 **Amazon Redshift 데이터베이스 개발자 안내에서 [SHOW](https://docs.aws.amazon.com/redshift/latest/dg/r_SHOW.html)를 참조하세요.
+ ALTER SYSTEM - `data_catalog_auto_mount`의 시스템 수준 구성을 변경합니다. 예를 들어 `data_catalog_auto_mount` 파라미터 값을 `on`으로 변경하려면 다음을 실행합니다.

  ```
  ALTER SYSTEM SET data_catalog_auto_mount = on;
  ```

  변경 사항은 프로비저닝된 클러스터가 재부팅되거나 서버리스 작업 그룹이 자동으로 일시 중지되었다가 다시 시작될 때 적용됩니다. 자세한 내용은 **Amazon Redshift 데이터베이스 개발자 가이드에서 [시스템 변경](https://docs.aws.amazon.com/redshift/latest/dg/r_ALTER_SYSTEM.html)을 참조하세요.
+ SHOW SCHEMAS - 스키마 목록을 표시합니다. `awsdatacatalog`라는 데이터베이스의 스키마는 AWS Glue Data Catalog에 카탈로그화된 AWS Glue를 나타냅니다. 예를 들어 이러한 스키마를 표시하려면 다음을 실행합니다.

  ```
  SHOW SCHEMAS FROM DATABASE awsdatacatalog;
  ```

  자세한 내용은 **Amazon Redshift 데이터베이스 개발자 안내에서 [SHOW SCHEMAS](https://docs.aws.amazon.com/redshift/latest/dg/r_SHOW_SCHEMAS.html)를 참조하세요.
+ SHOW TABLES - 스키마에 있는 테이블 목록을 표시합니다. 예를 들어 `myglue` 스키마에 있는 `awsdatacatalog`라는 이름의 AWS Glue Data Catalog 데이터베이스에 있는 테이블을 표시하려면 다음을 실행합니다.

  ```
  SHOW TABLES FROM SCHEMA awsdatacatalog.myschema;
  ```

  자세한 내용은 **Amazon Redshift Database 개발자 안내서의 [SHOW TABLES](https://docs.aws.amazon.com/redshift/latest/dg/r_SHOW_TABLES.html)를 참조하세요.
+ SHOW COLUMNS - 테이블의 열 목록을 표시합니다. 예를 들어 `myglue` 스키마 및 `mytable` 테이블에 있는`awsdatacatalog`라는 이름의 AWS Glue Data Catalog 데이터베이스에 있는 테이블을 표시하려면 다음을 실행합니다.

  ```
  SHOW COLUMNS FROM TABLE awsdatacatalog.myglue.mytable;
  ```

  자세한 내용을 알아보려면 **Amazon Redshift 데이터베이스 개발자 안내서의 [SHOW COLUMNS](https://docs.aws.amazon.com/redshift/latest/dg/r_SHOW_COLUMNS.html)를 참조하세요.

**IAM 사용자 또는 역할에 AWS Glue Data Catalog을 쿼리할 수 있는 권한을 부여하려면**

1. 트리 뷰 창에서 **데이터베이스 사용자 이름 및 암호** 인증 방법을 사용하여 프로비저닝된 클러스터나 서버리 작업 그룹에 있는 최초 데이터베이스에 연결합니다. 예를 들어 클러스터 또는 작업 그룹을 만들 때 사용한 관리자 사용자 및 암호를 사용하여 `dev` 데이터베이스에 연결합니다.

1. 편집기 탭에서 다음 SQL 문을 실행하여 IAM 사용자에게 AWS Glue Data Catalog 액세스 권한을 부여합니다.

   ```
   GRANT USAGE ON DATABASE awsdatacatalog to "IAM:myIAMUser"
   ```

   여기서 *IAM:myIAMUser*는 AWS Glue Data Catalog에 대한 사용 권한을 부여할 IAM 사용자입니다. IAM 역할에 대한 *IAMR:myIAMRole*에 사용 권한을 부여하는 방법도 있습니다.

1. 트리 뷰 창에서 이전에 만든 클러스터 또는 작업 그룹에 대한 연결을 편집하거나 삭제합니다. 다음 방법 중 하나를 사용하여 클러스터 또는 작업 그룹에 연결합니다.
   + 클러스터에서 `awsdatacatalog` 데이터베이스에 연결하려면, **IAM ID를 사용하는 임시 보안 인증** 인증 방법을 사용해야 합니다. 이 인증 방법에 대한 자세한 내용은 [Amazon Redshift 데이터베이스에 연결](query-editor-v2-connecting.md) 단원을 참조하세요. 쿼리 편집기 v2 관리자가 연결 창에 이 인증 방법을 표시하도록 계정의 **계정 설정**을 구성해야 할 수 있습니다.
   + 미리 보기 작업 그룹에서 `awsdatacatalog` 데이터베이스에 연결하려면 **페더레이션 사용자** 인증 방법을 사용해야 합니다. 이 인증 방법에 대한 자세한 내용은 [Amazon Redshift 데이터베이스에 연결](query-editor-v2-connecting.md) 단원을 참조하세요.

1. 부여된 권한이 있다면 IAM ID를 사용하여 AWS Glue Data Catalog를 상대로 SQL을 실행할 수 있습니다.

연결한 후에는 쿼리 편집기 v2를 사용하여 AWS Glue Data Catalog에 카탈로그화된 데이터를 쿼리할 수 있습니다. 쿼리 편집기 v2 트리 뷰 창에서 클러스터 또는 작업 그룹과 `awsdatacatalog` 데이터베이스를 선택합니다. 편집기나 노트북 창에서 올바른 클러스터 또는 작업 그룹이 선택되어 있는지 확인합니다. 선택한 데이터베이스는 최초 Amazon Redshift 데이터베이스(예: `dev`)여야 합니다. 쿼리 작성에 대한 자세한 내용은 [Amazon Redshift 쿼리 작성](query-editor-v2-query-run.md) 및 [Amazon Redshift의 노트북Notebooks](query-editor-v2-notebooks.md) 단원을 참조하세요. `awsdatacatalog`라는 이름이 지정된 데이터베이스는 계정의 외부 Data Catalog 데이터베이스를 참조하도록 예약되어 있습니다. `awsdatacatalog` 데이터베이스에 대한 쿼리는 읽기 전용일 수만 있습니다. SELECT 문에서 테이블을 참조하려면 세 부분으로 구성된 표기법을 사용해야 합니다. 여기서 첫 번째 부분은 데이터베이스 이름이고, 두 번째 부분은 AWS Glue 데이터베이스 이름이며, 세 번째 부분은 AWS Glue 테이블 이름입니다.

```
SELECT * FROM awsdatacatalog.<aws-glue-db-name>.<aws-glue-table-name>;
```

AWS Glue Data Catalog 데이터를 읽고 Amazon Redshift 테이블을 채우는 다양한 시나리오를 수행할 수 있습니다.

다음 예제 SQL은 AWS Glue에 정의된 두 테이블을 조인합니다.

```
SELECT pn.emp_id, alias, role, project_name 
FROM "awsdatacatalog"."empl_db"."project_name_table" pn, 
"awsdatacatalog"."empl_db"."project_alias_table" pa
WHERE pn.emp_id = pa.emp_id;
```

다음 예제 SQL은 Amazon Redshift 테이블을 만들고 두 AWS Glue 테이블의 조인에서 얻은 데이터로 테이블을 채웁니다.

```
CREATE TABLE dev.public.glue AS
SELECT pn.emp_id, alias, role, project_name 
FROM "awsdatacatalog"."empl_db"."project_name_table" pn, 
"awsdatacatalog"."empl_db"."project_alias_table" pa
WHERE pn.emp_id = pa.emp_id;
```

## Amazon S3 테이블 쿼리(미리 보기)
<a name="query-editor-v2-glue-s3-tables"></a>

Query Editor V2를 사용하여 AWS Glue Data Catalog에 탑재된 Amazon S3 테이블 카탈로그에 저장된 데이터를 쿼리할 수 있습니다. Amazon S3 테이블 카탈로그는 만드는 시점에 AWS Glue Data Catalog에 탑재되며, 동일한 계정에서 동일한 AWS 리전에 있는 모든 프로비저닝된 클러스터 및 서버리스 작업 그룹에 외부 데이터베이스로 자동으로 표시됩니다. Amazon Redshift를 사용하여 Amazon S3 테이블에 액세스하는 방법에 대한 자세한 내용은 Amazon Simple Storage Service 사용 설명서의 [Accessing Amazon S3 tables with Amazon Redshift](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-integrating-redshift.html)를 참조하세요.

# 데이터 레이크 쿼리
<a name="query-editor-v2-querying-data-lake"></a>

이 자습서의 태스크 세트에 따라 Amazon S3 데이터 레이크의 데이터를 쿼리할 수 있습니다. 먼저, [AWS Glue Data Catalog](https://docs.aws.amazon.com/glue/latest/dg/components-overview.html#data-catalog-intro)에서 외부 데이터베이스를 참조하는 외부 스키마를 생성합니다. 그런 다음 Amazon S3 데이터 레이크의 데이터를 쿼리할 수 있습니다.

## 데모: 데이터 레이크 쿼리
<a name="query-editor-v2-example-data-lake-demo"></a>

데이터 레이크를 쿼리하는 방법을 알아보려면 다음 동영상을 시청하세요.

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/-pyy0qNmEKo/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/-pyy0qNmEKo)


## 사전 조건
<a name="query-editor-v2-querying-data-lake-prerequisites"></a>

쿼리 에디터 v2에서 데이터 레이크를 사용하기 전에 Amazon Redshift 환경에서 다음을 설정했는지 확인하세요.
+ AWS Glue를 사용하여 Amazon S3 데이터를 크롤링하고 AWS Lake Formation에 대해 Data Catalog를 활성화하세요.
+ AWS Glue가 활성화된 AWS Lake Formation용 Data Catalog로 Amazon Redshift에 대한 IAM 역할을 생성합니다. 이 절차에 대한 자세한 내용은 [AWS Lake Formation에 대해 활성화된 AWS Glue Data Catalog를 사용하여 Amazon Redshift용 IAM 역할 만들기](https://docs.aws.amazon.com/redshift/latest/dg/c-getting-started-using-spectrum-create-role.html#spectrum-get-stared-create-role-lake-formation)를 참조하세요. Redshift Spectrum 및 Lake Formation 사용에 대한 자세한 내용은 [AWS Lake Formation과 함께 Redshift Spectrum 사용](https://docs.aws.amazon.com/redshift/latest/dg/spectrum-lake-formation.html)을 참조하세요.
+ Lake Formation 데이터베이스에서 쿼리할 테이블에 SELECT 권한을 부여합니다. 이 절차에 대한 자세한 내용은 [Lake Formation 데이터베이스에서 쿼리할 테이블에 SELECT 권한 부여](https://docs.aws.amazon.com/redshift/latest/dg/c-getting-started-using-spectrum-create-role.html#spectrum-get-started-grant-lake-formation-table)를 참조하세요.

  Lake Formation 콘솔(https://console.aws.amazon.com/lakeformation/)의 **권한** 섹션, **데이터 레이크 권한** 페이지에서 IAM 역할, AWS Glue 데이터베이스 및 테이블에 적절한 권한이 있는지 확인할 수 있습니다.
+ 연결된 사용자에게 Amazon Redshift 데이터베이스에서 스키마를 생성하고 데이터 레이크의 데이터에 액세스할 수 있는 권한이 있는지 확인하세요. 쿼리 에디터 v2에서 데이터베이스에 연결할 때는 보안 인증 정보가 포함된 인증 방법을 선택합니다. 보안 인증 정보는 데이터베이스 사용자 또는 IAM 사용자일 수 있습니다. 연결된 사용자에게는 적절한 권한 및 데이터베이스 권한(예:`superuser`)이 있어야 합니다. 클러스터 또는 작업 그룹을 생성한 Amazon Redshift `admin` 사용자에게는 `superuser` 권한이 있으며 스키마를 생성하고 Redshift 데이터베이스를 관리할 수 있습니다. 쿼리 에디터 v2에서 데이터베이스에 연결하는 방법에 대한 자세한 내용은 [Amazon Redshift 데이터베이스에 연결](query-editor-v2-connecting.md) 섹션을 참조하세요.

## 외부 스키마 생성
<a name="query-editor-v2-create-external-schema"></a>

Amazon S3 데이터 레이크의 데이터를 쿼리하려면 먼저 외부 스키마를 생성합니다. 외부 스키마는 [AWS Glue Data Catalog](https://docs.aws.amazon.com/glue/latest/dg/components-overview.html#data-catalog-intro)에서 외부 데이터베이스를 참조합니다.

1. 쿼리 에디터 v2의 **편집기** 보기에서 ![\[Create\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/images/qev2-add.png)**생성**을 선택한 다음 **스키마**를 선택합니다.

1. **스키마 이름(Schema name)**을 입력합니다.

1. **스키마 유형**으로 **외부**를 선택합니다.

1. **Data Catalog** 세부 정보에서 **리전**은 기본적으로 Redshift 데이터베이스가 있는 AWS 리전입니다.

1. 외부 스키마가 매핑되고 AWS Glue 테이블에 대한 참조가 포함된 **AWS Glue 데이터베이스**를 선택합니다.

1. Amazon S3에서 데이터를 쿼리하는 데 필요한 권한이 있는 Amazon Redshift용 **IAM 역할**을 선택합니다.

1. Data Catalog에 대한 권한이 있는 **IAM 역할**을 선택할 수도 있습니다(선택 사항).

1. **스키마 생성**을 선택합니다.

   스키마가 트리 보기 패널의 데이터베이스 아래에 나타납니다.

스키마를 만들 때 데이터베이스에 대한 권한 거부 오류가 표시되면 연결된 사용자에게 스키마를 만들 수 있는 데이터베이스 권한이 있는지 확인하세요.

## Amazon S3 데이터 레이크에서 데이터 쿼리
<a name="query-editor-v2-query-data-lake"></a>

이전 절차에서 생성한 스키마를 사용합니다.

1. 트리 보기 패널에서 스키마를 선택합니다.

1. 테이블 정의를 보려면 테이블을 선택합니다. 테이블 열 및 데이터 유형이 표시됩니다.

1. 테이블을 쿼리하려면 테이블을 선택하고 컨텍스트 메뉴(마우스 오른쪽 버튼 클릭)에서 **테이블 선택**을 선택합니다.

1. **편집기**에서 쿼리를 실행합니다.

   다음 예제 SQL은 쿼리 에디터 v2에서 `flightscsv`라는 이름이 지정된 AWS Glue 테이블의 모든 행을 쿼리하기 위해 생성되었습니다. 출력에 표시된 열과 행은 간소화를 위해 잘려 있습니다.

   ```
   SELECT * FROM "dev"."mydatalake_schema"."flightscsv";
                           
   year    quarter   month   dom  day_of_week   fl_date    unique_carrier  airline_id   carrier   tail_num   fl_num		
   2016    4         10      19   3             10/19/16   OO              20304        OO         N753SK    3086	 
   2016    4         10      19   3             10/19/16   OO              20304        OO         N753SK    3086	
   2016    4         10      19   3             10/19/16   OO              20304        OO         N778SK    3087		
   2016	4         10      19   3             10/19/16   OO              20304        OO         N778SK    3087	
   ...
   ```

# 데이터 공유
<a name="query-editor-v2-datashare-using"></a>

다른 클러스터의 사용자가 데이터를 쿼리할 수 있도록 datashare를 생성할 수 있습니다. 공유하려는 데이터가 포함된 클러스터를 *생산자* 클러스터라고 합니다. 공유하려는 데이터베이스 객체를 대상으로 생산자 클러스터에 datashare를 생성합니다. 스키마, 테이블, 보기 및 SQL 사용자 정의 함수 (UDF)를 공유할 수 있습니다. 데이터를 공유하려는 클러스터를 *소비자* 클러스터라고 합니다. 소비자 클러스터에서 datashare에서 데이터베이스를 생성합니다. 그런 다음 소비자 클러스터의 사용자가 데이터를 쿼리할 수 있습니다. 자세한 내용은 *Amazon Redshift 데이터베이스 개발자 가이드*의 [Getting started with data sharing](https://docs.aws.amazon.com/redshift/latest/dg/getting-started-datasharing.html)를 참조하세요.

# datashare 생성
<a name="query-editor-v2-create-datashare"></a>

클러스터에서 생산자 클러스터로 사용할 datashare를 생성합니다. Datashare에 대한 자세한 내용은 *Amazon Redshift 데이터베이스 개발자 가이드*의 [Amazon Redshift에서 데이터 공유 시 고려 사항](https://docs.aws.amazon.com/redshift/latest/dg/datashare-considerations.html) 섹션을 참조하세요.

1. 사용하려는 생산자 클러스터에서 데이터베이스를 선택합니다.

1. Datashare를 만듭니다. 예:

   ```
   create datashare mysource;
   ```

1. Datashare에 대한 권한을 설정합니다. 예:

   ```
   grant alter, share on datashare mysource to admin;
   ```

1. 공유하려는 데이터베이스 개체에 대한 사용 권한을 설정합니다. 예:

   ```
   alter datashare mysource add schema public;
   ```

   ```
   alter datashare mysource add table public.event;
   ```

1. Datashare에 액세스하기 위해 소비자 클러스터 네임스페이스에 대한 권한을 설정합니다. 예:

   ```
   grant usage on datashare mysource to namespace '2b12345-1234-5678-9012-bb1234567890';
   ```

# Datashares 보기
<a name="query-editor-v2-show-datashare"></a>

생산자 클러스터에서 생성한 datashares를 표시할 수 있습니다.

1. 생산자 클러스터를 선택합니다.

1. Datashares를 표시합니다. 예:

   ```
   show datashares;
   ```

   ```
   share_name	share_owner	source_database		consumer_database	share_type	createdate	is_publicaccessible	share_acl	producer_account	producer_namespace
   test_datashare	100		db_producer		NULL			OUTBOUND	2/15/2022		FALSE		admin		123456789012		p1234567-8765-4321-p10987654321
   ```

# 소비자 데이터베이스 생성
<a name="query-editor-v2-datashare-consumer"></a>

소비자 클러스터에서 datashare에서 데이터베이스를 생성합니다. 이 단계에서는 동일한 계정의 두 클러스터 간에 데이터를 공유하는 방법을 설명합니다. AWS 계정 간 데이터 공유에 대한 자세한 내용은 *Amazon Redshift 데이터베이스 개발자 가이드*의 [AWS 계정 간 데이터 공유](https://docs.aws.amazon.com/redshift/latest/dg/across-account.html)를 참조하세요.

SQL 명령 또는 쿼리 편집기 v2 트리 보기 패널을 사용하여 데이터베이스를 만들 수 있습니다.

**SQL을 사용하려면**

1. 계정 및 생산자 클러스터의 네임스페이스에서 datashare에서 데이터베이스를 생성합니다. 예:

   ```
   create database share_db from datashare mysource of account '123456789012' namespace 'p1234567-8765-4321-p10987654321'; 
   ```

1. 사용자가 데이터베이스와 스키마에 액세스할 수 있도록 권한을 설정합니다. 예:

   ```
   grant usage on database share_db to usernames;
   ```

   ```
   grant usage on schema public to usernames;
   ```

**쿼리 편집기 v2 트리 보기 패널을 사용하려면**

1. ![\[Plus sign icon inside a circle, indicating an add or create action.\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/images/qev2-add.png)**생성(Create)**을 선택한 후 **데이터베이스(Database)**를 선택합니다.

1. **데이터베이스 이름(Database name)**을 입력합니다.

1. (선택 사항) **사용자 및 그룹(Users and groups)**을 선택하고 **데이터베이스 사용자(Database user)**를 선택합니다.

1. **datashare를 사용하여 생성(Create using a datashare)**을 선택합니다.

1. Datashare를 선택합니다.

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

   쿼리 편집기 v2 트리 보기 패널에 새 ![\[datashare\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/images/qev2-datashare.png)**datashare** 데이터베이스가 표시됩니다.

1. 사용자가 데이터베이스와 스키마에 액세스할 수 있도록 권한을 설정합니다. 예:

   ```
   grant usage on database share_db to usernames;
   ```

   ```
   grant usage on schema public to usernames;
   ```

# datashare 객체 쿼리
<a name="query-editor-v2-query-datashare"></a>

데이터베이스 클러스터에서 데이터베이스, 스키마 및 객체 이름의 세 부분으로 구성된 표기법으로 표현된 완전한 객체 이름을 사용하여 데이터 공유를 쿼리할 수 있습니다.

1. 쿼리 편집기 v2 트리 보기 패널에서 스키마를 선택합니다.

1. 테이블 정의를 보려면 테이블을 선택합니다.

   테이블 열 및 데이터 유형이 표시됩니다.

1. 테이블을 쿼리하려면 테이블을 선택하고 컨텍스트 메뉴(마우스 오른쪽 버튼 클릭)를 사용하여 **Select table(테이블 선택)**을 선택합니다.

1. SELECT 명령을 사용하여 테이블 쿼리 예:

   ```
   select top 10 * from test_db.public.event;
   ```

# 쿼리 에디터 v2를 사용하여 예약된 쿼리
<a name="query-editor-v2-schedule-query"></a>

Amazon Redshift Query Editor V2를 사용하면 SQL 쿼리를 자동화하여 예약에 따라 실행할 수 있습니다. 예약된 쿼리는 지정된 시간 또는 간격으로 자동 실행되는 SQL 스테이트먼트로, 이를 통해 반복되는 데이터 작업 및 분석 작업을 효율적으로 관리할 수 있습니다. 배치 처리를 간소화하거나, 정기 보고서를 작성하거나, Amazon Redshift 환경 내에서 데이터 파이프라인을 유지 관리하려는 경우 쿼리를 예약할 수 있습니다.

예약된 쿼리를 사용하면 추출, 전환, 적재(ETL) 워크플로를 자동화하고, 최신 인사이트로 대시보드를 새로고침하고, 다양한 데이터 관리 경로를 운영하는 것이 가능합니다. 다음 페이지에서는 Amazon Redshift 워크로드를 최적화하기 위해 예약된 쿼리를 작성, 구성 및 관리하는 프로세스를 자세히 설명합니다.

# 쿼리 에디터 v2를 사용하여 쿼리 예약 생성
<a name="query-editor-v2-schedule-query-create"></a>

Amazon Redshift 쿼리 에디터 v2를 사용하여 SQL 문의 실행 일정을 생성할 수 있습니다. 비즈니스 요구 사항에 맞는 시간 간격으로 SQL 문의 실행 일정을 생성합니다. 예약된 쿼리를 실행할 시간이 되면 Amazon EventBridge에서 쿼리가 시작되고 Amazon Redshift Data API가 사용됩니다.

**SQL 문 실행 일정을 생성하려면**

1. **편집기** ![\[Editor\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/images/qev2-align-left.png) 뷰에서 ![\[Schedule\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/images/qev2-calendar.png) **일정**을 선택하여 SQL 문의 실행 일정을 생성할 수 있습니다.

1. 일정을 정의할 때 다음 정보를 제공합니다.
   + 쿼리를 실행하는 데 필요한 권한을 맡는 IAM 역할. 이 IAM 역할은 클러스터 또는 작업 그룹에도 연결됩니다.
   + 클러스터 또는 작업 그룹 액세스 권한을 부여하기 위한 AWS Secrets Manager 또는 임시 보안 인증 정보의 인증 값. 이러한 인증 방법은 데이터 API에서 지원됩니다. 자세한 내용은 [예약된 쿼리 인증](query-editor-v2-schedule-query-authentication.md) 섹션을 참조하세요.
   + 데이터베이스가 있는 클러스터 또는 작업 그룹.
   + 쿼리할 데이터가 있는 데이터베이스의 이름.
   + 예약된 쿼리의 이름과 설명입니다. 쿼리 편집기 v2는 사용자가 제공한 예약된 쿼리 이름 앞에 "QS2-"를 접두사로 붙입니다. 쿼리 에디터 v1은 예약된 쿼리 이름 앞에 'QS-'를 붙입니다.
   + 일정에 따라 실행할 SQL 문.
   + 일정을 정의하는 일정 빈도 및 반복 옵션 또는 cron 형식 값. 자세한 내용을 알아보려면 *Amazon CloudWatch Events 사용 설명서*의 [Cron 표현식](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/ScheduledEvents.html#CronExpressions)을 참조하세요.
   + 필요에 따라 표준 Amazon SNS 알림을 사용하여 예약된 쿼리를 모니터링할 수 있습니다. Amazon SNS 알림에 제공한 이메일 주소를 확인해야 할 수 있습니다. 이메일에서 Amazon SNS 알림을 받을 이메일 주소를 확인할 수 있는 링크를 확인합니다. 자세한 정보는 *Amazon Simple Notification Service 개발자 안내서*의 [이메일 알림](https://docs.aws.amazon.com/sns/latest/dg/sns-email-notifications.html)을 참조하세요. 쿼리가 실행 중이지만 SNS 주제에 게시된 메시지가 표시되지 않는 경우 *Amazon EventBridge 사용 설명서*의 [내 규칙이 실행되지만 내 Amazon SNS 주제에 어떤 메시지도 게시되지 않음](https://docs.aws.amazon.com/eventbridge/latest/userguide/eventbridge-troubleshooting.html#eb-no-messages-published-sns)을 참조하세요.

1. **쿼리 예약**을 선택하여 일정을 저장 및 활성화하고 **예약된 쿼리** 뷰의 쿼리 목록에 해당 일정을 추가합니다.

**예약된 쿼리** ![\[Scheduled queries\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/images/qev2-calendar.png) 뷰에는 클러스터 및 작업 그룹에 대한 모든 예약된 쿼리가 나열됩니다. 이 뷰에서는 쿼리 예약 세부 정보를 표시하고, 일정을 활성화 또는 비활성화하고, 일정을 편집하고, 예약된 쿼리를 삭제할 수 있습니다. 쿼리 세부 정보를 볼 때 일정과 함께 쿼리를 실행한 기록도 볼 수 있습니다.

**참고**  
쿼리 예약 실행은 24시간 동안만 **일정 기록** 목록에서 확인할 수 있습니다. 일정에 따라 실행되는 쿼리는 쿼리 편집기 v2의 **쿼리 기록** 뷰에 나타나지 않습니다.

## 쿼리 예약 데모
<a name="query-editor-v2-schedule-query-demo"></a>

쿼리 예약 데모를 보려면 다음 동영상을 시청하세요.

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/gTw0XUpO8sw/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/gTw0XUpO8sw)


# 쿼리 예약을 위한 권한 설정
<a name="query-editor-v2-schedule-query-permissions"></a>

쿼리를 예약하려면 일정을 정의하는 AWS Identity and Access Management(IAM) 사용자 및 일정과 연결된 IAM 역할에 Amazon EventBridge와 Amazon Redshift Data API를 사용할 수 있는 IAM 권한을 구성해야 합니다. 예약된 쿼리에서 이메일을 받으려면 선택적으로 지정하는 Amazon SNS 알림도 구성해야 합니다.

다음은 AWS 관리형 정책을 사용하여 권한을 제공하는 작업에 대한 설명입니다. 하지만 환경에 따라 허용되는 권한의 범위를 좁힐 수 있습니다.

쿼리 에디터 v2에 로그인한 IAM 사용자의 경우 IAM 콘솔([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/))을 사용하여 IAM 사용자를 편집합니다.
+ Amazon Redshift 및 쿼리 에디터 v2 작업을 실행할 수 있는 권한 외에도 IAM 사용자에게 해당 `AmazonEventBridgeFullAccess` 및 `AmazonRedshiftDataFullAccess` AWS 관리형 정책을 연결합니다.
+ 또는 역할에 권한을 할당하고 사용자에게 역할을 할당합니다.

  예약된 문을 정의할 때 지정하는 IAM 역할의 리소스 ARN에 대한 `sts:AssumeRole` 권한을 허용하는 정책을 연결합니다. 역할 수임에 대한 자세한 내용은 *IAM 사용 설명서*의 [사용자에게 역할 전환 권한 부여](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_permissions-to-switch.html)를 참조하세요.

  다음 예에서는 `123456789012` 계정에서 IAM 역할 `myRedshiftRole`을 수임하는 권한 정책을 보여줍니다. IAM 역할 `myRedshiftRole`은 예약된 쿼리가 실행되는 클러스터 또는 작업 그룹에 연결된 IAM 역할이기도 합니다.

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

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Sid": "AssumeIAMRole",
              "Effect": "Allow",
              "Action": "sts:AssumeRole",
              "Resource": [
                  "arn:aws:iam::123456789012:role/myRedshiftRole"
              ]
          }
      ]
  }
  ```

------

  쿼리를 예약하는 데 사용된 IAM 역할의 신뢰 정책을 업데이트하여 IAM 사용자가 쿼리를 맡을 수 있도록 합니다.

  ```
  {
              "Sid": "AssumeRole",
              "Effect": "Allow",
              "Principal": {
                  "AWS": "arn:aws:iam::123456789012:user/myIAMusername"
              },
              "Action": "sts:AssumeRole"
          }
      ]
  }
  ```

예약된 쿼리 실행을 허용하도록 지정하는 IAM 역할의 경우 IAM 콘솔([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/))을 사용하여 IAM 역할을 편집합니다.
+ `AmazonRedshiftDataFullAccess` 및 `AmazonEventBridgeFullAccess` AWS 관리형 정책을 IAM 역할에 연결합니다. `AmazonRedshiftDataFullAccess` 관리형 정책은 `RedshiftDataFullAccess` 키로 태그가 지정된 Redshift Serverless 작업 그룹에 대해서만 `redshift-serverless:GetCredentials` 권한을 허용합니다.

# 예약된 쿼리 인증
<a name="query-editor-v2-schedule-query-authentication"></a>

쿼리를 예약할 때 SQL 실행 시 다음 인증 방법 중 하나를 사용합니다. 각 방법마다 쿼리 에디터 v2에서 서로 다른 입력 조합이 필요합니다. 이러한 인증 방법은 SQL 문을 실행하는 데 사용되는 데이터 API에서 지원됩니다.

쿼리를 실행하는 데 사용되는 데이터베이스 사용자 또는 역할에는 필요한 데이터베이스 권한이 있어야 합니다. 예를 들어 `mytable` 테이블에 `IAMR:MyRedshiftQEv2Scheduler` 권한을 부여하려면 다음 SQL 명령을 실행합니다.

```
GRANT all ON TABLE mytable TO "IAMR:MyRedshiftQEv2Scheduler";
```

클러스터 또는 작업 그룹의 데이터베이스 사용자 목록을 보려면 시스템 뷰 `PG_USER_INFO`를 쿼리하세요.

**참고**  
 쿼리를 예약하는 모든 Redshift Serverless 작업 그룹에는 `RedshiftDataFullAccess` 키로 태그가 지정됩니다. 자세한 내용은 [Amazon Redshift Data API에 대한 액세스 권한 부여](data-api-access.md) 섹션을 참조하세요.  
작업 그룹에 태그를 지정하는 대신 `redshift-serverless:GetCredentials`를 허용하는 인라인 정책을 IAM 역할(일정과 함께 지정됨)에 추가할 수 있습니다. 예제:  

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "UseTemporaryCredentialsForAllServerlessWorkgroups",
            "Effect": "Allow",
            "Action": "redshift-serverless:GetCredentials",
            "Resource": [
                "arn:aws:redshift-serverless:*:*:workgroup/*"
            ]
        }
    ]
}
```

**AWS Secrets Manager**  
이 방법으로 AWS Secrets Manager에 저장되어 있는 **secret-arn**에 대한 보안 암호 값을 제공합니다. 이 보안 암호에는 데이터베이스에 연결하기 위한 자격 증명이 포함되어 있습니다. 클러스터 또는 작업 그룹을 생성할 때 적절한 보안 인증을 사용하여 암호를 생성했을 수 있습니다. 보안 암호는 키 `RedshiftDataFullAccess`로 태그가 지정되어야 합니다. 태그 키가 아직 없는 경우 AWS Secrets Manager 콘솔을 사용하여 추가합니다. 보안 암호 생성에 대한 정보는 [데이터베이스 연결 자격 증명을 위한 보안 암호 생성](redshift-secrets-manager-integration-create.md) 섹션을 참조하세요.  
최소 권한에 대한 자세한 내용은 *AWS Secrets Manager User Guide*의 [Creating and Managing Secrets with AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/managing-secrets.html)를 참조하세요.

**임시 자격 증명**  
이 방법을 사용하는 경우 클러스터의 데이터베이스에 연결할 때 **데이터베이스 이름**과 **데이터베이스 사용자** 값을 입력합니다. 작업 그룹의 데이터베이스에 연결할 때 **데이터베이스 이름**만 입력해야 합니다.  
클러스터에 연결할 때, `AmazonRedshiftDataFullAccess` 정책은 `redshift_data_api_user`라는 데이터베이스 사용자에게 `redshift:GetClusterCredentials`에 대한 권한을 허용합니다. 다른 데이터베이스 사용자를 사용하여 SQL 문을 실행하려면 `redshift:GetClusterCredentials`를 허용하는 정책을 클러스터에 연결된 IAM 역할에 추가합니다. 다음 예제 정책에서는 데이터베이스 사용자를 `awsuser` 및 `myuser`를 허용합니다.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "UseTemporaryCredentialsForAllDbUsers",
            "Effect": "Allow",
            "Action": "redshift:GetClusterCredentials",
            "Resource": [
                "arn:aws:redshift:*:*:dbuser:*/awsuser",
                "arn:aws:redshift:*:*:dbuser:*/myuser"
            ]
        }
    ]
}
```

# 쿼리 예약 기록을 볼 수 있는 권한 설정
<a name="query-editor-v2-schedule-query-view-history"></a>

사용자가 쿼리 예약 기록을 볼 수 있도록 허용하려면 IAM 역할(예약과 함께 지정됨) **신뢰 관계**를 편집하여 권한을 추가합니다.

다음은 IAM 사용자 *myIAMusername*이 쿼리 예약 기록을 볼 수 있도록 허용하는 IAM 역할 내 신뢰 정책의 예입니다. IAM 사용자에게 `sts:AssumeRole` 권한을 허용하는 대신 IAM 역할에 이 권한을 허용하도록 선택할 수 있습니다.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": [
                    "redshift.amazonaws.com",
                    "redshift-serverless.amazonaws.com"
                ]
            },
            "Action": "sts:AssumeRole"
        },
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "events.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        },
        {
            "Sid": "AssumeRole",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::123456789012:user/myIAMusername"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}
```

------

# 예약된 쿼리 모니터링
<a name="query-editor-v2-schedule-query-sns"></a>

이메일 알림을 보내도록 지정한 Amazon SNS 주의 경우 쿼리 편집기 v2에서 **SNS 알림** 섹션으로 이동하여 모니터링을 **켜고** **SNS 주제 생성**으로 주제를 생성하여 Amazon SNS 주제를 생성합니다. 쿼리 편집기 v2가 Amazon SNS 주제를 생성하고 Amazon EventBridge에 대한 액세스 정책에 서비스 주체를 추가합니다. 다음은 Amazon SNS 주제에 생성된 **액세스 정책** 예입니다. 이 예제에서는 AWS 리전 *us-west-2*, AWS 계정 *123456789012*, Amazon SNS 주제 *select-version-pdx-testunload*가 사용되었습니다.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Id": "__default_policy_ID",
  "Statement": [
    {
      "Sid": "Allow_Publish_Events",
      "Effect": "Allow",
      "Principal": {
        "Service": "events.amazonaws.com"
      },
      "Action": "sns:Publish",
      "Resource": "arn:aws:sns:us-west-2:123456789012:select-version-pdx-testunload"
    }
  ]
}
```

------

예약된 쿼리가 실행되면 Amazon SNS에서 AWS 알림 이메일을 보냅니다. 다음 예는 Amazon SNS 알림 주제 *may25a-SNS*를 사용하여 AWS 계정 *123456789012* 내 AWS 리전 *eu-north-1*에서 실행된 예약된 쿼리 *QS2-may25a*에 대해 *myemail@example.com*으로 보낸 이메일을 보여줍니다.

```
{"version":"0","id":"8e4323ec-5258-7138-181b-91290e30ff9b","detail-type":"Scheduled Event","source":"aws.events","account":"123456789012","time":"2023-05-25T15:22:00Z",
                    "region":"eu-north-1","resources":["arn:aws:events:eu-north-1:123456789012:rule/QS2-may25a"],"detail":{}}

--
If you wish to stop receiving notifications from this topic, please click or visit the link below to unsubscribe:
https://sns.eu-north-1.amazonaws.com/unsubscribe.html?SubscriptionArn=arn:aws:sns:eu-north-1:123456789012:may25a-SNS:0c1a3d05-39c2-4507-bc3d-47250513d7b0&Endpoint=myemail@example.com

Please do not reply directly to this email. If you have any questions or comments regarding this email, please contact us at https://aws.amazon.com/support
```

# 쿼리 예약 설정 문제 해결
<a name="query-editor-v2-schedule-query-troubleshooting"></a>

쿼리 예약에 문제가 있는 경우 다음을 고려하세요.

**쿼리가 실행되지 않음**  
일정에 사용된 IAM 역할에 임시 클러스터 보안 인증을 가져올 수 있는 권한이 있는지 확인합니다. 프로비저닝된 클러스터에 대한 권한은 `redshift:GetClusterCredentialsWithIAM`입니다. Redshift Serverless 작업 그룹에 대한 권한은 `redshift-serverless:GetCredentials`입니다.

**예약된 기록이 표시되지 않음**  
AWS 콘솔에 로그인하는 데 사용된 IAM 사용자 또는 IAM 역할이 쿼리 예약에 사용된 IAM 역할의 신뢰 정책에 추가되지 않았습니다.  
AWS Secrets Manager을 사용하여 예약된 쿼리를 연결할 때 암호에 `RedshiftDataFullAccess` 키 태그가 지정되었는지 확인합니다.  
예약된 쿼리가 AWS Secrets Manager 연결을 사용하는 경우 쿼리를 예약하는 데 사용된 IAM 역할에는 역할에 연결된 관리형 정책 `SecretsManagerReadWrite`에 상응하는 정책이 있어야 합니다.

**쿼리 기록 상태가 `Failed`입니다.**  
쿼리가 실패한 이유에 대한 자세한 내용은 SYS\$1QUERY\$1HISTORY 시스템 뷰를 참조하세요. 반적인 문제는 쿼리를 실행하는 데 사용된 데이터베이스 사용자 또는 역할에 SQL을 실행하는 데 필요한 권한이 없을 수 있다는 것입니다. 자세한 내용은 [예약된 쿼리 인증](query-editor-v2-schedule-query-authentication.md) 섹션을 참조하세요.  
다음 SQL은 SYS\$1QUERY\$1HISTORY 뷰를 쿼리하여 실패한 쿼리를 반환합니다.  

```
SELECT user_id, query_id, transaction_id, session_id, database_name, query_type, status, error_message, query_text 
FROM sys_query_history
WHERE status = 'failed';
```
실패한 특정 예약 쿼리에 대한 세부 정보를 찾으려면 [AWS CloudShell을 사용하여 예약된 쿼리 결과 보기](query-editor-v2-schedule-query-troubleshooting-cloudshell.md)를 참조하세요.

# AWS CloudShell을 사용하여 예약된 쿼리 결과 보기
<a name="query-editor-v2-schedule-query-troubleshooting-cloudshell"></a>

AWS CloudShell을 사용하여 예약 쿼리에 대한 세부 정보를 찾을 수 있습니다. 다음 절차에 표시된 AWS CLI 명령을 실행하려면 적절한 권한이 있어야 합니다.

**예약 쿼리 결과를 보려면 다음을 수행하세요.**

1. AWS 콘솔에서 AWS CloudShell 명령 프롬프트를 엽니다. AWS CloudShell에 대한 자세한 내용은 **AWS CloudShell 사용 설명서에서 [AWS CloudShell이란 무엇인가요](https://docs.aws.amazon.com/cloudshell/latest/userguide/welcome.html)를 참조하세요.

1. 예약된 쿼리의 IAM 역할을 가정합니다. 역할을 가정하려면 쿼리 편집기 v2에서 예약된 쿼리와 연결된 IAM 역할을 찾아 AWS CloudShell의 AWS CLI 명령에서 사용합니다. 예를 들어 역할 `scheduler`의 경우, 예약된 쿼리에서 사용되는 역할을 가정하기 위해 AWS STS 명령을 입력합니다.

   ```
   aws sts assume-role --role-arn "arn:aws:iam::123456789012:role/scheduler" --role-session-name "scheduler-test" 
   ```

   반환되는 보안 인증은 다음과 유사합니다.

   ```
   "Credentials": {
   "AccessKeyId": "AKIAIOSFODNN7EXAMPLE",
   "SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
   "SessionToken": "je7MtGbClwBF/2Zp9Utk/h3yCo8nvbEXAMPLEKEY...",        
   "Expiration": "2023-08-18T18:19:44+00:00"
   },
   "AssumedRoleUser": {
   "AssumedRoleId": "AROA35B2NH6WBTP7ONL4E:scheduler-test",
   "Arn": "arn:aws:sts::123456789012:assumed-role/scheduler/scheduler-test"
   }
   }
   ```

1. IAM 역할을 가정하여 표시된 보안 인증을 사용하여 AWS CLI에서 환경 변수를 생성합니다.  이러한 토큰은 만료 시간 전에 사용해야 합니다. 예를 들어 AWS CloudShell에 다음을 입력합니다.

   ```
   export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE
   export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
   export AWS_SESSION_TOKEN=je7MtGbClwBF/2Zp9Utk/h3yCo8nvbEXAMPLEKEY...
   ```

1. 실패한 쿼리의 오류를 보려면 AWS CLI 명령을 실행하여 문을 설명합니다. SQL 문 **ID**는 쿼리 편집기 v2에서 예약된 쿼리의 **일정 기록** 섹션에 표시된 ID에서 가져옵니다.

   ```
   aws redshift-data describe-statement --id 130d2620-05d2-439c-b7cf-815d9767f513
   ```

   이 예에서 예약된 SQL `select * from users limit 100`은 `users` 테이블이 존재하지 않는다는 SQL 오류를 발생시킵니다.

   ```
   {
   "CreatedAt": "2023-08-18T17:39:15.563000+00:00",
   "Duration": -1,
   "Error": "ERROR: relation \"users\" does not exist",
   "HasResultSet": false,
   "Id": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
   "QueryString": "select * from users limit 100\n—RequestID=a1b2c3d4-5678-90ab-cdef-EXAMPLE22222; TraceID=1-633c5642-4039308d03f3a0ba53dbdf6f",
   "RedshiftPid": 1073766651,
   "RedshiftQueryId": 0,
   "ResultRows": -1,
   "ResultSize": -1,
   "Status": "FAILED",
   "UpdatedAt": "2023-08-18T17:39:16.116000+00:00",
   "WorkgroupName": "default"
   }
   ```

# 쿼리 결과 시각화
<a name="query-editor-v2-charts"></a>

쿼리를 실행하고 결과가 표시되면 **Chart**(차트)를 설정하여 현재 결과 페이지의 그래픽 시각화를 표시할 수 있습니다. 다음 컨트롤을 사용하여 차트의 내용, 구조 및 모양을 정의할 수 있습니다.

![\[Plus sign icon representing an addition or new item action.\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/images/add-plus.png) 트레이스  
차트에서 관련 그래픽 표시 집합을 나타냅니다. 한 차트에서 여러 트레이스를 정의할 수 있습니다.

Type  
트레이스 유형을 정의하여 데이터를 다음 중 하나로 나타낼 수 있습니다.  
+ 산점도 또는 거품형 차트를 위한 분산형 차트입니다.
+ 세로 또는 가로 막대로 데이터 범주를 나타내는 막대형 차트입니다.
+ 채워진 영역을 정의하는 영역 차트입니다.
+ 막대를 사용하여 빈도 분포를 나타내는 히스토그램입니다.
+ 각 슬라이스가 전체의 백분율을 나타내는 원형으로 데이터를 표현하기 위한 원형 차트입니다.
+ 프로세스의 다양한 단계를 통해 데이터를 나타내는 깔때기형 또는 깔때기 영역 차트입니다.
+ OHLC(open-high-low-close) 차트는 일반적으로 시간 간격을 나타내는 x축을 따라 열린 값, 높은 값, 낮은 값, 닫힌 값을 나타내는 재무 데이터에 자주 사용됩니다.
+ 타임라인에서 범주에 대한 값 범위를 나타내는 원통형 차트입니다.
+ 일련의 중간 값을 통해 초기 값의 증가 또는 감소를 나타내는 폭포 차트입니다. 값은 시간 간격이나 범주를 나타낼 수 있습니다.
+ 시간에 따른 값의 변화를 나타내는 꺾은선형 차트입니다.

X축  
X축을 따라 표시할 값이 포함된 테이블 열을 지정합니다. 설명 값이 포함된 열은 일반적으로 차원 데이터를 나타냅니다. 양적 값을 포함하는 열은 일반적으로 실제 데이터를 나타냅니다.

Y축  
Y축을 따라 표시할 값이 포함된 테이블 열을 지정합니다. 설명 값이 포함된 열은 일반적으로 차원 데이터를 나타냅니다. 양적 값을 포함하는 열은 일반적으로 실제 데이터를 나타냅니다.

서브플롯  
차트 데이터 표시를 추가로 정의할 수 있습니다.

변형  
변환을 정의하여 트레이스 데이터를 필터링할 수 있습니다. 분할 변환을 사용하면 단일 소스 트레이스에서 여러 기록을 표시할 수 있습니다. 집계 변환을 사용하면 트레이스를 평균값 또는 최솟값으로 표시할 수 있습니다. 정렬 변환을 사용하면 트레이스를 정렬할 수 있습니다.

일반 모양  
배경색, 여백 색, 디자인 팔레트의 색 눈금, 텍스트 스타일 및 크기, 제목 스타일 및 크기, 모드 표시줄의 기본값을 설정할 수 있습니다. 끌기, 클릭 및 가리키기의 상호 작용을 정의할 수 있습니다. 메타 텍스트를 정의할 수 있습니다. 트레이스, 축, 범례 및 주석의 기본 모양을 정의할 수 있습니다.

**차트를 생성하려면**

1. 쿼리를 실행하고 결과를 가져옵니다.

1. **차트(Charts)**를 설정합니다.

1. **기록(Trace)**을 선택하고 데이터 시각화를 시작합니다.

1. 다음 중 하나에서 차트 스타일을 선택합니다.
   + 분산형
   + 막대형
   + 영역
   + 히스토그램(Histogram)
   + 파이형
   + 퍼널
   + 퍼널 영역
   + OHLC(Open-High-Low-Close)
   + 캔들스틱
   + 폭포
   + 행

1. **스타일(Style)**을 선택하여 색상, 축, 범례 및 주석을 포함한 모양을 사용자 지정합니다. 텍스트, 도형 및 이미지를 추가할 수 있습니다.

1. **주석(Annotations)**을 선택하여 텍스트, 모양 및 이미지를 추가합니다.

1. 차트 표시 내용을 업데이트하려면 **새로 고침(Refresh)**을 선택합니다. **전체 화면(Full screen)**을 선택하여 차트 표시를 확장합니다.

## 예: 파이형 차트를 생성하여 쿼리 결과 시각화
<a name="query-editor-v2-example-pie-chart"></a>

다음 예에서는 샘플 데이터베이스의 *Sales* 테이블을 사용합니다. 자세한 내용은 *Amazon Redshift 데이터베이스 개발자 가이드*의 [샘플 데이터베이스](https://docs.aws.amazon.com/redshift/latest/dg/c_sampledb.html)를 참조하세요.

다음은 파이형 차트에 대한 데이터를 제공하기 위해 실행하는 쿼리입니다.

```
select top 5 eventname, count(salesid) totalorders, sum(pricepaid) totalsales 
from sales, event
where sales.eventid=event.eventid group by eventname
order by 3;
```

**총 매출을 기준으로 상위 이벤트에 대한 파이형 차트를 생성하려면**

1. 쿼리를 실행합니다.

1. 쿼리 결과 영역에서 **차트(Chart)**를 설정합니다.

1. **추적(Trace)**을 선택합니다.

1. **유형(Type)**에서 **파이(Pie)**를 선택합니다.

1. **값(Values)**에서 *totalsales*를 선택합니다.

1. **레이블(Labels)**에서 *eventname*을 선택합니다.

1. **스타일(Style)**을 선택하고 **일반(General)**을 선택합니다.

1. **색조(Colorscales)**에서 **카테고리(Categorical)**를 선택한 다음 **Pastel2**를 선택합니다.

![\[파이형 차트\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/images/pie-chart.png)


## 예: 매출과 판매를 비교하기 위한 혼합형 차트 생성
<a name="query-editor-v2-example-revenue-sales-chart"></a>

이 예제의 단계를 수행하여 매출 데이터의 막대형 차트와 판매 데이터의 꺽은선형 그래프를 결합하는 차트를 만듭니다. 다음 예제에서는 tickit 샘플 데이터베이스의 *Sales* 테이블을 사용합니다. 자세한 내용은 *Amazon Redshift Database Developer Guide*Amazon Redshift 데이터베이스 개발자 가이드의 [Sample database](https://docs.aws.amazon.com/redshift/latest/dg/c_sampledb.html)(샘플 데이터베이스)를 참조하세요.

다음은 차트의 데이터를 제공하기 위해 실행하는 쿼리입니다.

```
select eventname, total_price, total_qty_sold
from  (select eventid, total_price, total_qty_sold, ntile(1000) over(order by total_price desc) as percentile
       from (select eventid, sum(pricepaid) total_price, sum(qtysold) total_qty_sold
             from   tickit.sales
             group by eventid)) Q, tickit.event E
       where Q.eventid = E.eventid
       and percentile = 1
order by total_price desc;
```

**매출과 판매를 비교하기 위한 혼합형 차트를 생성하려면**

1. 쿼리를 실행합니다.

1. 쿼리 결과 영역에서 **차트(Chart)**를 설정합니다.

1. *trace o(트레이스 o)*의 **Type(유형)**에서 **Bar(막대형)**를 선택합니다.

1. **X**는 *eventname*을 선택합니다.

1. **Y**는 *total\$1price*를 선택합니다.

   X축을 따라 이벤트 이름을 표시하는 막대형 차트가 표시됩니다.

1. **Style(스타일)**에서 **Traces(트레이스)**를 선택합니다.

1. **Name(이름)**에 *Revenue*를 입력합니다.

1. **Style(스타일)**에서 **Axes(축)**를 선택합니다.

1. **Titles(제목)**에서 **Y**를 선택하고 *Revenue*를 입력합니다.

   왼쪽 Y 축에 *Revenue* 레이블이 표시됩니다.

1. **Structure(구조)**에서 **Traces(트레이스)**를 선택합니다.

1. ![\[Plus sign icon representing an addition or new item action.\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/images/add-plus.png) **Trace(트레이스)**를 선택합니다.

   트레이스 1 옵션이 표시됩니다.

1. **유형(Type)**에서 **Line(꺽은선형)**를 선택합니다.

1. **X**는 *eventname*을 선택합니다.

1. **Y**는 *total\$1qty\$1sold*를 선택합니다.

1. **Axes To Use(사용할 축)**의 **Y Axis(Y 축)**에 대해 ![\[Plus sign icon representing an addition or new item action.\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/images/add-plus.png)를 선택합니다.

   **Y Axis(Y 축)**에 *Y2*가 표시됩니다.

1. **Style(스타일)**에서 **Axes(축)**를 선택합니다.

1. **Titles(제목)**에서 **Y2**를 선택합니다.

1. **Name(이름)**에 *Sales*를 입력합니다.

1. **Lines(선)**에서 *Y:Sales*를 선택합니다.

1. **AXis line(축 선)**에서 **Show(표시)**를 선택하고 **Position(위치)**에서 **Right(오른쪽)**를 선택합니다.

![\[매출 및 판매 차트\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/images/chart-revenue-sales.png)


## 데모: Amazon Redshift 쿼리 편집기 v2를 사용하여 시각화 작성
<a name="query-editor-v2-demo-visualizations"></a>

시각화를 작성하는 방법에 대한 데모를 보려면 다음 동영상을 시청하세요.

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/-FYqTIER-6U/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/-FYqTIER-6U)


# 팀으로 협업 및 공유
<a name="query-editor-v2-team"></a>

팀과 쿼리를 공유할 수 있습니다.

팀은 공동으로 작업하면서 쿼리 편집기 v2 리소스를 공유하는 사용자 집합으로 정의됩니다. 관리자는 IAM 역할에 태그를 추가하여 팀을 생성할 수 있습니다. 자세한 내용은 [쿼리 편집기 v2를 사용하는 데 필요한 권한](redshift-iam-access-control-identity-based.md#redshift-policy-resources.required-permissions.query-editor-v2) 섹션을 참조하세요.

# 쿼리 저장 및 검색
<a name="query-editor-v2-save-queries"></a>

팀과 쿼리를 공유하려면 먼저 쿼리를 저장하세요. 저장된 쿼리를 보고 삭제할 수 있습니다.

**쿼리를 저장하려면**

1. 쿼리를 준비하고 **저장(Save)**을 선택합니다.

1. 쿼리 제목을 입력합니다.

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

**저장된 쿼리를 찾아보려면**

1. 탐색 창에서 **쿼리(Queries)**를 선택합니다.

1. **내 쿼리(My queries)**, **나에 의해 공유됨(Shared by me)** 또는 **내 팀에 공유됨(Shared to my team)** 상태의 쿼리를 볼 수 있습니다. 이러한 쿼리는 개별 쿼리로 표시되거나 사용자가 생성한 폴더 내에 나타날 수 있습니다.

# 쿼리 공유
<a name="query-editor-v2-query-share"></a>

팀과 쿼리를 공유할 수 있습니다. 또한 저장된 쿼리의 기록을 보고 쿼리 버전을 관리할 수 있습니다.

팀과 쿼리를 공유하려면 기본 태그 `sqlworkbench-team`이 계정의 나머지 팀원과 동일한 값으로 설정되어 있는지 확인합니다. 예를 들어, 관리자는 회계 부서의 모든 사람에 대해 값을 `accounting-team`으로 설정할 수 있습니다. 문제 해결 예는 [쿼리 편집기 v2를 사용하는 데 필요한 권한](redshift-iam-access-control-identity-based.md#redshift-policy-resources.required-permissions.query-editor-v2)을(를) 참조하세요.

**팀과 쿼리를 공유하려면**

1. 탐색 창에서 **쿼리(Queries)**를 선택합니다.

1. 공유하려는 쿼리의 컨텍스트(마우스 오른쪽 버튼 클릭) 메뉴를 열고 **내 팀과 공유(Share with my team)**를 선택합니다.

1. 쿼리를 공유할 팀을 하나 이상 선택한 다음 **공유 옵션 저장(Save sharing options)**을 선택합니다.

# 쿼리 버전 관리
<a name="query-editor-v2-query-versions"></a>

SQL 쿼리를 저장할 때마다 쿼리 편집기 v2에서 이를 새 버전으로 저장합니다. 이전 쿼리 버전을 찾아보거나, 쿼리 사본을 저장하거나, 쿼리를 복원할 수 있습니다.

**쿼리 버전을 관리하려면**

1. 탐색 창에서 **쿼리(Queries)**를 선택합니다.

1. 작업할 쿼리에 대한 컨텍스트(마우스 오른쪽 버튼 클릭) 메뉴를 엽니다.

1. **버전 기록(Version history)**을 선택하여 쿼리 버전 목록을 엽니다.

1. **버전 기록(Version history)** 페이지에서 다음 작업을 수행할 수 있습니다.
   + **선택 항목으로 되돌리기(Revert to selected)** - 선택한 버전으로 되돌리고 이 버전으로 작업을 계속합니다.
   + **다른 이름으로 선택 항목 저장(Save selected as)** - 편집기에서 새 쿼리를 생성합니다.

# Amazon Redshift Query Editor V1을 사용하여 데이터베이스 쿼리
<a name="query-editor"></a>

쿼리 편집기를 사용하면 Amazon Redshift 클러스터에서 호스팅하는 데이터베이스에 대한 쿼리를 손쉽게 실행할 수 있습니다. 클러스터를 생성한 후 바로 Amazon Redshift 콘솔에서 쿼리 편집기를 사용해 쿼리를 실행할 수 있습니다.

**참고**  
이 원본 쿼리 편집기를 사용하면 Amazon Redshift Serverless 내의 데이터는 쿼리할 수 없습니다. 대신 Amazon Redshift 쿼리 편집기 v2를 사용하십시오.

2021년 2월에 업데이트된 쿼리 편집기가 배포되고 쿼리 편집기를 사용할 수 있는 권한 부여 권한이 변경되었습니다. 새 쿼리 편집기는 Amazon Redshift Data API를 사용하여 쿼리를 실행합니다. AWS 관리형 AWS Identity and Access Management(IAM) 정책인 `AmazonRedshiftQueryEditor` 정책이 필요한 권한을 포함하도록 업데이트되었습니다. 사용자 정의 IAM 정책이 있는 경우 해당 정책을 업데이트해야 합니다. `AmazonRedshiftQueryEditor`를 가이드로 사용합니다. `AmazonRedshiftQueryEditor`의 변경 사항으로 다음과 같은 것들이 있습니다.
+ 쿼리 편집기 문 결과를 관리하기 위한 권한은 문 소유자 사용자를 필요로 합니다.
+ Secrets Manager를 사용하여 데이터베이스에 연결할 수 있는 권한이 추가되었습니다.

자세한 내용은 [Amazon Redshift 콘솔 쿼피 편집기 사용에 필요한 권한](redshift-iam-access-control-identity-based.md#redshift-policy-resources.required-permissions.query-editor) 섹션을 참조하세요.

새 쿼리 에디터에서 클러스터에 연결하면 2가지 인증 방법 중 하나를 사용할 수 있습니다.

쿼리 편집기를 사용해 다음을 수행할 수 있습니다.
+ 단일 SQL 문 쿼리를 실행합니다.
+ 100MB 크기의 결과 집합을 쉼표 구분 값(CSV) 파일로 다운로드합니다.
+ 다시 사용할 수 있도록 쿼리를 저장합니다. 유럽(파리) 리전, 아시아 태평양(오사카) 리전, 아시아 태평양(홍콩) 리전 또는 중동(바레인) 리전에서는 쿼리를 저장할 수 없습니다.
+ 사용자 정의 테이블에서 쿼리 런타임 세부 정보를 확인합니다.
+ 나중에 실행되도록 쿼리를 예약합니다.
+ 쿼리 편집기에서 생성한 쿼리 기록을 봅니다.
+ Enhanced VPC Routing을 사용하여 클러스터에 대해 쿼리를 실행합니다.

## 쿼리 편집기 고려 사항
<a name="query-editor-considerations"></a>

쿼리 편집기를 사용할 때 쿼리 작업에 대해 다음을 고려합니다.
+ 최대 쿼리 기간은 24시간입니다.
+ 최대 쿼리 결과 크기는 100MB입니다. 호출이 100MB를 초과하는 응답 데이터를 반환하면 호출이 종료됩니다.
+ 쿼리 결과의 최대 보존 시간은 24시간입니다.
+ 최대 쿼리 문 크기는 100KB입니다.
+ 클러스터는 Amazon VPC 서비스 기반의 Virtual Private Cloud(VPC)에 있어야 합니다.
+ 쿼리 편집기에서는 트랜잭션을 사용할 수 없습니다. 트랜잭션에 대한 자세한 내용은 *Amazon Redshift 데이터베이스 개발자 안내서*의 [BEGIN](https://docs.aws.amazon.com/redshift/latest/dg/r_BEGIN.html) 섹션을 참조하세요.
+ 쿼리는 최대 3,000자까지 저장할 수 있습니다.

# SQL 클라이언트 도구를 사용하여 Amazon Redshift 데이터 웨어하우스에 연결
<a name="connecting-to-cluster"></a>

JDBC(Java Database Connectivity), Python 및 ODBC(Open Database Connectivity) 연결을 통해 SQL 클라이언트 도구에서 Amazon Redshift 데이터 웨어하우스로 연결할 수 있습니다. Amazon Redshift는 SQL 클라이언트 도구 또는 라이브러리를 제공하거나 설치하지 않습니다. 이러한 도구 또는 라이브러리를 사용하여 데이터 웨어하우스의 데이터로 작업하려면 클라이언트 컴퓨터나 Amazon EC2 인스턴스에 해당 도구를 설치합니다. JDBC, Python 또는 ODBC 드라이버를 지원하는 SQL 클라이언트 도구라면 대부분 사용할 수 있습니다.

이 주제 끝에 소개된 섹션 목록을 사용하여 JDBC, Python 또는 ODBC 연결을 사용하도록 클라이언트 컴퓨터 또는 Amazon EC2 인스턴스를 구성하는 과정을 살펴보세요. 서버에 클라이언트 연결과 관련된 보안 옵션에 대해서도 알 수 있습니다. 또한 [Amazon Redshift RSQL](https://docs.aws.amazon.com/redshift/latest/mgmt/rsql-query-tool.html) 같은 SQL 클라이언트 도구를 이용한 설정 및 연결 관련 정보를 찾아보세요. 아직 사용할 비즈니스 인텔리전스 도구가 없는 경우 이러한 도구를 사용해 볼 수 있습니다. 이 섹션에서 데이터 연결에 대해 알아볼 수도 있습니다. 마지막으로 데이터 웨어하우스에 연결하면서 문제가 발생하는 경우, 해결책을 확인할 수 있는 문제 해결 정보도 살펴볼 수 있습니다.

## 클라이언트 도구와의 연결을 위한 권장 사항
<a name="connecting-to-cluster-recommendations"></a>

IP 주소를 사용하여 Redshift 클러스터에 연결하는 경우, 중단이 발생하거나 연결이 끊기고 새 가용 영역(AZ)에서 클러스터가 온라인 상태가 되면 추가 다운타임이 발생할 수 있습니다. 하지만 여전히 IP 주소를 사용하여 애플리케이션을 Redshift에 연결하려면 클러스터의 Virtual Private Cloud(VPC) 엔드포인트에 연결된 프라이빗 IP 주소를 사용하세요. **속성** 탭 아래의 **네트워크 및 보안**에 있는 클러스터 세부 정보에서 정보를 찾을 수 있습니다.

**참고**  
애플리케이션이 리더 노드의 IP 주소를 사용하여 Redshift 클러스터에 액세스하는 경우 권장되는 모범 사례는 클러스터 엔드포인트 URL을 사용하도록 변경하는 것입니다. 자세한 내용은 [Amazon Redshift에서 연결 구성](https://docs.aws.amazon.com/redshift/latest/mgmt/configuring-connections.html)을 참조하세요.

**Topics**
+ [클라이언트 도구와의 연결을 위한 권장 사항](#connecting-to-cluster-recommendations)
+ [Amazon Redshift에서 연결 구성](configuring-connections.md)
+ [연결을 위한 보안 옵션 구성](connecting-ssl-support.md)
+ [클라이언트 도구 및 코드에서 연결](connecting-via-client-tools.md)
+ [인증 프로파일을 사용하여 Amazon Redshift에 연결](connecting-with-authentication-profiles.md)
+ [Amazon Redshift 연결 문제 해결](troubleshooting-connections.md)

# Amazon Redshift에서 연결 구성
<a name="configuring-connections"></a>

다음 섹션에서 SQL 클라이언트 도구에서 클러스터에 연결하도록 JDBC, Python 및 ODBC 연결을 구성하는 방법을 확인해보세요. 이 섹션에서는 JDBC, Python 및 ODBC 연결을 설정하는 방법에 대해 설명합니다. SSL(Secure Sockets Layer) 및 서버 인증서를 사용하여 클라이언트와 서버 간의 통신을 암호화하는 방법에 대해서도 설명합니다.

## Amazon Redshift용 JDBC, Python 및 ODBC 드라이버
<a name="connecting-drivers"></a>

클러스터 데이터를 사용하려면 클라이언트 컴퓨터 또는 인스턴스에서 연결하기 위한 JDBC, Python 또는 ODBC 드라이버가 있어야 합니다. JDBC, Python 또는 ODBC 데이터 액세스 API 작업을 사용할 수 있는 애플리케이션을 코딩하거나, 혹은 JDBC, Python 또는 ODBC를 지원하는 SQL 클라이언트 도구를 사용하세요.

Amazon Redshift를 통해 JDBC, Python 및 ODBC 드라이버를 다운로드할 수 있습니다. 이 드라이버는 지원에서 지원됩니다. PostgreSQL 드라이버는 테스트되지 않았으며 Amazon Redshift 팀에서 지원하지 않습니다. Amazon Redshift 클러스터에 연결할 때 Amazon Redshift 전용 드라이버를 사용하세요. Amazon Redshift 드라이버는 다음과 같은 이점이 있습니다.
+ IAM, SSO 및 페더레이션 인증 지원.
+ 새로운 Amazon Redshift 데이터 유형 지원.
+ 인증 프로파일 지원.
+ Amazon Redshift 개선 사항과 함께 향상된 성능.

 JDBC 및 ODBC 드라이버를 다운로드하여 클러스터 연결을 구성하는 방법에 대한 자세한 내용은 [Amazon Redshift용 JDBC 드라이버 버전 2.x 연결 구성](jdbc20-install.md), [Amazon Redshift Python 커넥터](python-redshift-driver.md) 및 [Amazon Redshift용 ODBC 드라이버 버전 2.x 연결 구성](odbc20-install.md) 섹션을 참조하세요.

IAM 역할에 대한 모범 사례를 비롯한 IAM ID 관리에 대한 자세한 내용은 [Amazon Redshift의 Identity and Access Management](redshift-iam-authentication-access-control.md) 섹션을 참조하세요.

# 클러스터 연결 문자열 찾기
<a name="connecting-connection-string"></a>

SQL 클라이언트 도구를 사용하여 클러스터에 연결하려면 클러스터 연결 문자열이 있어야 합니다. Amazon Redshift 콘솔의 클러스터 세부 정보 페이지에서 클러스터 연결 문자열을 확인할 수 있습니다.

**클러스터의 연결 문자열을 찾으려면**

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/redshiftv2/](https://console.aws.amazon.com/redshiftv2/)에서 Amazon Redshift 콘솔을 엽니다.

1. 탐색 메뉴에서 **클러스터(Clusters)**를 선택한 후 목록에서 클러스터 이름을 선택하여 세부 정보를 엽니다.

1. **JDBC URL** 및 **ODBC URL** 연결 문자열은 **일반 정보(General information)** 섹션에서 추가 세부 정보와 함께 사용할 수 있습니다. 각 문자열은 클러스터가 실행되는 AWS 리전을 기반으로 합니다. 해당 연결 문자열 옆에 있는 아이콘을 클릭하여 복사합니다.

클러스터 엔드포인트에 연결하려면 [DescribeClusters API 요청](https://docs.aws.amazon.com/redshift/latest/APIReference/API_DescribeClusters.html)의 클러스터 엔드포인트 URL을 사용할 수 있습니다. 다음은 클러스터 엔드포인트 예시입니다.

```
mycluster.cmeaswqeuae.us-east-2.redshift.amazonaws.com
```

클러스터에 대한 사용자 지정 도메인 이름을 설정한 경우 이를 사용하여 클러스터에 연결할 수도 있습니다. 사용자 지정 도메인 이름 생성에 대한 자세한 내용은 [사용자 지정 도메인 이름 설정](https://docs.aws.amazon.com/redshift/latest/mgmt/connecting-connection-CNAME-connect.html).을 참조하세요.

**참고**  
연결할 때 클러스터 노드의 IP 주소 또는 VPC 엔드포인트의 IP 주소를 사용하지 마세요. 불필요한 중단을 방지하기 위해 항상 Redshift 엔드포인트를 사용하세요. 예외적으로 엔드포인트 URL을 사용하지 않는 유일한 상황은 사용자 지정 도메인 이름을 사용하는 경우입니다. 자세한 내용은 [클라이언트 연결에 사용자 지정 도메인 이름 사용](https://docs.aws.amazon.com/redshift/latest/mgmt/connecting-connection-CNAME.html)을 참조하세요.

# Amazon Redshift용 JDBC 드라이버 버전 2.x 연결 구성
<a name="jdbc20-install"></a>

JDBC 드라이버 버전 2.x 연결을 사용하여 여러 서드 파티 SQL 클라이언트 도구에서 Amazon Redshift 클러스터에 연결할 수 있습니다. Amazon Redshift JDBC 커넥터는 오픈 소스 솔루션을 제공합니다. 소스 코드를 탐색하고, 개선 사항을 요청하고, 문제를 보고하고, 기여를 제공할 수 있습니다.

JDBC 드라이버 변경 사항에 대한 최신 정보는 [변경 로그](https://github.com/aws/amazon-redshift-jdbc-driver/blob/master/CHANGELOG.md)를 참조하세요.

기본적으로 Amazon Redshift JDBC 드라이버는 연결이 시간 초과되는 것을 방지하기 위해 TCP KeepAlive를 사용하도록 구성됩니다. 연결 URL에서 관련 속성을 설정하여 드라이버가 KeepAlive 패킷 전송을 시작하는 시기를 지정하거나 기능을 해제할 수 있습니다. 연결 URL의 구문에 대한 자세한 내용은 [연결 URL 구축](jdbc20-build-connection-url.md) 섹션을 참조하세요.


| 속성 | 설명 | 
| --- | --- | 
|  `TCPKeepAlive`  |  TCP KeepAlive를 해제하려면 이 속성을 `FALSE`로 설정합니다.  | 

**Topics**
+ [Amazon Redshift JDBC 드라이버, 버전 2.1 다운로드](jdbc20-download-driver.md)
+ [Amazon Redshift JDBC 드라이버, 버전 2.2 설치](jdbc20-install-driver.md)
+ [JDBC URL 가져오기](jdbc20-obtain-url.md)
+ [연결 URL 구축](jdbc20-build-connection-url.md)
+ [JDBC와 Apache Maven의 연결 구성](configure-jdbc20-connection-with-maven.md)
+ [인증 및 SSL 구성](jdbc20-configure-authentication-ssl.md)
+ [로깅 구성](jdbc20-configuring-logging.md)
+ [데이터 형식 변환](jdbc20-data-type-mapping.md)
+ [준비된 명령문 지원 사용](jdbc20-prepared-statement-support.md)
+ [JDBC 드라이버 버전 2.2과 1.x의 차이점](jdbc20-jdbc10-driver-differences.md)
+ [JDBC 드라이버 버전 2.x용 초기화(.ini) 파일 생성](jdbc20-ini-file.md)
+ [JDBC 드라이버 버전 2.x 구성 옵션](jdbc20-configuration-options.md)
+ [JDBC 드라이버 버전 2.x의 이전 버전](jdbc20-previous-driver-version-20.md)

# Amazon Redshift JDBC 드라이버, 버전 2.1 다운로드
<a name="jdbc20-download-driver"></a>

**참고**  
Amazon Redshift JDBC 2.x 드라이버는 스레드 세이프로 설계되지 않았습니다. 두 개 이상의 스레드가 동시에 동일한 연결을 사용하려고 하면 교착 상태, 오류, 잘못된 결과 또는 기타 예상치 못한 동작이 발생할 수 있습니다.  
다중 스레드 애플리케이션이 있는 경우 동시 액세스를 방지하기 위해 드라이버에 대한 액세스를 동기화하는 것이 좋습니다.

Amazon Redshift는 JDBC 4.2 API와 호환되는 도구용 드라이버를 제공합니다. 이 드라이버의 클래스 이름은 `com.amazon.redshift.Driver`입니다.

JDBC 드라이버를 설치하고 JDBC 드라이버 라이브러리를 참조하며 드라이버 클래스를 등록하는 방법에 대한 자세한 내용은 다음 주제를 참조하세요.

Amazon Redshift JDBC 드라이버 버전 2.x를 사용하는 각 컴퓨터에 대해 Java 런타임 환경(JRE) 8.0이 설치되어 있는지 확인합니다.

데이터베이스 인증을 위해 Amazon Redshift JDBC 드라이버를 사용하는 경우 Java 클래스 경로에 AWS SDK for Java 1.11.118 이상이 있는지 확인합니다. AWS SDK for Java가 설치되어 있지 않으면 JDBC 4.2 호환 드라이버와 AWS SDK용 드라이버 종속 라이브러리가 포함된 ZIP 파일을 다운로드합니다.
+ [JDBC 4.2 호환 드라이버 버전 2.x 및 AWS SDK 드라이버 종속 라이브러리](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.2.5/redshift-jdbc42-2.2.5.zip) 

  이 ZIP 파일에는 JDBC 4.2 호환 드라이버 버전 2.x와 AWS SDK for Java 1.x 드라이버 종속 라이브러리 파일이 포함되어 있습니다. JDBC 드라이버와 동일한 위치에 종속 jar 파일의 압축을 풉니다. JDBC 드라이버만 CLASSPATH에 있어야 합니다.

  전체 AWS SDK for Java 1.x는 이 ZIP 파일에 포함되어 있지 않습니다. 그러나 AWS Identity and Access Management(IAM) 데이터베이스 인증에 필요한 AWS SDK for Java 1.x 드라이버 종속 라이브러리는 포함되어 있습니다.

  IAM 데이터베이스 인증에 필요한 AWS SDK가 있는 이 Amazon Redshift JDBC 드라이버를 사용합니다.

  전체 AWS SDK for Java 1.x를 설치하려면 *AWS SDK for Java Developer Guide*의 [AWS SDK for Java 1.x](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/welcome.html)를 참조하세요.
+ [JDBC 4.2 호환 드라이버 버전 2.x(AWS SDK 제외)](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.2.5/redshift-jdbc42-2.2.5.jar) 

JDBC 드라이버 버전 2.x 소프트웨어 라이선스를 검토하고 로그 파일을 변경합니다.
+ [JDBC 드라이버 버전 2.x 라이선스](https://github.com/aws/amazon-redshift-jdbc-driver/blob/master/LICENSE) 
+ [JDBC 드라이버 버전 2.x 변경 로그](https://github.com/aws/amazon-redshift-jdbc-driver/blob/master/CHANGELOG.md)

JDBC 드라이버 버전 1.2.27.1051 이상은 Amazon Redshift 저장 프로시저를 지원합니다. 자세한 내용은 *Amazon Redshift 데이터베이스 개발자 안내서*의 [Amazon Redshift에서 저장 프로시저 생성](https://docs.aws.amazon.com/redshift/latest/dg/stored-procedure-overview.html) 섹션을 참조하세요.

# Amazon Redshift JDBC 드라이버, 버전 2.2 설치
<a name="jdbc20-install-driver"></a>

Amazon Redshift JDBC 4.2 호환 드라이버 버전 2.x와 AWS SDK용 드라이버 종속 라이브러리를 설치하려면 ZIP 아카이브에서 원하는 디렉터리로 파일을 추출합니다.

Amazon Redshift JDBC 4.2 호환 드라이버 버전 2.x(AWS SDK 제외)를 설치하려면 원하는 디렉터리에 JAR 파일을 복사합니다.

Amazon Redshift JDBC 드라이버를 사용하여 Amazon Redshift 데이터 스토어에 액세스하려면 다음 설명에 따라 구성을 수행해야 합니다.

**Topics**
+ [JDBC 드라이버 라이브러리 참조](jdbc20-driver-libraries.md)
+ [드라이버 클래스 등록](jdbc20-register-driver-class.md)

# JDBC 드라이버 라이브러리 참조
<a name="jdbc20-driver-libraries"></a>

데이터에 연결하는 데 사용하는 JDBC 애플리케이션이나 Java 코드는 드라이버 JAR 파일에 액세스해야 합니다. ZIP 아카이브에서 추출한 모든 JAR 파일을 애플리케이션 또는 코드에 지정합니다.

## JDBC 애플리케이션에서 드라이버 사용
<a name="jdbc20-use-driver-jdbc-app"></a>

JDBC 애플리케이션은 일반적으로 드라이버 라이브러리 파일 목록 추가를 위한 구성 옵션 집합을 제공합니다. 제공된 옵션을 사용하여 ZIP 아카이브의 모든 JAR 파일을 애플리케이션의 드라이버 구성의 일부로 포함합니다. 자세한 내용은 JDBC 애플리케이션 설명서를 참조하세요.

## Java 코드에서 드라이버 사용
<a name="jdbc20-use-driver-java-code"></a>

클래스 경로에 모든 드라이버 라이브러리 파일을 포함해야 합니다. 클래스 경로는 Java Runtime Environment가 클래스와 기타 리소스 파일을 검색하는 경로입니다. 운영 체제의 클래스 경로를 설정하려면 Java SE 설명서에서 자세한 내용을 참조하세요.
+ Windows: [https://docs.oracle.com/javase/7/docs/technotes/tools/windows/classpath.html](https://docs.oracle.com/javase/7/docs/technotes/tools/windows/classpath.html)
+ Linux 및 Solaris: [https://docs.oracle.com/javase/7/docs/technotes/tools/solaris/classpath.html](https://docs.oracle.com/javase/7/docs/technotes/tools/solaris/classpath.html)
+ macOS: 기본 macOS 클래스 경로는 JDBC 드라이버가 설치된 디렉터리입니다.

# 드라이버 클래스 등록
<a name="jdbc20-register-driver-class"></a>

애플리케이션에 적합한 클래스를 등록해야 합니다. 다음 클래스를 사용하여 Amazon Redshift JDBC 드라이버를 Amazon Redshift 데이터 스토어에 연결합니다.
+ `Driver` 클래스는 를 확장합니다.`java.sql.Driver`
+ `DataSource` 클래스는 `javax.sql.DataSource` 및 `javax.sql.ConnectionPoolDataSource`를 확장합니다.

드라이버는 JDBC 버전과 독립된 다음과 같은 정규화된 클래스 이름을 지원합니다.
+ `com.amazon.redshift.jdbc.Driver`
+ `com.amazon.redshift.jdbc.DataSource`

다음 예에서는 DriverManager 클래스를 사용하여 JDBC 4.2 연결을 설정하는 방법을 보여줍니다.

```
            private static Connection connectViaDM() throws Exception
{
Connection connection = null;
connection = DriverManager.getConnection(CONNECTION_URL);
return connection;
}
```

다음 예에서는 `DataSource` 클래스를 사용하여 연결을 설정하는 방법을 보여줍니다.

```
 private static Connection connectViaDS() throws Exception
{
Connection connection = null;
11
Amazon Redshift JDBC Driver Installation and Configuration Guide
DataSource ds = new com.amazon.redshift.jdbc.DataSource
();
ds.setURL(CONNECTION_URL);
connection = ds.getConnection();
return connection;
}
```

# JDBC URL 가져오기
<a name="jdbc20-obtain-url"></a>

SQL 클라이언트 도구에서 Amazon Redshift 클러스터에 연결하려면 먼저 클러스터의 JDBC URL을 알아야 합니다. JDBC URL의 형식은 다음과 같습니다. `jdbc:redshift://endpoint:port/database` 

위에 나와 있는 형식의 필드는 다음과 같은 값을 가집니다.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/jdbc20-obtain-url.html)

다음은 JDBC URL의 예입니다. `jdbc:redshift://examplecluster.abc123xyz789.us-west-2.redshift.amazonaws.com:5439/dev` 

URL 값에 다음 URI 예약 문자가 포함되어 있는 경우 해당 값은 URL 인코딩된 값이어야 합니다.
+  ; 
+  \$1 
+  \$1 
+  \$1 
+  [ 
+  ] 
+  & 
+  = 
+  ? 
+  빈 공간 

예를 들어 `PWD` 값이 `password:password`인 경우 해당 값을 사용하는 연결 URL은 다음과 같습니다。

`jdbc:redshift://redshift.company.us-west-1.redshift.amazonaws.com:9000/dev;UID=amazon;PWD=password%3Apassword`

JDBC 연결을 만드는 방법에 대한 자세한 내용은 [클러스터 연결 문자열 찾기](connecting-connection-string.md) 섹션을 참조하세요.

클라이언트 컴퓨터가 데이터베이스에 연결하지 못하는 경우에는 가능한 문제를 해결할 수 있습니다. 자세한 내용은 [Amazon Redshift 연결 문제 해결](troubleshooting-connections.md) 섹션을 참조하세요.

# 연결 URL 구축
<a name="jdbc20-build-connection-url"></a>

연결 URL을 사용하여 액세스 중인 데이터 스토어에 대한 연결 정보를 제공합니다. 다음은 Amazon Redshift JDBC 드라이버 버전 2.x의 연결 URL 형식입니다. 여기서 [Host]는 Amazon Redshift 서버의 엔드포인트이고 [Port]는 서버가 클라이언트 요청을 수신 대기하는 데 사용하는 TCP(Transmission Control Protocol) 포트의 번호입니다.

```
jdbc:redshift://[Host]:[Port]
```

다음은 몇 가지 옵션 설정을 지정하는 연결 URL의 형식입니다.

```
jdbc:redshift://[Host]:[Port]/[database];[Property1]=[Value];
[Property2]=[Value];
```

URL 값에 다음 URI 예약 문자가 포함되어 있는 경우 해당 값은 URL 인코딩된 값이어야 합니다.
+  ; 
+  \$1 
+  \$1 
+  \$1 
+  [ 
+  ] 
+  & 
+  = 
+  ? 
+  빈 공간 

예를 들어 `PWD` 값이 `password:password`인 경우 해당 값을 사용하는 연결 URL은 다음과 같습니다。

`jdbc:redshift://redshift.company.us-west-1.redshift.amazonaws.com:9000/dev;UID=amazon;PWD=password%3Apassword`

AWS에서 미국 서부(캘리포니아 북부) 리전에 있는 Amazon Redshift 클러스터의 포트 9000에 연결하려는 경우를 예로 들어 보겠습니다. 또한 `dev`라는 데이터베이스에 액세스하고 데이터베이스 사용자 이름과 암호를 사용하여 연결을 인증하려고 합니다. 이 경우 다음과 같은 연결 URL을 사용합니다.

```
jdbc:redshift://redshift.company.us-west-1.redshift.amazonaws.com:9000/dev;UID=amazon;PWD=amazon
```

다음 문자를 사용하여 나머지 URL 문자열에서 구성 옵션을 구분할 수 있습니다.
+ ;
+ ?

예를 들어 다음과 같은 URL 문자열은 동일합니다.

```
jdbc:redshift://my_host:5439/dev;ssl=true;defaultRowFetchSize=100
```

```
jdbc:redshift://my_host:5439/dev?ssl=true;defaultRowFetchSize=100
```

다음 문자를 사용하여 URL 문자열에서 구성 옵션을 서로 구분할 수 있습니다.
+ ;
+ &

예를 들어 다음과 같은 URL 문자열은 동일합니다.

```
jdbc:redshift://my_host:5439/dev;ssl=true;defaultRowFetchSize=100
```

```
jdbc:redshift://my_host:5439/dev;ssl=true&defaultRowFetchSize=100
```

다음 URL 예에서는 로그 수준 6과 로그 경로를 지정합니다.

```
jdbc:redshift://redshift.amazonaws.com:5439/dev;DSILogLevel=6;LogPath=/home/user/logs;
```

연결 URL에서 속성을 복제하지 않습니다.

지정할 수 있는 구성 옵션의 전체 목록은 [JDBC 드라이버 버전 2.x 구성 옵션](jdbc20-configuration-options.md) 섹션을 참조하세요.

**참고**  
연결할 때 클러스터 노드의 IP 주소 또는 VPC 엔드포인트의 IP 주소를 사용하지 마세요. 불필요한 중단을 방지하기 위해 항상 Redshift 엔드포인트를 사용하세요. 예외적으로 엔드포인트 URL을 사용하지 않는 유일한 상황은 사용자 지정 도메인 이름을 사용하는 경우입니다. 자세한 내용은 [클라이언트 연결에 사용자 지정 도메인 이름 사용](https://docs.aws.amazon.com/redshift/latest/mgmt/connecting-connection-CNAME.html)을 참조하세요.

# JDBC와 Apache Maven의 연결 구성
<a name="configure-jdbc20-connection-with-maven"></a>

Apache Maven은 소프트웨어 프로젝트 관리 및 이해 도구입니다. AWS SDK for Java는 Apache Maven 프로젝트를 지원합니다. 자세한 내용은 *AWS SDK for Java Developer Guide*의 [Using the SDK with Apache Maven](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/setup-project-maven.html) 섹션을 참조하세요.

Apache Maven을 사용하는 경우 Amazon Redshift JDBC 드라이버를 사용하여 Amazon Redshift 클러스터에 연결하는 프로젝트를 구성하고 구축할 수 있습니다. 이를 위해 JDBC 드라이버를 프로젝트의 `pom.xml` 파일에 종속성으로 추가하세요. Maven을 사용해 프로젝트를 빌드하고 JDBC 연결을 사용하려면 다음 섹션에서 설명하는 단계를 따르세요.

**JDBC 드라이버를 Maven 종속성으로 구성하려면**

1. `pom.xml` 파일의 리포지토리 섹션에 Amazon 리포지토리 또는 Maven Central 리포지토리를 추가합니다.
**참고**  
다음 코드 예제의 URL은 브라우저에서 사용하면 오류를 반환합니다. 이 URL은 Maven 프로젝트의 컨텍스트에만 사용하세요.

   보안 소켓 계층(SSL)을 사용하여 연결하려면 다음 리포지토리를 `pom.xml` 파일에 추가합니다.

   ```
   <repositories>
       <repository>
         <id>redshift</id>
         <url>https://s3.amazonaws.com/redshift-maven-repository/release</url>
       </repository>
   </repositories>
   ```

   Maven Central 리포지토리의 경우 `pom.xml` 파일에 다음을 추가합니다.

   ```
   <repositories>
       <repository>
         <id>redshift</id>
         <url>https://repo1.maven.org/maven2</url>
       </repository>
   </repositories>
   ```

1. `pom.xml` 파일의 종속성 섹션에서 사용할 드라이버 버전을 선언합니다.

   Amazon Redshift는 JDBC 4.2 API와 호환되는 도구용 드라이버를 제공합니다. 이러한 드라이버가 지원하는 기능에 대한 자세한 내용은 [Amazon Redshift JDBC 드라이버, 버전 2.1 다운로드](jdbc20-download-driver.md) 섹션을 참조하세요.

   다음 예에서 `driver-version`을 사용 중인 드라이버 버전(예: `2.1.0.1`)으로 바꿉니다. JDBC 4.2 호환 드라이버의 경우 다음을 사용합니다.

   ```
   <dependency>
      <groupId>com.amazon.redshift</groupId>
      <artifactId>redshift-jdbc42</artifactId>
      <version>driver-version</version>
   </dependency>
   ```

   이 드라이버의 클래스 이름은 `com.amazon.redshift.Driver`입니다.

IAM 데이터베이스 인증을 사용할 때는 Amazon Redshift Maven 드라이버에 다음과 같은 선택적 종속성이 필요합니다.

```
<dependency>
      <groupId>com.amazonaws</groupId>
      <artifactId>aws-java-sdk-core</artifactId>
      <version>1.12.23</version>
      <scope>runtime</scope>
      <optional>true</optional>
</dependency>
    <dependency>
      <groupId>com.amazonaws</groupId>
      <artifactId>aws-java-sdk-redshift</artifactId>
      <version>1.12.23</version>
      <scope>runtime</scope>
      <optional>true</optional>
</dependency>
<dependency>
      <groupId>com.amazonaws</groupId>
      <artifactId>aws-java-sdk-sts</artifactId>
      <version>1.12.23</version>
      <scope>runtime</scope>
      <optional>true</optional>
</dependency>
```

Amazon Redshift JDBC 드라이버를 최신 버전으로 업그레이드하거나 변경하려면 먼저 종속 항목의 버전 섹션을 최신 버전의 드라이버로 수정합니다. 그런 다음 다음과 같이 Maven Clean Plugin으로 프로젝트를 정리하세요.

```
mvn clean
```

# 인증 및 SSL 구성
<a name="jdbc20-configure-authentication-ssl"></a>

무단 액세스로부터 데이터를 보호하기 위해 Amazon Redshift 데이터 스토어는 사용자 자격 증명을 사용하여 모든 연결을 인증할 것을 요구합니다. 또한 일부 데이터 스토어는 단방향 인증 여부에 관계없이 보안 소켓 계층(SSL) 프로토콜을 통한 연결을 요구합니다.

Amazon Redshift JDBC 드라이버 버전 2.x는 이러한 인증 프로토콜을 완벽하게 지원합니다.

드라이버에서 지원하는 SSL 버전은 사용 중인 JVM 버전에 따라 다릅니다. 각 Java 버전에서 지원하는 SSL 버전에 대한 자세한 내용은 Java Platform Group Product Management Blog의 [Diagnosing TLS, SSL, and HTTPS](https://blogs.oracle.com/java-platform-group/diagnosing-tls,-ssl,-and-https)를 참조하세요.

연결에 사용되는 SSL 버전은 드라이버와 서버 모두에서 지원하는 가장 높은 버전으로 연결 시 결정됩니다.

연결하려는 Amazon Redshift 서버의 보안 요구 사항에 따라 연결을 인증하도록 Redshift JDBC 드라이버 버전 2.x를 구성합니다.

연결을 인증하려면 항상 Redshift 사용자 이름과 암호를 입력해야 합니다. 서버에서 SSL 활성화 및 필요 여부에 따라 SSL을 통해 연결하도록 드라이버를 구성해야 할 수도 있습니다. 또는 단방향 SSL 인증을 사용하여 클라이언트(드라이버 자체)가 서버의 ID를 확인하도록 할 수 있습니다.

연결 URL에서 드라이버에 구성 정보를 제공합니다. 연결 URL의 구문에 대한 자세한 내용은 [연결 URL 구축](jdbc20-build-connection-url.md) 섹션을 참조하세요.

*SSL*은 전송 계층 보안과 보안 소켓 계층(TLS/SSL)을 나타냅니다. 이 드라이버는 TLS/SSL의 업계 표준 버전을 지원합니다.

## IAM 인증 구성
<a name="jdbc20-configure-iam-authentication"></a>

IAM 인증을 사용하여 Amazon Redshift 서버에 연결하는 경우 다음 속성을 데이터 원본 연결 문자열의 일부로 설정합니다.

 IAM 인증에 대한 자세한 내용은 [Amazon Redshift의 Identity and Access Management](redshift-iam-authentication-access-control.md) 섹션을 참조하세요.

IAM 인증을 사용하려면 다음 연결 문자열 형식 중 하나를 사용합니다.


| 연결 문자열 | 설명 | 
| --- | --- | 
|  `jdbc:redshift:iam:// [host]:[port]/[db]`  |  일반 연결 문자열입니다. 드라이버는 호스트에서 ClusterID와 리전을 유추합니다.  | 
|  `jdbc:redshift:iam:// [cluster-id]: [region]/[db]`  |  드라이버는 주어진 ClusterID 및 리전에 따라 호스트 정보를 검색합니다.  | 
|  `jdbc:redshift:iam:// [host]/[db]`  |  드라이버는 기본값이 포트 5439이며 호스트에서 ClusterID와 리전을 유추합니다. 클러스터를 생성, 수정 또는 마이그레이션할 때 선택한 포트에 따라 선택한 포트에 대한 액세스를 허용합니다.  | 

## 프로파일 지정
<a name="jdbc20-aws-credentials-profiles"></a>

IAM 인증을 사용하는 경우 프로파일 이름 아래에 필수 또는 선택적 연결 속성을 추가로 지정할 수 있습니다. 이를 통해 연결 문자열에 특정 정보를 직접 넣는 것을 피할 수 있습니다. Profile 속성을 사용하여 연결 문자열에 프로파일 이름을 지정합니다.

AWS 자격 증명 파일에 프로파일을 추가할 수 있습니다. 이 파일의 기본 위치는 `~/.aws/credentials`입니다.

환경 변수 `AWS_CREDENTIAL_PROFILES_FILE`에 경로를 설정하여 기본값을 변경할 수 있습니다.

 프로파일에 대한 자세한 내용은 *AWS SDK for Java*의 [AWS 자격 증명 작업](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/credentials.html) 섹션을 참조하세요.

## 인스턴스 프로파일 자격 증명 사용
<a name="jdbc20-instance-profile-credentials"></a>

IAM 역할과 연결된 Amazon EC2 인스턴스에서 애플리케이션을 실행하는 경우 인스턴스 프로파일 자격 증명을 사용하여 연결할 수 있습니다.

이렇게 하려면 앞의 테이블에 나와 있는 IAM 연결 문자열 형식 중 하나를 사용하고 dbuser 연결에 사용하는 Amazon Redshift 사용자 이름으로 dbuser 연결 속성을 설정합니다.

인스턴스 프로파일에 대한 자세한 내용은 *IAM User Guide*의 [Access Management](https://docs.aws.amazon.com/IAM/latest/UserGuide/access.html) 섹션을 참조하세요.

## 자격 증명 공급자 사용
<a name="jdbc20-aws-credentials-provider"></a>

드라이버에서 다음 서비스의 자격 증명 공급자 플러그인도 지원합니다.
+ AWS IAM Identity Center
+ Active Directory Federation Service(ADFS)
+ JSON 웹 토큰(JWT) 서비스
+ Microsoft Azure Active Directory(AD) 서비스 및 브라우저
+ Okta 서비스
+ PingFederate 서비스 
+ Okta, Ping, ADFS 등의 SAML 서비스용 브라우저 SAML

이러한 서비스 중 하나를 사용하는 경우 연결 URL에서 다음 속성을 지정해야 합니다.
+ **Plugin\$1Name** – 자격 증명 공급자 플러그인 클래스의 정규화된 클래스 경로입니다.
+ **IdP\$1Host:** – Amazon Redshift에 인증하는 데 사용하는 서비스의 호스트입니다.
+ **IdP\$1Port** – 인증 서비스의 호스트가 수신 대기하는 포트입니다. Okta에는 필요하지 않습니다.
+ **User** – idp\$1host 서버의 사용자 이름입니다.
+ **Password** – idp\$1host 사용자 이름과 연결된 암호입니다.
+ **DbUser** – 연결에 사용하는 Amazon Redshift 사용자 이름입니다.
+ **SSL\$1Insecure** – IDP 서버 인증서를 확인해야 하는지 여부를 나타냅니다.
+ **Client\$1ID** – Azure AD 포털의 사용자 이름과 연결된 클라이언트 ID입니다. Azure AD에만 사용됩니다.
+ **Client\$1Secret** – Azure AD 포털의 클라이언트 ID와 연결된 클라이언트 암호입니다. Azure AD에만 사용됩니다.
+ **IdP\$1Tenant** – Amazon Redshift 애플리케이션의 Azure AD 테넌트 ID입니다. Azure AD에만 사용됩니다.
+ **App\$1ID** – Amazon Redshift 애플리케이션의 Okta 앱 ID입니다. Okta에만 사용됩니다.
+ **App\$1Name** – Amazon Redshift 애플리케이션의 Okta 앱 이름(옵션)입니다. Okta에만 사용됩니다.
+ **Partner\$1SPID** – 파트너 SPID(서비스 공급자 ID) 값(옵션)입니다. PingFederate에만 사용됩니다.
+ **Idc\$1Region** - AWS IAM Identity Center 인스턴스가 위치한 AWS 리전입니다. AWS IAM Identity Center에만 사용됩니다.
+ **Issuer\$1Url** - AWS IAM Identity Center 서버의 인스턴스 엔드포인트입니다. AWS IAM Identity Center에만 사용됩니다.

이러한 서비스 중 하나에 브라우저 플러그인을 사용하는 경우 연결 URL에 다음이 포함될 수도 있습니다.
+ **Login\$1URL** – 브라우저 플러그인을 통해 SAML(Security Assertion Markup Language) 또는 Azure AD 서비스를 사용할 때 자격 증명 공급자의 웹 사이트에 있는 리소스의 URL입니다. 브라우저 플러그인을 사용하는 경우 이 파라미터는 필수입니다.
+ **Listen\$1Port** - 브라우저 플러그인을 통해 SAML, Azure AD 또는 AWS IAM ID 센터 서비스를 사용할 때 드라이버가 ID 제공업체로부터 SAML 응답을 가져오는 데 사용하는 포트입니다.
+ **IdP\$1Response\$1Timeout** - 브라우저 플러그인을 통해 SAML, Azure AD 또는 AWS IAM ID 센터 서비스를 사용할 때 드라이버가 ID 제공업체의 SAML 응답을 기다리는 시간(초)입니다.

추가 연결 문자열 속성에 대한 자세한 내용은 [JDBC 드라이버 버전 2.x 구성 옵션](jdbc20-configuration-options.md) 섹션을 참조하세요.

# 사용자 이름 및 암호만 사용
<a name="jdbc20-authentication-username-password"></a>

연결하려는 서버가 SSL을 사용하지 않는 경우 연결을 인증하는 데 Redshift 사용자 이름과 암호만 입력하면 됩니다.

**Redshift 사용자 이름 및 암호만 사용하여 인증을 구성하려면 다음과 같이 합니다.**

1. `UID` 속성을 Amazon Redshift 서버 액세스를 위한 Redshift 사용자 이름으로 설정합니다.

1. PWD 속성을 Redshift 사용자 이름에 해당하는 암호로 설정합니다.

# 자격 증명 확인 없이 SSL 사용
<a name="jdbc20-use-ssl-without-identity-verification"></a>

연결 중인 서버에서 SSL을 사용하지만 자격 증명 확인이 필요하지 않은 경우 비검증 SSL 팩토리를 사용하도록 드라이버를 구성할 수 있습니다.

**자격 증명 확인 없이 SSL 연결을 구성하려면**

1. `UID` 속성을 Amazon Redshift 서버 액세스를 위한 Redshift 사용자 이름으로 설정합니다.

1. `PWD` 속성을 Redshift 사용자 이름에 해당하는 암호로 설정합니다.

1. `SSLFactory` 속성 `com.amazon.redshift.ssl.NonValidatingFactory`로 설정합니다.

# 단방향 SSL 인증 사용
<a name="jdbc20-use-one-way-SSL-authentication"></a>

연결하려는 서버가 SSL을 사용하고 인증서가 있는 경우 단방향 인증을 사용하여 서버의 자격 증명을 확인하도록 드라이버를 구성할 수 있습니다.

단방향 인증에는 서버의 자격 증명 확인을 위한 서명된 신뢰할 수 있는 SSL 인증서가 필요합니다. 특정 인증서를 사용하거나 적절한 인증서가 들어 있는 TrustStore에 액세스하도록 드라이버를 구성할 수 있습니다. 인증서 또는 TrustStore를 지정하지 않으면 드라이버가 기본 Java TrustStore(일반적으로 `jssecacerts` 또는 `cacerts`)를 사용합니다.

**단방향 SSL 인증을 구성하려면**

1. UID 속성을 Amazon Redshift 서버 액세스를 위한 Redshift 사용자 이름으로 설정합니다.

1. PWD 속성을 Redshift 사용자 이름에 해당하는 암호로 설정합니다.

1. SSL 속성을 true로 설정합니다.

1. SSLRootCert 속성을 루트 CA 인증서의 위치로 설정합니다.

1. 기본 Java TrustStore 중 하나를 사용하지 않는 경우 다음 중 하나를 수행합니다.
   + 서버 인증서를 지정하려면 SSLRootCert 속성을 인증서의 전체 경로로 설정합니다.
   + TrustStore를 지정하려면 다음을 수행합니다.

     1. keytool 프로그램으로 사용하려는 TrustStore에 서버 인증서를 추가합니다.

     1. 드라이버를 사용하여 Java 애플리케이션을 시작할 때 사용할 TrustStore와 암호를 지정합니다. 예:

        ```
        -Djavax.net.ssl.trustStore=[TrustStoreName]
        -Djavax.net.ssl.trustStorePassword=[TrustStorePassword]
        -Djavax.net.ssl.trustStoreType=[TrustStoreType]
        ```

1. 그중 하나의 경로를 선택하세요.
   + 인증서를 검증하려면 SSLMode 속성을 verify-ca로 설정합니다.
   + 인증서를 검증하고 인증서의 호스트 이름을 확인하려면 SSLMode 속성을 verify-full로 설정합니다.

# 로깅 구성
<a name="jdbc20-configuring-logging"></a>

문제 진단에 도움이 되도록 드라이버에서 로그를 설정할 수 있습니다.

다음 방법을 사용하여 드라이버 정보를 로그할 수 있습니다.
+ 로그된 정보를 .log 파일에 저장하려면 [로그 파일 사용](jdbc20-using-log-files.md) 섹션을 참조하세요.
+ 로그된 정보를 DriverManager에 지정된 LogStream 또는 LogWriter로 보내려면 [LogStream 또는 LogWriter 사용](jdbc20-logstream-option.md) 섹션을 참조하세요.

연결 URL에서 드라이버에 구성 정보를 제공합니다. 연결 URL의 구문에 대한 자세한 내용은 [연결 URL 구축](jdbc20-build-connection-url.md) 섹션을 참조하세요.

# 로그 파일 사용
<a name="jdbc20-using-log-files"></a>

문제를 포착할 수 있을 만큼만 로깅을 길게 설정합니다. 로깅은 성능을 떨어뜨릴 뿐만 아니라 대용량의 디스크 공간을 소비할 수 있기 때문입니다.

연결 URL에서 LogLevel 키를 설정하여 로깅을 설정하고 로그 파일에 포함되는 세부 정보의 양을 지정합니다. 다음 표에는 Amazon Redshift JDBC 드라이버 버전 2.x에서 제공하는 로깅 수준이 나열되어 있습니다. 아래로 갈수록 더 자세한 세부 정보가 로그됩니다.


| LogLevel 값 | 설명 | 
| --- | --- | 
|  1  |  드라이버 중단으로 이어질 심각한 오류 이벤트를 로그합니다.  | 
|  2  |  드라이버가 계속 실행될 수 있는 오류 이벤트를 로그합니다.  | 
|  3  |  작업을 수행하지 않으면 발생할 수 있는 이벤트를 로그합니다. 이 수준의 로깅과 이 수준 이상의 로깅 수준은 사용자의 쿼리도 기록합니다.  | 
|  4  |  드라이버의 진행 상황을 설명하는 일반 정보를 로그합니다.  | 
|  5  |  드라이버 디버깅에 유용한 세부 정보를 로그합니다.  | 
|  6  |  모든 드라이버 활동을 로그합니다.  | 

**로그 파일을 사용하는 로깅을 설정하려면**

1. LogLevel 속성을 로그 파일에 포함하려는 정보 수준으로 설정합니다.

1. LogPath 속성을 로그 파일을 저장할 폴더의 전체 경로로 설정합니다.

   예를 들어 다음 연결 URL은 로깅 수준 3을 사용하고 로그 파일을 C:\$1temp 폴더에 저장합니다. `jdbc:redshift://redshift.company.us-west- 1.redshift.amazonaws.com:9000/Default;DSILogLevel=3;LogPath=C:\temp` 

1. 새 설정이 적용되도록 하려면 JDBC 애플리케이션을 다시 시작하고 서버에 다시 연결합니다.

   Amazon Redshift JDBC 드라이버가 LogPath 속성에 지정된 위치에 다음 로그 파일을 생성합니다.
   +  연결과 관련되지 않은 드라이버 활동을 로그하는 redshift\$1jdbc.log 파일입니다.
   + 각 데이터베이스 연결에 대한 redshift\$1jdbc\$1connection\$1[Number].log 파일입니다. 여기서 [Number]는 각 로그 파일을 식별하는 번호입니다. 이 파일은 연결과 관련된 드라이버 활동을 로그합니다.

LogPath 값이 유효하지 않으면 드라이버가 로그된 정보를 표준 출력 스트림(`System.out`)으로 전송합니다.

# LogStream 또는 LogWriter 사용
<a name="jdbc20-logstream-option"></a>

문제를 포착할 수 있을 만큼만 로깅을 길게 설정합니다. 로깅은 성능을 떨어뜨릴 뿐만 아니라 대용량의 디스크 공간을 소비할 수 있기 때문입니다.

연결 URL에 LogLevel 키를 설정하여 로깅을 설정하고 DriverManager에 지정된 LogStream 또는 LogWriter로 전송되는 세부 정보의 양을 지정합니다.

**LogStream 또는 LogWriter를 사용하는 로깅을 설정하려면**

1. 드라이버의 진행률을 설명하는 일반 정보를 로그하도록 드라이버를 구성하려면 LogLevel 속성을 1 또는 INFO로 설정합니다.

1. 새 설정이 적용되도록 하려면 JDBC 애플리케이션을 다시 시작하고 서버에 다시 연결합니다.

# 데이터 형식 변환
<a name="jdbc20-data-type-mapping"></a>

Amazon Redshift JDBC 드라이버 버전 2.x는 Amazon Redshift, SQL 및 Java 데이터 유형 간 변환으로 많은 일반 데이터 유형을 지원합니다.

다음 표에는 지원되는 데이터 형식 매핑이 나와 있습니다.


| Amazon Redshift 형식 | SQL 형식 | Java 형식 | 
| --- | --- | --- | 
|  BIGINT  |  SQL\$1BIGINT  |  Long  | 
|  BOOLEAN  |  SQL\$1BIT  |  Boolean  | 
|  CHAR  |  SQL\$1CHAR  |  문자열  | 
|  DATE  |  SQL\$1TYPE\$1DATE  |  java.sql.Date  | 
|  DECIMAL  |  SQL\$1NUMERIC  |  BigDecimal  | 
|  DOUBLE PRECISION  |  SQL\$1DOUBLE  |  Double  | 
|  GEOMETRY  |  SQL\$1 LONGVARBINARY  |  byte[]  | 
|  INTEGER  |  SQL\$1INTEGER  |  Integer  | 
|  OID  |  SQL\$1BIGINT  |  Long  | 
|  SUPER  |  SQL\$1LONGVARCHAR  |  문자열  | 
|  REAL  |  SQL\$1REAL  |  Float  | 
|  SMALLINT  |  SQL\$1SMALLINT  |  Short  | 
|  TEXT  |  SQL\$1VARCHAR  |  문자열  | 
|  TIME  |  SQL\$1TYPE\$1TIME  |  java.sql.Time  | 
|  TIMETZ  |  SQL\$1TYPE\$1TIME  |  java.sql.Time  | 
|  TIMESTAMP  |  SQL\$1TYPE\$1 TIMESTAMP  |  java.sql.Timestamp  | 
|  TIMESTAMPTZ  |  SQL\$1TYPE\$1 TIMESTAMP  |  java.sql.Timestamp  | 
|  VARCHAR  |  SQL\$1VARCHAR  |  문자열  | 

# 준비된 명령문 지원 사용
<a name="jdbc20-prepared-statement-support"></a>

Amazon Redshift JDBC 드라이버는 준비된 문을 지원합니다. 준비된 문을 사용하여 동일한 연결 중 여러 번 실행해야 하는 파라미터화된 쿼리의 성능을 향상시킬 수 있습니다.

*준비된 문*은 서버 측에서 컴파일되지만 즉시 실행되지 않는 SQL 문입니다. 컴파일된 문은 객체 또는 연결을 닫을 때까지 PreparedStatement 객체로 서버에 저장됩니다. 해당 객체가 존재하는 동안 문을 다시 컴파일하지 않고도 여러 파라미터 값을 사용하여 준비된 문을 필요한 만큼 실행할 수 있습니다. 이로 인해 오버헤드가 줄어 쿼리 집합을 더 빠르게 실행할 수 있습니다.

준비된 문에 대한 자세한 내용은[Oracle에서 제공하는 JDBC Basics 튜토리얼](https://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html)의 "Using Prepared Statements" 섹션을 참조하세요.

쿼리가 여러 개 포함된 문을 준비할 수 있습니다. 예를 들어 다음의 준비된 문에는 2개의 INSERT 쿼리가 포함되어 있습니다.

```
PreparedStatement pstmt = conn.prepareStatement("INSERT INTO
MyTable VALUES (1, 'abc'); INSERT INTO CompanyTable VALUES
(1, 'abc');");
```

이러한 쿼리가 동일한 준비된 문 내에 지정된 다른 쿼리의 결과에 의존하지 않도록 주의합니다. 쿼리는 준비 단계에서 실행되지 않기 때문에 결과가 아직 반환되지 않았으며 동일한 준비된 문의 다른 쿼리에서 사용할 수 없습니다.

예를 들어 테이블을 생성한 다음 새로 생성된 테이블에 값을 삽입하는 다음의 준비된 문은 허용되지 않습니다.

```
PreparedStatement pstmt = conn.prepareStatement("CREATE
TABLE MyTable(col1 int, col2 varchar); INSERT INTO myTable
VALUES (1, 'abc');");
```

이 문을 준비하려고 하면 서버에서 대상 테이블(myTable)이 아직 존재하지 않는다는 오류를 반환합니다. CREATE 쿼리를 실행해야 INSERT 쿼리를 준비할 수 있습니다.

# JDBC 드라이버 버전 2.2과 1.x의 차이점
<a name="jdbc20-jdbc10-driver-differences"></a>

이 섹션에서는 JDBC 드라이버 버전 2.2와 1.x에서 반환되는 정보의 차이점에 대해 설명합니다. JDBC 드라이버 버전 1.x는 공급이 중단되었습니다.

다음 표에는 JDBC 드라이버의 각 버전에 대해 getDatabaseProductName() 및 getDatabaseProductVersion() 함수에서 반환된 DatabaseMetadata 정보가 나열되어 있습니다. JDBC 드라이버 버전 2.2은 연결을 설정하는 동안 값을 가져옵니다. JDBC 드라이버 버전 1.x는 쿼리의 결과로 값을 가져옵니다.


| JDBC 드라이버 버전 | getDatabaseProductName() 결과 | getDatabaseProductVersion() 결과 | 
| --- | --- | --- | 
|  2.2  |  Redshift  |  8.0.2  | 
|  1.x  |  PostgreSQL  |  08.00.0002  | 

다음 표에는 JDBC 드라이버의 각 버전에 대해 getTypeInfo 함수에서 반환된 DatabaseMetadata 정보가 나열되어 있습니다.


| JDBC 드라이버 버전 | getTypeInfo 결과 | 
| --- | --- | 
|  2.2  |  Redshift 데이터 형식과 일치  | 
|  1.x  |  PostgreSQL 데이터 형식과 일치  | 

# JDBC 드라이버 버전 2.x용 초기화(.ini) 파일 생성
<a name="jdbc20-ini-file"></a>

Amazon Redshift JDBC 드라이버 버전 2.x용 초기화(.ini) 파일을 사용하여 시스템 수준 구성 파라미터를 지정할 수 있습니다. 예를 들어 애플리케이션마다 페더레이션 IdP 인증 파라미터가 다를 수 있습니다. .ini 파일은 SQL 클라이언트가 필요한 구성 파라미터를 가져올 수 있는 공통 위치를 제공합니다.

SQL 클라이언트에 대한 구성 옵션이 들어 있는 JDBC 드라이버 버전 2.x 초기화(.ini) 파일을 생성할 수 있습니다. 파일의 기본 이름은 `rsjdbc.ini`입니다. JDBC 드라이버 버전 2.x는 다음 위치(우선 순위에 따라 나열됨)에서 .ini 파일을 확인합니다.
+ `IniFile`연결 URL 또는 SQL 클라이언트의 연결 속성 대화 상자에 있는 파라미터. `IniFile` 파라미터에 파일 이름을 포함한 .ini 파일의 전체 경로가 포함되어 있는지 확인합니다. `IniFile` 파라미터에 대한 자세한 내용은 [INIFILE](jdbc20-configuration-options.md#jdbc20-inifile-option) 섹션을 참조하세요. `IniFile` 파라미터가.ini 파일의 위치를 잘못 지정하면 오류가 표시됩니다.
+ 파일 이름을 포함한 전체 경로가 포함된 AMAZON\$1REDSHIFT\$1JDBC\$1INI\$1FILE과 같은 환경 변수. `rsjdbc.ini`를 사용하거나 파일 이름을 지정합니다. AMAZON\$1REDSHIFT\$1JDBC\$1INI\$1FILE 환경 변수가.ini 파일의 위치를 잘못 지정하면 오류가 표시됩니다.
+ 드라이버 JAR 파일이 있는 디렉터리.
+ 사용자 홈 디렉터리.
+ 시스템의 임시 디렉터리.

.ini 파일을 [DRIVER]와 같은 섹션으로 구성할 수 있습니다. 각 섹션에는 다양한 연결 파라미터를 지정하는 키-값 페어가 있습니다. `IniSection` 파라미터를 사용하여.ini 파일에 섹션을 지정할 수 있습니다. `IniSection` 파라미터에 대한 자세한 내용은 [IniSection](jdbc20-configuration-options.md#jdbc20-inisection-option) 섹션을 참조하세요.

다음은 [DRIVER], [DEV], [QA] 및 [PROD]에 대한 섹션이 있는 .ini 파일 형식의 예입니다. [DRIVER] 섹션은 모든 연결에 적용할 수 있습니다.

```
[DRIVER]
key1=val1
key2=val2

[DEV]
key1=val1
key2=val2

[QA]
key1=val1
key2=val2

[PROD]
key1=val1
key2=val2
```

JDBC 드라이버 버전 2.x는 우선 순위에 따라 나열된 다음 위치에서 구성 파라미터를 로드합니다.
+ 애플리케이션 코드의 기본 구성 파라미터.
+ .ini 파일의 [DRIVER] 섹션 속성(포함된 경우).
+ 연결 URL 또는 SQL 클라이언트의 연결 속성 대화 상자에 `IniSection` 옵션이 제공되는 경우 사용자 정의 섹션 구성 파라미터.
+ `getConnection` 호출에 지정된 연결 속성 객체의 속성.
+ 연결 URL에 지정된 구성 파라미터.

# JDBC 드라이버 버전 2.x 구성 옵션
<a name="jdbc20-configuration-options"></a>

아래에서 Amazon Redshift JDBC 드라이버 버전 2.2에 지정할 수 있는 옵션에 대한 설명을 찾을 수 있습니다. 구성 옵션은 대소문자를 구분하지 않습니다.

연결 URL을 사용하여 구성 속성을 설정할 수 있습니다. 자세한 내용은 [연결 URL 구축](jdbc20-build-connection-url.md) 섹션을 참조하세요.

**Topics**
+ [AccessKeyID](#jdbc20-accesskeyid-option)
+ [AllowDBUserOverride](#jdbc20-allowdbuseroverride-option)
+ [App\$1ID](#jdbc20-app-id-option)
+ [App\$1Name](#jdbc20-app-name-option)
+ [ApplicationName](#jdbc20-applicationname-option)
+ [AuthProfile](#jdbc20-authprofile-option)
+ [AutoCreate](#jdbc20-autocreate-option)
+ [Client\$1ID](#jdbc20-client_id-option)
+ [Client\$1Secret](#jdbc20-client_secret-option)
+ [ClusterID](#jdbc20-clusterid-option)
+ [압축](#jdbc20-compression-option)
+ [connectTimeout](#jdbc20-connecttimeout-option)
+ [connectionTimezone](#jdbc20-connecttimezone-option)
+ [databaseMetadataCurrentDbOnly](#jdbc20-databasemetadatacurrentdbonly-option)
+ [DbUser](#jdbc20-dbuser-option)
+ [DbGroups](#jdbc20-dbgroups-option)
+ [DBNAME](#jdbc20-dbname-option)
+ [defaultRowFetchSize](#jdbc20-defaultrowfetchsize-option)
+ [DisableIsValidQuery](#jdbc20-disableisvalidquery-option)
+ [enableFetchRingBuffer](#jdbc20-enablefetchringbuffer-option)
+ [enableMultiSqlSupport](#jdbc20-enablemultisqlsupport-option)
+ [fetchRingBufferSize](#jdbc20-fetchringbuffersize-option)
+ [ForceLowercase](#jdbc20-forcelowercase-option)
+ [groupFederation](#jdbc20-groupFederation-option)
+ [HOST](#jdbc20-host-option)
+ [IAMDisableCache](#jdbc20-iamdisablecache-option)
+ [IAMDuration](#jdbc20-iamduration-option)
+ [Idc\$1Client\$1Display\$1Name](#jdbc20-idc_client_display_name)
+ [Idc\$1Region](#jdbc20-idc_region)
+ [IdP\$1Host](#jdbc20-idp_host-option)
+ [IdP\$1Partition](#jdbc20-idp_partition-option)
+ [IdP\$1Port](#jdbc20-idp_port-option)
+ [IdP\$1Tenant](#jdbc20-idp_tenant-option)
+ [IdP\$1Response\$1Timeout](#jdbc20-idp_response_timeout-option)
+ [INIFILE](#jdbc20-inifile-option)
+ [IniSection](#jdbc20-inisection-option)
+ [isServerless](#jdbc20-isserverless-option)
+ [Issuer\$1Url](#jdbc20-issuer-url)
+ [Listen\$1Port](#jdbc20-listen-port)
+ [Login\$1URL](#jdbc20-login_url-option)
+ [loginTimeout](#jdbc20-logintimeout-option)
+ [loginToRp](#jdbc20-logintorp-option)
+ [LogLevel](#jdbc20-loglevel-option)
+ [LogPath](#jdbc20-logpath-option)
+ [OverrideSchemaPatternType](#jdbc20-override-schema-pattern-type)
+ [Partner\$1SPID](#jdbc20-partner_spid-option)
+ [암호](#jdbc20-password-option)
+ [Plugin\$1Name](#jdbc20-plugin_name-option)
+ [PORT](#jdbc20-port-option)
+ [Preferred\$1Role](#jdbc20-preferred_role-option)
+ [프로필](#jdbc20-profile-option)
+ [PWD](#jdbc20-pwd-option)
+ [queryGroup](#jdbc20-querygroup-option)
+ [readOnly](#jdbc20-readonly-option)
+ [리전](#jdbc20-region-option)
+ [reWriteBatchedInserts](#jdbc20-rewritebatchedinserts-option)
+ [reWriteBatchedInsertsSize](#jdbc20-rewritebatchedinsertssize-option)
+ [roleArn](#jdbc20-rolearn-option)
+ [roleSessionName](#jdbc20-roleaessionname-option)
+ [범위](#jdbc20-scope-option)
+ [SecretAccessKey](#jdbc20-secretaccesskey-option)
+ [SessionToken](#jdbc20-sessiontoken-option)
+ [serverlessAcctId](#jdbc20-serverlessacctid-option)
+ [serverlessWorkGroup](#jdbc20-serverlessworkgroup-option)
+ [socketFactory](#jdbc20-socketfactory-option)
+ [socketTimeout](#jdbc20-sockettimeout-option)
+ [SSL](#jdbc20-ssl-option)
+ [SSL\$1Insecure](#jdbc20-ssl_insecure-option)
+ [SSLCert](#jdbc20-sslcert-option)
+ [SSLFactory](#jdbc20-sslfactory-option)
+ [SSLKey](#jdbc20-sslkey-option)
+ [SSLMode](#jdbc20-sslmode-option)
+ [SSLPassword](#jdbc20-sslpassword-option)
+ [SSLRootCert](#jdbc20-sslrootcert-option)
+ [StsEndpointUrl](#jdbc20-stsendpointurl-option)
+ [tcpKeepAlive](#jdbc20-tcpkeepalive-option)
+ [토큰](#jdbc20-token-option)
+ [token\$1type](#jdbc20-token-type-option)
+ [UID](#jdbc20-uid-option)
+ [User](#jdbc20-user-option)
+ [webIdentityToken](#jdbc20-webidentitytoken-option)

## AccessKeyID
<a name="jdbc20-accesskeyid-option"></a>
+ **기본값** – 없음
+ **데이터 형식** – 문자열

이 파라미터를 지정하여 사용자 또는 역할에 대한 IAM 액세스 키를 입력할 수 있습니다. 일반적으로 기존 문자열 또는 사용자 프로파일을 보고 키를 찾을 수 있습니다. 이 파라미터를 지정할 경우 `SecretAccessKey` 파라미터도 지정해야 합니다. JDBC URL에 전달된 경우 AccessKeyID는 URL 인코딩되어야 합니다.

이 파라미터는 선택 사항입니다.

## AllowDBUserOverride
<a name="jdbc20-allowdbuseroverride-option"></a>
+ **기본값** - 0
+ **데이터 형식** – 문자열

이 옵션은 드라이버가 SAML 어설션의 `DbUser` 값을 사용하는지 아니면 연결 URL의 `DbUser` 연결 속성에 지정된 값을 사용하는지를 지정합니다.

이 파라미터는 선택 사항입니다.

**1**  
드라이버가 SAML 어설션의 `DbUser` 값을 사용합니다.  
SAML 어설션이 `DBUser`에 대한 값을 지정하지 않으면 드라이버가 `DBUser` 연결 속성에 지정된 값을 사용합니다. 연결 속성도 값을 지정하지 않으면 드라이버가 연결 프로파일에 지정된 값을 사용합니다.

**0**  
드라이버가 `DBUser` 연결 속성에 지정된 `DBUser` 값을 사용합니다.  
`DBUser` 연결 속성이 값을 지정하지 않으면 드라이버가 연결 프로파일에 지정된 값을 사용합니다. 연결 프로파일도 값을 지정하지 않으면 드라이버가 SAML 어설션의 값을 사용합니다.

## App\$1ID
<a name="jdbc20-app-id-option"></a>
+ **기본값** – 없음
+ **데이터 형식** – 문자열

Amazon Redshift 애플리케이션과 연결된 Okta 제공 고유 ID입니다.

Okta 서비스를 통해 인증하는 경우 이 파라미터는 필수입니다.

## App\$1Name
<a name="jdbc20-app-name-option"></a>
+ **기본값** – 없음
+ **데이터 형식** – 문자열

Amazon Redshift에 대한 연결을 인증하는 데 사용하는 Okta 애플리케이션의 이름입니다.

이 파라미터는 선택 사항입니다.

## ApplicationName
<a name="jdbc20-applicationname-option"></a>
+ **기본값** – null
+ **데이터 형식** – 문자열

감사 목적으로 Amazon Redshift에 전달할 애플리케이션의 이름입니다.

이 파라미터는 선택 사항입니다.

## AuthProfile
<a name="jdbc20-authprofile-option"></a>
+ **기본값** – 없음
+ **데이터 형식** – 문자열

Amazon Redshift에 연결하는 데 사용할 인증 프로파일의 이름입니다.

이 파라미터는 선택 사항입니다.

## AutoCreate
<a name="jdbc20-autocreate-option"></a>
+ **기본값** – false
+ **데이터 형식** – 부울

이 옵션은 지정된 사용자가 없을 때 드라이버가 새 사용자를 생성하도록 하는지 여부를 지정합니다.

이 파라미터는 선택 사항입니다.

**true**  
`DBUser` 또는 고유 ID(UID)로 지정된 사용자가 없으면 해당 이름의 사용자가 새로 생성됩니다.

**false**  
드라이버로 인해 새 사용자가 생성되지는 않습니다. 지정된 사용자가 없으면 인증에 실패합니다.

## Client\$1ID
<a name="jdbc20-client_id-option"></a>
+ **기본값** – 없음
+ **데이터 형식** – 문자열

Azure AD 서비스를 사용하여 연결을 인증할 때 사용할 클라이언트 ID입니다.

Azure AD 서비스를 통해 인증하는 경우 이 파라미터는 필수입니다.

## Client\$1Secret
<a name="jdbc20-client_secret-option"></a>
+ **기본값** – 없음
+ **데이터 형식** – 문자열

Azure AD 서비스를 사용하여 연결을 인증할 때 사용할 클라이언트 암호입니다.

Azure AD 서비스를 통해 인증하는 경우 이 파라미터는 필수입니다.

## ClusterID
<a name="jdbc20-clusterid-option"></a>
+ **기본값** – 없음
+ **데이터 형식** – 문자열

연결하려는 Amazon Redshift 클러스터의 이름입니다. 드라이버는 지정된 호스트에서 이 파라미터를 감지하려고 시도합니다. Network Load Balancer(NLB)를 사용하며 IAM을 통해 연결하는 경우, 드라이버가 이를 감지하지 못하므로 이 연결 옵션을 사용하여 설정할 수 있습니다.

이 파라미터는 선택 사항입니다.

## 압축
<a name="jdbc20-compression-option"></a>
+ **기본값** - 끄기
+ **데이터 형식** – 문자열

Amazon Redshift 서버와 클라이언트 또는 드라이버 간의 유선 프로토콜 통신에 사용되는 압축 방법입니다.

이 파라미터는 선택 사항입니다.

다음 값을 지정할 수 있습니다.
+ **lz4**

  Amazon Redshift와의 유선 프로토콜 통신에 사용되는 압축 방법을 lz4로 설정합니다.
+ **꺼짐**

  Amazon Redshift와의 유선 프로토콜 통신에 압축을 사용하지 않습니다.

## connectTimeout
<a name="jdbc20-connecttimeout-option"></a>
+ **기본값** - 10
+ **데이터 형식** – 정수

소켓 연결 작업에 사용할 제한 시간 값입니다. Amazon Redshift 연결을 설정하는 데 필요한 시간이 이 값을 초과하면 연결을 사용할 수 없는 것으로 간주됩니다. 제한 시간은 초 단위로 지정됩니다. 값이 0이면 제한 시간을 지정하지 않는 것입니다.

이 파라미터는 선택 사항입니다.

## connectionTimezone
<a name="jdbc20-connecttimezone-option"></a>
+ **기본값** – LOCAL
+ **데이터 형식** – 문자열

세션 수준 시간대입니다.

이 파라미터는 선택 사항입니다.

다음 값을 지정할 수 있습니다.

**LOCAL**  
세션 수준 시간대를 LOCAL JVM 시간대로 구성합니다.

**SERVER**  
Amazon Redshift 서버에서 사용자에 대해 설정된 시간대로 세션 수준 시간대를 구성합니다. 다음 명령으로 사용자에 대한 세션 수준 시간대를 구성할 수 있습니다.  

```
ALTER USER
[...]
SET TIMEZONE TO [...];
```

## databaseMetadataCurrentDbOnly
<a name="jdbc20-databasemetadatacurrentdbonly-option"></a>
+ **기본값** – true
+ **데이터 형식** – 부울

이 옵션은 메타데이터 API가 액세스 가능한 모든 데이터베이스에서 데이터를 검색할지 아니면 연결된 데이터베이스에서만 데이터를 검색할지를 지정합니다.

이 파라미터는 선택 사항입니다.

다음 값을 지정할 수 있습니다.

**true**  
애플리케이션이 단일 데이터베이스에서 메타데이터를 검색합니다.

**false**  
애플리케이션이 액세스 가능한 모든 데이터베이스에서 메타데이터를 검색합니다.

## DbUser
<a name="jdbc20-dbuser-option"></a>
+ **기본값** – 없음
+ **데이터 형식** – 문자열

Amazon Redshift 계정에 사용할 사용자 ID입니다. AutoCreate 속성을 사용하도록 설정한 경우 현재 존재하지 않는 ID를 사용할 수 있습니다.

이 파라미터는 선택 사항입니다.

## DbGroups
<a name="jdbc20-dbgroups-option"></a>
+ **기본값** – PUBLIC
+ **데이터 형식** – 문자열

`DBUser`가 현재 세션에 대해 조인하는 기존 데이터베이스 그룹 이름의 쉼표로 구분된 목록입니다.

이 파라미터는 선택 사항입니다.

## DBNAME
<a name="jdbc20-dbname-option"></a>
+ **기본값** – null
+ **데이터 형식** – 문자열

연결할 데이터베이스의 이름입니다. 이 옵션을 사용하여 JDBC 연결 URL에 데이터베이스 이름을 지정할 수 있습니다.

이 파라미터는 필수 사항입니다. 연결 URL 또는 클라이언트 애플리케이션의 연결 속성에 데이터베이스 이름을 지정해야 합니다.

## defaultRowFetchSize
<a name="jdbc20-defaultrowfetchsize-option"></a>
+ **기본값** - 0
+ **데이터 형식** – 정수

이 옵션은 getFetchSize의 기본값을 지정합니다.

이 파라미터는 선택 사항입니다.

다음 값을 지정할 수 있습니다.

**0**  
단일 작업으로 모든 행을 가져옵니다.

**양의 정수**  
ResultSet의 각 가져오기 반복에 대해 데이터베이스에서 가져올 행 수입니다.

## DisableIsValidQuery
<a name="jdbc20-disableisvalidquery-option"></a>
+ **기본값** – False
+ **데이터 형식** – 부울

이 옵션은 Connection.isValid () 메서드를 사용하여 데이터베이스 연결이 활성 상태인지 여부를 확인할 때 드라이버가 새 데이터베이스 쿼리를 제출할지 여부를 지정합니다.

이 파라미터는 선택 사항입니다.

**true**  
드라이버가 Connection.isValid()를 사용하여 데이터베이스 연결이 활성 상태인지 여부를 확인할 때 쿼리를 제출하지 않습니다. 이로 인해 데이터베이스 서버가 예기치 않게 종료된 경우 드라이버가 데이터베이스 연결을 활성 상태로 잘못 식별할 수 있습니다.

**false**  
드라이버가 Connection.isValid()를 사용하여 데이터베이스 연결이 활성 상태인지 여부를 확인할 때 쿼리를 제출합니다.

## enableFetchRingBuffer
<a name="jdbc20-enablefetchringbuffer-option"></a>
+ **기본값** – true
+ **데이터 형식** – 부울

이 옵션은 드라이버가 별도의 스레드에서 링 버퍼를 사용하여 행을 가져오도록 지정합니다. fetchRingBufferSize 파라미터는 링 버퍼 크기를 지정합니다.

링 버퍼는 JDBC에서 자동 메모리 관리를 구현하여 데이터 검색 작업 중에 메모리 부족(OOM) 오류를 방지합니다. 링 버퍼는 버퍼링된 데이터의 실제 크기를 실시간으로 모니터링하여 드라이버의 총 메모리 사용량이 정의된 한도 내에 있도록 합니다. 버퍼 용량에 도달하면 드라이버가 데이터 가져오기 작업을 일시 중지하여 수동 개입 없이 메모리 오버플로를 방지합니다. 이 내장 보호 기능은 사용자의 구성 없이도 OOM 오류를 자동으로 제거합니다.

트랜잭션이 세미콜론으로 구분된 여러 SQL 명령이 포함된 명령문을 감지하면 해당 트랜잭션의 페치 링 버퍼가 거짓으로 설정됩니다. enableFetchRingBuffer의 값은 변경되지 않습니다.

이 파라미터는 선택 사항입니다.

**참고**  
링 버퍼가 비활성화되고 가져오기 크기가 제대로 구성되지 않은 경우 메모리 부족(OOM) 문제가 발생할 수 있습니다. 가져오기 크기 구성에 대한 자세한 내용은 [여기](https://docs.aws.amazon.com/redshift/latest/dg/set-the-JDBC-fetch-size-parameter.html)를 참조하세요.

## enableMultiSqlSupport
<a name="jdbc20-enablemultisqlsupport-option"></a>
+ **기본값** – true
+ **데이터 형식** – 부울

이 옵션은 Statement에서 세미콜론으로 구분된 여러 SQL 명령을 처리할지 여부를 지정합니다.

이 파라미터는 선택 사항입니다.

다음 값을 지정할 수 있습니다.

**true**  
드라이버가 Statement 객체에서 세미콜론으로 구분된 여러 SQL 명령을 처리합니다.

**false**  
드라이버가 단일 Statement에서 여러 SQL 명령에 대한 오류를 반환합니다.

## fetchRingBufferSize
<a name="jdbc20-fetchringbuffersize-option"></a>
+ **기본값** – 1G
+ **데이터 형식** – 문자열

이 옵션은 결과 집합을 가져오는 동안 사용되는 링 버퍼의 크기를 지정합니다. 크기를 바이트 단위로 지정할 수 있습니다(예: 1KB의 경우 1K, 5,000바이트의 경우 5000, 1MB의 경우 1M, 1GB의 경우 1G). 또한 힙 메모리의 비율을 지정할 수 있습니다. 드라이버는 제한에 도달하면 행 가져오기를 중지합니다. 애플리케이션이 행을 읽고 링 버퍼의 공간을 확보하면 가져오기가 다시 시작됩니다.

이 파라미터는 선택 사항입니다.

## ForceLowercase
<a name="jdbc20-forcelowercase-option"></a>
+ **기본값** – false
+ **데이터 형식** – 부울

이 옵션은 드라이버가 Single Sign-On 인증을 사용할 때 자격 증명 공급자에서 Amazon Redshift로 전송된 모든 데이터베이스 그룹(DbGroups)을 소문자로 표시할지 여부를 지정합니다.

이 파라미터는 선택 사항입니다.

**true**  
드라이버가 ID 공급자에서 전송된 모든 데이터베이스 그룹을 소문자로 표시합니다.

**false**  
드라이버가 데이터베이스 그룹을 변경하지 않습니다.

## groupFederation
<a name="jdbc20-groupFederation-option"></a>
+ **기본값** – false
+ **데이터 형식** – 부울

이 옵션은 Amazon Redshift IDP 그룹을 사용할지 여부를 지정합니다. 이 옵션은 GetClusterCredentialsV2 API에서 지원됩니다.

이 파라미터는 선택 사항입니다.

**true**  
Amazon Redshift IDP(자격 증명 공급자) 그룹을 사용합니다.

**false**  
사용자 페더레이션을 위해 STS API 및 GetClusterCredentials를 사용하고 연결을 위해 DbGroups를 명시적으로 지정합니다.

## HOST
<a name="jdbc20-host-option"></a>
+ **기본값** – null
+ **데이터 형식** – 문자열

연결할 Amazon Redshift 서버의 호스트 이름입니다. 이 옵션을 사용하여 JDBC 연결 URL에 호스트 이름을 지정할 수 있습니다.

이 파라미터는 필수 사항입니다. 연결 URL 또는 클라이언트 애플리케이션의 연결 속성에 호스트 이름을 지정해야 합니다.

## IAMDisableCache
<a name="jdbc20-iamdisablecache-option"></a>
+ **기본값** – false
+ **데이터 형식** – 부울

이 옵션은 IAM 자격 증명이 캐시되는지 여부를 지정합니다.

이 파라미터는 선택 사항입니다.

**true**  
IAM 자격 증명이 캐시되지 않습니다.

**false**  
IAM 자격 증명이 캐시되지 않습니다. 예를 들어 API 게이트웨이에 대한 요청이 제한될 때 성능이 향상됩니다.

## IAMDuration
<a name="jdbc20-iamduration-option"></a>
+ **기본값** – 900
+ **데이터 형식** – 정수

임시 IAM 자격 증명이 만료될 때까지 남은 시간(초)입니다.
+ **최솟값** – 900
+ **최댓값 **– 3,600

이 파라미터는 선택 사항입니다.

## Idc\$1Client\$1Display\$1Name
<a name="jdbc20-idc_client_display_name"></a>
+ **기본값** - Amazon Redshift JDBC 드라이버
+ **데이터 형식** – 문자열

BrowserIdcAuthPlugin을 사용하는 클라이언트에 사용할 표시 이름입니다.

이 파라미터는 선택 사항입니다.

## Idc\$1Region
<a name="jdbc20-idc_region"></a>
+ **기본값** – 없음
+ **데이터 형식** – 문자열

IAM Identity Center 인스턴스가 위치한 AWS 리전입니다.

이 파라미터는 plugin\$1name 구성 옵션에서 `BrowserIdcAuthPlugin`을 사용하여 인증하는 경우에만 필요합니다.

## IdP\$1Host
<a name="jdbc20-idp_host-option"></a>
+ **기본값** – 없음
+ **데이터 형식** – 문자열

Amazon Redshift에 인증하는 데 사용하는 자격 증명 공급자(IdP) 호스트입니다. 연결 문자열이나 프로파일에 지정할 수 있습니다.

이 파라미터는 선택 사항입니다.

## IdP\$1Partition
<a name="jdbc20-idp_partition-option"></a>
+ **기본값** – 없음
+ **데이터 형식** – 문자열

ID 제공업체(IdP)가 구성된 클라우드 파티션을 지정합니다. 드라이버가 연결하는 IdP 인증 엔드포인트를 결정합니다.

이 파라미터를 비워 두면 드라이버는 기본적으로 상용 파티션으로 설정됩니다. 가능한 값은 다음과 같습니다.
+  `us-gov`: IdP가 Azure Government에 구성된 경우 이 값을 사용합니다. 예를 들어 Azure AD Government는 `login.microsoftonline.us` 엔드포인트를 사용합니다.
+  `cn`: IdP가 중국 클라우드 파티션에 구성된 경우 이 값을 사용합니다. 예를 들어 Azure AD China는 `login.chinacloudapi.cn` 엔드포인트를 사용합니다.

이 파라미터는 선택 사항입니다.

## IdP\$1Port
<a name="jdbc20-idp_port-option"></a>
+ **기본값** – 없음
+ **데이터 형식** – 문자열

자격 증명 공급자(IdP)가 사용하는 포트입니다. 연결 문자열이나 프로파일에 포트를 지정할 수 있습니다. 기본 포트는 5439입니다. 클러스터를 생성, 수정 또는 마이그레이션할 때 선택한 포트에 따라 선택한 포트에 대한 액세스를 허용합니다.

이 파라미터는 선택 사항입니다.

## IdP\$1Tenant
<a name="jdbc20-idp_tenant-option"></a>
+ **기본값** – 없음
+ **데이터 형식** – 문자열

Amazon Redshift 애플리케이션의 Azure AD 테넌트 ID입니다.

Azure AD 서비스를 통해 인증하는 경우 이 파라미터는 필수입니다.

## IdP\$1Response\$1Timeout
<a name="jdbc20-idp_response_timeout-option"></a>
+ **기본값** – 120
+ **데이터 형식** – 정수

브라우저 플러그인을 통해 SAML 또는 Azure AD 서비스를 사용할 때 드라이버가 자격 증명 공급자의 SAML 응답을 기다리는 시간(초)입니다.

이 파라미터는 선택 사항입니다.

## INIFILE
<a name="jdbc20-inifile-option"></a>
+ **기본값** – 없음
+ **데이터 형식** – 문자열

파일 이름을 포함한 .ini 파일의 전체 경로입니다. 예:

```
IniFile="C:\tools\rsjdbc.ini"
```

.ini 파일에 대한 자세한 내용은 [JDBC 드라이버 버전 2.x용 초기화(.ini) 파일 생성](jdbc20-ini-file.md) 섹션을 참조하세요.

이 파라미터는 선택 사항입니다.

## IniSection
<a name="jdbc20-inisection-option"></a>
+ **기본값** – 없음
+ **데이터 형식** – 문자열

구성 옵션을 포함하는.ini 파일의 섹션 이름입니다. .ini 파일에 대한 자세한 내용은 [JDBC 드라이버 버전 2.x용 초기화(.ini) 파일 생성](jdbc20-ini-file.md) 섹션을 참조하세요.

다음 예에서는 .ini 파일의 [Prod] 섹션을 지정합니다.

```
IniSection="Prod"
```

이 파라미터는 선택 사항입니다.

## isServerless
<a name="jdbc20-isserverless-option"></a>
+ **기본값** – false
+ **데이터 형식** – 부울

이 옵션은 Amazon Redshift 엔드포인트 호스트가 서버리스 인스턴스인지 여부를 지정합니다. 드라이버는 지정된 호스트에서 이 파라미터를 감지하려고 시도합니다. Network Load Balancer(NLB)를 사용하는 경우 드라이버가 이를 감지하지 못하므로, 여기에서 설정하면 됩니다.

이 파라미터는 선택 사항입니다.

**true**  
Amazon Redshift 엔드포인트 호스트가 서버리스 인스턴스입니다.

**false**  
Amazon Redshift 엔드포인트 호스트가 프로비저닝된 클러스터입니다.

## Issuer\$1Url
<a name="jdbc20-issuer-url"></a>
+ **기본값** – 없음
+ **데이터 형식** – 문자열

AWS IAM Identity Center 서버의 인스턴스 엔드포인트를 가리킵니다.

이 파라미터는 plugin\$1name 구성 옵션에서 `BrowserIdcAuthPlugin`을 사용하여 인증하는 경우에만 필요합니다.

## Listen\$1Port
<a name="jdbc20-listen-port"></a>
+ **기본값** – 7890
+ **데이터 형식** – 정수

드라이버가 브라우저 플러그인을 통해 SAML, Azure AD 또는 AWS IAM Identity Center 서비스를 사용할 때 ID 제공업체 또는 권한 부여 코드로부터 SAML 응답을 받는 데 사용하는 포트입니다.

이 파라미터는 선택 사항입니다.

## Login\$1URL
<a name="jdbc20-login_url-option"></a>
+ **기본값** – 없음
+ **데이터 형식** – 문자열

브라우저 플러그인을 통해 SAML 또는 Azure AD 서비스를 사용할 때 자격 증명 공급자의 웹 사이트에 있는 리소스의 URL입니다.

브라우저 플러그인을 통해 SAML 또는 Azure AD 서비스로 인증하는 경우 이 파라미터는 필수입니다.

## loginTimeout
<a name="jdbc20-logintimeout-option"></a>
+ **기본값** - 0
+ **데이터 형식** – 정수

서버에 연결하고 인증하면서 시간 제한이 지날 때까지 대기하는 시간(초)입니다. 연결 구성이 이 제한 시간보다 어래 걸리면 연결이 중단됩니다.

이 속성이 0으로 설정되는 경우에는 연결 시간 제한이 없습니다.

이 파라미터는 선택 사항입니다.

## loginToRp
<a name="jdbc20-logintorp-option"></a>
+ **기본값** – `urn:amazon:webservices`
+ **데이터 형식** – 문자열

AD FS 인증 유형에 사용할 신뢰 당사자 트러스트입니다.

이 파라미터는 선택 사항입니다.

## LogLevel
<a name="jdbc20-loglevel-option"></a>
+ **기본값** - 0
+ **데이터 형식** – 정수

이 속성을 사용하여 드라이버에서 로깅을 설정하거나 해제하고 로그 파일에 포함되는 세부 정보의 양을 지정합니다.

문제를 포착할 수 있을 만큼만 로깅을 사용합니다. 로깅은 성능을 떨어뜨릴 뿐만 아니라 대용량의 디스크 공간을 소비할 수 있기 때문입니다.

이 파라미터는 선택 사항입니다.

파라미터를 다음 값 중 하나로 설정합니다.

**0**  
모든 로깅을 사용 중지합니다.

**1**  
드라이버를 중단시키는 매우 심각한 오류 이벤트를 로그하는 FATAL 수준에서 로깅을 사용합니다.

**2**  
드라이버가 계속 실행될 수 있는 오류 이벤트를 로그하는 ERROR 수준에서 로깅을 사용합니다.

**3**  
작업을 수행하지 않으면 오류가 발생할 수 있는 이벤트를 로그하는 WARNING 수준에서 로깅을 사용합니다.

**4**  
드라이버의 진행 상황을 설명하는 일반 정보를 로그하는 INFO 수준에서 로깅을 사용합니다.

**5**  
드라이버 디버깅에 유용한 세부 정보를 로그하는 DEBUG 수준에서 로깅을 사용합니다.

**6**  
모든 드라이버 활동을 로그하는 TRACE 수준에서 로깅을 사용합니다.

로깅을 사용하면 드라이버가 `LogPath` 속성에 지정된 위치에 다음 로그 파일을 생성합니다.
+ ** `redshift_jdbc.log`** – 연결과 관련되지 않은 드라이버 활동을 로그하는 파일입니다.
+ **`redshift_jdbc_connection_[Number].log`** – 각 데이터베이스 연결에 대한 파일입니다. 여기서 `[Number]`는 각 로그 파일을 다른 로그 파일과 구별하는 숫자입니다. 이 파일은 연결과 관련된 드라이버 활동을 로그합니다.

LogPath 값이 유효하지 않으면 드라이버가 로그된 정보를 표준 출력 스트림인 `System.out`으로 전송합니다.

## LogPath
<a name="jdbc20-logpath-option"></a>
+ **기본값** – 현재 작업 디렉터리.
+ **데이터 형식** – 문자열

DSILogLevel 속성을 사용할 때 드라이버가 로그 파일을 저장하는 폴더의 전체 경로입니다.

연결 URL이 모든 JDBC 애플리케이션과 호환되는지 확인하려면 다른 백슬래시를 입력하여 파일 경로에서 백슬래시(\$1)를 이스케이프 처리하는 것이 좋습니다.

이 파라미터는 선택 사항입니다.

## OverrideSchemaPatternType
<a name="jdbc20-override-schema-pattern-type"></a>
+ **기본값** – null
+ **데이터 형식** – 정수

이 옵션은 getTables 호출에 사용하는 쿼리 유형을 재정의할지 여부를 지정합니다.

**0**  
스키마 없는 범용 쿼리

**1**  
로컬 스키마 쿼리

**2**  
외부 스키마 쿼리

이 파라미터는 선택 사항입니다.

## Partner\$1SPID
<a name="jdbc20-partner_spid-option"></a>
+ **기본값** – 없음
+ **데이터 형식** – 문자열

PingFederate 서비스를 사용하여 연결을 인증할 때 사용할 파트너 SPID(서비스 공급자 ID) 값입니다.

이 파라미터는 선택 사항입니다.

## 암호
<a name="jdbc20-password-option"></a>
+ **기본값** – 없음
+ **데이터 형식** – 문자열

IDP를 통해 IAM 인증을 사용하여 연결할 때 IDP\$1Host 서버의 암호입니다. 표준 인증을 사용할 때 Amazon Redshift 데이터베이스 암호에 PWD 대신 사용할 수 있습니다.

이 파라미터는 선택 사항입니다.

## Plugin\$1Name
<a name="jdbc20-plugin_name-option"></a>
+ **기본값** – 없음
+ **데이터 형식** – 문자열

특정 자격 증명 공급자 플러그인을 구현하기 위한 정규화된 클래스 이름입니다.

이 파라미터는 선택 사항입니다.

다음과 같은 공급자 옵션이 지원됩니다.
+ **`AdfsCredentialsProvider`** – Active Directory Federation Service입니다.
+ **`AzureCredentialsProvider`** – Microsoft Azure Active Directory(AD) Service입니다.
+ **`BasicJwtCredentialsProvider`** – JSON Web Tokens (JWT) Service입니다.
+ **`BasicSamlCredentialsProvider`** - 많은 SAML 서비스 공급자와 함께 사용할 수 있는 SAML(Security Assertion Markup Language) 자격 증명입니다.
+ **`BrowserAzureCredentialsProvider`** – Browser Microsoft Azure Active Directory(AD) Service입니다.
+ **`BrowserAzureOAuth2CredentialsProvider` ** – 네이티브 인증용 Browser Microsoft Azure Active Directory(AD) Service입니다.
+ **`BrowserIdcAuthPlugin`** - AWS IAM Identity Center를 사용하는 인증 플러그인입니다.
+ **`BrowserSamlCredentialsProvider`** – Okta, Ping, ADFS 등의 SAML 서비스용 Browser SAML입니다.
+ **`IdpTokenAuthPlugin`** – AWS IAM Identity Center 토큰 또는 AWS IAM Identity Center에 연결된 웹 ID 제공업체의 OpenID Connect(OIDC) JSON 기반 자격 증명 토큰(JWT)을 수락하는 권한 부여 플러그인입니다.
+ **`OktaCredentialsProvider`** – Okta Service입니다.
+ **`PingCredentialsProvider`** – PingFederate Service입니다.

## PORT
<a name="jdbc20-port-option"></a>
+ **기본값** – null
+ **데이터 형식** – 정수

연결할 Amazon Redshift 서버의 포트입니다. 이 옵션을 사용하여 JDBC 연결 URL에 포트를 지정할 수 있습니다.

이 파라미터는 선택 사항입니다.

## Preferred\$1Role
<a name="jdbc20-preferred_role-option"></a>
+ **기본값** – 없음
+ **데이터 형식** – 문자열

Amazon Redshift에 연결하는 동안 수임하려는 IAM 역할입니다.

이 파라미터는 선택 사항입니다.

## 프로필
<a name="jdbc20-profile-option"></a>
+ **기본값** – 없음
+ **데이터 형식** – 문자열

IAM 인증에 사용할 프로파일의 이름입니다. 이 프로파일에는 연결 문자열에 지정되지 않은 추가 연결 속성이 포함되어 있습니다.

이 파라미터는 선택 사항입니다.

## PWD
<a name="jdbc20-pwd-option"></a>
+ **기본값** – 없음
+ **데이터 형식** – 문자열

속성 UID를 사용하여 제공한 Amazon Redshift 사용자 이름에 해당하는 암호입니다.

이 파라미터는 선택 사항입니다.

## queryGroup
<a name="jdbc20-querygroup-option"></a>
+ **기본값** – null
+ **데이터 형식** – 문자열

이 옵션은 적절한 쿼리 그룹에 쿼리를 할당하여 런타임에 쿼리를 대기열에 할당합니다. 쿼리 그룹이 세션에 대해 설정됩니다. 연결에서 실행되는 모든 쿼리는 이 쿼리 그룹에 속합니다.

이 파라미터는 선택 사항입니다.

## readOnly
<a name="jdbc20-readonly-option"></a>
+ **기본값** – false
+ **데이터 형식** – 부울

이 속성은 드라이버가 읽기 전용 모드인지 여부를 지정합니다.

이 파라미터는 선택 사항입니다.

**true**  
연결이 읽기 전용 모드이며 데이터 스토어에 쓸 수 없습니다.

**false**  
연결이 읽기 전용 모드가 아니며 데이터 스토어에 쓸 수 있습니다.

## 리전
<a name="jdbc20-region-option"></a>
+ **기본값** – null
+ **데이터 형식** – 문자열

이 옵션은 클러스터가 위치한 AWS 리전을 지정합니다. StsEndPoint 옵션을 지정하면 리전 옵션이 무시됩니다. Redshift `GetClusterCredentials` API 작업도 리전 옵션을 사용합니다.

이 파라미터는 선택 사항입니다.

## reWriteBatchedInserts
<a name="jdbc20-rewritebatchedinserts-option"></a>
+ **기본값** – false
+ **데이터 형식** – 부울

이 옵션을 사용하면 최적화를 통해 호환 가능한 INSERT 문을 다시 작성하고 배치로 결합할 수 있습니다.

이 파라미터는 선택 사항입니다.

## reWriteBatchedInsertsSize
<a name="jdbc20-rewritebatchedinsertssize-option"></a>
+ **기본값** – 128
+ **데이터 형식** – 정수

이 옵션을 사용하면 최적화를 통해 호환 가능한 INSERT 문을 다시 작성하고 배치로 결합할 수 있습니다. 이 값은 2의 거듭제곱으로 기하급수적으로 증가해야 합니다.

이 파라미터는 선택 사항입니다.

## roleArn
<a name="jdbc20-rolearn-option"></a>
+ **기본값** – 없음
+ **데이터 형식** – 문자열

역할의 Amazon 리소스 이름(ARN)입니다. Plugin\$1Name 옵션에 BasicJwtCredentialsProvider를 지정할 때 이 파라미터를 지정해야 합니다. 다음 형식으로 ARN을 지정합니다.

`arn:partition:service:region:account-id:resource-id`

Plugin\$1Name 옵션에 BasicJwtCredentialsProvider를 지정하는 경우 이 파라미터는 필수입니다.

## roleSessionName
<a name="jdbc20-roleaessionname-option"></a>
+ **기본값** – jwt\$1redshift\$1session
+ **데이터 형식** – 문자열

맡은 역할 세션의 식별자입니다. 일반적으로 애플리케이션 사용자와 연결된 이름 또는 식별자를 전달합니다. 애플리케이션에서 사용하는 임시 보안 자격 증명은 해당 사용자와 연결됩니다. Plugin\$1Name 옵션에 BasicJwtCredentialsProvider를 지정할 때 이 파라미터를 지정할 수 있습니다.

이 파라미터는 선택 사항입니다.

## 범위
<a name="jdbc20-scope-option"></a>
+ **기본값** – 없음
+ **데이터 형식** – 문자열

사용자가 동의할 수 있는 공백으로 구분된 범위 목록입니다. Microsoft Azure 애플리케이션이 해당 사용자가 호출하려는 API에 대한 동의를 얻을 수 있도록 이 파라미터를 지정합니다. Plugin\$1Name 옵션에 BrowserAzureOAuth2CredentialsProvider를 지정할 때 이 파라미터를 지정할 수 있습니다.

이 파라미터는 BrowserAzureOAuth2CredentialsProvider 플러그인에 반드시 필요합니다.

## SecretAccessKey
<a name="jdbc20-secretaccesskey-option"></a>
+ **기본값** – 없음
+ **데이터 형식** – 문자열

사용자 또는 역할에 대한 IAM 액세스 키입니다. 이 파라미터를 지정하는 경우 AccessKeyID도 지정해야 합니다. JDBC URL에 전달된 SecretAccessKey는 URL 인코딩되어야 합니다.

이 파라미터는 선택 사항입니다.

## SessionToken
<a name="jdbc20-sessiontoken-option"></a>
+ **기본값** – 없음
+ **데이터 형식** – 문자열

인증에 사용하는 IAM 역할과 연결된 임시 IAM 세션 토큰입니다. JDBC URL에 전달된 경우 임시 IAM 세션 토큰은 URL 인코딩되어야 합니다.

이 파라미터는 선택 사항입니다.

## serverlessAcctId
<a name="jdbc20-serverlessacctid-option"></a>
+ **기본값** – null
+ **데이터 형식** – 문자열

Amazon Redshift Serverless 계정 ID입니다. 드라이버는 지정된 호스트에서 이 파라미터를 감지하려고 시도합니다. Network Load Balancer(NLB)를 사용하는 경우 드라이버가 이를 감지하지 못하므로, 여기에서 설정하면 됩니다.

이 파라미터는 선택 사항입니다.

## serverlessWorkGroup
<a name="jdbc20-serverlessworkgroup-option"></a>
+ **기본값** – null
+ **데이터 형식** – 문자열

Amazon Redshift Serverless 작업 그룹 이름입니다. 드라이버는 지정된 호스트에서 이 파라미터를 감지하려고 시도합니다. Network Load Balancer(NLB)를 사용하는 경우 드라이버가 이를 감지하지 못하므로, 여기에서 설정하면 됩니다.

이 파라미터는 선택 사항입니다.

## socketFactory
<a name="jdbc20-socketfactory-option"></a>
+ **기본값** – null
+ **데이터 형식** – 문자열

이 옵션은 소켓 생성을 위한 소켓 팩토리를 지정합니다.

이 파라미터는 선택 사항입니다.

## socketTimeout
<a name="jdbc20-sockettimeout-option"></a>
+ **기본값** - 0
+ **데이터 형식** – 정수

소켓 읽기 작업에서 제한 시간이 지날 때까지 대기하는 시간(초)입니다. 작업이 이 임계값보다 오래 걸리면 연결이 닫힙니다. 이 속성이 0으로 설정되는 경우에는 연결 시간 제한이 없습니다.

이 파라미터는 선택 사항입니다.

## SSL
<a name="jdbc20-ssl-option"></a>
+ **기본값** – TRUE
+ **데이터 형식** – 문자열

이 속성을 사용하여 연결에 SSL을 설정하거나 해제합니다.

이 파라미터는 선택 사항입니다.

다음 값을 지정할 수 있습니다.

**TRUE**  
드라이버가 SSL을 통해 서버에 연결합니다.

**FALSE**  
드라이버가 SSL을 사용하지 않고 서버에 연결합니다. IAM 인증에서는 이 옵션이 지원되지 않습니다.

또는 AuthMech 속성을 구성할 수 있습니다.

## SSL\$1Insecure
<a name="jdbc20-ssl_insecure-option"></a>
+ **기본값** – true
+ **데이터 형식** – 문자열

이 속성은 IDP 호스트 서버 인증서를 확인해야 하는지 여부를 나타냅니다.

이 파라미터는 선택 사항입니다.

다음 값을 지정할 수 있습니다.

**true**  
드라이버가 IDP 서버 인증서의 신뢰성을 확인하지 않습니다.

**false**  
드라이버가 IDP 서버 인증서의 신뢰성을 확인합니다.

## SSLCert
<a name="jdbc20-sslcert-option"></a>
+ **기본값** – 없음
+ **데이터 형식** – 문자열

SSL 사용 시 Amazon Redshift 서버 인스턴스 확인을 위한 신뢰할 수 있는 추가 CA 인증서가 포함된 .pem 또는 .crt 파일의 전체 경로입니다.

SSLKey가 지정된 경우 이 파라미터는 필수입니다.

## SSLFactory
<a name="jdbc20-sslfactory-option"></a>
+ **기본값** – 없음
+ **데이터 형식** – 문자열

서버 인증서를 사용하지 않고 TLS/SSL을 통해 서버에 연결할 때 사용할 SSL 팩토리입니다.

## SSLKey
<a name="jdbc20-sslkey-option"></a>
+ **기본값** – 없음
+ **데이터 형식** – 문자열

SSLCert에 지정된 인증서 확인을 위한 PKCS8 키 파일이 포함된.der 파일의 전체 경로입니다.

SSLCert가 지정된 경우 이 파라미터는 필수입니다.

## SSLMode
<a name="jdbc20-sslmode-option"></a>
+ **기본값** – verify-ca
+ **데이터 형식** – 문자열

이 속성을 사용하여 TLS/SSL 사용 시 드라이버가 인증서를 검증하는 방법을 지정합니다.

이 파라미터는 선택 사항입니다.

다음 값을 지정할 수 있습니다.

**[verify-ca]**  
드라이버가 신뢰할 수 있는 인증 기관(CA)에서 인증서를 제공하는지 확인합니다.

**[verify-full]**  
드라이버가 신뢰할 수 있는 CA에서 인증서를 제공하고 인증서의 호스트 이름이 연결 URL에 지정된 호스트 이름과 일치하는지 확인합니다.

## SSLPassword
<a name="jdbc20-sslpassword-option"></a>
+ **기본값** - 0
+ **데이터 형식** – 문자열

SSLKey에 지정된 암호화된 키 파일의 암호입니다.

SSLKey가 지정되고 키 파일이 암호화된 경우 이 파라미터는 필수입니다.

## SSLRootCert
<a name="jdbc20-sslrootcert-option"></a>
+ **기본값** – 없음
+ **데이터 형식** – 문자열

SSL 사용 시 Amazon Redshift 서버 인스턴스 확인을 위한 루트 CA 인증서가 포함된 .pem 또는 .crt 파일의 전체 경로입니다.

## StsEndpointUrl
<a name="jdbc20-stsendpointurl-option"></a>
+ **기본값** – null
+ **데이터 형식** – 문자열

AWS Security Token Service(AWS STS) 엔드포인트를 지정할 수 있습니다. 이 옵션을 지정하면 리전 옵션이 무시됩니다. 이 엔드포인트에는 보안 프로토콜(HTTPS)만 지정할 수 있습니다.

## tcpKeepAlive
<a name="jdbc20-tcpkeepalive-option"></a>
+ **기본값** – TRUE
+ **데이터 형식** – 문자열

이 속성을 사용하여 TCP KeepAlive를 설정하거나 해제합니다.

이 파라미터는 선택 사항입니다.

다음 값을 지정할 수 있습니다.

**TRUE**  
드라이버가 TCP KeepAlive를 사용하여 연결 시간 초과를 방지합니다.

**FALSE**  
드라이버가 TCP KeepAlive를 사용하지 않습니다.

## 토큰
<a name="jdbc20-token-option"></a>
+ **기본값** – 없음
+ **데이터 형식** – 문자열

AWS IAM Identity Center에서 제공한 액세스 토큰 또는 AWS IAM Identity Center와 연결된 웹 ID 제공업체가 제공한 OpenID Connect(OIDC) JSON 웹 토큰(JWT)입니다. 애플리케이션은 AWS IAM Identity Center 또는 AWS IAM Identity Center와 연결된 자격 증명 공급자를 통해 애플리케이션 사용자를 인증하여 이 토큰을 생성해야 합니다.

이 파라미터는 `IdpTokenAuthPlugin`과 함께 작동합니다.

## token\$1type
<a name="jdbc20-token-type-option"></a>
+ **기본값** – 없음
+ **데이터 형식** – 문자열

`IdpTokenAuthPlugin`에서 사용되는 토큰 유형입니다.

다음 값을 지정할 수 있습니다.

**ACCESS\$1TOKEN**  
AWS IAM Identity Center에서 제공한 액세스 토큰을 사용하는 경우 이 값을 입력합니다.

**EXT\$1JWT**  
AWS IAM Identity Center와 통합된 웹 기반 ID 제공업체가 제공하는 OpenID Connect(OIDC) JSON 웹 토큰(JWT)을 사용하는 경우 이 값을 입력합니다.

이 파라미터는 `IdpTokenAuthPlugin`과 함께 작동합니다.

## UID
<a name="jdbc20-uid-option"></a>
+ **기본값** – 없음
+ **데이터 형식** – 문자열

데이터베이스에 액세스하는 데 사용하는 데이터베이스 사용자 이름입니다.

이 파라미터는 필수 사항입니다.

## User
<a name="jdbc20-user-option"></a>
+ **기본값** – 없음
+ **데이터 형식** – 문자열

IDP를 통해 IAM 인증을 사용하여 연결 시 idp\$1host 서버의 사용자 이름입니다. 표준 인증을 사용하는 경우 Amazon Redshift 데이터베이스 사용자 이름에 사용할 수 있습니다.

이 파라미터는 선택 사항입니다.

## webIdentityToken
<a name="jdbc20-webidentitytoken-option"></a>
+ **기본값** – 없음
+ **데이터 형식** – 문자열

자격 증명 공급자가 제공하는 OAuth 2.1 액세스 토큰 또는 OpenID Connect ID 토큰입니다. 애플리케이션에서 웹 자격 증명 공급자로 애플리케이션 사용자를 인증하여 이 토큰을 가져와야 합니다. Plugin\$1Name 옵션에 BasicJwtCredentialsProvider를 지정할 때 이 파라미터를 지정해야 합니다.

Plugin\$1Name 옵션에 BasicJwtCredentialsProvider를 지정하는 경우 이 파라미터는 필수입니다.

# JDBC 드라이버 버전 2.x의 이전 버전
<a name="jdbc20-previous-driver-version-20"></a>

도구에 특정 버전의 드라이버가 필요한 경우에만 Amazon Redshift JDBC 드라이버 버전 2.x의 이전 버전을 다운로드합니다.

다음은 이전의 JDBC 4.2 호환 JDBC 드라이버 버전 2.x 드라이버입니다.
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.2.4/redshift-jdbc42-2.2.4.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.2.4/redshift-jdbc42-2.2.4.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.2.3/redshift-jdbc42-2.2.3.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.2.3/redshift-jdbc42-2.2.3.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.2.2/redshift-jdbc42-2.2.2.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.2.2/redshift-jdbc42-2.2.2.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.2.1/redshift-jdbc42-2.2.1.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.2.1/redshift-jdbc42-2.2.1.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.2.0/redshift-jdbc42-2.2.0.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.2.0/redshift-jdbc42-2.2.0.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.34/redshift-jdbc42-2.1.0.34.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.34/redshift-jdbc42-2.1.0.34.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.33/redshift-jdbc42-2.1.0.33.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.33/redshift-jdbc42-2.1.0.33.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.32/redshift-jdbc42-2.1.0.32.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.32/redshift-jdbc42-2.1.0.32.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.30/redshift-jdbc42-2.1.0.30.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.30/redshift-jdbc42-2.1.0.30.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.29/redshift-jdbc42-2.1.0.29.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.29/redshift-jdbc42-2.1.0.29.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.28/redshift-jdbc42-2.1.0.28.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.28/redshift-jdbc42-2.1.0.28.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.26/redshift-jdbc42-2.1.0.26.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.26/redshift-jdbc42-2.1.0.26.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.25/redshift-jdbc42-2.1.0.25.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.25/redshift-jdbc42-2.1.0.25.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.24/redshift-jdbc42-2.1.0.24.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.24/redshift-jdbc42-2.1.0.24.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.23/redshift-jdbc42-2.1.0.23.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.23/redshift-jdbc42-2.1.0.23.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.22/redshift-jdbc42-2.1.0.22.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.22/redshift-jdbc42-2.1.0.22.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.21/redshift-jdbc42-2.1.0.21.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.21/redshift-jdbc42-2.1.0.21.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.20/redshift-jdbc42-2.1.0.20.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.20/redshift-jdbc42-2.1.0.20.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.19/redshift-jdbc42-2.1.0.19.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.19/redshift-jdbc42-2.1.0.19.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.18/redshift-jdbc42-2.1.0.18.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.18/redshift-jdbc42-2.1.0.18.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.17/redshift-jdbc42-2.1.0.17.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.17/redshift-jdbc42-2.1.0.17.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.16/redshift-jdbc42-2.1.0.16.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.16/redshift-jdbc42-2.1.0.16.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.15/redshift-jdbc42-2.1.0.15.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.15/redshift-jdbc42-2.1.0.15.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.14/redshift-jdbc42-2.1.0.14.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.14/redshift-jdbc42-2.1.0.14.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.13/redshift-jdbc42-2.1.0.13.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.13/redshift-jdbc42-2.1.0.13.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.12/redshift-jdbc42-2.1.0.12.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.12/redshift-jdbc42-2.1.0.12.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.11/redshift-jdbc42-2.1.0.11.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.11/redshift-jdbc42-2.1.0.11.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.10/redshift-jdbc42-2.1.0.10.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.10/redshift-jdbc42-2.1.0.10.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.9/redshift-jdbc42-2.1.0.9.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.9/redshift-jdbc42-2.1.0.9.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.8/redshift-jdbc42-2.1.0.8.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.8/redshift-jdbc42-2.1.0.8.zip) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.7/redshift-jdbc42-2.1.0.7.zip](https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/2.1.0.7/redshift-jdbc42-2.1.0.7.zip) 

# Amazon Redshift Python 커넥터
<a name="python-redshift-driver"></a>

Python용 Amazon Redshift 커넥터를 사용하면[AWS Python용 SDK(Boto3)](https://github.com/boto/boto3), pandas 및 Numerical Python(NumPy)과 작업을 통합할 수 있습니다. pandas에 대한 자세한 내용은 [pandas GitHub 리포지토리](https://github.com/pandas-dev/pandas)를 참조하세요. NumPy에 대한 자세한 내용은 [NumPy GitHub 리포지토리](https://github.com/numpy/numpy)를 참조하세요.

Amazon Redshift Python 커넥터는 오픈 소스 솔루션을 제공합니다. 소스 코드를 탐색하고, 개선 사항을 요청하고, 문제를 보고하고, 기여를 제공할 수 있습니다.

Amazon Redshift Python 커넥터를 사용하려면 Python 버전 3.6 이상이 있어야 합니다. 자세한 내용은 [Amazon Redshift Python 드라이버 사용권 계약](https://github.com/aws/amazon-redshift-python-driver/blob/master/LICENSE)을 참조하세요.

Amazon Redshift Python 커넥터는 다음을 제공합니다.
+ AWS Identity and Access Management(IAM) 인증. 자세한 내용은 [Amazon Redshift의 Identity and Access Management](redshift-iam-authentication-access-control.md) 섹션을 참조하세요.
+ 페더레이션 API 액세스를 사용한 자격 증명 공급자 인증. 페더레이션 API 액세스는 다음과 같은 기업 자격 증명 공급자에 대해 지원됩니다.
  + Azure AD. 자세한 내용은 AWS 빅 데이터 블로그 게시물 [Federate Amazon Redshift access with Microsoft Azure AD single sign-on](https://aws.amazon.com/blogs/big-data/federate-amazon-redshift-access-with-microsoft-azure-ad-single-sign-on/)을 참조하세요.
  + Active Directory Federation Services. 자세한 내용은 AWS 빅 데이터 블로그 게시물 [Federate access to your Amazon Redshift cluster with Active Directory Federation Services (AD FS): Part 1](https://aws.amazon.com/blogs/big-data/federate-access-to-your-amazon-redshift-cluster-with-active-directory-federation-services-ad-fs-part-1/)을 참조하세요.
  + Okta. 자세한 내용은 AWS 빅 데이터 블로그 게시물 [Federate Amazon Redshift access with Okta as an identity provider](https://aws.amazon.com/blogs/big-data/federate-amazon-redshift-access-with-okta-as-an-identity-provider/)를 참조하세요.
  + PingFederate. 자세한 내용은 [PingFederate 사이트](https://www.pingidentity.com/en/software/pingfederate.html)를 참조하세요.
  + JumpCloud. 자세한 내용은 [JumpCloud 사이트](https://jumpcloud.com/)를 참조하세요.
+ Amazon Redshift 데이터 유형.

Amazon Redshift Python 커넥터는 Python Database API 사양 2.0을 구현합니다. 자세한 내용은 Python 웹 사이트의 [PEP 249—Python Database API Specification v2.0](https://www.python.org/dev/peps/pep-0249/)을 참조하세요.

**Topics**
+ [Amazon Redshift Python 커넥터 설치](python-driver-install.md)
+ [Amazon Redshift Python 커넥터의 구성 옵션](python-configuration-options.md)
+ [Python 커넥터 가져오기](python-start-import.md)
+ [NumPy와 Python 커넥터 통합](python-connect-integrate-numpy.md)
+ [pandas와 Python 커넥터 통합](python-connect-integrate-pandas.md)
+ [자격 증명 공급자 플러그인 사용](python-connect-identity-provider-plugins.md)
+ [Amazon Redshift Python 커넥터 사용 예](python-connect-examples.md)
+ [Amazon Redshift Python 커넥터용 API 참조](python-api-reference.md)

# Amazon Redshift Python 커넥터 설치
<a name="python-driver-install"></a>

다음 방법을 사용하여 Amazon Redshift Python 커넥터를 설치할 수 있습니다.
+ Python 패키지 인덱스(PyPi)
+ Conda
+ GitHub 리포지토리 복제

## PyPI에서 Python 커넥터 설치
<a name="python-pip-install-pypi"></a>

Python 패키지 인덱스(PyPi)에서 Python 커넥터를 설치하려면 pip를 사용할 수 있습니다. 다음 명령으로 실행하세요.

```
>>> pip install redshift_connector
```

가상 환경 내에 커넥터를 설치할 수 있습니다. 다음 명령으로 실행하세요.

```
>>> pip install redshift_connector
```

커넥터를 사용하여 pandas와 NumPy를 설치할 수도 있습니다.

```
>>> pip install 'redshift_connector[full]'
```

pip에 대한 자세한 내용은 [pip 웹 사이트](https://pip.pypa.io/en/stable/)를 참조하세요.

## Conda에서 Python 커넥터 설치
<a name="python-pip-install-from-conda"></a>

Anaconda.org에서 Python 커넥터를 설치할 수 있습니다.

```
>>>conda install -c conda-forge redshift_connector
```

## AWS에서 GitHub 리포지토리를 복제하여 Python 커넥터 설치
<a name="python-pip-install-from-source"></a>

소스에서 Python 커넥터를 설치하려면 AWS에서 GitHub 리포지토리를 복제합니다. Python 및 virtualenv를 설치한 후 다음 명령을 실행하여 환경을 설정하고 필요한 종속성을 설치합니다.

```
$ git clone https://github.com/aws/amazon-redshift-python-driver.git
$ cd amazon-redshift-python-driver
$ virtualenv venv
$ . venv/bin/activate
$ python -m pip install -r requirements.txt
$ python -m pip install -e .
$ python -m pip install redshift_connector
```

# Amazon Redshift Python 커넥터의 구성 옵션
<a name="python-configuration-options"></a>

아래에서 Amazon Redshift JDBC Python 커넥터에 지정할 수 있는 옵션에 대한 설명을 찾을 수 있습니다. 아래 옵션은 달리 지정하지 않는 한 사용 가능한 최신 커넥터 버전에 적용됩니다.

## access\$1key\$1id
<a name="python-access-key-id-option"></a>
+ **기본값** – 없음
+ **데이터 유형** – 문자열

IAM 데이터베이스 인증용으로 구성한 IAM 사용자 또는 역할에 대한 액세스 키 ID입니다.

이 파라미터는 선택 사항입니다.

## allow\$1db\$1user\$1override
<a name="python-allow-db-user-override-option"></a>
+ **기본값** – False
+ **데이터 유형** – 부울

True  
커넥터가 SAML(Security Assertion Markup Language) 어설션의 `DbUser` 값을 사용하도록 지정합니다.

False  
`DbUser` 연결 파라미터의 값이 사용되도록 지정합니다.

이 파라미터는 선택 사항입니다.

## app\$1name
<a name="python-app-name-option"></a>
+ **기본값** – 없음
+ **데이터 유형** – 문자열

인증에 사용되는 자격 증명 공급자(IdP) 애플리케이션의 이름입니다.

이 파라미터는 선택 사항입니다.

## application\$1name
<a name="python-application_name-option"></a>
+ **기본값** – 없음
+ **데이터 유형** – 문자열

감사 목적으로 Amazon Redshift에 전달할 클라이언트 애플리케이션의 이름입니다. 입력하는 애플리케이션 이름은 [SYS\$1CONNECTION\$1LOG](https://docs.aws.amazon.com/redshift/latest/dg/SYS_CONNECTION_LOG.html) 테이블의 'application\$1name' 열에 나타납니다. 이렇게 하면 문제를 디버깅할 때 연결 소스를 추적하고 문제를 해결할 수 있습니다.

이 파라미터는 선택 사항입니다.

## auth\$1profile
<a name="python-auth-profile-option"></a>
+ **기본값** – 없음
+ **데이터 유형** – 문자열

연결 속성이 JSON인 Amazon Redshift 인증 프로파일의 이름입니다. 연결 파라미터 이름 지정에 대한 자세한 내용은 `RedshiftProperty` 클래스를 참조하세요. 최종 사용자가 제공하고 해당 사항이 있는 경우 `RedshiftProperty` 클래스에는 IAM 인증 프로세스 중에 생성된 연결 파라미터가 저장됩니다(예: 임시 IAM 자격 증명). 자세한 내용은 [RedshiftProperty 클래스](https://github.com/aws/amazon-redshift-python-driver/blob/master/redshift_connector/redshift_property.py#L9)를 참조하세요.

이 파라미터는 선택 사항입니다.

## auto\$1create
<a name="python-auto-create-option"></a>
+ **기본값** – False
+ **데이터 유형** – 부울

사용자가 존재하지 않는 경우 사용자를 생성할지 여부를 나타내는 값입니다.

이 파라미터는 선택 사항입니다.

## client\$1id
<a name="python-client-id-option"></a>
+ **기본값** – 없음
+ **데이터 유형** – 문자열

Azure IdP의 클라이언트 ID입니다.

이 파라미터는 선택 사항입니다.

## client\$1secret
<a name="python-client-secret-option"></a>
+ **기본값** – 없음
+ **데이터 유형** – 문자열

Azure IdP의 클라이언트 보안 암호입니다.

이 파라미터는 선택 사항입니다.

## cluster\$1identifier
<a name="python-cluster-identifier-option"></a>
+ **기본값** – 없음
+ **데이터 유형** – 문자열

Amazon Redshift 클러스터의 클러스터 식별자입니다.

이 파라미터는 선택 사항입니다.

## credentials\$1provider
<a name="python-credential-provider-option"></a>
+ **기본값** – 없음
+ **데이터 유형** – 문자열

Amazon Redshift로 인증하는 데 사용되는 IdP입니다. 유효한 값은 다음과 같습니다.
+ `AdfsCredentialsProvider`
+ `AzureCredentialsProvider`
+ `BrowserAzureCredentialsProvider`
+ `BrowserAzureOAuth2CredentialsProvider`
+ `BrowserIdcAuthPlugin` - AWS IAM Identity Center를 사용하는 인증 플러그인입니다.
+ `BrowserSamlCredentialsProvider`
+ `IdpTokenAuthPlugin` – AWS IAM Identity Center 토큰 또는 AWS IAM Identity Center에 연결된 웹 ID 제공업체의 OpenID Connect(OIDC) JSON 기반 자격 증명 토큰(JWT)을 수락하는 권한 부여 플러그인입니다.
+ `PingCredentialsProvider`
+ `OktaCredentialsProvider`

이 파라미터는 선택 사항입니다.

## 데이터베이스
<a name="python-database-option"></a>
+ **기본값** – 없음
+ **데이터 유형** – 문자열

연결할 데이터베이스의 이름입니다.

이 파라미터는 필수 사항입니다.

## database\$1metadata\$1current\$1db\$1only
<a name="python-database-metadata-current-db-only-option"></a>
+ **기본값** – True
+ **데이터 유형** – 부울

애플리케이션이 다중 데이터베이스 datashare 카탈로그를 지원하는지 여부를 나타내는 값입니다. 기본값 True는 애플리케이션이 이전 버전과의 호환성을 위해 다중 데이터베이스 datashare 카탈로그를 지원하지 않음을 나타냅니다.

이 파라미터는 선택 사항입니다.

## db\$1groups
<a name="python-db-groups-option"></a>
+ **기본값** – 없음
+ **데이터 유형** – 문자열

DbUser가 표시한 사용자가 현재 세션에 대해 조인하는 기존 데이터베이스 그룹 이름의 쉼표로 구분된 목록입니다.

이 파라미터는 선택 사항입니다.

## db\$1user
<a name="python-db-user-option"></a>
+ **기본값** – 없음
+ **데이터 유형** – 문자열

Amazon Redshift에 사용할 사용자 ID입니다.

이 파라미터는 선택 사항입니다.

## endpoint\$1url
<a name="python-endpoint-url-option"></a>
+ **기본값** – 없음
+ **데이터 유형** – 문자열

Amazon Redshift 엔드포인트 URL입니다. 이 옵션은 AWS 내부 전용입니다.

이 파라미터는 선택 사항입니다.

## group\$1federation
<a name="python-group-federation-option"></a>
+ **기본값** – False
+ **데이터 유형** – 부울

이 옵션은 Amazon Redshift IDP 그룹을 사용할지 여부를 지정합니다.

이 파라미터는 선택 사항입니다.

**true**  
Amazon Redshift IDP(자격 증명 공급자) 그룹을 사용합니다.

**false**  
사용자 페더레이션을 위해 STS API 및 GetClusterCredentials를 사용하고 연결을 위해 **db\$1groups**를 지정합니다.

## host
<a name="python-host-option"></a>
+ **기본값** – 없음
+ **데이터 유형** – 문자열

Amazon Redshift 클러스터의 호스트 이름입니다.

이 파라미터는 선택 사항입니다.

## iam
<a name="python-iam-option"></a>
+ **기본값** – False
+ **데이터 유형** – 부울

IAM 인증이 사용됩니다.

이 파라미터는 필수 사항입니다.

## iam\$1disable\$1cache
<a name="python-iam-disable-cache-option"></a>
+ **기본값** – False
+ **데이터 유형** – 부울

이 옵션은 IAM 자격 증명이 캐시되는지 여부를 지정합니다. 기본적으로 IAM 자격 증명이 캐시되지 않습니다. API 게이트웨이에 대한 요청이 제한될 때 성능이 향상됩니다.

이 파라미터는 선택 사항입니다.

## idc\$1client\$1display\$1name
<a name="python-idc_client_display_name-option"></a>
+ **기본값** - Amazon Redshift Python 커넥터
+ **데이터 형식** – 문자열

BrowserIdcAuthPlugin을 사용하는 클라이언트에 사용할 표시 이름입니다.

이 파라미터는 선택 사항입니다.

## idc\$1region
<a name="python-idc_region"></a>
+ **기본값** – 없음
+ **데이터 형식** – 문자열

AWS IAM Identity Center 인스턴스가 위치한 AWS 리전입니다.

이 파라미터는 credentials\$1provider 구성 옵션에서 `BrowserIdcAuthPlugin`을 사용하여 인증하는 경우에만 필요합니다.

## idp\$1partition
<a name="python-idp_partition-option"></a>
+ **기본값** – 없음
+ **데이터 형식** – 문자열

ID 제공업체(IdP)가 구성된 클라우드 파티션을 지정합니다. 드라이버가 연결하는 IdP 인증 엔드포인트를 결정합니다.

이 파라미터를 비워 두면 드라이버는 기본적으로 상용 파티션으로 설정됩니다. 가능한 값은 다음과 같습니다.
+  `us-gov`: IdP가 Azure Government에 구성된 경우 이 값을 사용합니다. 예를 들어 Azure AD Government는 `login.microsoftonline.us` 엔드포인트를 사용합니다.
+  `cn`: IdP가 중국 클라우드 파티션에 구성된 경우 이 값을 사용합니다. 예를 들어 Azure AD China는 `login.chinacloudapi.cn` 엔드포인트를 사용합니다.

이 파라미터는 선택 사항입니다.

## idpPort
<a name="python-idp-port-option"></a>
+ **기본값** – 7890
+ **데이터 유형** – 정수

IdP가 SAML 어설션을 전송하는 수신 포트입니다.

이 파라미터는 필수 사항입니다.

## idp\$1response\$1timeout
<a name="python-idp-response-timeout-option"></a>
+ **기본값** – 120
+ **데이터 유형** – 정수

IdP에서 SAML 어설션 검색에 대한 시간 제한입니다.

이 파라미터는 필수 사항입니다.

## idp\$1tenant
<a name="python-idp-tenant-option"></a>
+ **기본값** – 없음
+ **데이터 유형** – 문자열

IdP 테넌트입니다.

이 파라미터는 선택 사항입니다.

## issuer\$1url
<a name="python-issuer_url"></a>
+ **기본값** – 없음
+ **데이터 형식** – 문자열

 AWS IAM Identity Center 서버의 인스턴스 엔드포인트를 가리킵니다.

이 파라미터는 credentials\$1provider 구성 옵션에서 `BrowserIdcAuthPlugin`을 사용하여 인증하는 경우에만 필요합니다.

## listen\$1port
<a name="python-listen-port-option"></a>
+ **기본값** – 7890
+ **데이터 유형** – 정수

드라이버가 브라우저 플러그인을 통해 SAML, Azure AD 또는 AWS IAM Identity Center 서비스를 사용할 때 ID 제공업체 또는 권한 부여 코드로부터 SAML 응답을 받는 데 사용하는 포트입니다.

이 파라미터는 선택 사항입니다.

## login\$1url
<a name="python-login-url-option"></a>
+ **기본값** – 없음
+ **데이터 유형** – 문자열

IdP의 Single Sign-On URL입니다.

이 파라미터는 선택 사항입니다.

## max\$1prepared\$1statements
<a name="python-max-prepared-statements-option"></a>
+ **기본값** - 1000
+ **데이터 유형** – 정수

연결당 캐시되는 준비된 명령문의 최대 개수입니다. 이 파라미터를 0으로 설정하면 캐싱 메커니즘이 비활성화됩니다. 이 파라미터에 음수를 입력하면 기본값으로 설정됩니다.

이 파라미터는 선택 사항입니다.

## numeric\$1to\$1float
<a name="python-numeric-to-float-option"></a>
+ **기본값** – False
+ **데이터 유형** – 부울

이 옵션은 커넥터가 숫자 데이터 형식 값을 decimal.Decimal에서 float로 변환하는지 여부를 지정합니다. 기본적으로 커넥터는 숫자 데이터 형식 값을 decimal.Decimal로 수신하며 변환하지 않습니다.

결과가 반올림될 수 있으므로 정밀도가 필요한 사용 사례에는 numeric\$1to\$1float를 사용하지 않는 것이 좋습니다.

decimal.Decimal 및 decimal.Decimal과 float의 장단점에 대한 자세한 내용은 Python 웹 사이트에서 [decimal - Decimal fixed point and floating point arithmetic](https://docs.python.org/3/library/decimal.html)(decimal - 10진수 고정 소수점 및 부동 소수점 연산)을 참조하세요.

이 파라미터는 선택 사항입니다.

## partner\$1sp\$1id
<a name="python-partner-sp-id-option"></a>
+ **기본값** – 없음
+ **데이터 유형** – 문자열

Ping 인증에 사용되는 파트너 SP ID입니다.

이 파라미터는 선택 사항입니다.

## 암호
<a name="python-password-option"></a>
+ **기본값** – 없음
+ **데이터 유형** – 문자열

인증에 사용할 암호입니다.

이 파라미터는 선택 사항입니다.

## 포트
<a name="python-port-option"></a>
+ **기본값** - 5439
+ **데이터 유형** – 정수

Amazon Redshift 클러스터의 포트 번호입니다.

이 파라미터는 필수 사항입니다.

## preferred\$1role
<a name="python-preferred-role-option"></a>
+ **기본값** – 없음
+ **데이터 유형** – 문자열

현재 연결에 선호되는 IAM 역할입니다.

이 파라미터는 선택 사항입니다.

## principal\$1arn
<a name="python-principal-arn-option"></a>
+ **기본값** – 없음
+ **데이터 유형** – 문자열

정책을 생성할 사용자 또는 IAM 역할의 Amazon 리소스 이름(ARN)입니다. 역할에 정책을 연결한 후 사용자에게 해당 역할을 할당하여 액세스할 수 있도록 하는 것이 좋습니다.

이 파라미터는 선택 사항입니다.

## profile
<a name="python-profile-option"></a>
+ **기본값** – 없음
+ **데이터 유형** – 문자열

AWS 자격 증명이 포함된 AWS 자격 증명 파일의 프로파일 이름입니다.

이 파라미터는 선택 사항입니다.

## provider\$1name
<a name="python-provider_name-option"></a>
+ **기본값** – 없음
+ **데이터 유형** – 문자열

Redshift Native Authentication Provider의 이름입니다.

이 파라미터는 선택 사항입니다.

## region
<a name="python-region-option"></a>
+ **기본값** – 없음
+ **데이터 유형** – 문자열

클러스터가 있는 AWS 리전입니다.

이 파라미터는 선택 사항입니다.

## role\$1arn
<a name="python-role-arn-option"></a>
+ **기본값** – 없음
+ **데이터 유형** – 문자열

발신자가 수임하는 역할의 Amazon 리소스 이름(ARN)입니다. 이 파라미터는 `JwtCredentialsProvider`로 표시된 공급자가 사용합니다.

`JwtCredentialsProvider` 공급자의 경우 이 파라미터는 필수입니다. 그렇지 않으면 이 파라미터는 선택 항목입니다.

## role\$1session\$1name
<a name="python-role-session-name-option"></a>
+ **기본값** – jwt\$1redshift\$1session
+ **데이터 유형** – 문자열

맡은 역할 세션의 식별자입니다. 일반적으로 애플리케이션 사용자와 연결된 이름 또는 식별자를 전달합니다. 애플리케이션에서 사용하는 임시 보안 자격 증명은 해당 사용자와 연결됩니다. 이 파라미터는 `JwtCredentialsProvider`로 표시된 공급자가 사용합니다.

이 파라미터는 선택 사항입니다.

## 범위
<a name="python-scope-option"></a>
+ **기본값** – 없음
+ **데이터 유형** – 문자열

사용자가 동의할 수 있는 공백으로 구분된 범위 목록입니다. 애플리케이션이 해당 사용자가 호출하려는 API에 대한 동의를 얻을 수 있도록 이 파라미터를 지정합니다. credentials\$1provider 옵션에 BrowserAzureOAuth2CredentialsProvider를 지정할 때 이 파라미터를 지정할 수 있습니다.

이 파라미터는 BrowserAzureOAuth2CredentialsProvider 플러그인에 반드시 필요합니다.

## secret\$1access\$1key\$1id
<a name="python-secret-access-key-id-option"></a>
+ **기본값** – 없음
+ **데이터 유형** – 문자열

IAM 데이터베이스 인증용으로 구성한 IAM 사용자 또는 역할에 대한 보안 액세스 키 ID입니다.

이 파라미터는 선택 사항입니다.

## session\$1token
<a name="python-session-token-option"></a>
+ **기본값** – 없음
+ **데이터 유형** – 문자열

IAM 데이터베이스 인증용으로 구성한 IAM 사용자 또는 역할에 대한 액세스 키 ID입니다. 임시 AWS 자격 증명이 사용 중인 경우 이 파라미터가 필요합니다.

이 파라미터는 선택 사항입니다.

## serverless\$1acct\$1id
<a name="python-serverless-acct-id-option"></a>
+ **기본값** – 없음
+ **데이터 유형** – 문자열

Amazon Redshift Serverless 계정 ID입니다.

이 파라미터는 선택 사항입니다.

## serverless\$1work\$1group
<a name="python-serverless-work-group-option"></a>
+ **기본값** – 없음
+ **데이터 유형** – 문자열

Amazon Redshift Serverless 작업 그룹 이름입니다.

이 파라미터는 선택 사항입니다.

## ssl
<a name="python-ssl-option"></a>
+ **기본값** – True
+ **데이터 유형** – 부울

보안 소켓 계층(SSL)을 사용합니다.

이 파라미터는 필수 사항입니다.

## ssl\$1insecure
<a name="python-ssl-insecure-option"></a>
+ **기본값** – False
+ **데이터 유형** – 부울

IdP 호스트의 서버 SSL 인증서 검증을 비활성화할지 여부를 지정하는 값입니다. 이 파라미터를 True로 설정하면 IdP 호스트의 서버 SSL 인증서 검증이 비활성화됩니다. 프로덕션 환경에서는 기본값 False를 유지하는 것이 좋습니다.

이 파라미터는 선택 사항입니다.

## sslmode
<a name="python-sslmode-option"></a>
+ **기본값** – verify-ca
+ **데이터 유형** – 문자열

Amazon Redshift에 대한 연결 보안입니다. 다음 중 하나를 지정할 수 있습니다.
+ [verify-ca]
+ [verify-full]

이 파라미터는 필수 사항입니다.

## tcp\$1keepalive
<a name="python-tcp_keepalive-option"></a>
+ **기본값** – True
+ **데이터 유형** – 부울

TCP keepalive를 사용하여 연결이 시간 초과되지 않도록 할지 여부입니다. 다음 값을 지정할 수 있습니다.
+ True: 드라이버가 TCP keepalive를 사용하여 연결이 시간 초과되지 않도록 합니다.
+ False: 드라이버가 TCP keepalive를 사용하지 않습니다.

이 파라미터는 선택 사항입니다.

## tcp\$1keepalive\$1count
<a name="python-tcp_keepalive_count-option"></a>
+ **기본값** – 없음
+ **데이터 유형** – 정수

연결이 비활성 상태로 간주되기 전에 전송할 응답이 없는 프로브의 수입니다. 예를 들어, 값을 3으로 설정하면 드라이버가 응답이 없는 keepalive 패킷을 3회 전송한 후 연결이 더 이상 활성 상태가 아니라고 판단합니다.

이 파라미터가 지정되지 않으면 Amazon Redshift는 시스템의 기본값을 사용합니다.

이 파라미터는 선택 사항입니다.

## tcp\$1keepalive\$1interval
<a name="python-tcp_keepalive_interval-option"></a>
+ **기본값** – 없음
+ **데이터 유형** – 정수

드라이버가 이전 킵얼라이브 프로브에 대한 확인 응답을 받지 못한 경우, 후속 keepalive 프로브 간 간격(초)입니다. 이 파라미터를 지정할 경우 양의 정수여야 합니다.

이 파라미터가 지정되지 않으면 Amazon Redshift는 시스템의 기본값을 사용합니다.

이 파라미터는 선택 사항입니다.

## tcp\$1keepalive\$1idle
<a name="python-tcp_keepalive_idle-option"></a>
+ **기본값** – 없음
+ **데이터 유형** – 정수

드라이버가 첫 번째 keepalive 프로브를 전송하기까지의 비활성 상태 지속 시간(초)입니다. 예를 들어 값을 120으로 설정하면 드라이버는 첫 번째 keepalive 패킷을 전송하기 전 2분 동안 비활성 상태를 대기합니다. 이 파라미터를 지정할 경우 양의 정수여야 합니다.

이 파라미터가 지정되지 않으면 Amazon Redshift는 시스템의 기본값을 사용합니다.

이 파라미터는 선택 사항입니다.

## 제한 시간
<a name="python-timeout-option"></a>
+ **기본값** – 없음
+ **데이터 유형** – 정수

서버 연결 시간이 초과되기까지의 시간(초)입니다.

이 파라미터는 선택 사항입니다.

## 토큰
<a name="python-token-option"></a>
+ **기본값** – 없음
+ **데이터 형식** – 문자열

AWS IAM Identity Center에서 제공한 액세스 토큰 또는 AWS IAM Identity Center와 연결된 웹 ID 제공업체가 제공한 OpenID Connect(OIDC) JSON 웹 토큰(JWT)입니다. 애플리케이션은 AWS IAM Identity Center 또는 AWS IAM Identity Center와 연결된 자격 증명 공급자를 통해 애플리케이션 사용자를 인증하여 이 토큰을 생성해야 합니다.

이 파라미터는 `IdpTokenAuthPlugin`과 함께 작동합니다.

## token\$1type
<a name="python-token_type-option"></a>
+ **기본값** – 없음
+ **데이터 형식** – 문자열

`IdpTokenAuthPlugin`에서 사용되는 토큰 유형입니다.

다음 값을 지정할 수 있습니다.

**ACCESS\$1TOKEN**  
AWS IAM Identity Center에서 제공한 액세스 토큰을 사용하는 경우 이 값을 입력합니다.

**EXT\$1JWT**  
AWS IAM Identity Center와 통합된 웹 기반 ID 제공업체가 제공하는 OpenID Connect(OIDC) JSON 웹 토큰(JWT)을 사용하는 경우 이 값을 입력합니다.

이 파라미터는 `IdpTokenAuthPlugin`과 함께 작동합니다.

## user
<a name="python-user-option"></a>
+ **기본값** – 없음
+ **데이터 유형** – 문자열

권한 부여에 사용할 사용자 이름입니다.

이 파라미터는 선택 사항입니다.

## web\$1identity\$1token
<a name="python-web-identity-token-option"></a>
+ **기본값** – 없음
+ **데이터 유형** – 문자열

자격 증명 공급자가 제공하는 OAuth 2.0 액세스 토큰 또는 OpenID Connect ID 토큰입니다. 웹 자격 증명 공급자를 통해 애플리케이션을 사용하는 사용자를 인증하여 애플리케이션이 이 토큰을 가져오도록 합니다. `JwtCredentialsProvider`로 표시된 공급자는 이 파라미터를 사용합니다.

`JwtCredentialsProvider` 공급자의 경우 이 파라미터는 필수입니다. 그렇지 않으면 이 파라미터는 선택 항목입니다.

# Python 커넥터 가져오기
<a name="python-start-import"></a>

Python 커넥터를 가져오려면 다음 명령을 실행합니다.

```
>>> import redshift_connector
```

AWS 자격 증명을 사용하여 Amazon Redshift 클러스터에 연결하려면 다음 명령을 실행합니다.

```
conn = redshift_connector.connect(
    host='examplecluster.abc123xyz789.us-west-1.redshift.amazonaws.com',
    port=5439,
    database='dev',
    user='awsuser',
    password='my_password'
 )
```

# NumPy와 Python 커넥터 통합
<a name="python-connect-integrate-numpy"></a>

다음은 Python 커넥터를 NumPy와 통합하는 예입니다.

```
>>>  import numpy
#Connect to the cluster
>>> import redshift_connector
>>> conn = redshift_connector.connect(
     host='examplecluster.abc123xyz789.us-west-1.redshift.amazonaws.com',
     port=5439,
     database='dev',
     user='awsuser',
     password='my_password'
  )
  
# Create a Cursor object
>>> cursor = conn.cursor()

# Query and receive result set            
cursor.execute("select * from book")

result: numpy.ndarray = cursor.fetch_numpy_array()
print(result)
```

다음은 결과입니다.

```
[['One Hundred Years of Solitude' 'Gabriel García Márquez']
['A Brief History of Time' 'Stephen Hawking']]
```

# pandas와 Python 커넥터 통합
<a name="python-connect-integrate-pandas"></a>

다음은 Python 커넥터를 pandas와 통합하는 예입니다.

```
>>> import pandas

#Connect to the cluster
>>> import redshift_connector
>>> conn = redshift_connector.connect(
     host='examplecluster.abc123xyz789.us-west-1.redshift.amazonaws.com',
     port=5439,
     database='dev',
     user='awsuser',
     password='my_password'
  )
  
# Create a Cursor object
>>> cursor = conn.cursor()

# Query and receive result set
cursor.execute("select * from book")
result: pandas.DataFrame = cursor.fetch_dataframe()
print(result)
```

# 자격 증명 공급자 플러그인 사용
<a name="python-connect-identity-provider-plugins"></a>

자격 증명 공급자 플러그인을 사용하는 방법에 대한 일반적인 내용은 [IAM 자격 증명 제공 옵션](options-for-providing-iam-credentials.md) 섹션을 참조하세요. IAM 역할에 대한 모범 사례를 비롯한 IAM ID 관리에 대한 자세한 내용은 [Amazon Redshift의 Identity and Access Management](redshift-iam-authentication-access-control.md) 섹션을 참조하세요.

## ADFS 자격 증명 공급자 플러그인을 사용한 인증
<a name="python-connect-identity-provider-active-dir"></a>

다음은 ADFS(Active Directory Federation Service) 자격 증명 공급자 플러그인을 사용하여 Amazon Redshift 데이터베이스에 연결하는 사용자를 인증하는 예입니다.

```
>>> con = redshift_connector.connect(
    iam=True,
    database='dev',
    host='my-testing-cluster.abc.us-east-2.redshift.amazonaws.com',
    cluster_identifier='my-testing-cluster',
    credentials_provider='AdfsCredentialsProvider',
    user='brooke@myadfshostname.com',
    password='Hunter2',
    idp_host='myadfshostname.com'
)
```

## Azure 자격 증명 공급자 플러그인을 사용한 인증
<a name="python-connect-identity-provider-azure"></a>

다음은 Azure 자격 증명 공급자 플러그인을 사용한 인증의 예입니다. 다음과 같이 Azure Enterprise 애플리케이션에 대한 `client_id` 및 `client_secret` 값을 생성할 수 있습니다.

```
>>>  con = redshift_connector.connect(
    iam=True,
    database='dev',
    host='my-testing-cluster.abc.us-east-2.redshift.amazonaws.com',
    cluster_identifier='my-testing-cluster',
    credentials_provider='AzureCredentialsProvider',
    user='brooke@myazure.org',
    password='Hunter2',
    idp_tenant='my_idp_tenant',
    client_id='my_client_id',
    client_secret='my_client_secret',
    preferred_role='arn:aws:iam:123:role/DataScientist'
)
```

## AWS IAM Identity Center 자격 증명 공급자 플러그인을 사용한 인증
<a name="python-connect-identity-provider-aws-idc"></a>

 다음은 AWS IAM Identity Center 자격 증명 공급자 플러그인을 사용한 인증의 예입니다.

```
with redshift_connector.connect(
credentials_provider='BrowserIdcAuthPlugin',
host='my-testing-cluster.abc.us-east-2.redshift.amazonaws.com',
database='dev',
idc_region='us-east-1',
issuer_url='https://identitycenter.amazonaws.com/ssoins-790723ebe09c86f9',
idp_response_timeout=60,
listen_port=8100,
idc_client_display_name='Test Display Name',
# port value of 5439 is specified by default
)
```

## Azure 브라우저 자격 증명 공급자 플러그인을 사용한 인증
<a name="python-connect-identity-provider-azure-browser"></a>

다음은 Azure 브라우저 자격 증명 공급자 플러그인을 사용하여 Amazon Redshift 데이터베이스에 연결하는 사용자를 인증하는 예입니다.

멀티 팩터 인증은 사용자가 로그인 보안 인증 정보를 제공하는 브라우저에서 발생합니다.

```
>>>con = redshift_connector.connect(
    iam=True,
    database='dev',
    host='my-testing-cluster.abc.us-east-2.redshift.amazonaws.com',
    cluster_identifier='my-testing-cluster',
    credentials_provider='BrowserAzureCredentialsProvider',
    idp_tenant='my_idp_tenant',
    client_id='my_client_id',
)
```

## Okta 자격 증명 공급자 플러그인을 사용한 인증
<a name="python-connect-identity-provider-okta"></a>

다음은 Okta 자격 증명 공급자 플러그인을 사용한 인증의 예입니다. Okta 애플리케이션을 통해 `idp_host`, `app_id` 및 `app_name`에 대한 값을 얻을 수 있습니다.

```
>>> con = redshift_connector.connect(
    iam=True,
    database='dev',
    host='my-testing-cluster.abc.us-east-2.redshift.amazonaws.com',
    cluster_identifier='my-testing-cluster',
    credentials_provider='OktaCredentialsProvider',
    user='brooke@myazure.org',
    password='hunter2',
    idp_host='my_idp_host',
    app_id='my_first_appetizer',
    app_name='dinner_party'
)
```

## 일반 SAML 브라우저 자격 증명 공급자 플러그인과 함께 JumpCloud를 사용한 인증
<a name="python-connect-identity-provider-jumpcloud"></a>

다음은 일반 SAML 브라우저 자격 증명 공급자 플러그인과 함께 JumpCloud를 사용한 인증의 예입니다.

암호 파라미터가 필요합니다. 그러나 브라우저에서 멀티 팩터 인증이 이루어지므로 이 파라미터를 입력할 필요는 없습니다.

```
>>> con = redshift_connector.connect(
    iam=True,
    database='dev',
    host='my-testing-cluster.abc.us-east-2.redshift.amazonaws.com',
    cluster_identifier='my-testing-cluster',
    credentials_provider='BrowserSamlCredentialsProvider',
    user='brooke@myjumpcloud.org',
    password='',
    login_url='https://sso.jumpcloud.com/saml2/plustwo_melody'
)
```

# Amazon Redshift Python 커넥터 사용 예
<a name="python-connect-examples"></a>

다음은 Amazon Redshift Python 커넥터 사용 방법의 예입니다. 실행하려면 먼저 Python 커넥터를 설치해야 합니다. Amazon Redshift Python 커넥터 설치에 대한 자세한 내용은 [Amazon Redshift Python 커넥터 설치](python-driver-install.md) 섹션을 참조하세요. Python 커넥터와 함께 사용할 수 있는 구성 옵션에 대한 자세한 내용은 [Amazon Redshift Python 커넥터의 구성 옵션](python-configuration-options.md) 단원을 참조하세요.

**Topics**
+ [AWS 보안 인증 정보를 사용하여 Amazon Redshift 클러스터에 연결하고 쿼리 수행](#python-connect-cluster)
+ [autocommit 사용](#python-connect-enable-autocommit)
+ [커서 파라미터 스타일 구성](#python-connect-config-paramstyle)
+ [COPY를 사용하여 Amazon S3 버킷에서 데이터 복사 및 UNLOAD를 사용하여 Amazon S3 버킷에 데이터 쓰기](#python-connect-copy-unload-s3)

## AWS 보안 인증 정보를 사용하여 Amazon Redshift 클러스터에 연결하고 쿼리 수행
<a name="python-connect-cluster"></a>

다음 예시는 AWS 보안 인증 정보를 사용하여 Amazon Redshift 클러스터에 연결한 후 테이블을 쿼리하고 쿼리 결과를 가져오는 방법을 안내합니다.

```
#Connect to the cluster
>>> import redshift_connector
>>> conn = redshift_connector.connect(
     host='examplecluster.abc123xyz789.us-west-1.redshift.amazonaws.com',
     database='dev',
     port=5439,
     user='awsuser',
     password='my_password'
  )
  
# Create a Cursor object
>>> cursor = conn.cursor()

# Query a table using the Cursor
>>> cursor.execute("select * from book")
                
#Retrieve the query result set
>>> result: tuple = cursor.fetchall()
>>> print(result)
 >> (['One Hundred Years of Solitude', 'Gabriel García Márquez'], ['A Brief History of Time', 'Stephen Hawking'])
```

## autocommit 사용
<a name="python-connect-enable-autocommit"></a>

autocommit 속성은 Python 데이터베이스 API 사양에 따라 기본적으로 해제되어 있습니다. 트랜잭션이 진행되지 않도록 롤백 명령을 수행한 후 다음 명령을 사용하여 연결의 autocommit 속성을 설정할 수 있습니다.

```
#Connect to the cluster
>>> import redshift_connector
>>> conn = redshift_connector.connect(...)

# Run a rollback command
>>>  conn.rollback()

# Turn on autocommit
>>>  conn.autocommit = True
>>>  conn.run("VACUUM")

# Turn off autocommit
>>>  conn.autocommit = False
```

## 커서 파라미터 스타일 구성
<a name="python-connect-config-paramstyle"></a>

커서의 파라미터 스타일은 cursor.paramstyle을 통해 수정할 수 있습니다. 사용되는 기본 파라미터 스타일은 `format`입니다. 이 파라미터의 유효한 값은 `qmark`, `numeric`, `named`, `format`, `pyformat`입니다.

다음은 다양한 파라미터 스타일을 사용하여 샘플 SQL 문에 파라미터를 전달하는 예제입니다.

```
# qmark
redshift_connector.paramstyle = 'qmark'
sql = 'insert into foo(bar, jar) VALUES(?, ?)'
cursor.execute(sql, (1, "hello world"))

# numeric
redshift_connector.paramstyle = 'numeric'
sql = 'insert into foo(bar, jar) VALUES(:1, :2)'
cursor.execute(sql, (1, "hello world"))

# named
redshift_connector.paramstyle = 'named'
sql = 'insert into foo(bar, jar) VALUES(:p1, :p2)'
cursor.execute(sql, {"p1":1, "p2":"hello world"})

# format
redshift_connector.paramstyle = 'format'
sql = 'insert into foo(bar, jar) VALUES(%s, %s)'
cursor.execute(sql, (1, "hello world"))

# pyformat
redshift_connector.paramstyle = 'pyformat'
sql = 'insert into foo(bar, jar) VALUES(%(bar)s, %(jar)s)'
cursor.execute(sql, {"bar": 1, "jar": "hello world"})
```

## COPY를 사용하여 Amazon S3 버킷에서 데이터 복사 및 UNLOAD를 사용하여 Amazon S3 버킷에 데이터 쓰기
<a name="python-connect-copy-unload-s3"></a>

다음 예에서는 Amazon S3 버킷에서 테이블로 데이터를 복사한 다음 해당 테이블에서 버킷으로 언로드하는 방법을 보여줍니다.

다음 데이터가 포함된 `category_csv.txt` 텍스트 파일이 S3 버킷에 업로드됩니다.

```
12,Shows,Musicals,Musical theatre
13,Shows,Plays,"All ""non-musical"" theatre"
14,Shows,Opera,"All opera, light, and ""rock"" opera"
15,Concerts,Classical,"All symphony, concerto, and choir concerts"
```

다음은 Amazon Redshift 데이터베이스에 먼저 연결하는 Python 코드의 예입니다. 그런 다음 `category`라는 테이블을 생성하고 S3 버킷의 CSV 데이터를 테이블로 복사합니다.

```
#Connect to the cluster and create a Cursor
>>> import redshift_connector
>>> with redshift_connector.connect(...) as conn:
>>> with conn.cursor() as cursor:

#Create an empty table
>>>     cursor.execute("create table category (catid int, cargroup varchar, catname varchar, catdesc varchar)")

#Use COPY to copy the contents of the S3 bucket into the empty table 
>>>     cursor.execute("copy category from 's3://testing/category_csv.txt' iam_role 'arn:aws:iam::123:role/RedshiftCopyUnload' csv;")

#Retrieve the contents of the table
>>>     cursor.execute("select * from category")
>>>     print(cursor.fetchall())

#Use UNLOAD to copy the contents of the table into the S3 bucket
>>>     cursor.execute("unload ('select * from category') to 's3://testing/unloaded_category_csv.txt'  iam_role 'arn:aws:iam::123:role/RedshiftCopyUnload' csv;")

#Retrieve the contents of the bucket
>>>     print(cursor.fetchall())
 >> ([12, 'Shows', 'Musicals', 'Musical theatre'], [13, 'Shows', 'Plays', 'All "non-musical" theatre'], [14, 'Shows', 'Opera', 'All opera, light, and "rock" opera'], [15, 'Concerts', 'Classical', 'All symphony, concerto, and choir concerts'])
```

`autocommit`을 true로 설정하지 않은 경우 `execute()` 문을 실행한 후 `conn.commit()`으로 커밋합니다.

데이터는 다음 콘텐츠가 들어 있는 S3 버킷의 `unloaded_category_csv.text0000_part00` 파일로 언로드됩니다.

```
12,Shows,Musicals,Musical theatre
13,Shows,Plays,"All ""non-musical"" theatre"
14,Shows,Opera,"All opera, light, and ""rock"" opera"
15,Concerts,Classical,"All symphony, concerto, and choir concerts"
```

# Amazon Redshift Python 커넥터용 API 참조
<a name="python-api-reference"></a>

다음에서 Amazon Redshift Python 커넥터 API 작업에 대한 설명을 찾을 수 있습니다.

## redshift\$1connector
<a name="python-api-redshift_connector"></a>

다음에서 `redshift_connector` API 작업에 대한 설명을 찾을 수 있습니다.

`connect(user, database, password[, port, …])`  
Amazon Redshift 클러스터에 대한 연결을 설정합니다. 이 기능은 사용자 입력을 검증하고 선택적으로 자격 증명 공급자 플러그인을 사용하여 인증한 다음 연결 객체를 구성합니다.

`apilevel`  
지원되는 DBAPI 레벨은 현재 "2.0"입니다.

`paramstyle``str(object=’’) -> str str(bytes_or_buffer[, encoding[, errors]]) -> str`  
전역적으로 사용할 데이터베이스 API 파라미터 스타일입니다.

## 연결
<a name="python-api-connection"></a>

다음에서 Amazon Redshift Python 커넥터의 연결 API 작업에 대한 설명을 찾을 수 있습니다.

`__init__(user, password, database[, host, …])`  
원시 연결 객체를 초기화합니다.

`cursor`  
이 연결에 바인딩된 커서 객체를 생성합니다.

`commit`  
현재 데이터베이스 트랜잭션을 커밋합니다.

`rollback`  
현재 데이터베이스 트랜잭션을 롤백합니다.

`close`  
데이터베이스 연결을 닫습니다.

`execute(cursor, operation, vals)`  
지정된 SQL 명령을 실행합니다. `redshift_connector.paramstyle` 값에 따라 파라미터를 시퀀스 또는 매핑으로 제공할 수 있습니다.

`run(sql[, stream])`  
지정된 SQL 명령을 실행합니다. COPY 명령과 함께 사용할 스트림을 제공할 수도 있습니다.

`xid(format_id, global_transaction_id, …)`  
트랜잭션 ID를 생성합니다. postgres에서는 `global_transaction_id` 파라미터만 사용됩니다. format\$1id 및 branch\$1qualifier는 postgres에서 사용되지 않습니다. `global_transaction_id`는 튜플(`format_id`, `global_transaction_id`, `branch_qualifier`)을 반환하는 postgres에서 지원하는 모든 문자열 식별자일 수 있습니다.

`tpc_begin(xid)`  
형식 ID, 글로벌 트랜잭션 ID 및 분기 한정자로 구성된 트랜잭션 ID `xid`로 TPC 트랜잭션을 시작합니다.

`tpc_prepare`  
.tpc\$1begin으로 시작된 트랜잭션의 첫 번째 단계를 수행합니다.

`tpc_commit([xid])`  
인수 없이 호출 시 .tpc\$1commit은 이전에 .tpc\$1prepare()로 준비된 TPC 트랜잭션을 커밋합니다.

`tpc_rollback([xid])`  
인수 없이 호출 시 .tpc\$1rollback은 TPC 트랜잭션을 롤백합니다.

`tpc_recover`  
.tpc\$1commit(xid) 또는 .tpc\$1rollback(xid)과 함께 사용하기에 적합한 보류 중인 트랜잭션 ID 목록을 반환합니다.

## 커서
<a name="python-api-cursor"></a>

다음에서 커서 API 작업에 대한 설명을 찾을 수 있습니다.

`__init__(connection[, paramstyle])`  
원시 커서 객체를 초기화합니다.

`insert_data_bulk(filename, table_name, parameter_indices, column_names, delimiter, batch_size)`  
대량 INSERT 문을 실행합니다.

`execute(operation[, args, stream, …])`  
데이터베이스 작업을 실행합니다.

`executemany(operation, param_sets)`  
데이터베이스 작업을 준비한 다음 제공된 모든 파라미터 시퀀스 또는 매핑에 대해 실행합니다.

`fetchone`  
쿼리 결과 집합의 다음 행을 가져옵니다.

`fetchmany([num])`  
쿼리 결과 집합의 다음 행 집합을 가져옵니다.

`fetchall`  
쿼리 결과의 나머지 행을 모두 가져옵니다.

`close`  
지금 커서를 닫습니다.

`__iter__`  
커서 객체를 반복하여 쿼리에서 행을 검색할 수 있습니다.

`fetch_dataframe([num])`  
마지막 쿼리 결과의 데이터 프레임을 반환합니다.

`write_dataframe(df, table)`  
동일한 구조 데이터 프레임을 Amazon Redshift 데이터베이스에 씁니다.

`fetch_numpy_array([num])`  
마지막 쿼리 결과의 NumPy 배열을 반환합니다.

`get_catalogs`  
Amazon Redshift는 단일 연결에서 여러 카탈로그를 지원하지 않습니다. Amazon Redshift는 현재 카탈로그만 반환합니다.

`get_tables([catalog, schema_pattern, …])`  
시스템 내에서 사용자 정의된 고유한 공용 테이블을 반환합니다.

`get_columns([catalog, schema_pattern, …])`  
Amazon Redshift 데이터베이스의 특정 테이블에 있는 모든 열 목록을 반환합니다.

## AdfsCredentialsProvider 플러그인
<a name="python-adfs-credentials-plugin"></a>

다음은 Amazon Redshift Python 커넥터에 대한 AdfsCredentialsProvider 플러그인 API 작업의 구문입니다.

```
redshift_connector.plugin.AdfsCredentialsProvider()
```

## AzureCredentialsProvider 플러그인
<a name="python-azure-credentials-plugin"></a>

다음은 Amazon Redshift Python 커넥터에 대한 AzureCredentialsProvider 플러그인 API 작업의 구문입니다.

```
redshift_connector.plugin.AzureCredentialsProvider()
```

## BrowserAzureCredentialsProvider 플러그인
<a name="python-browser-azure-credentials-plugin"></a>

다음은 Amazon Redshift Python 커넥터에 대한 BrowserAzureCredentialsProvider 플러그인 API 작업의 구문입니다.

```
redshift_connector.plugin.BrowserAzureCredentialsProvider()
```

## BrowserSamlCredentialsProvider 플러그인
<a name="python-browser-saml-credentials-plugin"></a>

다음은 Amazon Redshift Python 커넥터에 대한 BrowserSamlCredentialsProvider 플러그인 API 작업의 구문입니다.

```
redshift_connector.plugin.BrowserSamlCredentialsProvider()
```

## OktaCredentialsProvider 플러그인
<a name="python-okta-credentials-plugin"></a>

다음은 Amazon Redshift Python 커넥터에 대한 OktaCredentialsProvider 플러그인 API 작업의 구문입니다.

```
redshift_connector.plugin.OktaCredentialsProvider()
```

## PingCredentialsProvider 플러그인
<a name="python-ping-credentials-plugin"></a>

다음은 Amazon Redshift Python 커넥터에 대한 PingCredentialsProvider 플러그인 API 작업의 구문입니다.

```
redshift_connector.plugin.PingCredentialsProvider()
```

## SamlCredentialsProvider 플러그인
<a name="python-saml-credentials-plugin"></a>

다음은 Amazon Redshift Python 커넥터에 대한 SamlCredentialsProvider 플러그인 API 작업의 구문입니다.

```
redshift_connector.plugin.SamlCredentialsProvider()
```

# Apache Spark용 Amazon Redshift 통합
<a name="spark-redshift-connector"></a>

 [Apache Spark](https://aws.amazon.com/emr/features/spark/)는 기계 학습, 스트림 처리 또는 그래픽 분석을 수행하는 데 도움이 되는 분산 처리 프레임워크 및 프로그래밍 모델입니다. Apache Hadoop과 마찬가지로, Spark는 빅 데이터 워크로드에 일반적으로 사용되는 오픈 소스 분산형 처리 시스템입니다. Spark에는 최적화된 비순환 방향 그래프(DAG) 실행 엔진이 있으며 메모리 안에 데이터를 능동적으로 캐시합니다. 이렇게 하면 특히 특정 알고리즘 및 대화형 쿼리의 성능을 향상시킬 수 있습니다.

 이 통합은 Amazon Redshift와 Amazon Redshift Serverless에서 데이터를 읽고 쓰는 Apache Spark 애플리케이션을 빌드할 수 있는 Spark 커넥터를 제공합니다. 이러한 애플리케이션은 애플리케이션 성능이나 데이터의 트랜잭션 일관성을 손상시키지 않습니다. 이 통합은 [Amazon EMR](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/) 및 [AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/)에 자동으로 포함되므로 데이터 수집 및 변환 파이프라인의 일부로 Amazon Redshift에 데이터를 액세스하고 로드하는 Apache Spark 작업을 즉시 실행할 수 있습니다.

현재 이 통합과 함께 Spark 버전 3.3.x, 3.4.x, 3.5.x 및 4.0.0을 사용할 수 있습니다.

 이 통합은 다음을 제공합니다.
+  AWS Identity and Access Management(IAM) 인증. 자세한 내용은 [Amazon Redshift의 Identity and Access Management](https://docs.aws.amazon.com/redshift/latest/mgmt/redshift-iam-authentication-access-control.html)를 참조하세요.
+ 조건자 및 쿼리 푸시다운을 통한 성능 향상.
+  Amazon Redshift 데이터 형식.
+ Amazon Redshift와 Amazon Redshift Serverless에 대한 연결.

## Spark 커넥터 사용 시 고려 사항 및 제한 사항
<a name="spark-redshift-connector-considerations"></a>
+  tempdir URI는 Amazon S3 위치를 가리킵니다. 이 임시 디렉터리는 자동으로 정리되지 않으며 추가 비용이 발생할 수 있습니다. *Amazon Simple Storage Service 사용 설명서*의 [Amazon S3 수명 주기 정책](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html)을 사용하여 Amazon S3 버킷에 대한 보존 규칙을 정의하는 것이 좋습니다.
+  기본적으로 Amazon S3와 Redshift 간의 복사는 S3 버킷과 Redshift 클러스터가 서로 다른 AWS 리전에 있는 경우 작동하지 않습니다. 별도의 AWS 리전을 사용하려면 `tempdir_region` 파라미터를 `tempdir`에 사용되는 S3 버킷의 리전으로 설정합니다.
+ `tempformat` 파라미터를 사용하여 Parquet 데이터를 쓰는 경우 교차 리전은 S3와 Redshift 사이에 씁니다.
+ [Amazon S3 서버 측 암호화](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html)를 사용하여 사용된 Amazon S3 버킷을 암호화하는 것이 좋습니다.
+ [Amazon S3 버킷에 대한 퍼블릭 액세스를 차단](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-control-block-public-access.html)하는 것이 좋습니다.
+  Amazon Redshift 클러스터는 공개적으로 액세스할 수 없도록 하는 것이 좋습니다.
+  [Amazon Redshift 감사 로깅](https://docs.aws.amazon.com/redshift/latest/mgmt/db-auditing.html)을 켜는 것이 좋습니다.
+  [Amazon Redshift 저장된 데이터 암호화](https://docs.aws.amazon.com/redshift/latest/mgmt/security-server-side-encryption.html)를 켜는 것이 좋습니다.
+  Amazon EMR의 Spark에서 Amazon Redshift로의 JDBC 연결에 대해 SSL을 켜는 것이 좋습니다.
+ Amazon Redshift 인증 파라미터에 대해 `aws_iam_role` 파라미터를 사용하여 IAM 역할을 전달하는 것이 좋습니다.

# Spark 커넥터를 사용한 인증
<a name="redshift-spark-connector-authentication"></a>

다음 다이어그램은 Amazon S3, Amazon Redshift, Spark 드라이버 및 Spark 실행기 간의 인증을 설명합니다.

![\[Spark 커넥터 인증 다이어그램입니다.\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/images/spark-connector-authentication.png)


## Redshift와 Spark 간의 인증
<a name="redshift-spark-authentication"></a>

 Amazon Redshift 제공 JDBC 드라이버 버전 2.x 드라이버를 사용해 로그인 자격 증명을 지정하여 Spark 커넥터로 Amazon Redshift에 연결할 수 있습니다. IAM을 사용하려면 [IAM 인증을 사용하도록 JDBC URL을 구성](https://docs.aws.amazon.com/redshift/latest/mgmt/generating-iam-credentials-configure-jdbc-odbc.html)하세요. Amazon EMR 또는 AWS Glue에서 Redshift 클러스터에 연결하려면 IAM 역할에 임시 IAM 자격 증명을 검색하는 데 필요한 권한이 있는지 확인하세요. 다음 목록은 IAM 역할이 자격 증명을 검색하고 Amazon S3 작업을 실행하는 데 필요한 모든 권한을 설명합니다.
+ [ Redshift:GetClusterCredentials](https://docs.aws.amazon.com/redshift/latest/APIReference/API_GetClusterCredentials.html)(프로비저닝된 Redshift 클러스터용)
+ [ Redshift:DescribeClusters](https://docs.aws.amazon.com/redshift/latest/APIReference/API_DescribeClusters.html)(프로비저닝된 Redshift 클러스터용)
+ [ Redshift:GetWorkgroup](https://docs.aws.amazon.com/redshift-serverless/latest/APIReference/API_GetWorkgroup.html)(Amazon Redshift Serverless 작업 그룹)
+ [ Redshift:GetCredentials](https://docs.aws.amazon.com/redshift-serverless/latest/APIReference/API_GetCredentials.html)(Amazon Redshift Serverless 작업 그룹)
+ [ s3:ListBucket](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBuckets.html)
+ [ s3:GetBucket](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetBucket.html)
+ [ s3:GetObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)
+ [ s3:PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)
+ [ s3:GetBucketLifecycleConfiguration](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketLifecycleConfiguration.html)

 GetClusterCredentials에 대한 자세한 내용은 [GetClusterCredentials에 대한 IAM 정책](https://docs.aws.amazon.com/redshift/latest/mgmt/redshift-iam-access-control-identity-based.html#redshift-policy-resources.getclustercredentials-resources)을 참조하세요.

또한 `COPY` 및 `UNLOAD` 작업 중에 Amazon Redshift가 IAM 역할을 맡을 수 있는지 확인해야 합니다.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "redshift.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}
```

------

최신 JDBC 드라이버를 사용하는 경우 드라이버는 Amazon Redshift 자체 서명 인증서에서 ACM 인증서로의 전환을 자동으로 관리합니다. 하지만 [JDBC URL에 SSL 옵션을 지정](https://docs.aws.amazon.com/redshift/latest/mgmt/jdbc20-configuration-options.html#jdbc20-ssl-option)해야 합니다.

 다음은 Amazon Redshift에 연결하기 위해 JDBC 드라이버 URL 및 `aws_iam_role`을 지정하는 방법의 예입니다.

```
df.write \
  .format("io.github.spark_redshift_community.spark.redshift ") \
  .option("url", "jdbc:redshift:iam://<the-rest-of-the-connection-string>") \
  .option("dbtable", "<your-table-name>") \
  .option("tempdir", "s3a://<your-bucket>/<your-directory-path>") \
  .option("aws_iam_role", "<your-aws-role-arn>") \
  .mode("error") \
  .save()
```

## Amazon S3와 Spark 간의 인증
<a name="spark-s3-authentication"></a>

 IAM 역할을 사용하여 Spark와 Amazon S3 간에 인증하는 경우 다음 방법 중 하나를 사용하세요.
+ Java용 AWS SDK는 DefaultAWSCredentialsProviderChain 클래스에 의해 구현된 기본 자격 증명 공급자 체인을 사용하여 자동으로 AWS 자격 증명을 찾으려고 시도합니다. 자세한 내용은 [기본 자격 증명 공급자 체인 사용](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/credentials.html#credentials-default)을 참조하세요.
+ [Hadoop 구성 속성](https://github.com/apache/hadoop/blob/trunk/hadoop-tools/hadoop-aws/src/site/markdown/tools/hadoop-aws/index.md)을 통해 AWS 키를 지정할 수 있습니다. 예를 들어 `tempdir` 구성이 `s3n://` 파일 시스템을 가리키는 경우 Hadoop XML 구성 파일에서 `fs.s3n.awsAccessKeyId` 및 `fs.s3n.awsSecretAccessKey` 속성을 설정하거나 `sc.hadoopConfiguration.set()`을 호출하여 Spark의 전역 Hadoop 구성을 변경합니다.

예를 들어 s3n 파일 시스템을 사용하는 경우 다음을 추가합니다.

```
sc.hadoopConfiguration.set("fs.s3n.awsAccessKeyId", "YOUR_KEY_ID")
sc.hadoopConfiguration.set("fs.s3n.awsSecretAccessKey", "YOUR_SECRET_ACCESS_KEY")
```

s3a 파일 시스템을 사용하는 경우 다음을 추가합니다.

```
sc.hadoopConfiguration.set("fs.s3a.access.key", "YOUR_KEY_ID")
sc.hadoopConfiguration.set("fs.s3a.secret.key", "YOUR_SECRET_ACCESS_KEY")
```

Python을 사용하는 경우 다음 작업을 사용합니다.

```
sc._jsc.hadoopConfiguration().set("fs.s3n.awsAccessKeyId", "YOUR_KEY_ID")
sc._jsc.hadoopConfiguration().set("fs.s3n.awsSecretAccessKey", "YOUR_SECRET_ACCESS_KEY")
```
+ `tempdir` URL에서 인증 키를 인코딩합니다. 예를 들어 URI `s3n://ACCESSKEY:SECRETKEY@bucket/path/to/temp/dir`은 키 쌍(`ACCESSKEY`, `SECRETKEY`)을 인코딩합니다.

## Redshift와 Amazon S3 간의 인증
<a name="redshift-s3-authentication"></a>

 쿼리에서 COPY 및 UNLOAD 명령을 사용하는 경우 사용자 대신 쿼리를 실행할 수 있도록 Amazon Redshift에 대한 Amazon S3 액세스 권한도 부여해야 합니다. 이렇게 하려면 먼저 [다른 AWS 서비스에 액세스할 수 있도록 Amazon Redshift에 권한을 부여](https://docs.aws.amazon.com/redshift/latest/mgmt/authorizing-redshift-service.html)한 다음 [IAM 역할을 사용하여 COPY 및 UNLOAD 작업에 권한을 부여](https://docs.aws.amazon.com/redshift/latest/mgmt/copy-unload-iam-role.html)합니다.

가장 좋은 방법은 권한 정책을 IAM 역할에 연결한 다음 필요에 따라 사용자 및 그룹에 할당하는 것입니다. 자세한 내용은 [Amazon Redshift의 Identity and Access Management](https://docs.aws.amazon.com/redshift/latest/mgmt/redshift-iam-authentication-access-control.html)를 참조하세요.

## 와의 통합AWS Secrets Manager
<a name="redshift-secrets-manager-authentication"></a>

AWS Secrets Manager에 저장된 시크릿에서 Redshift 사용자 이름 및 암호 보안 인증 정보를 검색할 수 있습니다. Redshift 보안 인증을 자동으로 제공하려면 `secret.id` 파라미터를 사용하세요. Redshift 보안 인증 시크릿을 만드는 방법에 대한 자세한 내용은 [AWS Secrets Manager 데이터베이스 보안 암호 생성](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_database_secret.html)을 참조하세요.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/redshift-spark-connector-authentication.html)

**참고**  
 인정 조항: 이 문서에는 [Apache 2.0 라이선스](https://www.apache.org/licenses/LICENSE-2.0)에 따라 라이선스가 부여된 [Apache Software Foundation](http://www.apache.org/)에서 개발한 샘플 코드 및 언어가 포함되어 있습니다.

# 푸시다운을 통한 성능 향상
<a name="spark-redshift-connector-pushdown"></a>

 Spark 커넥터는 조건자 및 쿼리 푸시다운을 자동으로 적용하여 성능을 최적화합니다. 이 지원은 쿼리에서 지원되는 함수를 사용하는 경우 Spark 커넥터가 함수를 SQL 쿼리로 변환하고 Amazon Redshift에서 쿼리를 실행함을 의미합니다. 이 최적화로 인해 검색되는 데이터가 적어지므로 Apache Spark는 더 적은 데이터를 처리하고 더 나은 성능을 가질 수 있습니다. 기본적으로 푸시다운은 자동으로 활성화됩니다. 비활성화하려면 `autopushdown`을 false로 설정하세요.

```
import sqlContext.implicits._val 
 sample= sqlContext.read
    .format("io.github.spark_redshift_community.spark.redshift")
    .option("url",jdbcURL )
    .option("tempdir", tempS3Dir)
    .option("dbtable", "event")
    .option("autopushdown", "false")
    .load()
```

 푸시다운에서는 다음 함수가 지원됩니다. 이 목록에 없는 함수를 사용하는 경우 Spark 커넥터는 Amazon Redshift 대신 Spark에서 함수를 수행하므로 성능이 최적화되지 않습니다. Spark의 전체 함수 목록은 [내장 함수](https://spark.apache.org/docs/latest/api/sql/index.html)를 참조하세요.
+ 집계 함수
  + avg
  + count
  + 최대
  + min
  + sum
  + stddev\$1samp
  + stddev\$1pop
  + var\$1samp
  + var\$1pop
+ 부울 연산자
  + in
  + isnull
  + isnotnull
  + contains
  + endswith
  + startswith
+ 논리 연산자
  + 및
  + 또는
  + not(또는 \$1)
+ 수학 함수
  + \$1
  + -
  + \$1
  + /
  + -(단항)
  + abs
  + acos
  + asin
  + atan
  + ceil
  + cos
  + exp
  + floor
  + greatest
  + least
  + log10
  + pi
  + pow
  + round
  + sin
  + sqrt
  + tan
+ 기타 함수
  + cast
  + coalesce
  + decimal
  + 다음과 같은 경우
  + in
+ 관계형 연산자
  + \$1=
  + =
  + >
  + >=
  + <
  + <=
+ 문자열 함수
  + ASCII
  + lpad
  + rpad
  + translate
  + upper
  + lower
  + length
  + trim
  + ltrim
  + rtrim
  + like
  + substring
  + concat
+ 시간 및 날짜 함수
  + add\$1months
  + 날짜
  + date\$1add
  + date\$1sub
  + date\$1trunc
  + timestamp
  + trunc
+ 수학적 연산
  + CheckOverflow
  + 정밀성 증진
+ 관계형 연산
  + Aliases(예: AS)
  + 사례: 언제
  + Distinct
  + InSet
  + Joins and cross joins
  + 한도
  + Unions, union all
  + ScalarSubquery
  + Sorts(오름차순 및 내림차순)
  + UnscaledValue

# 기타 구성 옵션
<a name="spark-redshift-connector-other-config"></a>

이 페이지에서 Amazon Redshift Spark 커넥터에 지정할 수 있는 옵션에 관한 설명을 확인합니다.

## 문자열 열의 최대 크기
<a name="spark-redshift-connector-other-config-max-size"></a>

Redshift는 VARCHAR(256)로 저장되는 테이블 생성 시 문자열 열을 텍스트 열로 생성합니다. 더 큰 크기를 지원하는 열을 원하면 maxlength를 사용하여 문자열 열의 최대 길이를 지정할 수 있습니다. 다음은 `maxlength`를 지정하는 방법의 예입니다.

```
columnLengthMap.foreach { case (colName, length) =>
  val metadata = new MetadataBuilder().putLong("maxlength", length).build()
  df = df.withColumn(colName, df(colName).as(colName, metadata))
}
```

## 열 유형
<a name="spark-redshift-connector-other-config-column-type"></a>

열 유형을 설정하려면 `redshift_type` 필드를 사용합니다.

```
columnTypeMap.foreach { case (colName, colType) =>
  val metadata = new MetadataBuilder().putString("redshift_type", colType).build()
  df = df.withColumn(colName, df(colName).as(colName, metadata))
}
```

## 열에 대한 압축 인코딩
<a name="spark-redshift-connector-other-config-compression-encoding"></a>

 열에서 특정 압축 인코딩을 사용하려면 인코딩 필드를 사용하세요. 지원되는 압축 인코딩의 전체 목록은 [압축 인코딩](https://docs.aws.amazon.com/redshift/latest/dg/c_Compression_encodings.html)을 참조하세요.

## 열에 대한 설명
<a name="spark-redshift-connector-other-config-description"></a>

설명을 설정하려면 `description` 필드를 사용합니다.

## Redshift와 Amazon S3 간의 인증
<a name="spark-redshift-connector-other-config-unload-as-text"></a>

 기본적으로 결과는 Parquet 형식으로 Amazon S3에 언로드됩니다. 파이프로 구분된 텍스트 파일로 결과를 언로드하려면 다음 옵션을 지정합니다.

```
.option("unload_s3_format", "TEXT")
```

## 푸시다운 문
<a name="spark-redshift-connector-other-config-lazy-pushdown"></a>

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/spark-redshift-connector-other-config.html)

## 커넥터 파라미터
<a name="spark-redshift-connector-other-config-spark-parameters"></a>

Spark SQL의 파라미터 맵 또는 `OPTIONS`는 다음 설정을 지원합니다.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/spark-redshift-connector-other-config.html)

**참고**  
 인정 조항: 이 문서에는 [Apache 2.0 라이선스](https://www.apache.org/licenses/LICENSE-2.0)에 따라 라이선스가 부여된 [Apache Software Foundation](http://www.apache.org/)에서 개발한 샘플 코드 및 언어가 포함되어 있습니다.

# 지원되는 데이터 유형
<a name="spark-redshift-connector-data-types"></a>

Amazon Redshift의 다음 데이터 형식은 Spark 커넥터에서 지원됩니다. Amazon Redshift에서 지원되는 데이터 형식의 전체 목록은 [데이터 유형](https://docs.aws.amazon.com//redshift/latest/dg/c_Supported_data_types.html)을 참조하세요. 아래 테이블에 없는 데이터 형식은 Spark 커넥터에서 지원되지 않습니다.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/spark-redshift-connector-data-types.html)

## 복잡한 데이터 형식
<a name="spark-redshift-connector-complex-data-types"></a>

 spark 커넥터를 사용하여 `ArrayType`, `MapType`, `StructType`과 같은 Spark 복합 데이터 형식을 Redshift SUPER 데이터 형식 열에 읽고 쓸 수 있습니다. 읽기 작업 중에 스키마를 제공하는 경우 열의 데이터는 중첩된 형식을 포함하여 Spark에서 해당 복합 형식으로 변환됩니다 또한 `autopushdown`을 활성화하면 중첩된 속성, 맵 값 및 배열 인덱스의 투영이 Redshift로 푸시다운되므로 데이터의 일부만 액세스할 때 중첩된 전체 데이터 구조를 더 이상 언로드할 필요가 없습니다.

커넥터에서 데이터 프레임을 작성할 때 `MapType`(`StringType` 사용), `StructType` 또는 `ArrayType` 형식의 모든 열은 Redshift SUPER 데이터 형식 열에 기록됩니다. 이러한 중첩된 데이터 구조를 작성할 때 `tempformat` 파라미터는 `CSV`, `CSV GZIP` 또는 `PARQUET` 형식이어야 합니다. `AVRO`를 사용하면 예외가 발생합니다. 키 형식이 `StringType`이 아닌 `MapType` 데이터 구조를 작성하는 경우에도 예외가 발생합니다.

### StructType
<a name="spark-redshift-connector-complex-data-types-examples-structtype"></a>

다음 예제에서는 구조체를 포함하는 SUPER 데이터 형식으로 테이블을 만드는 방법을 보여 줍니다.

```
create table contains_super (a super);
```

그런 다음 커넥터를 사용하여 다음 예제와 같은 스키마를 사용하여 테이블의 SUPER 열 `a`에서 `StringType` 필드 `hello`를 쿼리할 수 있습니다.

```
import org.apache.spark.sql.types._

val sc = // existing SparkContext
val sqlContext = new SQLContext(sc)

val schema = StructType(StructField("a", StructType(StructField("hello", StringType) ::Nil)) :: Nil)

val helloDF = sqlContext.read
.format("io.github.spark_redshift_community.spark.redshift")
.option("url", jdbcURL )
.option("tempdir", tempS3Dir)
.option("dbtable", "contains_super")
.schema(schema)
.load().selectExpr("a.hello")
```

다음 예제는 열 `a`에 구조체를 작성하는 방법을 보여줍니다.

```
import org.apache.spark.sql.types._
import org.apache.spark.sql._

val sc = // existing SparkContext
val sqlContext = new SQLContext(sc)

val schema = StructType(StructField("a", StructType(StructField("hello", StringType) ::Nil)) :: Nil)
val data = sc.parallelize(Seq(Row(Row("world"))))
val mydf = sqlContext.createDataFrame(data, schema)

mydf.write.format("io.github.spark_redshift_community.spark.redshift").
option("url", jdbcUrl).
option("dbtable", tableName).
option("tempdir", tempS3Dir).
option("tempformat", "CSV").
mode(SaveMode.Append).save
```

### MapType
<a name="spark-redshift-connector-complex-data-types-examples-maptype"></a>

`MapType`을 사용하여 데이터를 표현하려는 경우 스키마에서 `MapType` 데이터 구조를 사용하여 맵의 키에 해당하는 값을 검색할 수 있습니다. `MapType` 데이터 구조의 모든 키는 문자열 형식이어야 하며 모든 값은 int와 같은 동일한 형식이어야 한다는 점에 유의합니다.

다음 예는 열 `hello`에서 hello 키의 값을 가져오는 방법을 보여 줍니다.

```
import org.apache.spark.sql.types._

val sc = // existing SparkContext
val sqlContext = new SQLContext(sc)

val schema = StructType(StructField("a", MapType(StringType, IntegerType))::Nil)

val helloDF = sqlContext.read
    .format("io.github.spark_redshift_community.spark.redshift")
    .option("url", jdbcURL )
    .option("tempdir", tempS3Dir)
    .option("dbtable", "contains_super")
    .schema(schema)
    .load().selectExpr("a['hello']")
```

### ArrayType
<a name="spark-redshift-connector-complex-data-types-examples-arraytype"></a>

열에 구조체 대신 배열이 포함된 경우 커넥터를 사용하여 배열의 첫 번째 요소를 쿼리할 수 있습니다.

```
import org.apache.spark.sql.types._

val sc = // existing SparkContext
val sqlContext = new SQLContext(sc)

val schema = StructType(StructField("a", ArrayType(IntegerType)):: Nil)

val helloDF = sqlContext.read
    .format("io.github.spark_redshift_community.spark.redshift")
    .option("url", jdbcURL )
    .option("tempdir", tempS3Dir)
    .option("dbtable", "contains_super")
    .schema(schema)
    .load().selectExpr("a[0]")
```

### 제한 사항
<a name="spark-redshift-connector-complex-data-types-limitations"></a>

복잡한 데이터 형식을 Spark 커넥터와 함께 사용하면 다음과 같은 제한 사항이 있습니다.
+ 중첩된 모든 구조체 필드 이름과 맵 키는 소문자여야 합니다. 대문자가 포함된 복잡한 필드 이름을 쿼리하는 경우 스키마를 생략하고 `from_json` spark 함수를 사용하여 반환된 문자열을 로컬로 변환하는 해결 방법을 시도해 볼 수 있습니다.
+ 읽기 또는 쓰기 작업에 사용되는 모든 맵 필드에는 `StringType` 키만 있어야 합니다.
+ 복잡한 형식을 Redshift에 쓰기 위한 임시 형식 값은 `CSV`, `CSV GZIP` 및 `PARQUET `만 지원됩니다. `AVRO `를 사용하려고 하면 예외가 발생합니다.

# Amazon Redshift용 ODBC 드라이버 버전 2.x 연결 구성
<a name="odbc20-install"></a>

ODBC 연결을 사용하여 여러 서드 파티 SQL 클라이언트 도구 및 애플리케이션에서 Amazon Redshift 클러스터에 연결할 수 있습니다. 클라이언트 도구가 JDBC를 지원하는 경우에는 JDBC의 구성 용이성 때문에 ODBC가 아닌 JDBC 연결 유형을 사용하는 것이 좋을 수도 있습니다. 하지만 클라이언트 도구가 JDBC를 지원하지 않는 경우, 이 섹션의 단계에 따라 클라이언트 컴퓨터 또는 Amazon EC2 인스턴스에서 ODBC 연결을 설정할 수 있습니다.

Amazon Redshift는 Linux, Windows, Mac 운영 체제용의 64비트 ODBC 드라이버를 제공합니다. 32비트 ODBC 드라이버는 단종되었습니다. 긴급 보안 패치를 제외하고 32비트 ODBC 드라이버로의 추가 업데이트는 릴리스되지 않습니다.

ODBC 드라이버 변경 사항에 대한 최신 정보는 [변경 로그](https://github.com/aws/amazon-redshift-odbc-driver/blob/master/CHANGELOG.md)를 참조하세요.

**Topics**
+ [ODBC URL 가져오기](odbc20-getting-url.md)
+ [Microsoft Windows에서 Amazon Redshift ODBC 드라이버 사용](odbc20-install-config-win.md)
+ [Linux에서 Amazon Redshift ODBC 드라이버 사용](odbc20-install-config-linux.md)
+ [Apple macOS에서 Amazon Redshift ODBC 드라이버 사용](odbc20-install-config-mac.md)
+ [인증 방법](odbc20-authentication-ssl.md)
+ [데이터 유형 변환](odbc20-converting-data-types.md)
+ [ODBC 드라이버 옵션](odbc20-configuration-options.md)
+ [이전 ODBC 드라이버 버전](odbc20-previous-versions.md)

# ODBC URL 가져오기
<a name="odbc20-getting-url"></a>

Amazon Redshift는 Amazon Redshift 콘솔에 클러스터의 ODBC URL을 표시합니다. 이 URL에는 클라이언트 컴퓨터와 데이터베이스 간의 연결을 설정하는 데 필요한 정보가 포함되어 있습니다.

ODBC URL의 형식은 다음과 같습니다.

```
Driver={driver}; Server=endpoint_host; Database=database_name; UID=user_name; PWD=password; Port=port_number
```

위에 나와 있는 형식의 필드는 다음과 같은 값을 가집니다.


| Field | 값 | 
| --- | --- | 
| Driver | 사용할 64비트 ODBC 드라이버의 이름은 Amazon Redshift ODBC 드라이버(x64)입니다. | 
| Server | Amazon Redshift 클러스터의 엔드포인트 호스트입니다. | 
| Database | 클러스터에서 생성한 데이터베이스입니다. | 
| UID | 데이터베이스 연결 권한을 갖는 데이터베이스 사용자 계정의 사용자 이름입니다. 이 값은 클러스터 수준 권한이 아니라 데이터베이스 수준 권한이지만, 클러스터를 시작할 때 설정한 Redshift 관리자 계정을 사용할 수 있습니다. | 
| PWD | 데이터베이스에 연결하기 위한 데이터베이스 사용자 계정 암호입니다. | 
| Port | 클러스터를 시작할 때 지정한 포트 번호입니다. 방화벽이 있는 경우에는 이 포트가 사용할 수 있게 열려있어야 합니다. | 

다음은 ODBC URL의 예입니다. 

```
Driver={Amazon Redshift ODBC Driver (x64)}; Server=examplecluster.abc123xyz789.us-west-2.redshift.amazonaws.com; Database=dev; UID=adminuser; PWD=insert_your_admin_user_password_here; Port=5439
```

ODBC URL을 찾을 수 있는 위치에 대한 자세한 내용은 [클러스터 연결 문자열 찾기](https://docs.aws.amazon.com/redshift/latest/mgmt/configuring-connections.html#connecting-connection-string)를 참조하세요.

# Microsoft Windows에서 Amazon Redshift ODBC 드라이버 사용
<a name="odbc20-install-config-win"></a>

Amazon Redshift 데이터 웨어하우스에 액세스하는 클라이언트 컴퓨터에 Amazon Redshift ODBC 드라이버를 설치해야 합니다. 드라이버를 설치하는 컴퓨터마다 다음과 같은 시스템 요구 사항이 적용됩니다.
+ 시스템에 대한 관리자 권한 
+ 시스템이 다음 시스템 요구 사항 충족
  + 다음 운영 체제 중 하나:
    + Windows 10 또는 8.1
    + Windows Server 2019, 2016 또는 2012
  + 사용 가능한 디스크 공간 100MB
  + 설치된 64비트 Windows용 Visual Studio 2015용 Visual C\$1\$1 재배포 가능 패키지 Microsoft 웹사이트의 [Visual Studio 2022용 Visual C\$1\$1 재배포 가능 패키지 다운로드](https://visualstudio.microsoft.com/downloads/#microsoft-visual-c-redistributable-for-visual-studio-2022)에서 설치 패키지를 다운로드할 수 있습니다.

# Amazon Redshift ODBC 드라이버 다운로드 및 설치
<a name="odbc20-install-win"></a>

Windows 운영 체제용 Amazon Redshift ODBC 드라이버를 다운로드하여 설치하려면 다음 절차를 따르세요. Amazon Redshift와 함께 사용하도록 인증되었고 특정 드라이버가 필요한 서드 파티 애플리케이션을 실행하고 있다면 다른 드라이버만 사용합니다.

ODBC 드라이버를 다운로드하고 설치하려면: 

1. [64비트 ODBC 드라이버 버전 2.1.15.0](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.15.0/AmazonRedshiftODBC64-2.1.15.0.msi)을 다운로드합니다. 

   이 드라이버의 이름은 **Amazon Redshift ODBC 드라이버(x64)**입니다.

1. [Amazon Redshift ODBC 드라이버 버전 2.x 라이선스](https://github.com/aws/amazon-redshift-odbc-driver/blob/master/LICENSE)를 검토하세요.

1. .msi 파일을 두 번 클릭한 후 마법사의 단계에 따라 드라이버를 설치합니다.

# ODBC 연결을 위한 시스템 DSN 항목 생성
<a name="odbc20-dsn-win"></a>

ODBC 드라이버를 다운로드하여 설치한 후에는 데이터 원본 이름(DSN) 항목을 클라이언트 컴퓨터 또는 Amazon EC2 인스턴스에 추가합니다. SQL 클라이언트 도구는 이 데이터 원본을 사용하여 Amazon Redshift 데이터베이스에 연결할 수 있습니다.

사용자 DSN 대신 시스템 DSN을 생성하는 것이 좋습니다. 일부 애플리케이션은 다른 데이터베이스 사용자 계정을 사용하여 데이터를 로드하며, 다른 데이터베이스 사용자 계정으로 생성된 사용자 DSN을 감지하지 못할 수 있습니다.

**참고**  
AWS Identity and Access Management(IAM) 자격 증명 또는 자격 증명 공급자(IdP) 자격 증명을 사용한 인증의 경우 추가 단계가 필요합니다. 자세한 내용은 [IAM 자격 증명을 사용하도록 JDBC 또는 ODBC 연결 구성](https://docs.aws.amazon.com/redshift/latest/mgmt/generating-iam-credentials-configure-jdbc-odbc.html)을 참조하세요.

ODBC 연결을 위한 시스템 DSN 항목을 생성하려면:

1. **시작** 메뉴에서 ‘ODBC 데이터 소스’를 입력합니다. **ODBC Data Sources(ODBC 데이터 소스)**를 선택합니다.

   Amazon Redshift에 연결하는 데 사용하는 클라이언트 애플리케이션과 동일한 비트를 가진 ODBC 데이터 원본 관리자를 선택해야 합니다.

1. **ODBC Data Source Administrator(ODBC 데이터 소스 관리자)**에서 **Driver(드라이버)** 탭을 선택하고 **Amazon Redshift ODBC Driver (x64)** 드라이버 폴더를 찾습니다.

1. 해당 컴퓨터의 모든 사용자가 이용할 수 있도록 드라이버를 구성하려면 **시스템 DSN(System DSN)** 탭을 선택하고, 본인의 데이터베이스 사용자 계정에서만 이용할 수 있도록 드라이버를 구성하려면 **사용자 DSN(User DSN)** 탭을 선택합니다.

1. **추가**를 선택합니다. **새 데이터 원본 생성(Create New Data Source)** 창이 열립니다.

1. **Amazon Redshift ODBC 드라이버(x64)**를 선택하고 **Finish(마침)**를 선택합니다. **Amazon Redshift ODBC 드라이버 DSN 설정(Amazon Redshift ODBC Driver DSN Setup)** 창이 열립니다.

1. **Connection Settings(연결 설정)** 섹션에 다음 정보를 입력합니다.
   + 

**데이터 소스 이름**  
 데이터 소스 이름을 입력합니다. 예를 들어 *Amazon Redshift 시작 안내서*에 따른 경우 `exampleclusterdsn`을 입력하면 이 DSN과 연결할 클러스터를 기억하기 쉽습니다.
   + 

**Server**  
 Amazon Redshift 클러스터의 엔드포인트 호스트를 지정합니다. 이 정보는 Amazon Redshift 콘솔의 클러스터 세부 정보 페이지에서 찾을 수 있습니다. 자세한 내용은 [Amazon Redshift에서 연결 구성](https://docs.aws.amazon.com/redshift/latest/mgmt/configuring-connections.html)을 참조하세요.
   + 

**Port**  
 데이터베이스가 사용하는 포트 번호를 입력합니다. 클러스터를 생성, 수정 또는 마이그레이션할 때 선택한 포트에 따라 선택한 포트에 대한 액세스를 허용합니다.
   + 

**데이터베이스**  
 Amazon Redshift 데이터베이스의 이름을 입력합니다. 데이터베이스 이름을 지정하지 않고 클러스터를 시작한 경우 `dev`를 입력합니다. 그렇지 않으면 시작 프로세스 중에 선택한 이름을 사용합니다. *Amazon Redshift 시작 안내서*에 따른 경우 `dev`를 입력합니다.

1. **Authentication(인증)** 섹션에서 표준 또는 IAM 인증을 구성하는 구성 옵션을 지정합니다.

1. **SSL Options(SSL 옵션)**을 선택하고 다음의 값을 지정합니다.
   + 

**인증 모드**  
SSL(Secure Sockets Layer)의 처리 모드를 선택합니다. 테스트 환경에서는 `prefer`를 사용할 수 있습니다. 그러나 프로덕션 환경 및 안전한 데이터 교환이 필요한 경우 `verify-ca` 또는 `verify-full`을 사용합니다.
   + 

**최소 TLS**  
선택 사항으로, 드라이버가 데이터 스토어에서 연결을 암호화하는 데 사용하도록 허용하는 TLS/SSL의 최소 버전을 선택합니다. 예를 들어 TLS 1.2를 지정하면 연결을 암호화하는 데 TLS 1.1을 사용할 수 없습니다. 기본 버전은 TLS 1.2입니다.

1.  **Proxy(프록시)** 탭에서 프록시 연결 설정을 지정합니다.

1. **Cursor(커서)** 탭에서 쿼리 결과를 SQL 클라이언트 도구 또는 애플리케이션에 반환하는 방법에 대한 옵션을 지정합니다.

1. **고급 옵션**에서 `logLevel`, `logPath`, `compression` 및 기타 옵션에 대한 값을 지정합니다.

1. **테스트**를 선택합니다. 클라이언트 컴퓨터가 Amazon Redshift 데이터베이스에 연결할 수 있으면 **Connection successful(연결 성공)** 메시지가 표시됩니다. 클라이언트 컴퓨터가 데이터베이스에 연결하지 못하는 경우에는 로그 파일을 생성하고 AWS Support 팀에 문의하여 문제를 해결할 수 있습니다. 로그 생성에 대한 자세한 내용은 (LINK)를 참조하세요.

1.  **확인**을 선택합니다.

# Linux에서 Amazon Redshift ODBC 드라이버 사용
<a name="odbc20-install-config-linux"></a>

Amazon Redshift 데이터 웨어하우스에 액세스하는 클라이언트 컴퓨터에 Amazon Redshift ODBC 드라이버를 설치해야 합니다. 드라이버를 설치하는 컴퓨터마다 다음과 같은 시스템 요구 사항이 적용됩니다.
+ 시스템에 대한 루트 액세스 권한
+ 다음 배포판 중 하나:
  + Red Hat® Enterprise Linux®(RHEL) 8 이상
  + CentOS 8 이상
+ 사용 가능한 디스크 공간 150MB
+ unixODBC 2.2.14 이상
+ glibc 2.26 이상

# Amazon Redshift ODBC 드라이버 다운로드 및 설치
<a name="odbc20-install-linux"></a>

Linux용 Amazon Redshift ODBC 드라이버 버전 2.x를 다운로드하고 설치하려면:

1.  다음 드라이버를 다운로드합니다.
   + [x86 64비트 RPM 드라이버 버전 2.1.15.0](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.15.0/AmazonRedshiftODBC-64-bit-2.1.15.0.x86_64.rpm) 
   + [ARM 64비트 RPM 드라이버 버전 2.1.15.0](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.15.0/AmazonRedshiftODBC-64-bit-2.1.15.0.aarch64.rpm) 
**참고**  
32비트 ODBC 드라이버는 단종되었습니다. 긴급 보안 패치를 제외하고 추가 업데이트는 릴리스되지 않습니다.

1.  패키지를 다운로드한 위치로 이동한 다음, 다음 명령 중 하나를 실행합니다. Linux 배포판에 따라 올바른 명령을 사용하세요.

   RHEL 및 CentOS 운영 체제에서 다음 명령을 실행합니다.

   ```
   yum --nogpgcheck localinstall RPMFileName
   ```

   `RPMFileName`을 RPM 패키지 파일 이름으로 바꿉니다. 예를 들어 다음은 64비트 드라이버를 설치하는 명령입니다.

   ```
   yum --nogpgcheck localinstall AmazonRedshiftODBC-64-bit-2.x.xx.xxxx.x86_64.rpm
   ```

# ODBC 드라이버 관리자를 사용하여 ODBC 드라이버 구성
<a name="odbc20-config-linux"></a>

Linux에서 ODBC 드라이버 관리자를 사용하여 ODBC 연결 설정을 구성합니다. ODBC 드라이버 관리자는 구성 파일을 사용하여 ODBC 데이터 원본과 드라이버를 정의 및 구성합니다. 또한 사용하는 운영 체제에 따라 ODBC 드라이버 관리자도 달라집니다.

## unixODBC 드라이버 관리자를 사용하여 ODBC 드라이버 구성
<a name="odbc20-config-unixodbc-linux"></a>

Amazon Redshift ODBC 드라이버를 구성하려면 다음 파일이 필요합니다.
+ ` amazon.redshiftodbc.ini `
+ ` odbc.ini `
+ ` odbcinst.ini `

 기본 위치에 드라이버를 설치한 경우에는 `amazon.redshiftodbc.ini` 구성 파일이 `/opt/amazon/redshiftodbcx64`에 있습니다.

 또한 `/opt/amazon/redshiftodbcx64`에 샘플 `odbc.ini` 및 `odbcinst.ini` 파일이 있습니다. 이러한 파일을 Amazon Redshift ODBC 드라이버 및 데이터 원본 이름(DSN)을 구성하는 예제로 사용할 수 있습니다.

 Amazon Redshift ODBC 드라이버 설치 디렉터리를 구성 파일용으로 사용하는 것은 바람직하지 않습니다. 설치된 디렉터리의 샘플 파일은 오직 예를 제공하기 위한 용도일 뿐입니다. 나중에 Amazon Redshift ODBC 드라이버를 다시 설치하거나 새 버전으로 업그레이드하면 설치 디렉터리를 덮어씁니다. 설치 디렉터리의 파일에 대한 변경 사항은 손실됩니다.

 이를 방지하려면 `amazon.redshiftodbc.ini` 파일을 설치 디렉터리가 아닌 다른 디렉터리에 복사합니다. 이 파일을 사용자의 홈 디렉터리로 복사하는 경우에는 파일 이름 앞에 마침표(.)를 추가하여 숨김 파일로 지정하세요.

 `odbc.ini` 및 `odbcinst.ini` 파일의 경우 사용자의 홈 디렉터리에 있는 구성 파일을 사용하거나 다른 디렉터리에 새 버전을 생성합니다. 기본적으로 Linux 운영 체제는 사용자의 홈 디렉터리(`/home/$USER` 또는 `~/.`)에 `odbc.ini` 파일과 `odbcinst.ini` 파일이 있어야 합니다. 이러한 기본 파일은 숨김 파일이기 때문에 파일 이름 앞에 마침표(.)가 있습니다. 이러한 파일은 `-a` 플래그를 사용하여 디렉터리 내용을 나열하는 경우에만 표시됩니다.

 `odbc.ini` 및 `odbcinst.ini` 파일에 대해 어떤 옵션을 선택하든지 파일을 수정하여 드라이버 및 DSN 구성 정보를 추가합니다. 새로운 파일을 생성할 때도 마찬가지로 환경 변수를 설정하여 구성 파일의 위치를 지정해야 합니다.

 기본적으로 ODBC 드라이버 관리자는 홈 디렉터리에 있는 숨겨진 버전의 `odbc.ini` 및 `odbcinst.ini` 구성 파일(`.odbc.ini` 및 `.odbcinst.ini`)을 사용하도록 구성됩니다. 또한 드라이버 설치 디렉터리에 있는 `amazon.redshiftodbc.ini` 파일을 사용하도록 구성됩니다. 이러한 구성 파일을 다른 위치에 저장하는 경우 드라이버 관리자가 파일을 찾을 수 있도록 다음에 설명된 환경 변수를 설정합니다.

 unixODBC 사용하는 경우 다음과 같이 합니다.
+  `ODBCINI`를 `odbc.ini` 파일의 전체 경로 및 파일 이름으로 설정합니다.
+  `ODBCSYSINI`를 `odbcinst.ini` 파일이 포함된 디렉토리의 전체 경로로 설정합니다.
+  `AMAZONREDSHIFTODBCINI`를 `amazon.redshiftodbc.ini` 파일의 전체 경로 및 파일 이름으로 설정합니다.

다음은 위의 값을 설정하는 예입니다.

```
export ODBCINI=/usr/local/odbc/odbc.ini 
export ODBCSYSINI=/usr/local/odbc 
export AMAZONREDSHIFTODBCINI=/etc/amazon.redshiftodbc.ini
```

## Linux에서 데이터 소스 이름(DSN)을 사용하여 연결 구성
<a name="odbc20-dsn-linux"></a>

데이터 소스 이름(DSN)을 사용하여 데이터 스토어에 연결할 경우 데이터 소스 이름(DSN)을 정의하도록 `odbc.ini` 파일을 구성합니다. `odbc.ini` 파일의 속성을 설정하여 데이터 저장소에 대한 연결 정보를 지정하는 DSN을 생성합니다.

Linux 운영 체제에서는 다음 형식을 사용합니다.

```
[ODBC Data Sources]
driver_name=dsn_name

[dsn_name]
Driver=path/driver_file
Host=cluster_endpoint
Port=port_number
Database=database_name
locale=locale
```

다음 예에서는 Linux 운영 체제에서 64비트 ODBC 드라이버를 사용하는 `odbc.ini`에 대한 구성을 보여줍니다.

```
[ODBC Data Sources]
Amazon_Redshift_x64=Amazon Redshift ODBC Driver (x64)

[Amazon_Redshift_x64]
Driver=/opt/amazon/redshiftodbcx64/librsodbc64.so
Host=examplecluster.abc123xyz789.us-west-2.redshift.amazonaws.com
Port=5932Database=dev
locale=en-US
```

## Linux에서 DSN 없이 연결 구성
<a name="odbc20-no-dsn-linux"></a>

 DSN이 없는 연결을 통해 데이터 저장소에 연결하려면 `odbcinst.ini` 파일에 드라이버를 정의합니다. 그런 다음 애플리케이션에 DSN이 없는 연결 문자열을 제공합니다.

Linux 운영 체제에서는 다음 형식을 사용합니다.

```
[ODBC Drivers]
driver_name=Installed
...
                            
[driver_name]
Description=driver_description
Driver=path/driver_file
    
...
```

다음 예에서는 Linux 운영 체제에서 64비트 ODBC 드라이버를 사용하는 `odbcinst.ini`에 대한 구성을 보여줍니다.

```
[ODBC Drivers]
Amazon Redshift ODBC Driver (x64)=Installed

[Amazon Redshift ODBC Driver (x64)]
Description=Amazon Redshift ODBC Driver (64-bit)
Driver=/opt/amazon/redshiftodbcx64/librsodbc64.so
```

# Apple macOS에서 Amazon Redshift ODBC 드라이버 사용
<a name="odbc20-install-config-mac"></a>

Amazon Redshift 데이터 웨어하우스에 액세스하는 클라이언트 컴퓨터에 Amazon Redshift ODBC 드라이버를 설치해야 합니다. 드라이버를 설치하는 컴퓨터마다 다음과 같은 시스템 요구 사항이 적용됩니다.
+ 시스템에 대한 루트 액세스 권한 
+ Apple macOS 시스템 요구 사항:
  + 64비트 버전의 Apple macOS 버전 11.7 이상(예: Apple macOS Big Sur, Monterey, Ventura 이상)이 필요합니다. Redshift ODBC 드라이버는 64비트 클라이언트 애플리케이션만 지원합니다.
  + 사용 가능한 디스크 공간 150MB
  + 드라이버는 iODBC 3.52.9 이상 또는 unixODBC 2.3.7 이상으로 빌드된 애플리케이션을 지원합니다.

# Amazon Redshift ODBC 드라이버 다운로드 및 설치
<a name="odbc20-install-mac"></a>

Apple macOS용 Amazon Redshift ODBC 드라이버를 다운로드하여 설치하려면 다음 절차를 따르세요. Amazon Redshift와 함께 사용하도록 인증되었고 특정 드라이버가 필요한 서드 파티 애플리케이션을 실행하고 있다면 다른 드라이버만 사용합니다.

ODBC 드라이버를 다운로드하고 설치하려면: 

1. [64비트 ODBC 드라이버 버전 2.1.15.0](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.15.0/AmazonRedshiftODBC-64-bit.2.1.15.0.universal.pkg)을 다운로드합니다. 

   이 드라이버는 x86\$164 아키텍처와 arm64 아키텍처 모두에서 지원됩니다. 이 드라이버의 이름은 **Amazon Redshift ODBC 드라이버(x64)**입니다.

1. [Amazon Redshift ODBC 드라이버 버전 2.x 라이선스](https://github.com/aws/amazon-redshift-odbc-driver/blob/master/LICENSE)를 검토하세요.

1. .pkg 파일을 두 번 클릭한 후 마법사의 단계에 따라 드라이버를 설치합니다. 또는 다음 명령을 실행합니다.

   ```
   sudo installer -pkg PKGFileName -target /
   ```

   `PKGFileName`을 pkg 패키지 파일 이름으로 바꿉니다. 예를 들어 다음은 64비트 드라이버를 설치하는 명령입니다.

   ```
   sudo installer -pkg ./AmazonRedshiftODBC-64-bit.X.X.XX.X.universal.pkg -target /
   ```

# ODBC 드라이버 관리자를 사용하여 ODBC 드라이버 구성
<a name="odbc20-config-mac"></a>

Mac에서 ODBC 드라이버 관리자를 사용하여 ODBC 연결 설정을 구성합니다. ODBC 드라이버 관리자는 구성 파일을 사용하여 ODBC 데이터 원본과 드라이버를 정의 및 구성합니다. 또한 사용하는 운영 체제에 따라 ODBC 드라이버 관리자도 달라집니다.

## iODBC 또는 unixODBC 드라이버 관리자를 사용하여 ODBC 드라이버 구성
<a name="odbc20-config-iodbc-mac"></a>

Amazon Redshift ODBC 드라이버를 구성하려면 다음 파일이 필요합니다.
+ ` amazon.redshiftodbc.ini `
+ ` odbc.ini `
+ ` odbcinst.ini `

 기본 위치에 드라이버를 설치한 경우에는 `amazon.redshiftodbc.ini` 구성 파일이 `/opt/amazon/redshiftodbcx64`에 있습니다.

 또한 `/opt/amazon/redshiftodbcx64`에 샘플 `odbc.ini` 및 `odbcinst.ini` 파일이 있습니다. 이러한 파일을 Amazon Redshift ODBC 드라이버 및 데이터 원본 이름(DSN)을 구성하는 예제로 사용할 수 있습니다. 설치된 디렉터리의 샘플 파일은 오직 예를 제공하기 위한 용도일 뿐입니다.

 Amazon Redshift ODBC 드라이버 설치 디렉터리를 구성 파일용으로 사용하는 것은 바람직하지 않습니다. 나중에 Amazon Redshift ODBC 드라이버를 다시 설치하거나 새 버전으로 업그레이드하면 설치 디렉터리를 덮어씁니다. 설치 디렉터리의 파일에 대한 변경 사항은 손실됩니다.

 이를 방지하려면 `odbc.ini`, `odbcinst.ini` 및 `amazon.redshiftodbc.ini` 파일을 설치 디렉터리가 아닌 다른 디렉터리에 복사합니다. 이러한 파일을 사용자의 홈 디렉터리로 복사하는 경우에는 파일 이름 앞에 마침표(.)를 추가하여 숨김 파일로 지정하세요.

 파일을 수정하여 DSN 구성 정보를 추가합니다. 새로운 파일을 생성할 때도 마찬가지로 환경 변수를 설정하여 구성 파일의 위치를 지정해야 합니다.

다음은 이러한 환경 변수 설정의 예입니다.

```
export ODBCINI=/Library/ODBC/odbc.ini
export ODBCSYSINI=/Library/ODBC
export ODBCINSTINI=${ODBCSYSINI}/odbcinst.ini
```

명령줄 애플리케이션의 경우: 쉘 시작 파일(예: `~/.bash_profile` 또는 `~/.zshrc`)에 내보내기 명령을 추가합니다.

지원되는 드라이버 관리자 버전은 [여기](https://docs.aws.amazon.com/redshift/latest/mgmt/odbc20-install-config-mac.html)를 참조하세요.

### Apple macOS에서 데이터 소스 이름(DSN)을 사용하여 연결 구성
<a name="odbc20-dsn-mac"></a>

데이터 소스 이름(DSN)을 사용하여 데이터 스토어에 연결할 경우 데이터 소스 이름(DSN)을 정의하도록 `odbc.ini` 파일을 구성합니다. `odbc.ini` 파일의 속성을 설정하여 Redshift 데이터 웨어하우스에 대한 연결 정보를 지정하는 DSN을 생성합니다.

Apple macOS에서는 다음 형식을 사용합니다.

```
[ODBC Data Sources]
driver_name=dsn_name

[dsn_name]
Driver=path/driver_file
Host=cluster_endpoint
Port=port_number
Database=database_name
locale=locale
```

다음 예에서는 Apple macOS에서 64비트 ODBC 드라이버를 사용하는 `odbc.ini`에 대한 구성을 보여줍니다.

```
[ODBC Data Sources]
Amazon_Redshift_x64=Amazon Redshift ODBC Driver (x64)

[Amazon_Redshift_x64]
Driver=/opt/amazon/redshiftodbcx64/librsodbc64.dylib
Host=examplecluster.abc123xyz789.us-west-2.redshift.amazonaws.com
Port=5932
Database=dev
locale=en-US
```

### Apple macOS에서 DSN 없이 연결 구성
<a name="odbc20-no-dsn-mac"></a>

 DSN이 없는 연결을 통해 Redshift 데이터 웨어하우스에 연결하려면 `odbcinst.ini` 파일에 드라이버를 정의합니다. 그런 다음 애플리케이션에 DSN이 없는 연결 문자열을 제공합니다.

Apple macOS에서는 다음 형식을 사용합니다.

```
[ODBC Drivers]
driver_name=Installed
...
                            
[driver_name]
Description=driver_description
Driver=path/driver_file
    
...
```

다음 예에서는 Apple macOS에서 64비트 ODBC 드라이버를 사용하는 `odbcinst.ini`에 대한 구성을 보여줍니다.

```
[ODBC Drivers]
Amazon Redshift ODBC Driver (x64)=Installed

[Amazon Redshift ODBC Driver (x64)]
Description=Amazon Redshift ODBC Driver (64-bit)
Driver=/opt/amazon/redshiftodbcx64/librsodbc64.dylib
```

# 인증 방법
<a name="odbc20-authentication-ssl"></a>

무단 액세스로부터 데이터를 보호하기 위해 Amazon Redshift 데이터 스토어는 사용자 자격 증명을 사용하여 모든 연결을 인증할 것을 요구합니다.

다음 표는 Amazon Redshift ODBC 드라이버 버전 2.x에 연결하는 데 사용할 수 있는 각 인증 방법별로 필수 및 선택적 연결 옵션을 보여줍니다.


| 인증 방법 | 필수 | 선택 | 
| --- | --- | --- | 
|  표준  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/odbc20-authentication-ssl.html)  |   | 
|  IAM 프로필  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/odbc20-authentication-ssl.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/odbc20-authentication-ssl.html)   별도로 설정되지 않는 경우 **호스트(Host)**에서 **ClusterID**와 **리전(Region)**을 설정해야 합니다.   | 
|  IAM 자격 증명  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/odbc20-authentication-ssl.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/odbc20-authentication-ssl.html)   별도로 설정되지 않는 경우 **호스트(Host)**에서 **ClusterID**와 **리전(Region)**을 설정해야 합니다.   | 
|  AD FS  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/odbc20-authentication-ssl.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/odbc20-authentication-ssl.html)   별도로 설정되지 않는 경우 **호스트(Host)**에서 **ClusterID**와 **리전(Region)**을 설정해야 합니다.   | 
|  Azure AD  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/odbc20-authentication-ssl.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/odbc20-authentication-ssl.html)   별도로 설정되지 않는 경우 **호스트(Host)**에서 **ClusterID**와 **리전(Region)**을 설정해야 합니다.   | 
|  JWT  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/odbc20-authentication-ssl.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/odbc20-authentication-ssl.html)  | 
|  Okta  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/odbc20-authentication-ssl.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/odbc20-authentication-ssl.html)   별도로 설정되지 않는 경우 **호스트(Host)**에서 **ClusterID**와 **리전(Region)**을 설정해야 합니다.   | 
|  Ping Federate  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/odbc20-authentication-ssl.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/odbc20-authentication-ssl.html)   별도로 설정되지 않는 경우 **호스트(Host)**에서 **ClusterID**와 **리전(Region)**을 설정해야 합니다.   | 
|  브라우저 Azure AD  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/odbc20-authentication-ssl.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/odbc20-authentication-ssl.html)   별도로 설정되지 않는 경우 **호스트(Host)**에서 **ClusterID**와 **리전(Region)**을 설정해야 합니다.   | 
|  브라우저 SAML  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/odbc20-authentication-ssl.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/odbc20-authentication-ssl.html)   별도로 설정되지 않는 경우 **호스트(Host)**에서 **ClusterID**와 **리전(Region)**을 설정해야 합니다.   | 
|  인증 프로필  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/odbc20-authentication-ssl.html)  |   | 
|  브라우저 Azure AD OAUTH2  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/odbc20-authentication-ssl.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/odbc20-authentication-ssl.html)   별도로 설정되지 않는 경우 **호스트(Host)**에서 **ClusterID**와 **리전(Region)**을 설정해야 합니다.   | 
|  AWS IAM Identity Center  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/odbc20-authentication-ssl.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/odbc20-authentication-ssl.html)  | 

## 외부 보안 인증 서비스 사용
<a name="odbc20-authentication-external"></a>

Amazon Redshift ODBC 드라이버의 Windows 버전은 AD FS, Azure AD 및 Okta에 대한 기본 제공 지원 외에, 다른 보안 인증 서비스에 대한 지원도 제공합니다. 이 드라이버는 선택한 SAML 기반 보안 인증 공급자 플러그인을 사용하여 연결을 인증할 수 있습니다.

Windows에서 외부 보안 인증 서비스를 구성하려면

1. 필요에 따라 보안 인증 공급자 플러그인 및 기타 인증 파라미터를 지정하는 IAM 프로필을 생성합니다. 이 프로필은 ASCII로 인코딩해야 하며 다음 키-값 페어를 포함해야 합니다. 여기서 `PluginPath`는 플러그인 애플리케이션의 전체 경로입니다.

   ```
   plugin_name = PluginPath
   ```

   예:

   ```
   plugin_name = C:\Users\kjson\myapp\CredServiceApp.exe 
   ```

   프로필을 생성하는 방법에 대한 자세한 내용은 Amazon Redshift 클러스터 관리 가이드에서 [구성 프로필 사용](https://docs.aws.amazon.com/redshift/latest/mgmt/options-for-providing-iam-credentials.html#using-configuration-profile)을 참조하세요.

1. 이 프로필을 사용하도록 드라이버를 구성합니다. 이 드라이버는 프로필에 지정된 인증 설정을 감지하고 사용합니다.

# 데이터 유형 변환
<a name="odbc20-converting-data-types"></a>

Amazon Redshift ODBC 드라이버 버전 2.x는 Amazon Redshift 및 SQL 데이터 유형 간 변환으로 많은 일반 데이터 유형을 지원합니다.

다음 표에는 지원되는 데이터 형식 매핑이 나와 있습니다.


| Amazon Redshift 형식 | SQL 형식 | 
| --- | --- | 
|  BIGINT  |  SQL\$1BIGINT  | 
|  BOOLEAN  |  SQL\$1BIT  | 
|  CHAR  |  SQL\$1CHAR  | 
|  DATE  |  SQL\$1TYPE\$1DATE  | 
|  DECIMAL  |  SQL\$1NUMERIC  | 
|  DOUBLE PRECISION  |  SQL\$1DOUBLE  | 
|  GEOGRAPHY  |  SQL\$1 LONGVARBINARY  | 
|  GEOMETRY  |  SQL\$1 LONGVARBINARY  | 
|  INTEGER  |  SQL\$1INTEGER  | 
|  REAL  |  SQL\$1REAL  | 
|  SMALLINT  |  SQL\$1SMALLINT  | 
|  SUPER  |  SQL\$1LONGVARCHAR  | 
|  TEXT  |  SQL\$1LONGVARCHAR  | 
|  TIME  |  SQL\$1TYPE\$1TIME  | 
|  TIMETZ  |  SQL\$1TYPE\$1TIME  | 
|  TIMESTAMP  |  SQL\$1TYPE\$1 TIMESTAMP  | 
|  TIMESTAMPTZ  |  SQL\$1TYPE\$1 TIMESTAMP  | 
|  VARBYTE  |  SQL\$1LONGVARBINARY  | 
|  VARCHAR  |  SQL\$1VARCHAR  | 

# ODBC 드라이버 옵션
<a name="odbc20-configuration-options"></a>

드라이버 구성 옵션을 사용하여 Amazon Redshift ODBC 드라이버의 동작을 제어할 수 있습니다. 드라이버 옵션은 대소문자를 구분하지 않습니다.

Microsoft Windows에서는 일반적으로 데이터 원본 이름(DSN)을 구성할 때 드라이버 옵션을 설정합니다. 프로그래밍 방식으로 연결할 때 또는 `HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\your_DSN`에서 레지스트리 키를 추가하거나 변경하여 연결 문자열에 드라이버 옵션을 설정할 수도 있습니다.

Linux에서는 `odbc.ini` 및 `amazon.redshiftodbc.ini` 파일에서 드라이버 구성 옵션을 설정합니다. `amazon.redshiftodbc.ini` 파일에서 설정하는 구성 옵션이 모든 연결에 적용됩니다. 반대로 `odbc.ini` 파일에서 설정하는 구성 옵션은 연결에 따라 다릅니다. `odbc.ini`에서 설정하는 구성 옵션이 `amazon.redshiftodbc.ini`에서 설정하는 구성 옵션보다 우선합니다.

다음은 Amazon Redshift ODBC 드라이버 버전 2.x 드라이버에 지정할 수 있는 옵션에 대한 설명입니다.

## AccessKeyID
<a name="odbc20-accesskeyid-option"></a>
+ **기본값** – 없음
+ **데이터 형식** – 문자열

 사용자 또는 역할에 대한 IAM 액세스 키입니다. 이 파라미터를 설정할 경우 **SecretAccessKey**도 지정해야 합니다

이 파라미터는 선택 사항입니다.

## app\$1id
<a name="odbc20-app-id-option"></a>
+ **기본값** – 없음
+ **데이터 형식** – 문자열

Amazon Redshift 애플리케이션과 연결된 Okta 제공 고유 ID입니다.

이 파라미터는 선택 사항입니다.

## ApplicationName
<a name="odbc20-application_name-option"></a>
+ **기본값** – 없음
+ **데이터 유형** – 문자열

감사 목적으로 Amazon Redshift에 전달할 클라이언트 애플리케이션의 이름입니다. 입력하는 애플리케이션 이름은 [SYS\$1CONNECTION\$1LOG](https://docs.aws.amazon.com/redshift/latest/dg/SYS_CONNECTION_LOG.html) 테이블의 'application\$1name' 열에 나타납니다. 이렇게 하면 문제를 디버깅할 때 연결 소스를 추적하고 문제를 해결할 수 있습니다.

이 파라미터는 선택 사항입니다.

## app\$1name
<a name="odbc20-app-name-option"></a>
+ **기본값** – 없음
+ **데이터 형식** – 문자열

Amazon Redshift에 대한 연결을 인증하는 데 사용하는 Okta 애플리케이션의 이름입니다.

이 파라미터는 선택 사항입니다.

## AuthProfile
<a name="odbc20-authprofile-option"></a>
+ **기본값** – 없음
+ **데이터 형식** – 문자열

연결 설정을 관리하는 데 사용되는 인증 프로필입니다. 이 파라미터를 설정할 경우 **AccessKeyID**와 **SecretAccessKey**도 설정해야 합니다 

이 파라미터는 선택 사항입니다.

## AuthType
<a name="odbc20-authtype-option"></a>
+ **기본값** - 표준(Standard)
+ **데이터 형식** – 문자열

이 옵션은 Amazon Redshift ODBC 드라이버 DSN 설정 대화 상자를 사용하여 DSN을 구성할 때 드라이버가 사용하는 인증 모드를 지정합니다.
+  표준(Standard): Amazon Redshift 사용자 이름과 암호를 사용하는 표준 인증입니다.
+  AWS Profile(프로필): 프로필을 사용하는 IAM 인증입니다.
+  AWS IAM Credentials(IAM 보안 인증 정보): IAM 보안 인증 정보를 사용하는 IAM 인증입니다.
+  자격 증명 공급자(Identity Provider): AD FS: Active Directory Federation Services(AD FS)를 사용하는 IAM 인증입니다.
+  ID 제공업체: 인증 플러그인: AWS IAM Identity Center 토큰 또는 AWS IAM Identity Center에 연결된 웹 ID 제공업체의 OpenID Connect(OIDC) JSON 기반 자격 증명 토큰(JWT)을 수락하는 권한 부여 플러그인입니다.
+  자격 증명 공급자(Identity Provider): Azure AD: Azure AD 포털을 사용한 IAM 인증입니다.
+  자격 증명 공급자(Identity Provider): JWT: JSON 웹 토큰(JWT)을 사용한 IAM 인증입니다.
+  자격 증명 공급자(Identity Provider): Okta: Okta를 사용한 IAM 인증입니다.
+  자격 증명 공급자(Identity Provider): PingFederate: PingFederate를 사용한 IAM 인증입니다.

이 옵션은 Windows 드라이버에서 Amazon Redshift ODBC 드라이버 DSN 설정 대화 상자를 사용하여 DSN을 구성하는 경우에만 사용할 수 있습니다. 연결 문자열 또는 Windows 이외의 시스템을 사용하여 연결을 구성하면, 드라이버가 지정된 자격 증명에 따라 표준, AWS 프로필 또는 AWS IAM 보안 인증 중 어떤 인증 방법을 사용할지 자동으로 결정합니다. 자격 증명 공급자를 사용하려면 **plugin\$1name** 속성을 설정해야 합니다.

이 파라미터는 필수 사항입니다.

## AutoCreate
<a name="odbc20-autocreate-option"></a>
+ **기본값** - 0
+ **데이터 형식** – 부울

지정된 사용자가 존재하지 않을 경우 드라이버가 새 사용자를 생성할지 여부를 지정하는 부울 값입니다.
+  1 \$1 TRUE: **UID**로 지정된 사용자가 없는 경우 드라이버가 새 사용자를 생성합니다.
+  0 \$1 FALSE: 드라이버가 새 사용자를 생성하지 않습니다. 지정된 사용자가 없으면 인증에 실패합니다.

이 파라미터는 선택 사항입니다.

## CaFile
<a name="odbc20-cafile-option"></a>
+ **기본값** – 없음
+ **데이터 형식** – 문자열

일부 IAM 인증 방식에 사용되는 CA 인증서 파일의 파일 경로입니다.

 이 파라미터는 Linux에서만 사용 가능합니다.

이 파라미터는 선택 사항입니다.

## client\$1id
<a name="odbc20-client-id-option"></a>
+ **기본값** – 없음
+ **데이터 형식** – 문자열

Azure AD에서 Amazon Redshift 애플리케이션과 연결된 클라이언트 ID입니다.

Azure AD 서비스를 통해 인증하는 경우 이 파라미터는 필수입니다.

## client\$1 secret
<a name="odbc20-client-secret-option"></a>
+ **기본값** – 없음
+ **데이터 형식** – 문자열

 Azure AD에서 Amazon Redshift 애플리케이션과 연결된 비밀 키입니다.

Azure AD 서비스를 통해 인증하는 경우 이 파라미터는 필수입니다.

## ClusterId
<a name="odbc20-clusterid-option"></a>
+ **기본값** – 없음
+ **데이터 형식** – 문자열

연결하려는 Amazon Redshift 클러스터의 이름입니다. IAM 인증에 사용됩니다. 이 클러스터 ID는 **Server** 파라미터에 지정되어 있지 않습니다.

이 파라미터는 선택 사항입니다.

## 압축
<a name="odbc20-compression-option"></a>
+ **기본값** - 끄기
+ **데이터 형식** – 문자열

Amazon Redshift 서버와 클라이언트 또는 드라이버 간의 유선 프로토콜 통신에 사용되는 압축 방법입니다.

다음 값을 지정할 수 있습니다.
+ lz4: Amazon Redshift와의 유선 프로토콜 통신에 사용되는 압축 방법을 `lz4`로 설정합니다.
+ zstd: Amazon Redshift와의 유선 프로토콜 통신에 사용되는 압축 방법을 `zstd`로 설정합니다.
+  off: Amazon Redshift와의 유선 프로토콜 통신에 압축을 사용하지 않습니다.

이 파라미터는 선택 사항입니다.

## 데이터베이스
<a name="odbc20-database-option"></a>
+ **기본값** – 없음
+ **데이터 형식** – 문자열

액세스할 Amazon Redshift 데이터베이스의 이름입니다.

이 파라미터는 필수 사항입니다.

## DatabaseMetadataCurrentDbOnly
<a name="odbc20-database-metadata-option"></a>
+ **기본값** – 1
+ **데이터 형식** – 부울

드라이버가 여러 데이터베이스 및 클러스터의 메타데이터를 반환하는지 여부를 지정하는 부울 값입니다.
+ 1 \$1 TRUE: 드라이버가 현재 데이터베이스의 메타데이터만 반환합니다.
+  0 \$1 FALSE. 드라이버가 여러 Amazon Redshift 데이터베이스 및 클러스터의 메타데이터를 반환합니다.

이 파라미터는 선택 사항입니다.

## dbgroups\$1filter
<a name="odbc20-dbgroups-filter-option"></a>
+ **기본값** – 없음
+ **데이터 형식** – 문자열

Azure, 브라우저 Azure 및 브라우저 SAML 인증 유형을 사용할 경우 Amazon Redshift에 대한 SAML 응답에서 수신된 DbGroups를 필터링하기 위해 지정할 수 있는 정규식입니다.

이 파라미터는 선택 사항입니다.

## 드라이버
<a name="odbc20-driver-option"></a>
+ **기본값** - Amazon Redshift ODBC 드라이버(x64)
+ **데이터 형식** – 문자열

드라이버의 이름입니다. 지원되는 유일한 값은 **Amazon Redshift ODBC 드라이버(x64)(Amazon Redshift ODBC Driver (x64))**입니다.

**DSN**를 설정하지 않을 경우 이 파라미터가 필요합니다.

## DSN
<a name="odbc20-dsn-option"></a>
+ **기본값** – 없음
+ **데이터 형식** – 문자열

드라이버 데이터 소스의 이름입니다. 애플리케이션이 SQLDriverConnect API에 DSN을 지정합니다.

**드라이버(Driver)**를 설정하지 않을 경우 이 파라미터가 필요합니다.

## EndpointUrl
<a name="odbc20-endpointurl-option"></a>
+ **기본값** – 없음
+ **데이터 형식** – 문자열

IAM 인증을 위해 Amazon Redshift Coral Service와 통신하는 데 사용되는 재정의 엔드포인트입니다.

이 파라미터는 선택 사항입니다.

## ForceLowercase
<a name="odbc20-forcelowercase-option"></a>
+ **기본값** - 0
+ **데이터 형식** – 부울

드라이버가 Single Sing-On 인증을 사용할 때 자격 증명 공급자에서 Amazon Redshift로 전송된 모든 DbGroups를 소문자로 표시할지 여부를 지정하는 부울 값입니다.
+  1 \$1 TRUE: 드라이버가 ID 공급자에서 전송된 모든 DbGroups를 소문자로 표시합니다.
+  0 \$1 FALSE: 드라이버가 DbGroups를 변경하지 않습니다.

이 파라미터는 선택 사항입니다.

## group\$1federation
<a name="odbc20-group-federation-option"></a>
+ **기본값** - 0
+ **데이터 형식** – 부울

프로비저닝된 클러스터에서 임시 클러스터 보안 인증 정보를 얻는 데 `getClusterCredentialsWithIAM` API를 사용할지 여부를 지정하는 부울입니다. 이 옵션을 사용하면 IAM 사용자가 프로비저닝된 클러스터의 Redshift 데이터베이스 역할과 통합할 수 있습니다. 이 옵션은 Redshift Serverless 네임스페이스에 적용되지 않습니다.
+  1 \$1 TRUE: 드라이버가 `getClusterCredentialsWithIAM` API를 사용하여 프로비저닝된 클러스터에서 임시 클러스터 보안 인증 정보를 얻습니다.
+  0 \$1 FALSE: 드라이버가 기본 `getClusterCredentials` API를 사용하여 프로비저닝된 클러스터에서 임시 클러스터 보안 인증 정보를 얻습니다.

이 파라미터는 선택 사항입니다.

## https\$1proxy\$1host
<a name="odbc20-https-proxy-host-option"></a>
+ **기본값** – 없음
+ **데이터 형식** – 문자열

IAM 인증 프로세스를 통과하도록 하려는 프록시 서버의 호스트 이름 또는 IP 주소입니다.

이 파라미터는 선택 사항입니다.

## https\$1proxy\$1password
<a name="odbc20-https-proxy-password-option"></a>
+ **기본값** – 없음
+ **데이터 형식** – 문자열

프록시 서버에 액세스하는 데 사용하는 암호입니다. IAM 인증에 사용됩니다.

이 파라미터는 선택 사항입니다.

## https\$1proxy\$1port
<a name="odbc20-https-proxy-port-option"></a>
+ **기본값** – 없음
+ **데이터 형식** – 정수

프록시 서버가 클라이언트 연결을 수신 대기하는 데 사용하는 포트 번호입니다. IAM 인증에 사용됩니다.

이 파라미터는 선택 사항입니다.

## https\$1proxy\$1username
<a name="odbc20-https-proxy-username-option"></a>
+ **기본값** – 없음
+ **데이터 형식** – 문자열

프록시 서버에 액세스하는 데 사용하는 사용자 이름입니다. IAM 인증에 사용됩니다.

이 파라미터는 선택 사항입니다.

## IAM
<a name="odbc20-iam-option"></a>
+ **기본값** - 0
+ **데이터 형식** – 부울

드라이버가 IAM 인증 방법을 사용하여 연결을 인증하는지 여부를 지정하는 부울 값입니다.
+  1 \$1 TRUE: 드라이버가 IAM 인증 방법(액세스 키와 비밀 키의 페어, 프로필 또는 보안 인증 서비스 사용) 중 하나를 사용합니다.
+  0 \$1 FALSE. 드라이버가 표준 인증(데이터베이스 사용자 이름 및 암호 사용)을 사용합니다.

이 파라미터는 선택 사항입니다.

## idc\$1client\$1display\$1name
<a name="odbc20-idc_client_display_name-option"></a>
+ **기본값** - Amazon Redshift ODBC 드라이버
+ **데이터 형식** – 문자열

BrowserIdcAuthPlugin을 사용하는 클라이언트에 사용할 표시 이름입니다.

이 파라미터는 선택 사항입니다.

## idc\$1region
<a name="odbc20-idc_region"></a>
+ **기본값** – 없음
+ **데이터 형식** – 문자열

AWS IAM Identity Center 인스턴스가 위치한 AWS 리전입니다.

이 파라미터는 plugin\$1name 구성 옵션에서 `BrowserIdcAuthPlugin`을 사용하여 인증하는 경우에만 필요합니다.

## idp\$1host
<a name="odbc20-idp-host-option"></a>
+ **기본값** – 없음
+ **데이터 형식** – 문자열

Amazon Redshift에 인증하는 데 사용하는 자격 증명 공급자(IdP) 호스트입니다.

이 파라미터는 선택 사항입니다.

## idp\$1port
<a name="odbc20-idp-port-option"></a>
+ **기본값** – 없음
+ **데이터 형식** – 정수

Amazon Redshift에 인증하는 데 사용하는 자격 증명 공급자(IdP)용 포트입니다. 클러스터를 생성, 수정 또는 마이그레이션할 때 선택한 포트에 따라 선택한 포트에 대한 액세스를 허용합니다.

이 파라미터는 선택 사항입니다.

## idp\$1response\$1timeout
<a name="odbc20-idp-response-timeout-option"></a>
+ **기본값** – 120
+ **데이터 형식** – 정수

브라우저 플러그인을 통해 SAML 또는 Azure AD 서비스를 사용할 때 드라이버가 자격 증명 공급자의 SAML 응답을 기다리는 시간(초)입니다.

이 파라미터는 선택 사항입니다.

## idp\$1tenant
<a name="odbc20-idp-tenant-option"></a>
+ **기본값** – 없음
+ **데이터 형식** – 문자열

 Amazon Redshift 애플리케이션과 연결된 Azure AD 테넌트 ID입니다.

Azure AD 서비스를 통해 인증하는 경우 이 파라미터는 필수입니다.

## idp\$1partition
<a name="odbc20-idp-partition-option"></a>
+ **기본값** – 없음
+ **데이터 형식** – 문자열

ID 제공업체(IdP)가 구성된 클라우드 파티션을 지정합니다. 드라이버가 연결하는 IdP 인증 엔드포인트를 결정합니다.

이 파라미터를 비워 두면 드라이버는 기본적으로 상용 파티션으로 설정됩니다. 가능한 값은 다음과 같습니다.
+ `us-gov`: IdP가 Azure Government에 구성된 경우 이 값을 사용합니다. 예를 들어 Azure AD Government는 `login.microsoftonline.us` 엔드포인트를 사용합니다.
+ `cn`: IdP가 중국 클라우드 파티션에 구성된 경우 이 값을 사용합니다. 예를 들어 Azure AD China는 `login.chinacloudapi.cn` 엔드포인트를 사용합니다.

이 파라미터는 선택 사항입니다.

## idp\$1use\$1https\$1proxy
<a name="odbc20-idp-use-https-proxy-option"></a>
+ **기본값** - 0
+ **데이터 형식** – 부울

드라이버가 프록시 서버를 통해 아이덴티티 제공업체(IdP)에 대한 인증 프로세스를 통과하는지 여부를 지정하는 부울 값입니다.
+  1 \$1 TRUE: 드라이버가 프록시 서버를 통해 IdP 인증 프로세스를 통과합니다.
+  0 \$1 FALSE. 드라이버가 프록시 서버를 통해 IdP 인증 프로세스를 통과하지 않습니다.

이 파라미터는 선택 사항입니다.

## InstanceProfile
<a name="odbc20-instanceprofile-option"></a>
+ **기본값** - 0
+ **데이터 형식** – 부울

인증에 프로필을 사용하도록 구성된 경우 드라이버가 Amazon EC2 인스턴스 프로파일을 사용하는지 여부를 지정하는 부울 값입니다.
+  1 \$1 TRUE: 드라이버가 Amazon EC2 인스턴스 프로파일을 사용합니다.
+  0 \$1 FALSE. 드라이버가 프로필 이름 옵션(**Profile(프로필)**)에 지정된 함께 묶은 역할 프로필을 대신 사용합니다.

이 파라미터는 선택 사항입니다.

## issuer\$1url
<a name="odbc20-issuer_url"></a>
+ **기본값** – 없음
+ **데이터 형식** – 문자열

 AWS IAM Identity Center 서버의 인스턴스 엔드포인트를 가리킵니다.

이 파라미터는 plugin\$1name 구성 옵션에서 `BrowserIdcAuthPlugin`을 사용하여 인증하는 경우에만 필요합니다.

## KeepAlive
<a name="odbc20-keepalive-option"></a>
+ **기본값** – 1
+ **데이터 형식** – 부울

드라이버가 TCP KeepAlive를 사용하여 연결 시간 초과를 방지하는지 여부를 지정하는 부울 값입니다.
+  1 \$1 TRUE: 드라이버가 TCP KeepAlive를 사용하여 연결 시간 초과를 방지합니다.
+  0 \$1 FALSE. 드라이버가 TCP KeepAlive를 사용하지 않습니다.

이 파라미터는 선택 사항입니다.

## KeepAliveCount
<a name="odbc20-keepalivecount-option"></a>
+ **기본값** - 0
+ **데이터 형식** – 정수

연결이 끊긴 것으로 간주할 때까지 손실될 수 있는 TCP keepalive 패킷의 수입니다. 이 파라미터를 0으로 설정하면 드라이버가 이 설정에 시스템 기본값을 사용합니다.

이 파라미터는 선택 사항입니다.

## KeepAliveInterval
<a name="odbc20-keepaliveinterval-option"></a>
+ **기본값** - 0
+ **데이터 형식** – 정수

TCP keepalive가 재전송되는 시간 간격(초)입니다. 이 파라미터를 0으로 설정하면 드라이버가 이 설정에 시스템 기본값을 사용합니다.

이 파라미터는 선택 사항입니다.

## KeepAliveTime
<a name="odbc20-keepalivetime-option"></a>
+ **기본값** - 0
+ **데이터 형식** – 정수

드라이버가 TCP keepalive 패킷을 전송할 때까지 아무런 작업 없이 대기하는 시간(초)입니다. 이 파라미터를 0으로 설정하면 드라이버가 이 설정에 시스템 기본값을 사용합니다.

이 파라미터는 선택 사항입니다.

## listen\$1port
<a name="odbc20-listen-port-option"></a>
+ **기본값** – 7890
+ **데이터 형식** – 정수

드라이버가 브라우저 플러그인을 통해 SAML, Azure AD 또는 AWS IAM Identity Center 서비스를 사용할 때 ID 제공업체 또는 권한 부여 코드로부터 SAML 응답을 받는 데 사용하는 포트입니다.

이 파라미터는 선택 사항입니다.

## login\$1url
<a name="odbc20-login-url-option"></a>
+ **기본값** – 없음
+ **데이터 형식** – 문자열

일반 브라우저 SAML 플러그인을 사용할 때 자격 증명 공급자의 웹 사이트에 있는 리소스의 URL입니다.

브라우저 플러그인을 통해 SAML 또는 Azure AD 서비스로 인증하는 경우 이 파라미터는 필수입니다.

## loginToRp
<a name="odbc20-logintorp-option"></a>
+ **기본값** - urn:amazon:webservices
+ **데이터 형식** – 문자열

AD FS 인증 유형에 사용할 신뢰 당사자 트러스트입니다.

이 문자열은 선택 사항입니다.

## LogLevel
<a name="odbc20-loglevel-option"></a>
+ **기본값** - 0
+ **데이터 형식** – 정수

이 속성을 사용하여 드라이버에서 로깅을 활성화하거나 비활성화하고 로그 파일에 포함되는 세부 정보의 양을 지정합니다. 로깅은 성능을 저하시킬 뿐만 아니라 대용량의 디스크 공간을 소모할 수 있기 때문에, 문제를 포착하기에 충분한 시간 동안만 로깅을 활성화하는 것이 좋습니다.

 이 속성을 다음 값 중 하나로 설정합니다.
+  0: 끔. 모든 로깅을 사용 중지합니다.
+  1: 오류. 드라이버가 계속 실행되지만 오류가 발생할 수 있는 오류 이벤트를 로깅합니다.
+  2: API\$1CALL. 함수 인수 값을 사용하여 ODBC API 함수 호출을 로깅합니다.
+  3: 정보. 드라이버의 진행 상황을 설명하는 일반 정보를 로깅합니다.
+  4: MSG\$1PROTOCOL. 드라이버의 메시지 프로토콜에 대한 자세한 정보를 로깅합니다.
+  5: DEBUG. 모든 드라이버 작업을 로깅합니다.
+  6: DEBUG\$1APPEND. 모든 드라이버 작업에 대한 로그를 계속 추가합니다.

로깅을 사용하면 **LogPath** 속성에 지정한 위치에 드라이버가 다음 로그 파일을 생성합니다.
+  연결의 핸드셰이크 중에 발생하는 드라이버 작업을 로깅하는 `redshift_odbc.log.1` 파일입니다.
+  데이터베이스에 연결한 후의 모든 드라이버 작업에 대한 `redshift_odbc.log` 파일입니다.

이 파라미터는 선택 사항입니다.

## LogPath
<a name="odbc20-logpath-option"></a>
+ **기본값** - OS별 TEMP 디렉터리
+ **데이터 형식** – 문자열

**LogLevel**이 0보다 높은 경우 드라이버가 로그 파일을 저장하는 폴더의 전체 경로입니다.

이 파라미터는 선택 사항입니다.

## Min\$1TLS
<a name="odbc20-min-tls-option"></a>
+ **기본값** – 1.2
+ **데이터 형식** – 문자열

 드라이버가 데이터 스토어에서 연결을 암호화하는 데 사용하도록 허용하는 TLS/SSL의 최소 버전입니다. 예를 들어 TLS 1.2를 지정하면 연결을 암호화하는 데 TLS 1.1을 사용할 수 없습니다.

Min\$1TLS는 다음 값으로 지정할 수 있습니다.
+  1.0: 연결에 TLS 1.0 이상을 사용해야 합니다.
+  1.1: 연결에 TLS 1.1 이상을 사용해야 합니다.
+  1.2: 연결에 TLS 1.2 이상을 사용해야 합니다.

이 파라미터는 선택 사항입니다.

## partner\$1spid
<a name="odbc20-partner-spid-option"></a>
+ **기본값** – 없음
+ **데이터 형식** – 문자열

PingFederate 서비스를 사용하여 연결을 인증할 때 사용할 파트너 SPID(서비스 공급자 ID) 값입니다.

이 파라미터는 선택 사항입니다.

## Password \$1 PWS
<a name="odbc20-password-option"></a>
+ **기본값** – 없음
+ **데이터 형식** – 문자열

사용자 필드(**UID**\$1**User(사용자)**\$1**LogonID**)에서 제공한 데이터베이스 사용자 이름에 해당하는 암호입니다.

이 파라미터는 선택 사항입니다.

## plugin\$1name
<a name="odbc20-plugin-name-option"></a>
+ **기본값** – 없음
+ **데이터 형식** – 문자열

인증에 사용할 보안 인증 공급자 플러그인 이름입니다.

 다음과 같은 값이 지원됩니다.
+  `ADFS`: Active Directory Federation Services를 사용하여 인증합니다.
+  `AzureAD`: Microsoft Azure Active Directory(AD) Service를 사용하여 인증합니다..
+  `BrowserAzureAD`: Microsoft Azure Active Directory(AD) Service용 브라우저 플러그인을 사용하여 인증합니다.
+  `BrowserIdcAuthPlugin `: AWS IAM Identity Center를 사용하는 인증 플러그인입니다.
+  `BrowserSAML`: Okta 또는 Ping과 같은 SAML 서비스용 브라우저 플러그인을 사용하여 인증합니다.
+  `IdpTokenAuthPlugin`: AWS IAM Identity Center 토큰 또는 AWS IAM Identity Center에 연결된 웹 ID 제공업체의 OpenID Connect(OIDC) JSON 기반 자격 증명 토큰(JWT)을 수락하는 권한 부여 플러그인입니다.
+  `JWT`: JSON 웹 토큰(JWT)을 사용하여 인증합니다.
+  `Ping`: PingFederate 서비스를 사용하여 인증합니다.
+  `Okta`: Okta 서비스를 사용하여 인증합니다.

이 파라미터는 선택 사항입니다.

## Port \$1 PortNumber
<a name="odbc20-port-option"></a>
+ **기본값** - 5439
+ **데이터 형식** – 정수

Amazon Redshift 서버가 클라이언트 연결을 수신 대기하는 데 사용하는 TCP 포트의 번호입니다.

이 파라미터는 선택 사항입니다.

## preferred\$1role
<a name="odbc20-preferred-role-option"></a>
+ **기본값** – 없음
+ **데이터 형식** – 문자열

Amazon Redshift에 연결하는 동안 수임하려는 역할입니다. IAM 인증에 사용됩니다.

이 파라미터는 선택 사항입니다.

## 프로필
<a name="odbc20-profile-option"></a>
+ **기본값** – 없음
+ **데이터 형식** – 문자열

Amazon Redshift에 연결하기 위한 인증에 사용되는 사용자 AWS 프로필의 이름입니다.
+  인스턴스 프로파일 사용(Use Instance Profile) 파라미터(**InstanceProfile** 속성)가 1 \$1 TRUE로 설정된 경우 해당 설정이 우선하며 드라이버가 Amazon EC2 인스턴스 프로파일을 대신 사용합니다.
+  프로필이 포함된 보안 인증 파일의 기본 위치는 `~/.aws/Credentials`입니다. `AWS_SHARED_CREDENTIALS_FILE` 환경 변수를 사용하여 다른 보안 인증 파일을 가리킬 수 있습니다.

이 파라미터는 선택 사항입니다.

## provider\$1name
<a name="odbc20-provider-name-option"></a>
+ **기본값** – 없음
+ **데이터 형식** – 문자열

사용자가 CREATE IDENTITY PROVIDER 쿼리를 사용하여 생성한 인증 공급자입니다. 네이티브 Amazon Redshift 인증에 사용됩니다.

이 파라미터는 선택 사항입니다.

## ProxyHost
<a name="odbc20-proxyhost-option"></a>
+ **기본값** – 없음
+ **데이터 형식** – 문자열

연결하는 데 사용할 프록시 서버의 호스트 이름 또는 IP 주소입니다.

이 파라미터는 선택 사항입니다.

## ProxyPort
<a name="odbc20-proxyport-option"></a>
+ **기본값** – 없음
+ **데이터 형식** – 정수

프록시 서버가 클라이언트 연결을 수신 대기하는 데 사용하는 포트 번호입니다.

이 파라미터는 선택 사항입니다.

## ProxyPwd
<a name="odbc20-proxypwd-option"></a>
+ **기본 ValPrevious ODBC 드라이버 버전** - 없음
+ **데이터 형식** – 문자열

프록시 서버에 액세스하는 데 사용하는 암호입니다.

이 파라미터는 선택 사항입니다.

## ProxyUid
<a name="odbc20-proxyuid-option"></a>
+ **기본값** – 없음
+ **데이터 형식** – 문자열

프록시 서버에 액세스하는 데 사용하는 사용자 이름입니다.

이 파라미터는 선택 사항입니다.

## ReadOnly
<a name="odbc20-readonly-option"></a>
+ **기본값** - 0
+ **데이터 형식** – 부울

드라이버가 읽기 전용 모드인지 여부를 지정하는 부울 값입니다.
+  1 \$1 TRUE: 연결이 읽기 전용 모드이며 데이터 스토어에 쓸 수 없습니다.
+  0 \$1 FALSE: 연결이 읽기 전용 모드가 아니며 데이터 스토어에 쓸 수 있습니다.

이 파라미터는 선택 사항입니다.

## region
<a name="odbc20-region-option"></a>
+ **기본값** – 없음
+ **데이터 형식** – 문자열

클러스터가 있는 AWS 리전입니다.

이 파라미터는 선택 사항입니다.

## SecretAccessKey
<a name="odbc20-secretaccesskey-option"></a>
+ **기본값** – 없음
+ **데이터 형식** – 문자열

 사용자 또는 역할에 대한 IAM 비밀 키입니다. 이 파라미터를 설정할 경우 **AccessKeyID**도 설정해야 합니다 

이 파라미터는 선택 사항입니다.

## SessionToken
<a name="odbc20-sessiontoken-option"></a>
+ **기본값** – 없음
+ **데이터 형식** – 문자열

 인증에 사용하는 IAM 역할과 연결된 임시 IAM 세션 토큰입니다.

이 파라미터는 선택 사항입니다.

## Server \$1 HostName \$1 Host
<a name="odbc20-server-option"></a>
+ **기본값** – 없음
+ **데이터 형식** – 문자열

연결할 엔드포인트 서버입니다.

이 파라미터는 필수 사항입니다.

## ssl\$1insecure
<a name="odbc20-ssl-insecure-option"></a>
+ **기본값** - 0
+ **데이터 형식** – 부울

드라이버가 IdP 서버 인증서의 신뢰성을 확인하는지 여부를 지정하는 부울 값입니다.
+  1 \$1 TRUE: 드라이버가 IdP 서버 인증서의 신뢰성을 확인하지 않습니다.
+  0 \$1 FALSE: 드라이버가 IdP 서버 인증서의 신뢰성을 확인합니다.

이 파라미터는 선택 사항입니다.

## SSLMode
<a name="odbc20-sslmode-option"></a>
+ **기본값** – `verify-ca`
+ **데이터 형식** – 문자열

Amazon Redshift 연결 시 사용할 SSL 인증서 검증 모드입니다. 다음과 같은 값이 가능합니다.
+  `verify-full`: SSL, 신뢰할 수 있는 인증 기관 및 인증서와 일치하는 서버 이름을 사용해서만 연결합니다.
+  `verify-ca`: SSL 및 신뢰할 수 있는 인증 기관을 사용해서만 연결합니다.
+  `require`: SSL을 사용해서만 연결합니다.
+  `prefer`: 가능한 경우 SSL을 사용하여 연결합니다. 그렇지 않으면 SSL을 사용하지 않고 연결합니다.
+  `allow`: 기본적으로 SSL을 사용하지 않고 연결합니다. 서버에서 SSL 연결을 요구하는 경우 SSL을 사용합니다.
+  `disable`: SSL을 사용하지 않고 연결합니다.

이 파라미터는 선택 사항입니다.

## StsConnectionTimeout
<a name="odbc20-stsconnectiontimeout-option"></a>
+ **기본값** - 0
+ **데이터 형식** – 정수

IAM 연결의 최대 대기 시간(초)입니다. 0으로 설정되거나 지정되지 않은 경우, 드라이버는 각 AWS STS 호출에 대해 60초 동안 대기합니다.

이 파라미터는 선택 사항입니다.

## StsEndpointUrl
<a name="odbc20-stsendpointurl-option"></a>
+ **기본값** – 없음
+ **데이터 형식** – 문자열

이 옵션은 AWS Security Token Service(AWS STS)와 통신하는 데 사용되는 재정의 엔드포인트를 지정합니다..

이 파라미터는 선택 사항입니다.

## 토큰
<a name="jdbc20-token-option"></a>
+ **기본값** – 없음
+ **데이터 형식** – 문자열

AWS IAM Identity Center에서 제공한 액세스 토큰 또는 AWS IAM Identity Center와 연결된 웹 ID 제공업체가 제공한 OpenID Connect(OIDC) JSON 웹 토큰(JWT)입니다. 애플리케이션은 AWS IAM Identity Center 또는 AWS IAM Identity Center와 연결된 자격 증명 공급자를 통해 애플리케이션 사용자를 인증하여 이 토큰을 생성해야 합니다.

이 파라미터는 `IdpTokenAuthPlugin`과 함께 작동합니다.

## token\$1type
<a name="jdbc20-token-type-option"></a>
+ **기본값** – 없음
+ **데이터 형식** – 문자열

`IdpTokenAuthPlugin`에서 사용되는 토큰 유형입니다.

다음 값을 지정할 수 있습니다.

**ACCESS\$1TOKEN**  
AWS IAM Identity Center에서 제공한 액세스 토큰을 사용하는 경우 이 값을 입력합니다.

**EXT\$1JWT**  
AWS IAM Identity Center와 통합된 웹 기반 ID 제공업체가 제공하는 OpenID Connect(OIDC) JSON 웹 토큰(JWT)을 사용하는 경우 이 값을 입력합니다.

이 파라미터는 `IdpTokenAuthPlugin`과 함께 작동합니다.

## UID \$1 User \$1 LogonID
<a name="odbc20-uid-option"></a>
+ **기본값** – 없음
+ **데이터 형식** – 문자열

Amazon Redshift 서버에 액세스하는 데 사용하는 사용자 이름입니다.

데이터베이스 인증을 사용하는 경우 이 파라미터가 필요합니다.

## UseUnicode
<a name="odbc20-useunicode-option"></a>
+ **기본값** - 0
+ **데이터 형식** – 부울

드라이버가 Redshift 데이터를 유니코드 또는 일반 SQL 유형으로 반환할지 여부를 지정하는 부울입니다.
+  1 \$1 TRUE: 드라이버가 문자 데이터 유형에 대해 와이드 SQL 유형을 반환합니다.
  + SQL\$1CHAR 대신 SQL\$1WCHAR가 반환됩니다.
  + SQL\$1VARCHAR 대신 SQL\$1WVARCHAR가 반환됩니다.
  + SQL\$1LONGVARCHAR 대신 SQL\$1WLONGVARCHAR가 반환됩니다.
+  0 \$1 FALSE: 드라이버가 문자 데이터 유형에 대해 일반 SQL 유형을 반환합니다.
  + SQL\$1WCHAR 대신 SQL\$1CHAR가 반환됩니다.
  + SQL\$1WVARCHAR 대신 SQL\$1VARCHAR가 반환됩니다.
  + SQL\$1WLONGVARCHAR 대신 SQL\$1LONGVARCHAR가 반환됩니다.

이 파라미터는 선택 사항입니다. 드라이버 버전 2.1.15 이상에서 사용할 수 있습니다.

## web\$1identity\$1token
<a name="odbc20-web-identity-token-option"></a>
+ **기본값** – 없음
+ **데이터 형식** – 문자열

자격 증명 공급자가 제공하는 OAUTH 토큰입니다. JWT 플러그인에서 사용됩니다.

**plugin\$1name** 파라미터를 BasicJwtCredentialsProvider로 설정한 경우 이 파라미터가 필요합니다.

# 이전 ODBC 드라이버 버전
<a name="odbc20-previous-versions"></a>

도구에 특정 버전의 드라이버가 필요한 경우에만 Amazon Redshift ODBC 드라이버 버전 2.x의 이전 버전을 다운로드합니다.

## Microsoft Windows용 이전 ODBC 드라이버 버전 사용
<a name="odbc20-previous-versions-windows"></a>

Microsoft Windows용 Amazon Redshift ODBC 드라이버 버전 2.x의 이전 버전은 다음과 같습니다.
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.14.0/AmazonRedshiftODBC64-2.1.14.0.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.14.0/AmazonRedshiftODBC64-2.1.14.0.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.13.0/AmazonRedshiftODBC64-2.1.13.0.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.13.0/AmazonRedshiftODBC64-2.1.13.0.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.12.0/AmazonRedshiftODBC64-2.1.12.0.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.12.0/AmazonRedshiftODBC64-2.1.12.0.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.11.0/AmazonRedshiftODBC64-2.1.11.0.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.11.0/AmazonRedshiftODBC64-2.1.11.0.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.10.0/AmazonRedshiftODBC64-2.1.10.0.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.10.0/AmazonRedshiftODBC64-2.1.10.0.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.9.0/AmazonRedshiftODBC64-2.1.9.0.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.9.0/AmazonRedshiftODBC64-2.1.9.0.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.9.0/AmazonRedshiftODBC64-2.1.9.0.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.9.0/AmazonRedshiftODBC64-2.1.9.0.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.8.0/AmazonRedshiftODBC64-2.1.8.0.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.8.0/AmazonRedshiftODBC64-2.1.8.0.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.7.0/AmazonRedshiftODBC64-2.1.7.0.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.7.0/AmazonRedshiftODBC64-2.1.7.0.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.6.0/AmazonRedshiftODBC64-2.1.6.0.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.6.0/AmazonRedshiftODBC64-2.1.6.0.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.4.0/AmazonRedshiftODBC64-2.1.4.0.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.4.0/AmazonRedshiftODBC64-2.1.4.0.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.3.0/AmazonRedshiftODBC64-2.1.3.0.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.3.0/AmazonRedshiftODBC64-2.1.3.0.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.2.0/AmazonRedshiftODBC64-2.1.2.0.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.2.0/AmazonRedshiftODBC64-2.1.2.0.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.1.0/AmazonRedshiftODBC64-2.1.1.0.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.1.0/AmazonRedshiftODBC64-2.1.1.0.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.0.0/AmazonRedshiftODBC64-2.1.0.0.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.0.0/AmazonRedshiftODBC64-2.1.0.0.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.1.0/AmazonRedshiftODBC64-2.0.1.0.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.1.0/AmazonRedshiftODBC64-2.0.1.0.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.11/AmazonRedshiftODBC64-2.0.0.11.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.11/AmazonRedshiftODBC64-2.0.0.11.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.9/AmazonRedshiftODBC64-2.0.0.9.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.9/AmazonRedshiftODBC64-2.0.0.9.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.8/AmazonRedshiftODBC64-2.0.0.8.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.8/AmazonRedshiftODBC64-2.0.0.8.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.7/AmazonRedshiftODBC64-2.0.0.7.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.7/AmazonRedshiftODBC64-2.0.0.7.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.6/AmazonRedshiftODBC64-2.0.0.6.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.6/AmazonRedshiftODBC64-2.0.0.6.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.5/AmazonRedshiftODBC64-2.0.0.5.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.5/AmazonRedshiftODBC64-2.0.0.5.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.3/AmazonRedshiftODBC64-2.0.0.3.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.3/AmazonRedshiftODBC64-2.0.0.3.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.1/AmazonRedshiftODBC64-2.0.0.1.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.1/AmazonRedshiftODBC64-2.0.0.1.msi) 

## Linux용 이전 ODBC 드라이버 버전 사용
<a name="odbc20-previous-versions-linux"></a>

Linux용 Amazon Redshift ODBC 드라이버 버전 2.x의 이전 버전은 다음과 같습니다.
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.14.0/AmazonRedshiftODBC-64-bit-2.1.14.0.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.14.0/AmazonRedshiftODBC-64-bit-2.1.14.0.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.14.0/AmazonRedshiftODBC-64-bit-2.1.14.0.aarch64.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.14.0/AmazonRedshiftODBC-64-bit-2.1.14.0.aarch64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.13.0/AmazonRedshiftODBC-64-bit-2.1.13.0.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.13.0/AmazonRedshiftODBC-64-bit-2.1.13.0.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.13.0/AmazonRedshiftODBC-64-bit-2.1.13.0.aarch64.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.13.0/AmazonRedshiftODBC-64-bit-2.1.13.0.aarch64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.12.0/AmazonRedshiftODBC-64-bit-2.1.12.0.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.12.0/AmazonRedshiftODBC-64-bit-2.1.12.0.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.12.0/AmazonRedshiftODBC-64-bit-2.1.12.0.aarch64.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.12.0/AmazonRedshiftODBC-64-bit-2.1.12.0.aarch64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.11.0/AmazonRedshiftODBC-64-bit-2.1.11.0.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.11.0/AmazonRedshiftODBC-64-bit-2.1.11.0.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.11.0/AmazonRedshiftODBC-64-bit-2.1.11.0.aarch64.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.11.0/AmazonRedshiftODBC-64-bit-2.1.11.0.aarch64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.10.0/AmazonRedshiftODBC-64-bit-2.1.10.0.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.10.0/AmazonRedshiftODBC-64-bit-2.1.10.0.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.9.0/AmazonRedshiftODBC-64-bit-2.1.9.0.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.9.0/AmazonRedshiftODBC-64-bit-2.1.9.0.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.8.0/AmazonRedshiftODBC-64-bit-2.1.8.0.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.8.0/AmazonRedshiftODBC-64-bit-2.1.8.0.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.7.0/AmazonRedshiftODBC-64-bit-2.1.7.0.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.7.0/AmazonRedshiftODBC-64-bit-2.1.7.0.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.6.0/AmazonRedshiftODBC-64-bit-2.1.6.0.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.6.0/AmazonRedshiftODBC-64-bit-2.1.6.0.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.4.0/AmazonRedshiftODBC-64-bit-2.1.4.0.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.4.0/AmazonRedshiftODBC-64-bit-2.1.4.0.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.3.0/AmazonRedshiftODBC-64-bit-2.1.3.0.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.3.0/AmazonRedshiftODBC-64-bit-2.1.3.0.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.2.0/AmazonRedshiftODBC-64-bit-2.1.2.0.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.2.0/AmazonRedshiftODBC-64-bit-2.1.2.0.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.1.0/AmazonRedshiftODBC-64-bit-2.1.1.0.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.1.0/AmazonRedshiftODBC-64-bit-2.1.1.0.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.0.0/AmazonRedshiftODBC-64-bit-2.1.0.0.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.0.0/AmazonRedshiftODBC-64-bit-2.1.0.0.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.1.0/AmazonRedshiftODBC-64-bit-2.0.1.0.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.1.0/AmazonRedshiftODBC-64-bit-2.0.1.0.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.11/AmazonRedshiftODBC-64-bit-2.0.0.11.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.11/AmazonRedshiftODBC-64-bit-2.0.0.11.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.9/AmazonRedshiftODBC-64-bit-2.0.0.9.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.9/AmazonRedshiftODBC-64-bit-2.0.0.9.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.8/AmazonRedshiftODBC-64-bit-2.0.0.8.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.8/AmazonRedshiftODBC-64-bit-2.0.0.8.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.7/AmazonRedshiftODBC-64-bit-2.0.0.7.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.7/AmazonRedshiftODBC-64-bit-2.0.0.7.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.6/AmazonRedshiftODBC-64-bit-2.0.0.6.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.6/AmazonRedshiftODBC-64-bit-2.0.0.6.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.5/AmazonRedshiftODBC-64-bit-2.0.0.5.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.5/AmazonRedshiftODBC-64-bit-2.0.0.5.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.3/AmazonRedshiftODBC-64-bit-2.0.0.3.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.3/AmazonRedshiftODBC-64-bit-2.0.0.3.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.1/AmazonRedshiftODBC-64-bit-2.0.0.1.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.0.0.1/AmazonRedshiftODBC-64-bit-2.0.0.1.x86_64.rpm) 

## Apple macOS용 이전 ODBC 드라이버 버전 사용
<a name="odbc20-previous-versions-mac"></a>

Apple macOS용 Amazon Redshift ODBC 드라이버 버전 2.x의 이전 버전은 다음과 같습니다.
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.14.0/AmazonRedshiftODBC-64-bit.2.1.14.0.universal.pkg](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.14.0/AmazonRedshiftODBC-64-bit.2.1.14.0.universal.pkg) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.13.0/AmazonRedshiftODBC-64-bit.2.1.13.0.universal.pkg](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.13.0/AmazonRedshiftODBC-64-bit.2.1.13.0.universal.pkg) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.12.0/AmazonRedshiftODBC-64-bit.2.1.12.0.universal.pkg](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/2.1.12.0/AmazonRedshiftODBC-64-bit.2.1.12.0.universal.pkg) 

# ODBC 드라이버 버전 1.x 연결 구성
<a name="configure-odbc-connection"></a>

ODBC 연결을 사용하여 여러 서드 파티 SQL 클라이언트 도구 및 애플리케이션에서 Amazon Redshift 클러스터에 연결할 수 있습니다. 이를 위해 클라이언트 컴퓨터 또는 Amazon EC2 인스턴스에서 연결을 설정해야 합니다. 클라이언트 도구가 JDBC를 지원하는 경우에는 JDBC의 구성 용이성 때문에 ODBC가 아닌 JDBC 연결 유형을 사용하는 것이 좋을 수도 있습니다. 하지만 클라이언트 도구가 JDBC를 지원하지 않으면 이번 섹션의 단계에 따라 ODBC 연결을 구성해야 합니다.

Amazon Redshift는 Linux, Windows 및 macOS X 운영 체제용 64비트 ODBC 드라이버를 제공합니다. 32비트 ODBC 드라이버는 공급이 중단되었습니다. 긴급 보안 패치를 제외하고 추가 업데이트는 릴리스되지 않습니다.

ODBC 드라이버 기능과 사전 조건에 대한 최신 정보는 [Amazon Redshift ODBC 드라이버 릴리스 정보](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.3.1008/Release+Notes.pdf)를 참조하세요. 

Amazon Redshift ODBC 드라이버의 설치 및 구성 정보는 [Amazon Redshift ODBC Connector Installation and Configuration Guide](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.3.1008/Amazon+Redshift+ODBC+Connector+Install+Guide.pdf)(Amazon Redshift ODBC 커넥터 설치 및 구성 가이드)를 참조하세요. 

**Topics**
+ [ODBC URL 가져오기](obtain-odbc-url.md)
+ [Microsoft Windows에서 Amazon Redshift ODBC 드라이버 사용](install-odbc-driver-windows.md)
+ [Linux에서 Amazon Redshift ODBC 드라이버 사용](install-odbc-driver-linux.md)
+ [macOS X에서 Amazon Redshift ODBC 드라이버 사용](install-odbc-driver-mac.md)
+ [ODBC 드라이버 옵션](configure-odbc-options.md)
+ [이전 ODBC 드라이버 버전](odbc-previous-versions.md)

# ODBC URL 가져오기
<a name="obtain-odbc-url"></a>

Amazon Redshift는 Amazon Redshift 콘솔에 클러스터의 ODBC URL을 표시합니다. 이 URL에는 클라이언트 컴퓨터와 데이터베이스 간의 연결을 설정하는 정보가 포함되어 있습니다.

 ODBC URL의 형식은 다음과 같습니다. `Driver={driver};Server=endpoint;Database=database_name;UID=user_name;PWD=password;Port=port_number` 

위에 나와 있는 형식의 필드는 다음과 같은 값을 가집니다.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/obtain-odbc-url.html)

 앞에 있는 테이블의 필드에는 다음과 같은 특수 문자가 포함될 수 있습니다.

```
[]{}(),;?*=!@ 
```

 이러한 특수 문자를 사용하는 경우 값을 중괄호로 묶어야 합니다. 예를 들어, 연결 문자열의 암호 값 `Your;password123`은 `PWD={Your;password123};`으로 표시됩니다.

 `Field=value` 쌍은 세미콜론으로 구분되므로 `}` 및 `;` 조합은 그 사이의 공백 개수에 상관없이 `Field={value};` 쌍의 끝으로 간주됩니다. 필드 값에서 `};` 시퀀스를 사용하지 않는 것이 좋습니다. 예를 들어 암호 값을 `PWD={This is a passwor} ;d};`로 설정하면 암호는 `This is a passwor} ;`이 되고 URL에 오류가 발생합니다.

다음은 ODBC URL의 예입니다.

```
Driver={Amazon Redshift (x64)};
                    Server=examplecluster.abc123xyz789.us-west-2.redshift.amazonaws.com;
                    Database=dev; 
                    UID=adminuser;
                    PWD=insert_your_admin_user_password_here;
                    Port=5439
```

ODBC 연결을 만드는 방법에 대한 자세한 내용은 [클러스터 연결 문자열 찾기](connecting-connection-string.md) 섹션을 참조하세요.

# Microsoft Windows에서 Amazon Redshift ODBC 드라이버 사용
<a name="install-odbc-driver-windows"></a>

Amazon Redshift 데이터 웨어하우스에 액세스하는 클라이언트 컴퓨터에 Amazon Redshift ODBC 드라이버를 설치합니다. 드라이버를 설치하는 컴퓨터마다 최소 시스템 요구 사항을 충족해야 합니다. 최소 시스템 요구 사항에 대한 자세한 내용은 [Amazon Redshift ODBC 커넥터 설치 및 구성 안내서](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.3.1008/Amazon+Redshift+ODBC+Connector+Install+Guide.pdf)를 참조하세요. 

**Topics**
+ [Amazon Redshift ODBC 드라이버 다운로드 및 설치](odbc-driver-windows-how-to-install.md)
+ [ODBC 연결을 위한 시스템 DSN 항목 생성](create-dsn-odbc-windows.md)

# Amazon Redshift ODBC 드라이버 다운로드 및 설치
<a name="odbc-driver-windows-how-to-install"></a>

Windows 운영 체제용 Amazon Redshift ODBC 드라이버를 다운로드하려면 다음 절차를 따르세요. Amazon Redshift와 함께 사용하도록 인증되었고 특정 드라이버가 필요한 서드 파티 애플리케이션을 실행하고 있다면 이것과 다른 드라이버만 사용합니다.

**ODBC 드라이버를 설치하려면**

1. SQL 클라이언트 도구 또는 애플리케이션의 시스템 아키텍처에 따라 다음 중 하나를 다운로드합니다.
   + [64비트 ODBC 드라이버 버전 1.6.3](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.3.1008/AmazonRedshiftODBC64-1.6.3.1008.msi) 

     이 드라이버의 이름은 Amazon Redshift(x64)입니다.
   + [32비트 ODBC 드라이버 버전 1.4.52](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.52.1000/AmazonRedshiftODBC32-1.4.52.1000.msi) 

     이 드라이버의 이름은 Amazon Redshift(x86)입니다. 32비트 ODBC 드라이버는 공급이 중단되었습니다. 긴급 보안 패치를 제외하고 추가 업데이트는 릴리스되지 않습니다.
**참고**  
SQL 클라이언트 도구 또는 애플리케이션의 시스템 아키텍처와 일치하는 MSI 패키지를 다운로드하세요. 예를 들어 SQL 클라이언트 도구가 64비트라면 드라이버도 64비트를 설치해야 합니다.

    그런 다음 [Amazon Redshift ODBC 및 JDBC 드라이버 사용권 계약](https://s3.amazonaws.com/redshift-downloads/drivers/Amazon+Redshift+ODBC+and+JDBC+Driver+License+Agreement.pdf)을 다운로드하여 검토합니다. 

1.  .msi 파일을 두 번 클릭한 후 마법사의 단계에 따라 드라이버를 설치합니다.

# ODBC 연결을 위한 시스템 DSN 항목 생성
<a name="create-dsn-odbc-windows"></a>

ODBC 드라이버를 다운로드하여 설치한 후에는 데이터 원본 이름(DSN) 항목을 클라이언트 컴퓨터 또는 Amazon EC2 인스턴스에 추가합니다. SQL 클라이언트 도구는 이 데이터 원본을 사용하여 Amazon Redshift 데이터베이스에 연결합니다.

사용자 DSN 대신 시스템 DSN을 생성하는 것이 좋습니다. 일부 애플리케이션은 다른 사용자 계정을 사용하여 데이터를 로드합니다. 이러한 애플리케이션은 다른 사용자 계정으로 생성된 사용자 DSN을 감지하지 못할 수 있습니다.

**참고**  
AWS Identity and Access Management(IAM) 자격 증명 또는 자격 증명 공급자(IdP) 자격 증명을 사용한 인증의 경우 추가 단계가 필요합니다. 자세한 내용은 [5단계: IAM 자격 증명을 사용하도록 JDBC 또는 ODBC 연결 구성](generating-iam-credentials-steps.md#generating-iam-credentials-configure-jdbc-odbc) 섹션을 참조하세요.

시스템 DSN 항목을 생성하는 방법에 대한 자세한 내용은 [Amazon Redshift ODBC Connector Installation and Configuration Guide](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.3.1008/Amazon+Redshift+ODBC+Connector+Install+Guide.pdf)(Amazon Redshift ODBC 커넥터 설치 및 구성 가이드)를 참조하세요. 

**Windows에서 ODBC 연결을 위한 시스템 DSN 항목을 생성하려면**

1. **시작** 메뉴에서 **ODBC 데이터 원본**을 엽니다.

   Amazon Redshift에 연결하는 데 사용하는 클라이언트 애플리케이션과 동일한 비트를 가진 ODBC 데이터 원본 관리자를 선택해야 합니다.

1. **ODBC 데이터 원본 관리자(ODBC Data Source Administrator)**에서 **드라이버(Driver)** 탭을 선택하고 드라이버 폴더를 찾습니다.
   + **Amazon Redshift ODBC 드라이버(64비트)**
   + **Amazon Redshift ODBC 드라이버(32비트)**

1.  해당 컴퓨터의 모든 사용자가 이용할 수 있도록 드라이버를 구성하려면 **시스템 DSN(System DSN)** 탭을 선택하고, 본인의 사용자 계정에서만 이용할 수 있도록 드라이버를 구성하려면 **사용자 DSN(User DSN)** 탭을 선택합니다.

1.  **추가**를 선택합니다. **새 데이터 원본 생성(Create New Data Source)** 창이 열립니다.

1.  **Amazon Redshift** ODBC 드라이버를 선택하고 **완료(Finish)**를 선택합니다. **Amazon Redshift ODBC 드라이버 DSN 설정(Amazon Redshift ODBC Driver DSN Setup)** 창이 열립니다.

1. **연결 설정(Connection Settings)**에서 다음 정보를 입력하세요.
<a name="rs-mgmt-dsn"></a>
**데이터 소스 이름**  
데이터 소스 이름을 입력합니다. 나중에 클러스터 연결을 생성할 때 데이터 원본을 식별할 이름이라면 무엇이든 사용할 수 있습니다. 예를 들어 *Amazon Redshift 시작 안내서*에 따른 경우 `exampleclusterdsn`을 입력하면 이 DSN과 연결할 클러스터를 기억하기 쉽습니다.
<a name="rs-mgmt-server"></a>
**Server**  
Amazon Redshift 클러스터의 엔드포인트를 지정합니다. 이 정보는 Amazon Redshift 콘솔의 클러스터 세부 정보 페이지에서 찾을 수 있습니다. 자세한 내용은 [Amazon Redshift에서 연결 구성](configuring-connections.md) 섹션을 참조하세요.
<a name="rs-mgmt-port"></a>
**Port**  
데이터베이스가 사용하는 포트 번호를 입력합니다. 클러스터를 시작할 때 사용하도록 구성된 포트를 사용해야 합니다.
<a name="rs-mgmt-database"></a>
**데이터베이스**  
Amazon Redshift 데이터베이스의 이름을 입력합니다. 데이터베이스 이름을 지정하지 않고 클러스터를 시작한 경우 `dev`를 입력합니다. 그렇지 않으면 시작 프로세스 중에 선택한 이름을 사용합니다. *Amazon Redshift 시작 안내서*에 따른 경우 `dev`를 입력합니다.

1. **인증(Authentication)**에서 표준 또는 IAM 인증을 구성하는 구성 옵션을 지정합니다. 인증 옵션에 대한 자세한 내용은 *Amazon Redshift ODBC Connector Installation and Configuration Guide*의 "Configuring Authentication on Windows"를 참조하세요.

1. **SSL 설정(SSL Settings)**에서 다음 값을 지정합니다.
<a name="rs-mgmt-ssl-authentication"></a>
**SSL 인증**  
SSL(Secure Sockets Layer)의 처리 모드를 선택합니다. 테스트 환경에서는 `prefer`를 사용할 수 있습니다. 그러나 프로덕션 환경 및 안전한 데이터 교환이 필요한 경우 `verify-ca` 또는 `verify-full`을 사용합니다. Windows에서 SSL을 사용하는 방법에 대한 자세한 내용은 *Amazon Redshift ODBC Connector Installation and Configuration Guide*의 "Configuring SSL Verification on Windows" 섹션을 참조하세요.

1. **추가 옵션(Additional Options)**에서 쿼리 결과를 SQL 클라이언트 도구 또는 애플리케이션에 반환하는 방법에 대한 옵션을 지정합니다. 자세한 내용은 *Amazon Redshift ODBC Connector Installation and Configuration Guide*의 "Configuring Additional Options on Windows" 섹션을 참조하세요.

1. **로깅 옵션(Logging Options)**에서 로깅 옵션에 대한 값을 지정합니다. 자세한 내용은 *Amazon Redshift ODBC Connector Installation and Configuration Guide*의 "Configuring Logging Options on Windows" 섹션을 참조하세요.

   그 다음에 **확인(OK)**를 선택합니다.

1. **데이터 형식 옵션(Data Type Options)**에서 데이터 형식에 대한 값을 지정합니다. 자세한 내용은 *Amazon Redshift ODBC Connector Installation and Configuration Guide*의 "Configuring Data Type Options on Windows" 섹션을 참조하세요.

   그 다음에 **확인(OK)**를 선택합니다.

1. **테스트**를 선택합니다. 클라이언트 컴퓨터가 Amazon Redshift 데이터베이스에 연결할 수 있으면 **연결 성공(Connection successful)** 메시지가 표시됩니다.

    클라이언트 컴퓨터가 데이터베이스에 연결하지 못하는 경우에는 가능한 문제를 해결할 수 있습니다. 자세한 내용은 [Amazon Redshift 연결 문제 해결](troubleshooting-connections.md) 섹션을 참조하세요.

1. Windows에서 TCP keepalive를 구성하여 연결 시간 초과가 발생하지 않도록 합니다. Windows에서 TCP KeepAlive를 구성하는 방법에 대한 자세한 내용은 *Amazon Redshift ODBC Connector Installation and Configuration Guide*를 참조하세요.

1. 문제 해결에 도움이 되도록 로깅을 구성합니다. Windows에서 로깅을 구성하는 방법에 대한 자세한 내용은 *Amazon Redshift ODBC Connector Installation and Configuration Guide*를 참조하세요.

# Linux에서 Amazon Redshift ODBC 드라이버 사용
<a name="install-odbc-driver-linux"></a>

Amazon Redshift 데이터 웨어하우스에 액세스하는 클라이언트 컴퓨터에 Amazon Redshift ODBC 드라이버를 설치합니다. 드라이버를 설치하는 컴퓨터마다 최소 시스템 요구 사항을 충족해야 합니다. 최소 시스템 요구 사항에 대한 자세한 내용은 [Amazon Redshift ODBC 커넥터 설치 및 구성 안내서](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.3.1008/Amazon+Redshift+ODBC+Connector+Install+Guide.pdf)를 참조하세요. 

**Topics**
+ [Amazon Redshift ODBC 드라이버 다운로드 및 설치](odbc-driver-linux-how-to-install.md)
+ [ODBC 드라이버 관리자를 사용하여 드라이버 구성](odbc-driver-configure-linux.md)

# Amazon Redshift ODBC 드라이버 다운로드 및 설치
<a name="odbc-driver-linux-how-to-install"></a>

이번 섹션에서 설명하는 단계에 따라 지원되는 Linux 배포에서 Amazon Redshift ODBC 드라이버를 다운로드하고 설치합니다. 설치 프로세스는 드라이버 파일을 다음 디렉터리에 설치합니다.
+ `/opt/amazon/redshiftodbc/lib/64`(64비트 드라이버의 경우)
+ `/opt/amazon/redshiftodbc/ErrorMessages`
+ `/opt/amazon/redshiftodbc/Setup`
+  `/opt/amazon/redshiftodbc/lib/32`(32비트 드라이버의 경우)<a name="rs-mgmt-install-odbc-drivers-linux"></a>

**Amazon Redshift ODBC 드라이버를 설치하려면**

1. SQL 클라이언트 도구 또는 애플리케이션의 시스템 아키텍처에 따라 다음 중 하나를 다운로드합니다.
   + [64비트 RPM 드라이버 버전 1.6.3](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.3.1008/AmazonRedshiftODBC-64-bit-1.6.3.1008-1.x86_64.rpm) 
   + [64비트 Debian 드라이버 버전 1.6.3](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.3.1008/AmazonRedshiftODBC-64-bit-1.6.3.1008-1.x86_64.deb) 
   + [32비트 RPM 드라이버 버전 1.4.52](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.52.1000/AmazonRedshiftODBC-32-bit-1.4.52.1000-1.i686.rpm) 

   이러한 드라이버의 이름은 각각 Amazon Redshift ODBC 드라이버입니다. 32비트 ODBC 드라이버는 공급이 중단되었습니다. 긴급 보안 패치를 제외하고 추가 업데이트는 릴리스되지 않습니다.
**참고**  
SQL 클라이언트 도구 또는 애플리케이션의 시스템 아키텍처와 일치하는 패키지를 다운로드하세요. 예를 들어 클라이언트 도구가 64비트라면 드라이버도 64비트를 설치해야 합니다.

    그런 다음 [Amazon Redshift ODBC 및 JDBC 드라이버 사용권 계약](https://s3.amazonaws.com/redshift-downloads/drivers/Amazon+Redshift+ODBC+and+JDBC+Driver+License+Agreement.pdf)을 다운로드하여 검토합니다. 

1. 패키지를 다운로드한 위치로 이동한 다음, 다음 명령 중 하나를 실행합니다. Linux 배포판에 따라 올바른 명령을 사용하세요.
   + RHEL 및 CentOS 운영 체제에서 다음 명령을 실행합니다.

     ```
     yum -nogpgcheck localinstall RPMFileName
     ```

     *`RPMFileName`*을 RPM 패키지 파일 이름으로 바꿉니다. 예를 들어, 다음은 64비트 드라이버를 설치하는 명령입니다.

     ```
     yum -nogpgcheck localinstall AmazonRedshiftODBC-64-bit-1.x.xx.xxxx-x.x86_64.rpm
     ```
   + SLES에서 다음 명령을 실행합니다.

     ```
     zypper install RPMFileName
     ```

     *`RPMFileName`*을 RPM 패키지 파일 이름으로 바꿉니다. 예를 들어, 다음은 64비트 드라이버를 설치하는 명령입니다.

     ```
     zypper install AmazonRedshiftODBC-1.x.x.xxxx-x.x86_64.rpm
     ```
   + Debian에서 다음 명령을 실행합니다.

     ```
     sudo apt install ./DEBFileName.deb
     ```

     `DEBFileName.deb`를 Debian 패키지 파일 이름으로 바꿉니다. 예를 들어, 다음은 64비트 드라이버를 설치하는 명령입니다.

     ```
     sudo apt install ./AmazonRedshiftODBC-1.x.x.xxxx-x.x86_64.deb
     ```

**중요**  
드라이버 설치를 마친 후에는 시스템에서 사용할 수 있도록 구성해야 합니다. 드라이버 구성에 대한 자세한 내용은 [ODBC 드라이버 관리자를 사용하여 드라이버 구성ODBC 드라이버 관리자를 사용하여 드라이버 구성](odbc-driver-configure-linux.md) 섹션을 참조하세요.

# ODBC 드라이버 관리자를 사용하여 드라이버 구성
<a name="odbc-driver-configure-linux"></a>

Linux 운영 체제에서 ODBC 드라이버 관리자를 사용하여 ODBC 연결 설정을 구성합니다. ODBC 드라이버 관리자는 구성 파일을 사용하여 ODBC 데이터 원본과 드라이버를 정의 및 구성합니다. 또한 사용하는 운영 체제에 따라 ODBC 드라이버 관리자도 달라집니다. Linux의 경우 unixODBC 드라이버 관리자입니다.

Amazon Redshift ODBC 드라이버 구성에 대해 지원되는 ODBC 드라이버 관리자에 관한 자세한 내용은 Linux 운영 체제의 경우 [Linux에서 Amazon Redshift ODBC 드라이버 사용Linux에서 ODBC 드라이버 사용](install-odbc-driver-linux.md) 섹션을 참조하시기 바랍니다. 또한 [Amazon Redshift ODBC Connector Installation and Configuration Guide](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.3.1008/Amazon+Redshift+ODBC+Connector+Install+Guide.pdf)(Amazon Redshift ODBC 커넥터 설치 및 구성 가이드)에서 "Specifying ODBC Driver Managers on Non- Windows Machines"(Windows 이외의 컴퓨터에서 ODBC 드라이버 관리자 지정)를 참조하세요. 링크를 사용합니다.

Amazon Redshift ODBC 드라이버 구성에 필요한 파일은 `amazon.redshiftodbc.ini`, `odbc.ini` 및 `odbcinst.ini`입니다.

드라이버를 기본 위치에 설치한 경우에는 `amazon.redshiftodbc.ini` 구성 파일이 다음 디렉터리 중 한 곳에 만들어집니다.
+ `/opt/amazon/redshiftodbc/lib/64`(Linux 운영 체제의 64비트 드라이버의 경우)
+ `/opt/amazon/redshiftodbc/lib/32`(Linux 운영 체제의 32비트 드라이버의 경우)

또한 Linux의 `/opt/amazon/redshiftodbc/Setup`에는 `odbc.ini` 샘플과 `odbcinst.ini` 파일이 있습니다. 이러한 파일을 Amazon Redshift ODBC 드라이버 및 데이터 원본 이름(DSN)을 구성하는 예제로 사용할 수 있습니다.

Amazon Redshift ODBC 드라이버 설치 디렉터리를 구성 파일용으로 사용하는 것은 바람직하지 않습니다. `Setup` 디렉터리의 샘플 파일은 오직 예를 제공하기 위한 용도일 뿐입니다. 나중에 Amazon Redshift ODBC 드라이버를 다시 설치하거나 새 버전으로 업그레이드하면 설치 디렉터리를 덮어씁니다. 그러면 이러한 파일에 대한 변경 사항이 손실됩니다.

이를 방지하려면 `amazon.redshiftodbc.ini` 파일을 설치 디렉터리가 아닌 다른 디렉터리에 복사합니다. 이 파일을 사용자의 홈 디렉터리로 복사하는 경우에는 파일 이름 앞에 마침표(.)를 추가하여 숨김 파일로 지정하세요.

`odbc.ini` 및 `odbcinst.ini` 파일의 경우 사용자의 홈 디렉터리에 있는 구성 파일을 사용하거나 다른 디렉터리에 새 버전을 생성합니다. 기본적으로 Linux 운영 체제는 사용자의 홈 디렉터리(`/home/$USER` 또는 `~/`)에 `odbc.ini` 파일과 `odbcinst.ini` 파일이 있어야 합니다. 이러한 기본 파일은 숨김 파일이기 때문에 파일 이름 앞에 마침표(.)가 있습니다. 이러한 파일은 `-a` 플래그를 사용하여 디렉터리 내용을 나열하는 경우에만 표시됩니다.

`odbc.ini` 및 `odbcinst.ini` 파일에 대해 어떤 옵션을 선택하든지 파일을 수정하여 드라이버 및 DSN 구성 정보를 추가합니다. 새로운 파일을 생성할 때도 마찬가지로 환경 변수를 설정하여 구성 파일의 위치를 지정해야 합니다.

기본적으로 ODBC 드라이버 관리자는 홈 디렉터리에 있는 숨겨진 버전의 `odbc.ini` 및 `odbcinst.ini` 구성 파일(.`odbc.ini` 및 .`odbcinst.ini`)을 사용하도록 구성됩니다. 또한 드라이버 설치 디렉터리의 `amazon.redshiftodbc.ini` 하위 폴더에 있는 `/lib` 파일을 사용하도록 구성됩니다. 이러한 구성 파일을 다른 위치에 저장하는 경우 드라이버 관리자가 파일을 찾을 수 있도록 다음에 설명된 환경 변수를 설정합니다. 자세한 내용은 [Amazon Redshift ODBC Connector Installation and Configuration Guide](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.3.1008/Amazon+Redshift+ODBC+Connector+Install+Guide.pdf)(Amazon Redshift ODBC 커넥터 설치 및 구성 가이드)에서 "Specifying the Locations of the Driver Configuration Files"(드라이버 구성 파일 위치 지정)를 참조하세요. 링크를 사용합니다.

## Linux 운영 체제에서 데이터 소스 이름 작성
<a name="configure-odbc-ini-file"></a>

 DSN(데이터 원본 이름)을 사용하여 데이터 저장소에 연결할 경우 DSN을 정의하도록 `odbc.ini` 파일을 구성합니다. `odbc.ini` 파일의 속성을 설정하여 데이터 저장소에 대한 연결 정보를 지정하는 DSN을 생성합니다.

`odbc.ini` 파일 구성 방법에 대한 자세한 내용은 [Amazon Redshift ODBC Connector Installation and Configuration Guide](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.3.1008/Amazon+Redshift+ODBC+Connector+Install+Guide.pdf)(Amazon Redshift ODBC 커넥터 설치 및 구성 가이드)의 "Creating a Data Source Name on a Non-Windows Machine"(Windows 이외의 컴퓨터에서 데이터 소스 이름 생성)을 참조하세요. 

 Linux 운영 체제에서 사용하는 형식은 다음과 같습니다.

```
[ODBC Data Sources]
driver_name=dsn_name

[dsn_name]
Driver=path/driver_file

Host=cluster_endpoint
Port=port_number
Database=database_name
locale=locale
```

다음 예에서는 Linux 운영 체제에서 64비트 ODBC 드라이버를 사용하는 odbc.ini에 대한 구성을 보여줍니다.

```
[ODBC Data Sources]
Amazon_Redshift_x64=Amazon Redshift (x64)

[Amazon Redshift (x64)]
Driver=/opt/amazon/redshiftodbc/lib/64/libamazonredshiftodbc64.so
Host=examplecluster.abc123xyz789.us-west-2.redshift.amazonaws.com
Port=5932
Database=dev
locale=en-US
```

다음 예에서는 Linux 운영 체제에서 32비트 ODBC 드라이버를 사용하는 odbc.ini에 대한 구성을 보여줍니다.

```
[ODBC Data Sources]
Amazon_Redshift_x32=Amazon Redshift (x86)

[Amazon Redshift (x86)]
Driver=/opt/amazon/redshiftodbc/lib/32/libamazonredshiftodbc32.so
Host=examplecluster.abc123xyz789.us-west-2.redshift.amazonaws.com
Port=5932
Database=dev
locale=en-US
```

## Linux 운영 체제에서 DSN 없이 연결 구성
<a name="configure-odbcinst-ini-file"></a>

DSN이 없는 연결을 통해 데이터 저장소에 연결하려면 `odbcinst.ini` 파일에 드라이버를 정의합니다. 그런 다음 애플리케이션에 DSN이 없는 연결 문자열을 제공합니다.

이 경우 `odbcinst.ini` 파일을 구성하는 방법에 대한 자세한 내용은 [Amazon Redshift ODBC Connector Installation and Configuration Guide](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.3.1008/Amazon+Redshift+ODBC+Connector+Install+Guide.pdf)(Amazon Redshift ODBC 커넥터 설치 및 구성 가이드)에서 "Configuring a DSN-less Connection on a Non-Windows Machine"(Windows 이외의 컴퓨터에서 DSN이 없는 연결 구성)을 참조하세요. 링크를 사용합니다.

Linux 운영 체제에서 사용하는 형식은 다음과 같습니다.

```
[ODBC Drivers]
driver_name=Installed
...
                            
[driver_name]
Description=driver_description
Driver=path/driver_file
    
...
```

다음 예에서는 64비트 드라이버가 Linux 운영 체제의 기본 디렉터리에 설치되어 있는 경우의 `odbcinst.ini` 구성을 보여줍니다.

```
[ODBC Drivers]
Amazon Redshift (x64)=Installed

[Amazon Redshift (x64)]
Description=Amazon Redshift ODBC Driver (64-bit)
Driver=/opt/amazon/redshiftodbc/lib/64/libamazonredshiftodbc64.so
```

다음 예에서는 32비트 드라이버가 Linux 운영 체제의 기본 디렉터리에 설치되어 있는 경우의 `odbcinst.ini` 구성을 보여줍니다.

```
[ODBC Drivers]
Amazon Redshift (x86)=Installed

[Amazon Redshift (x86)]
Description=Amazon Redshift ODBC Driver (32-bit)
Driver=/opt/amazon/redshiftodbc/lib/32/libamazonredshiftodbc32.so
```

## 환경 변수 구성
<a name="rs-mgmt-config-global-env-variables"></a>

올바른 ODBC 드라이버 관리자를 사용하여 올바른 드라이버를 로드합니다. 이를 위해 라이브러리 경로 환경 변수를 설정합니다. 자세한 내용은 [Amazon Redshift ODBC Connector Installation and Configuration Guide](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.3.1008/Amazon+Redshift+ODBC+Connector+Install+Guide.pdf)(Amazon Redshift ODBC 커넥터 설치 및 구성 가이드)의 "Specifying ODBC Driver Managers on Non-Windows Machines"(Windows 이외의 컴퓨터에서 ODBC 드라이버 관리자 지정)를 참조하세요. 링크를 사용합니다.

기본적으로 ODBC 드라이버 관리자는 홈 디렉터리에 있는 숨겨진 버전의 `odbc.ini` 및 `odbcinst.ini` 구성 파일(.`odbc.ini` 및 .`odbcinst.ini`)을 사용하도록 구성됩니다. 또한 드라이버 설치 디렉터리의 `amazon.redshiftodbc.ini` 하위 폴더에 있는 `/lib` 파일을 사용하도록 구성됩니다. 이러한 구성 파일을 다른 위치에 저장하는 경우 드라이버 관리자가 파일을 찾을 수 있도록 환경 변수를 지정합니다. 자세한 내용은 *Amazon Redshift ODBC Connector Installation and Configuration Guide*의 "Specifying the Locations of the Driver Configuration Files" 섹션을 참조하세요.

## 연결 기능 구성
<a name="connection-config-features"></a>

ODBC 설정에 대해 다음 연결 기능을 구성할 수 있습니다.
+ 자격 증명을 제공하고 Amazon Redshift 데이터베이스 연결을 인증하도록 ODBC 드라이버를 구성합니다.
+ 보안 소켓 계층(SSL)이 사용 설정된 Amazon Redshift 서버에 연결하는 경우 SSL에서 사용할 수 있는 소켓에 연결하도록 ODBC 드라이버를 구성합니다.
+ 프록시 서버를 통해 Amazon Redshift에 연결하도록 ODBC 드라이버를 구성합니다.
+ 쿼리가 너무 많은 메모리를 소비하지 않게 쿼리 처리 모드를 사용하도록 ODBC 드라이버를 구성합니다.
+ 프록시 서버를 통해 IAM 인증 프로세스를 통과하도록 ODBC 드라이버를 구성합니다.
+ TCP keepalive를 사용하여 연결 시간 초과가 발생하지 않도록 ODBC 드라이버를 구성합니다.

이러한 연결 기능에 대한 자세한 내용은 [Amazon Redshift ODBC Connector Installation and Configuration Guide](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.3.1008/Amazon+Redshift+ODBC+Connector+Install+Guide.pdf)(Amazon Redshift ODBC 커넥터 설치 및 구성 가이드)를 참조하세요. 

# macOS X에서 Amazon Redshift ODBC 드라이버 사용
<a name="install-odbc-driver-mac"></a>

Amazon Redshift 데이터 웨어하우스에 액세스하는 클라이언트 컴퓨터에 드라이버를 설치합니다. 드라이버를 설치하는 컴퓨터마다 최소 시스템 요구 사항을 충족해야 합니다. 최소 시스템 요구 사항에 대한 자세한 내용은 [Amazon Redshift ODBC 커넥터 설치 및 구성 안내서](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.3.1008/Amazon+Redshift+ODBC+Connector+Install+Guide.pdf)를 참조하세요. 

**Topics**
+ [Amazon Redshift ODBC 드라이버 다운로드 및 설치](odbc-driver-mac-how-to-install.md)
+ [ODBC 드라이버 관리자를 사용하여 드라이버 구성](odbc-driver-configure-mac.md)

# Amazon Redshift ODBC 드라이버 다운로드 및 설치
<a name="odbc-driver-mac-how-to-install"></a>

이 섹션의 단계에 따라 지원되는 macOS X 버전에 Amazon Redshift ODBC 드라이버를 다운로드하고 설치합니다. 설치 프로세스는 드라이버 파일을 다음 디렉터리에 설치합니다.
+ `/opt/amazon/redshift/lib/universal`
+ `/opt/amazon/redshift/ErrorMessages`
+ `/opt/amazon/redshift/Setup`<a name="rs-mgmt-install-odbc-drivers-mac"></a>

**macOS X에 Amazon Redshift ODBC 드라이버를 설치하려면**

1. macOS X에 Amazon Redshift ODBC 드라이버를 설치하려면 [macOS 드라이버 버전 1.6.3](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.3.1008/AmazonRedshiftODBC-64-bit.1.6.3.1008.universal.pkg)을 다운로드합니다. 

   그런 다음 [Amazon Redshift ODBC 및 JDBC 드라이버 사용권 계약](https://s3.amazonaws.com/redshift-downloads/drivers/Amazon+Redshift+ODBC+and+JDBC+Driver+License+Agreement.pdf)을 다운로드하여 검토합니다. 

1. **AmazonRedshiftODBC.pkg**를 두 번 클릭하여 설치 프로그램을 실행합니다.

1. 설치 프로그램의 단계에 따라 드라이버 설치 프로세스를 마칩니다. 설치를 수행하려면 라이선스 계약 조건에 동의해야 합니다.

**중요**  
드라이버 설치를 마친 후에는 시스템에서 사용할 수 있도록 구성해야 합니다. 드라이버 구성에 대한 자세한 내용은 [ODBC 드라이버 관리자를 사용하여 드라이버 구성ODBC 드라이버 관리자를 사용하여 드라이버 구성](odbc-driver-configure-mac.md) 섹션을 참조하세요.

# ODBC 드라이버 관리자를 사용하여 드라이버 구성
<a name="odbc-driver-configure-mac"></a>

macOS X 운영 체제에서 ODBC 드라이버 관리자를 사용하여 ODBC 연결 설정을 구성합니다. ODBC 드라이버 관리자는 구성 파일을 사용하여 ODBC 데이터 원본과 드라이버를 정의 및 구성합니다. 또한 사용하는 운영 체제에 따라 ODBC 드라이버 관리자도 달라집니다. macOS X 운영 체제의 경우에는 iODBC 드라이버 관리자입니다.

Amazon Redshift ODBC 드라이버 구성에 대해 지원되는 ODBC 드라이버 관리자에 관한 자세한 내용은 macOS X 운영 체제의 경우 [macOS X에서 Amazon Redshift ODBC 드라이버 사용macOS X에서 ODBC 드라이버 사용](install-odbc-driver-mac.md) 섹션을 참조하시기 바랍니다. 또한 [Amazon Redshift ODBC Connector Installation and Configuration Guide](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.3.1008/Amazon+Redshift+ODBC+Connector+Install+Guide.pdf)(Amazon Redshift ODBC 커넥터 설치 및 구성 가이드)에서 "Specifying ODBC Driver Managers on Non- Windows Machines"(Windows 이외의 컴퓨터에서 ODBC 드라이버 관리자 지정)를 참조하세요. 링크를 사용합니다.

Amazon Redshift ODBC 드라이버 구성에 필요한 파일은 `amazon.redshiftodbc.ini`, `odbc.ini` 및 `odbcinst.ini`입니다.

기본 위치에 드라이버를 설치한 경우에는 `amazon.redshiftodbc.ini` 구성 파일이 `/opt/amazon/redshift/lib`에 있습니다.

또한 macOS X의 `/opt/amazon/redshift/Setup`에는 `odbc.ini` 샘플과 `odbcinst.ini` 파일이 있습니다. 이러한 파일을 Amazon Redshift ODBC 드라이버 및 데이터 원본 이름(DSN)을 구성하는 예제로 사용할 수 있습니다.

Amazon Redshift ODBC 드라이버 설치 디렉터리를 구성 파일용으로 사용하는 것은 바람직하지 않습니다. `Setup` 디렉터리의 샘플 파일은 오직 예를 제공하기 위한 용도일 뿐입니다. 나중에 Amazon Redshift ODBC 드라이버를 다시 설치하거나 새 버전으로 업그레이드하면 설치 디렉터리를 덮어씁니다. 그러면 이러한 파일에 대한 변경 사항이 손실됩니다.

이를 방지하려면 `amazon.redshiftodbc.ini` 파일을 설치 디렉터리가 아닌 다른 디렉터리에 복사합니다. 이 파일을 사용자의 홈 디렉터리로 복사하는 경우에는 파일 이름 앞에 마침표(.)를 추가하여 숨김 파일로 지정하세요.

`odbc.ini` 및 `odbcinst.ini` 파일의 경우 사용자의 홈 디렉터리에 있는 구성 파일을 사용하거나 다른 디렉터리에 새 버전을 생성합니다. 기본적으로 macOS X 운영 체제는 사용자의 홈 디렉터리(`/home/$USER` 또는 `~/`)에 `odbc.ini` 파일과 `odbcinst.ini` 파일이 있어야 합니다. 이러한 기본 파일은 숨김 파일이기 때문에 파일 이름 앞에 마침표(.)가 있습니다. 이러한 파일은 `-a` 플래그를 사용하여 디렉터리 내용을 나열하는 경우에만 표시됩니다.

`odbc.ini` 및 `odbcinst.ini` 파일에 대해 어떤 옵션을 선택하든지 파일을 수정하여 드라이버 및 DSN 구성 정보를 추가합니다. 새로운 파일을 생성할 때도 마찬가지로 환경 변수를 설정하여 구성 파일의 위치를 지정해야 합니다.

기본적으로 ODBC 드라이버 관리자는 홈 디렉터리에 있는 숨겨진 버전의 `odbc.ini` 및 `odbcinst.ini` 구성 파일(.`odbc.ini` 및 .`odbcinst.ini`)을 사용하도록 구성됩니다. 또한 드라이버 설치 디렉터리의 `amazon.redshiftodbc.ini` 하위 폴더에 있는 `/lib` 파일을 사용하도록 구성됩니다. 이러한 구성 파일을 다른 위치에 저장하는 경우 드라이버 관리자가 파일을 찾을 수 있도록 다음에 설명된 환경 변수를 설정합니다. 자세한 내용은 [Amazon Redshift ODBC Connector Installation and Configuration Guide](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.3.1008/Amazon+Redshift+ODBC+Connector+Install+Guide.pdf)(Amazon Redshift ODBC 커넥터 설치 및 구성 가이드)에서 "Specifying the Locations of the Driver Configuration Files"(드라이버 구성 파일 위치 지정)를 참조하세요. 링크를 사용합니다.

## macOS X 운영 체제에서 데이터 소스 이름 작성
<a name="configure-odbc-ini-file"></a>

 DSN(데이터 원본 이름)을 사용하여 데이터 저장소에 연결할 경우 DSN을 정의하도록 `odbc.ini` 파일을 구성합니다. `odbc.ini` 파일의 속성을 설정하여 데이터 저장소에 대한 연결 정보를 지정하는 DSN을 생성합니다.

`odbc.ini` 파일 구성 방법에 대한 자세한 내용은 [Amazon Redshift ODBC Connector Installation and Configuration Guide](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.3.1008/Amazon+Redshift+ODBC+Connector+Install+Guide.pdf)(Amazon Redshift ODBC 커넥터 설치 및 구성 가이드)의 "Creating a Data Source Name on a Non-Windows Machine"(Windows 이외의 컴퓨터에서 데이터 소스 이름 생성)을 참조하세요. 

macOS X 운영 체제에서 사용하는 형식은 다음과 같습니다.

```
[ODBC Data Sources]
driver_name=dsn_name

[dsn_name]
Driver=path/lib/amazonredshiftodbc.dylib

Host=cluster_endpoint
Port=port_number
Database=database_name
locale=locale
```

 다음 예에서는 macOS X 운영 체제에서 `odbc.ini` 구성을 보여줍니다.

```
[ODBC Data Sources]
Amazon_Redshift_dylib=Amazon Redshift DSN for macOS X

[Amazon Redshift DSN for macOS X]
Driver=/opt/amazon/redshift/lib/amazonredshiftodbc.dylib
Host=examplecluster.abc123xyz789.us-west-2.redshift.amazonaws.com
Port=5932
Database=dev
locale=en-US
```

## macOS X 운영 체제에서 DSN 없이 연결 구성
<a name="configure-odbcinst-ini-file"></a>

DSN이 없는 연결을 통해 데이터 저장소에 연결하려면 `odbcinst.ini` 파일에 드라이버를 정의합니다. 그런 다음 애플리케이션에 DSN이 없는 연결 문자열을 제공합니다.

이 경우 `odbcinst.ini` 파일을 구성하는 방법에 대한 자세한 내용은 [Amazon Redshift ODBC Connector Installation and Configuration Guide](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.3.1008/Amazon+Redshift+ODBC+Connector+Install+Guide.pdf)(Amazon Redshift ODBC 커넥터 설치 및 구성 가이드)에서 "Configuring a DSN-less Connection on a Non-Windows Machine"(Windows 이외의 컴퓨터에서 DSN이 없는 연결 구성)을 참조하세요. 링크를 사용합니다.

macOS X 운영 체제에서 사용하는 형식은 다음과 같습니다.

```
[ODBC Drivers]
driver_name=Installed
...
                            
[driver_name]
Description=driver_description
Driver=path/lib/amazonredshiftodbc.dylib
    
...
```

다음 예에서는 드라이버가 macOS X 운영 체제의 기본 디렉터리에 설치되어 있는 경우 `odbcinst.ini` 구성을 보여줍니다.

```
[ODBC Drivers]
Amazon RedshiftODBC DSN=Installed

[Amazon RedshiftODBC DSN]
Description=Amazon Redshift ODBC Driver for macOS X
Driver=/opt/amazon/redshift/lib/amazonredshiftodbc.dylib
```

## 환경 변수 구성
<a name="rs-mgmt-config-global-env-variables"></a>

올바른 ODBC 드라이버 관리자를 사용하여 올바른 드라이버를 로드합니다. 이를 위해 라이브러리 경로 환경 변수를 설정합니다. 자세한 내용은 [Amazon Redshift ODBC Connector Installation and Configuration Guide](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.3.1008/Amazon+Redshift+ODBC+Connector+Install+Guide.pdf)(Amazon Redshift ODBC 커넥터 설치 및 구성 가이드)의 "Specifying ODBC Driver Managers on Non-Windows Machines"(Windows 이외의 컴퓨터에서 ODBC 드라이버 관리자 지정)를 참조하세요. 링크를 사용합니다.

기본적으로 ODBC 드라이버 관리자는 홈 디렉터리에 있는 숨겨진 버전의 `odbc.ini` 및 `odbcinst.ini` 구성 파일(.`odbc.ini` 및 .`odbcinst.ini`)을 사용하도록 구성됩니다. 또한 드라이버 설치 디렉터리의 `amazon.redshiftodbc.ini` 하위 폴더에 있는 `/lib` 파일을 사용하도록 구성됩니다. 이러한 구성 파일을 다른 위치에 저장하는 경우 드라이버 관리자가 파일을 찾을 수 있도록 환경 변수를 지정합니다. 자세한 내용은 *Amazon Redshift ODBC Connector Installation and Configuration Guide*의 "Specifying the Locations of the Driver Configuration Files" 섹션을 참조하세요.

## 연결 기능 구성
<a name="connection-config-features"></a>

ODBC 설정에 대해 다음 연결 기능을 구성할 수 있습니다.
+ 자격 증명을 제공하고 Amazon Redshift 데이터베이스 연결을 인증하도록 ODBC 드라이버를 구성합니다.
+ 보안 소켓 계층(SSL)이 사용 설정된 Amazon Redshift 서버에 연결하는 경우 SSL에서 사용할 수 있는 소켓에 연결하도록 ODBC 드라이버를 구성합니다.
+ 프록시 서버를 통해 Amazon Redshift에 연결하도록 ODBC 드라이버를 구성합니다.
+ 쿼리가 너무 많은 메모리를 소비하지 않게 쿼리 처리 모드를 사용하도록 ODBC 드라이버를 구성합니다.
+ 프록시 서버를 통해 IAM 인증 프로세스를 통과하도록 ODBC 드라이버를 구성합니다.
+ TCP keepalive를 사용하여 연결 시간 초과가 발생하지 않도록 ODBC 드라이버를 구성합니다.

이러한 연결 기능에 대한 자세한 내용은 [Amazon Redshift ODBC Connector Installation and Configuration Guide](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.3.1008/Amazon+Redshift+ODBC+Connector+Install+Guide.pdf)(Amazon Redshift ODBC 커넥터 설치 및 구성 가이드)를 참조하세요. 

# ODBC 드라이버 옵션
<a name="configure-odbc-options"></a>

구성 옵션을 사용하여 Amazon Redshift ODBC 드라이버의 동작을 제어할 수 있습니다.

Microsoft Windows에서는 일반적으로 데이터 원본 이름(DSN)을 구성할 때 드라이버 옵션을 설정합니다. 프로그래밍 방식으로 연결할 때 또는 `HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\your_DSN`에서 레지스트리 키를 추가하거나 변경하여 연결 문자열에 드라이버 옵션을 설정할 수도 있습니다. DSN 구성에 대한 자세한 내용은 [Microsoft Windows에서 Amazon Redshift ODBC 드라이버 사용](install-odbc-driver-windows.md) 섹션을 참조하세요.

macOS X에서는 [ODBC 드라이버 관리자를 사용하여 드라이버 구성ODBC 드라이버 관리자를 사용하여 드라이버 구성](odbc-driver-configure-mac.md) 섹션에서 설명한 바와 같이 드라이버 구성 옵션을 `odbc.ini` 및 `amazon.redshiftodbc.ini` 파일에서 설정합니다. `amazon.redshiftodbc.ini` 파일에서 설정하는 구성 옵션이 모든 연결에 적용됩니다. 반대로 `odbc.ini` 파일에서 설정하는 구성 옵션은 연결에 따라 다릅니다. `odbc.ini`에서 설정하는 구성 옵션이 `amazon.redshiftodbc.ini`에서 설정하는 구성 옵션보다 우선합니다.

ODBC 드라이버 구성 옵션을 설정하는 방법에 대한 자세한 내용은 [Amazon Redshift ODBC Connector Installation and Configuration Guide](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.3.1008/Amazon+Redshift+ODBC+Connector+Install+Guide.pdf)(Amazon Redshift ODBC 커넥터 설치 및 구성 가이드)를 참조하세요. 

# 이전 ODBC 드라이버 버전
<a name="odbc-previous-versions"></a>

도구에 특정 버전의 드라이버가 필요한 경우에만 이전 버전의 Amazon Redshift ODBC 드라이버를 다운로드합니다.

## Windows용 이전 ODBC 드라이버 버전
<a name="odbc-previous-versions-windows"></a>

다음은 64비트 드라이버입니다.
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.3.1006/AmazonRedshiftODBC64-1.6.3.1006.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.3.1006/AmazonRedshiftODBC64-1.6.3.1006.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.1.1000/AmazonRedshiftODBC64-1.6.1.1000.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.1.1000/AmazonRedshiftODBC64-1.6.1.1000.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.5.20.1024/AmazonRedshiftODBC64-1.5.20.1024.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.5.20.1024/AmazonRedshiftODBC64-1.5.20.1024.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.5.16.1019/AmazonRedshiftODBC64-1.5.16.1019.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.5.16.1019/AmazonRedshiftODBC64-1.5.16.1019.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.5.9.1011/AmazonRedshiftODBC64-1.5.9.1011.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.5.9.1011/AmazonRedshiftODBC64-1.5.9.1011.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.5.7.1007/AmazonRedshiftODBC64-1.5.7.1007.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.5.7.1007/AmazonRedshiftODBC64-1.5.7.1007.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.65.1000/AmazonRedshiftODBC64-1.4.65.1000.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.65.1000/AmazonRedshiftODBC64-1.4.65.1000.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.62.1000/AmazonRedshiftODBC64-1.4.62.1000.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.62.1000/AmazonRedshiftODBC64-1.4.62.1000.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.59.1000/AmazonRedshiftODBC64-1.4.59.1000.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.59.1000/AmazonRedshiftODBC64-1.4.59.1000.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.56.1000/AmazonRedshiftODBC64-1.4.56.1000.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.56.1000/AmazonRedshiftODBC64-1.4.56.1000.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.53.1000/AmazonRedshiftODBC64-1.4.53.1000.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.53.1000/AmazonRedshiftODBC64-1.4.53.1000.msi) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.52.1000/AmazonRedshiftODBC64-1.4.52.1000.msi](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.52.1000/AmazonRedshiftODBC64-1.4.52.1000.msi) 

32비트 드라이버는 단종되었으며 이전 버전은 지원되지 않습니다.

## Linux용 이전 ODBC 드라이버 버전
<a name="odbc-previous-versions-linux"></a>

다음은 64비트 드라이버 버전입니다.
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.3.1006/AmazonRedshiftODBC-64-bit-1.6.3.1006-1.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.3.1006/AmazonRedshiftODBC-64-bit-1.6.3.1006-1.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.1.1000/AmazonRedshiftODBC-64-bit-1.6.1.1000-1.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.1.1000/AmazonRedshiftODBC-64-bit-1.6.1.1000-1.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.5.20.1024/AmazonRedshiftODBC-64-bit-1.5.20.1024-1.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.5.20.1024/AmazonRedshiftODBC-64-bit-1.5.20.1024-1.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.5.16.1019/AmazonRedshiftODBC-64-bit-1.5.16.1019-1.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.5.16.1019/AmazonRedshiftODBC-64-bit-1.5.16.1019-1.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.5.9.1011/AmazonRedshiftODBC-64-bit-1.5.9.1011-1.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.5.9.1011/AmazonRedshiftODBC-64-bit-1.5.9.1011-1.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.5.7.1007/AmazonRedshiftODBC-64-bit-1.5.7.1007-1.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.5.7.1007/AmazonRedshiftODBC-64-bit-1.5.7.1007-1.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.65.1000/AmazonRedshiftODBC-64-bit-1.4.65.1000-1.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.65.1000/AmazonRedshiftODBC-64-bit-1.4.65.1000-1.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.62.1000/AmazonRedshiftODBC-64-bit-1.4.62.1000-1.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.62.1000/AmazonRedshiftODBC-64-bit-1.4.62.1000-1.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.59.1000/AmazonRedshiftODBC-64-bit-1.4.59.1000-1.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.59.1000/AmazonRedshiftODBC-64-bit-1.4.59.1000-1.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.59.1000/AmazonRedshiftODBC-64-bit-1.4.59.1000-1.x86\$164.deb](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.59.1000/AmazonRedshiftODBC-64-bit-1.4.59.1000-1.x86_64.deb) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.56.1000/AmazonRedshiftODBC-64-bit-1.4.56.1000-1.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.56.1000/AmazonRedshiftODBC-64-bit-1.4.56.1000-1.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.56.1000/AmazonRedshiftODBC-64-bit-1.4.56.1000-1.x86\$164.deb](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.56.1000/AmazonRedshiftODBC-64-bit-1.4.56.1000-1.x86_64.deb) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.52.1000/AmazonRedshiftODBC-64-bit-1.4.52.1000-1.x86\$164.rpm](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.52.1000/AmazonRedshiftODBC-64-bit-1.4.52.1000-1.x86_64.rpm) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.52.1000/AmazonRedshiftODBC-64-bit-1.4.52.1000-1.x86\$164.deb](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.52.1000/AmazonRedshiftODBC-64-bit-1.4.52.1000-1.x86_64.deb) 

32비트 드라이버는 단종되었으며 이전 버전은 지원되지 않습니다.

## macOS X용 이전 ODBC 드라이버 버전
<a name="odbc-previous-versions-mac"></a>

다음은 macOS X용 Amazon Redshift ODBC 드라이버 버전입니다.
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.3.1006/AmazonRedshiftODBC-64-bit.1.6.3.1006.universal.pkg](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.3.1006/AmazonRedshiftODBC-64-bit.1.6.3.1006.universal.pkg) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.1.1000/AmazonRedshiftODBC-64-bit.1.6.1.1000.universal.pkg](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.6.1.1000/AmazonRedshiftODBC-64-bit.1.6.1.1000.universal.pkg) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.5.20.1024/AmazonRedshiftODBC-1.5.20.1024.arm64.dmg](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.5.20.1024/AmazonRedshiftODBC-1.5.20.1024.arm64.dmg) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.5.20.1024/AmazonRedshiftODBC-1.5.20.1024.x86\$164.dmg](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.5.20.1024/AmazonRedshiftODBC-1.5.20.1024.x86_64.dmg) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.5.16.1019/AmazonRedshiftODBC-1.5.16.1019.x86\$164.dmg](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.5.16.1019/AmazonRedshiftODBC-1.5.16.1019.x86_64.dmg) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.5.9.1011/AmazonRedshiftODBC-1.5.9.1011.x86\$164.dmg](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.5.9.1011/AmazonRedshiftODBC-1.5.9.1011.x86_64.dmg) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.5.7.1007/AmazonRedshiftODBC-1.5.7.1007.x86\$164.dmg](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.5.7.1007/AmazonRedshiftODBC-1.5.7.1007.x86_64.dmg) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.65.1000/AmazonRedshiftODBC-1.4.65.1000.dmg](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.65.1000/AmazonRedshiftODBC-1.4.65.1000.dmg) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.62.1000/AmazonRedshiftODBC-1.4.62.1000.dmg](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.62.1000/AmazonRedshiftODBC-1.4.62.1000.dmg) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.59.1000/AmazonRedshiftODBC-1.4.59.1000.dmg](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.59.1000/AmazonRedshiftODBC-1.4.59.1000.dmg) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.56.1000/AmazonRedshiftODBC-1.4.56.1000.dmg](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.56.1000/AmazonRedshiftODBC-1.4.56.1000.dmg) 
+ [https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.52.1000/AmazonRedshiftODBC-1.4.52.1000.dmg](https://s3.amazonaws.com/redshift-downloads/drivers/odbc/1.4.52.1000/AmazonRedshiftODBC-1.4.52.1000.dmg) 

# 연결을 위한 보안 옵션 구성
<a name="connecting-ssl-support"></a>

Amazon Redshift는 데이터와 서버 인증서 암호화를 위한 보안 소켓 계층(SSL) 연결을 지원하여 클라이언트에서 연결할 서버 인증서를 검증합니다.

## SSL
<a name="connect-using-ssl"></a>

SSL 연결을 지원하기 위해 Amazon Redshift는 [AWS Certificate Manager(ACM)](https://aws.amazon.com/certificate-manager/)가 발급한 SSL 인증서를 생성해 각 클러스터에 설치합니다. ACM 인증서는 대부분의 운영 체제, 웹 브라우저 및 클라이언트에서 공개적으로 신뢰합니다. SQL 클라이언트 또는 애플리케이션이 `sslmode` 연결 옵션이 `require`, `verify-ca` 또는 `verify-full`로 설정된 상태에서 SSL을 사용하여 Amazon Redshift에 연결하는 경우 인증서 번들을 다운로드해야 합니다. 클라이언트에 인증서가 필요한 경우 Amazon Redshift는 다음과 같이 번들 인증서를 제공합니다.
+ [https://s3.amazonaws.com/redshift-downloads/amazon-trust-ca-bundle.crt](https://s3.amazonaws.com/redshift-downloads/amazon-trust-ca-bundle.crt)에서 번들을 다운로드합니다.
  + 예상 MD5 체크섬 번호는 418dea9b6d5d5de7a8f1ac42e164cdcf입니다.
  + sha256 체크섬 번호는 36dba8e4b8041cd14b9d60158893963301bcbb92e1c456847784de2acb5bd550입니다.

  `https://s3.amazonaws.com/redshift-downloads/redshift-ca-bundle.crt`에 있던 이전 인증서 번들을 사용하지 마세요.
+  중국 AWS 리전에서는 [https://s3---cn-north-1.amazonaws.com.rproxy.govskope.ca.cn/redshift-downloads-cn/amazon-trust-ca-bundle.crt](https://s3---cn-north-1.amazonaws.com.rproxy.govskope.ca.cn/redshift-downloads-cn/amazon-trust-ca-bundle.crt)에서 번들을 다운로드합니다.
  + 예상 MD5 체크섬 번호는 418dea9b6d5d5de7a8f1ac42e164cdcf입니다.
  + sha256 체크섬 번호는 36dba8e4b8041cd14b9d60158893963301bcbb92e1c456847784de2acb5bd550입니다.

  `https://s3---cn-north-1.amazonaws.com.rproxy.govskope.ca.cn/redshift-downloads-cn/redshift-ca-bundle.crt` 및 `https://s3---cn-north-1.amazonaws.com.rproxy.govskope.ca.cn/redshift-downloads-cn/redshift-ssl-ca-cert.pem`에 있던 이전 인증서 번들을 사용하지 마세요.

**중요**  
Amazon Redshift는 SSL 인증서 관리 방법을 바꿨습니다. 계속해서 SSL을 사용하여 클러스터에 연결하려면 현재 신뢰하는 루트 CA 인증서를 업데이트해야 할 수 있습니다. 자세한 내용은 [SSL 연결을 위해 ACM 인증서로 이전](connecting-transitioning-to-acm-certs.md) 섹션을 참조하세요.

기본적으로 클러스터 데이터베이스는 SSL의 사용 여부와 상관없이 연결을 허용합니다. 클러스터가 SSL 연결을 요구하도록 구성하려면 클러스터와 연결된 파라미터 그룹에서 `require_SSL` 파라미터를 `true`로 설정해야 합니다.

Amazon Redshift는 연방 정보 처리 표준(FIPS) 140-2를 준수하는 SSL 모드를 지원합니다. FIPS 준수 SSL 모드는 기본적으로 비활성화되어 있습니다.

**중요**  
시스템에서 FIPS를 준수해야 하는 경우에만 FIPS 준수 SSL 모드를 활성화합니다.

FIPS 준수 SSL 모드를 활성화하려면 Amazon Redshift 클러스터 또는 Redshift Serverless 작업 그룹에 연결된 파라미터 그룹에서 `use_fips_ssl` 파라미터와 `require_SSL` 파라미터를 `true`로 설정합니다. 클러스터의 파라미터 그룹 수정에 대한 자세한 내용은 [Amazon Redshift 파라미터 그룹](working-with-parameter-groups.md) 섹션을 참조하세요. 작업 그룹의 파라미터 그룹 수정에 대한 자세한 내용은 [Amazon Redshift Serverless에 대한 FIPS 준수 SSL 연결 구성](serverless-connecting.md#serverless_secure-fips-ssl) 섹션을 참조하세요.

 Amazon Redshift는 ECDHE(Elliptic Curve Diffie—Hellman Ephemeral) 키 계약 프로토콜을 지원합니다. ECDHE 프로토콜에서는 클라이언트와 서버가 비보안 채널을 통해 공유 비밀을 구성하는 데 사용하는 타원 곡선 공개-비공개 키 페어를 갖습니다. ECDHE를 사용하기 위해 Amazon Redshift에서 아무 것도 구성할 필요가 없습니다. ECDHE를 통해 클라이언트와 서버 간 통신을 암호화하는 SQL 클라이언트 도구에서 연결하는 경우 Amazon Redshift가 제공된 암호 목록을 사용해 적절히 연결합니다. 자세한 내용은 Wikipedia의 [Elliptic curve diffie—hellman](https://en.wikipedia.org/wiki/Elliptic_curve_Diffie%E2%80%93Hellman) 및 OpenSSL 웹 사이트의 [Ciphers](https://www.openssl.org/) 섹션을 참조하세요.

## ODBC의 SSL 및 신뢰하는 CA 인증서
<a name="connecting-ssl-support-odbc"></a>

최신 Amazon Redshift ODBC 드라이버(버전 1.3.7.1000 이상)을 사용하여 연결하는 경우 이 섹션을 건너뛸 수 있습니다. 최신 드라이버를 다운로드하려면 [Amazon Redshift용 ODBC 드라이버 버전 2.x 연결 구성](odbc20-install.md) 섹션을 참조하세요.

계속해서 SSL을 사용하여 클러스터에 연결하려면 현재 신뢰하는 루트 CA 인증서를 업데이트해야 할 수 있습니다. 자세한 내용은 [SSL](#connect-using-ssl) 섹션을 참조하세요.

다운로드한 인증서가 예상 MD5 체크섬 번호와 일치하는지 확인할 수 있습니다. 이렇게 하려면 Linux 운영 체제에서 MD5sum 프로그램을 사용하거나 Windows 및 macOS X 운영 체제에서 다른 도구를 사용할 수 있습니다.

 ODBC DSN에 포함되어 있는 `sslmode` 설정은 클라이언트 연결이나 서버 인증서 확인 시 암호화 처리 방법을 결정합니다. Amazon Redshift는 클라이언트 연결에서 다음 `sslmode` 값을 지원합니다.
+ `disable`

  SSL이 비활성화되고 연결이 암호화되지 않았습니다.
+ `allow`

  서버에서 요구할 경우 SSL이 사용됩니다.
+ `prefer`

  서버에서 지원할 경우 SSL이 사용됩니다. Amazon Redshift는 SSL을 지원하므로 `sslmode`를 `prefer`로 설정할 때 SSL을 사용합니다.
+ `require`

  SSL이 필요합니다.
+ `verify-ca`

  SSL을 사용하고, 서버 인증서의 검증을 받아야 합니다.
+ `verify-full`

  SSL을 사용해야 합니다. 또한 서버 인증서의 검증을 받아야 하며, 서버 호스트 이름이 인증서의 호스트 이름 속성과 일치해야 합니다.

클라이언트와 서버 간의 연결에서 SSL 사용 여부 및 서버 인증서 확인 여부를 확인할 수 있습니다. 이렇게 하려면 클라이언트의 ODBC DSN에 대한 `sslmode` 설정과 서버의 Amazon Redshift 클러스터에 대한 `require_SSL` 설정을 검토해야 합니다. 다음 표는 클라이언트와 서버 설정을 다양하게 조합한 암호화 결과를 설명한 것입니다.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/connecting-ssl-support.html)

### 서버 인증서를 사용하여 Microsoft Windows 기반 ODBC와 연결하기
<a name="connecting-ssl-support-odbc-with-cert"></a>

 SSL 및 서버 인증서를 사용하여 클러스터에 연결하려면 먼저 인증서를 클라이언트 컴퓨터 또는 Amazon EC2 인스턴스에 다운로드합니다. 그런 다음 ODBC DSN을 구성합니다.

1.  Amazon Redshift 인증 기관 번들을 클라이언트 컴퓨터의 드라이버 설치 디렉터리에 있는 `lib` 폴더로 다운로드하고 `root.crt` 파일로 저장합니다. 다운로드 정보는 [SSL](#connect-using-ssl) 섹션을 참조하세요.

1.  **ODBC Data Source Administrator(ODBC 데이터 원본 관리자)**를 열고 ODBC 연결에 필요한 시스템 DSN 항목을 추가 또는 편집합니다. DNS 별칭을 사용하지 않는 경우 **SSL 모드(SSL Mode)**로 `verify-full`을 선택합니다. DNS 별칭을 사용하는 경우에는 `verify-ca`를 선택합니다. 그런 다음 **저장(Save)**을 선택합니다.

    ODBC DSN 구성에 대한 자세한 내용은 [Amazon Redshift용 ODBC 드라이버 버전 2.x 연결 구성](odbc20-install.md) 섹션을 참조하세요.

## Java의 SSL 및 서버 인증서
<a name="connecting-ssl-support-java"></a>

SSL은 클라이언트와 클러스터 사이에 전송되는 데이터를 암호화하여 하나의 보안 계층으로서 역할을 합니다. 서버 인증서를 사용하여 해당 클러스터가 Amazon Redshift 클러스터라는 사실을 검증하면 보안 계층이 추가됩니다. 프로비저닝하는 모든 클러스터에 자동으로 설치되는 서버 인증서를 검사하기 때문에 이러한 검증이 가능합니다. JDBC에서 서버 인증서를 사용하는 방법에 대한 자세한 내용은 PostgreSQL 설명서에서 [클라이언트 구성](https://jdbc.postgresql.org/documentation/ssl/#configuring-the-client)을 참조하세요.

### Java에서 신뢰하는 CA 인증서를 사용해 연결
<a name="connecting-ssl-support-java-with-cert"></a>

**중요**  
Amazon Redshift는 SSL 인증서 관리 방법을 바꿨습니다. 계속해서 SSL을 사용하여 클러스터에 연결하려면 현재 신뢰하는 루트 CA 인증서를 업데이트해야 할 수 있습니다. 자세한 내용은 [SSL](#connect-using-ssl) 섹션을 참조하세요.

**신뢰하는 CA 인증서를 사용해 연결하려면**

`redshift-keytool.jar` 파일을 사용하여 Amazon Redshift 인증 기관 번들에 들어 있는 CA 인증서를 Java TrustStore 또는 프라이빗 TrustStore로 가져올 수 있습니다.

1. Java 명령줄 `-Djavax.net.ssl.trustStore` 옵션을 사용하는 경우 가능하면 명령줄에서 이 옵션을 제거합니다.

1. [redshift-keytool.jar](https://s3.amazonaws.com/redshift-downloads/redshift-keytool.jar)를 다운로드합니다.

1. 다음 중 하나를 수행하세요.
   + Amazon Redshift 인증 기관 번들을 Java TrustStore로 가져오려면 다음 명령을 실행합니다.

     ```
     java -jar redshift-keytool.jar -s
     ```
   + Amazon Redshift 인증 기관 번들을 프라이빗 TrustStore로 가져오려면 다음 명령을 실행합니다.

     ```
     java -jar redshift-keytool.jar -k <your_private_trust_store> -p <keystore_password> 
     ```

# SSL 연결을 위해 ACM 인증서로 이전
<a name="connecting-transitioning-to-acm-certs"></a>

Amazon Redshift는 클러스터의 SSL 인증서를 [AWS Certificate Manager(ACM)](https://aws.amazon.com/certificate-manager/)가 발급한 인증서로 바꿉니다. ACM은 대부분의 최신 시스템에서 신뢰하는 퍼블릭 인증 기관(CA)입니다. 계속해서 SSL을 사용하여 클러스터에 연결하려면 현재 신뢰하는 루트 CA 인증서를 업데이트해야 할 수 있습니다.

이러한 변경은 다음 사항이 모두 적용되는 경우에만 영향을 미칩니다.
+  SQL 클라이언트 또는 애플리케이션이 `sslMode` 연결 옵션이 `require`, `verify-ca` 또는 `verify-full` 구성 옵션으로 설정된 상태에서 SSL을 사용해 Amazon Redshift 클러스터에 연결합니다.
+ Amazon Redshift ODBC 또는 JDBC 드라이버를 사용하지 않거나 ODBC 버전 1.3.7.1000 또는 JDBC 버전 1.2.8.1005 이전의 Amazon Redshift 드라이버를 사용하고 있습니다.

이 변경 사항이 상용 Amazon Redshift 리전에서 영향을 미치는 경우 현재 신뢰하는 루트 CA 인증서를 2017년 10월 23일 이전에 업데이트해야 합니다. Amazon Redshift는 지금\$12017년 10월 23일 사이에 ACM 인증서를 사용하도록 클러스터를 이전할 예정입니다. 이 변경은 클러스터의 성능 또는 가용성에 거의 또는 아예 영향을 미치지 않을 것입니다.

이 변경 사항이 AWS GovCloud (US)(미국) 리전에 영향을 미치는 경우 서비스 중단을 방지하기 위해 현재 신뢰하는 루트 CA 인증서를 2020년 4월 1일 이전에 업데이트해야 합니다. 이 날짜부터 SSL 암호화 연결을 사용하여 Amazon Redshift 클러스터에 연결하는 클라이언트에는 신뢰할 수 있는 인증 기관(CA)이 추가로 필요합니다. 클라이언트는 신뢰할 수 있는 인증 기관을 사용하여 Amazon Redshift 클러스터에 연결할 때 클러스터의 자격 증명을 확인합니다. 새로운 신뢰할 수 있는 CA가 포함된 업데이트된 인증서 번들을 사용하도록 SQL 클라이언트 및 애플리케이션을 업데이트하려면 작업이 필요합니다.

**중요**  
2021년 1월 5일 중국 리전에서 Amazon Redshift는 클러스터의 SSL 인증서를 AWS Certificate Manager(ACM)가 발급한 인증서로 바꿉니다. 이 변경 사항이 중국(베이징) 리전 또는 중국(닝샤) 리전에 영향을 미치는 경우 서비스 중단을 방지하기 위해 현재 신뢰하는 루트 CA 인증서를 2021년 1월 5일 전에 업데이트해야 합니다. 이 날짜부터 SSL 암호화 연결을 사용하여 Amazon Redshift 클러스터에 연결하는 클라이언트에는 신뢰할 수 있는 인증 기관(CA)이 추가로 필요합니다. 클라이언트는 신뢰할 수 있는 인증 기관을 사용하여 Amazon Redshift 클러스터에 연결할 때 클러스터의 자격 증명을 확인합니다. 새로운 신뢰할 수 있는 CA가 포함된 업데이트된 인증서 번들을 사용하도록 SQL 클라이언트 및 애플리케이션을 업데이트하려면 작업이 필요합니다.
+ [최신 Amazon Redshift ODBC 또는 JDBC 드라이버 사용](#connecting-transitioning-to-acm-latest-odbc-jdbc)
+ [이전 Amazon Redshift ODBC 또는 JDBC 드라이버 사용](#connecting-transitioning-to-acm-earlier-odbc-jdbc)
+ [다른 SSL 연결 유형 사용](#connecting-transitioning-to-acm-other-ssl-types)

## 최신 Amazon Redshift ODBC 또는 JDBC 드라이버 사용
<a name="connecting-transitioning-to-acm-latest-odbc-jdbc"></a>

최신 Amazon Redshift ODBC 또는 JDBC 드라이버를 사용하는 것이 가장 기본적인 방법입니다. ODBC 버전 1.3.7.1000 및 JDBC 버전 1.2.8.1005부터 시작하는 Amazon Redshift 드라이버는 Amazon Redshift 자체 서명 인증서에서 ACM 인증서로의 이전을 자동으로 관리합니다. 최신 드라이버를 다운로드하려면 [Amazon Redshift용 JDBC 드라이버 버전 2.x 연결 구성](jdbc20-install.md) 섹션을 참조하세요.

최신 Amazon Redshift JDBC 드라이버를 사용하는 경우 JVM 옵션에서 `-Djavax.net.ssl.trustStore`를 사용하지 않는 것이 가장 좋습니다. `-Djavax.net.ssl.trustStore`를 사용해야 하는 경우에는 Redshift 인증 기관 번들을 이 번들이 가리키는 truststore로 가져옵니다. 다운로드 정보는 [SSL](connecting-ssl-support.md#connect-using-ssl) 섹션을 참조하세요. 자세한 내용은 [Amazon Redshift 인증 기관 번들을 TrustStore로 가져오기](#importing-the-acm-bundle-to-truststore) 섹션을 참조하세요.

## 이전 Amazon Redshift ODBC 또는 JDBC 드라이버 사용
<a name="connecting-transitioning-to-acm-earlier-odbc-jdbc"></a>
+ `SSLCertPath`를 사용하여 ODBC DSN을 구성한 경우 지정된 경로에 있는 인증서 파일을 덮어 씁니다.
+ `SSLCertPath`가 설정되어 있지 않은 경우 드라이버 DLL 위치에 있는 `root.crt`라는 인증서 파일을 덮어 씁니다.

1.2.8.1005보다 이전 버전의 Amazon Redshift JDBC 드라이버를 사용해야 하는 경우 다음 중 하나를 수행하세요.
+ JDBC 연결 문자열이 `sslCert` 옵션을 사용하는 경우 `sslCert` 옵션을 제거합니다. 그런 다음 Redshift 인증 기관 번들을 Java TrustStore로 가져옵니다. 다운로드 정보는 [SSL](connecting-ssl-support.md#connect-using-ssl) 섹션을 참조하세요. 자세한 내용은 [Amazon Redshift 인증 기관 번들을 TrustStore로 가져오기](#importing-the-acm-bundle-to-truststore) 섹션을 참조하세요.
+ Java 명령줄 `-Djavax.net.ssl.trustStore` 옵션을 사용하는 경우 가능하면 명령줄에서 이 옵션을 제거합니다. 그런 다음 Redshift 인증 기관 번들을 Java TrustStore로 가져옵니다. 다운로드 정보는 [SSL](connecting-ssl-support.md#connect-using-ssl) 섹션을 참조하세요. 자세한 내용은 [Amazon Redshift 인증 기관 번들을 TrustStore로 가져오기](#importing-the-acm-bundle-to-truststore) 섹션을 참조하세요.

### Amazon Redshift 인증 기관 번들을 TrustStore로 가져오기
<a name="importing-the-acm-bundle-to-truststore"></a>

`redshift-keytool.jar`를 사용하여 Amazon Redshift 인증 기관 번들에 들어 있는 CA 인증서를 Java TrustStore 또는 프라이빗 TrustStore로 가져올 수 있습니다.

**Amazon Redshift 인증 기관 번들을 TrustStore로 가져오려면**

1. [redshift-keytool.jar](https://s3.amazonaws.com/redshift-downloads/redshift-keytool.jar)를 다운로드합니다.

1. 다음 중 하나를 수행하세요.
   + Amazon Redshift 인증 기관 번들을 Java TrustStore로 가져오려면 다음 명령을 실행합니다.

     ```
     java -jar redshift-keytool.jar -s
     ```
   + Amazon Redshift 인증 기관 번들을 프라이빗 TrustStore로 가져오려면 다음 명령을 실행합니다.

     ```
     java -jar redshift-keytool.jar -k <your_private_trust_store> -p <keystore_password> 
     ```

## 다른 SSL 연결 유형 사용
<a name="connecting-transitioning-to-acm-other-ssl-types"></a>

다음 중 하나를 사용하여 연결하는 경우 이 섹션의 단계를 따르세요.
+  오픈 소스 ODBC 드라이버 
+  오픈 소스 JDBC 드라이버 
+  [Amazon Redshift RSQL](https://docs.aws.amazon.com/redshift/latest/mgmt/rsql-query-tool.html) 명령줄 인터페이스 
+  libpq 기반으로 하는 모든 언어 바인딩(예: psycopg2(Python) 및 ruby-pg (Ruby)) 

**다른 SSL 연결 유형을 사용하여 ACM 인증서를 사용하려면:**

1.  Amazon Redshift 인증 기관 번들을 다운로드합니다. 다운로드 정보는 [SSL](connecting-ssl-support.md#connect-using-ssl) 섹션을 참조하세요.

1. 번들의 인증서를 `root.crt` 파일에 넣습니다.
   + Linux 및 macOS X 운영 체제에서 이 파일은 `~/.postgresql/root.crt`입니다.
   + Microsoft Windows에서는 `%APPDATA%\postgresql\root.crt`입니다.

# 클라이언트 도구 및 코드에서 연결
<a name="connecting-via-client-tools"></a>

Amazon Redshift는 Amazon Redshift 쿼리 에디터 v2를 제공하여 클러스터와 작업 그룹에 연결할 수 있습니다. 자세한 내용은 [Query Editor V2를 사용하여 데이터베이스 쿼리Amazon Redshift 쿼리 편집기 v2를 사용하여 데이터베이스 쿼리](query-editor-v2.md) 섹션을 참조하세요.

이 섹션에서는 서드 파티 도구를 연결할 수 있는 몇 가지 옵션을 제공합니다. 또한 프로그래밍 방식으로 클러스터에 연결하는 방법에 대해서도 설명합니다.

**Topics**
+ [Amazon Redshift RSQL을 사용하여 연결](rsql-query-tool.md)
+ [Amazon Redshift RSQL을 사용하여 클러스터에 연결](rsql-query-tool-starting-tool-connection.md)
+ [Amazon Redshift RSQL 메타 명령](rsql-query-tool-commands.md)
+ [Amazon Redshift RSQL 변수](rsql-query-tool-variables.md)
+ [Amazon Redshift RSQL 오류 코드](rsql-query-tool-error-codes.md)
+ [Amazon Redshift RSQL 환경 변수](rsql-query-tool-environment-variables.md)

# Amazon Redshift RSQL을 사용하여 연결
<a name="rsql-query-tool"></a>

 Amazon Redshift RSQL은 Amazon Redshift 클러스터 및 데이터베이스와의 상호 작용을 위한 명령줄 클라이언트입니다. Amazon Redshift 클러스터에 연결하고, 데이터베이스 객체를 설명하고, 데이터를 쿼리하고, 다양한 출력 형식으로 쿼리 결과를 볼 수 있습니다.

 Amazon Redshift RSQL은 Amazon Redshift에 특정한 추가 기능 집합과 함께 PostgreSQL psql 명령줄 도구의 기능을 지원합니다. 여기에는 다음이 포함됩니다.
+ AD FS, PingIdentity, Okta, Azure ADm 또는 기타 SAML/JWT 기반 ID 제공업체를 통한 Single Sign-On을 사용할 수 있습니다. 멀티 팩터 인증(MFA)에 브라우저 기반 SAML 자격 증명 공급자를 사용할 수도 있습니다.
+ 테이블 배포 키, 테이블 정렬 키, 후기 바인딩 보기(LBV) 및 구체화된 보기와 같은 Amazon Redshift 객체의 속성을 설명할 수 있습니다. AWS Glue 카탈로그 또는 Apache Hive Metastore, Amazon RDS for PostgreSQL, Amazon Aurora PostgreSQL 호환 버전, RDS for MySQL(평가판) 및 Amazon Aurora MySQL 호환 버전(평가판)의 외부 데이터베이스, Amazon Redshift 데이터 공유를 사용하여 공유되는 테이블에 있는 외부 테이블의 속성을 설명할 수도 있습니다.
+ `IF`(`\ELSEIF`, `\ELSE,` `\ENDIF`), `\GOTO`, `\LABEL` 등의 향상된 제어 흐름 명령을 사용할 수도 있습니다.

 입력 파라미터로 전달된 스크립트를 실행하는 Amazon Redshift RSQL 배치 모드를 사용하면 SQL 및 복잡한 비즈니스 로직을 모두 포함하는 스크립트를 실행할 수 있습니다. 기존 자체 관리형 온프레미스 데이터 웨어하우스가 있는 경우 Amazon Redshift RSQL을 사용하여 Teradata BTEQ 스크립트와 같은 기존 추출, 변환, 로드 및 자동화 스크립트를 대체할 수 있습니다. RSQL을 사용하면 절차 언어로 스크립트를 수동으로 다시 구현하지 않아도 됩니다.

 Amazon Redshift RSQL은 Linux, Windows 및 macOS X 운영 체제에서 사용할 수 있습니다.

Amazon Redshift RSQL에 대한 문제를 보고하려면 redshift-rsql-support@amazon.com으로 이메일을 보내주세요.

**Topics**
+ [Amazon Redshift RSQL 시작하기](rsql-query-tool-getting-started.md)
+ [Amazon Redshift RSQL 변경 로그](rsql-query-tool-changelog.md)

# Amazon Redshift RSQL 시작하기
<a name="rsql-query-tool-getting-started"></a>

Linux, macOS 또는 Microsoft Windows 운영 체제가 설치된 컴퓨터에 Amazon Redshift RSQL을 설치합니다.

## RSQL 다운로드
<a name="rsql-query-tool-download"></a>
+ Linux 64비트 RPM: [RSQL 버전 1.1.2](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.1.2/AmazonRedshiftRsql-1.1.2.rhel.x86_64.rpm) 
  + Linux 아티팩트 서명 키: [키](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.1.2/AmazonRedshiftRsql-1.1.2-certificate.pem) 
  + Linux 아티팩트 서명된 해시: [해시](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.1.2/AmazonRedshiftRsql-1.1.2-signature.bin) 
+ macOS 64비트 PKG: [RSQL 버전 1.1.2](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.1.2/AmazonRedshiftRsql-1.1.2.universal.pkg) 
+ Windows 64비트 MSI: [RSQL 버전 1.1.2](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.1.2/AmazonRedshiftRsql-1.1.2.x86_64.msi) 

이전 버전의 변경 로그 및 다운로드는 [Amazon Redshift RSQL 변경 로그](rsql-query-tool-changelog.md)에서 확인하세요.

## Linux용 RSQL 설치
<a name="rsql-query-tool-linux-install"></a>

아래 단계에 따라 Linux용 RSQL을 설치하세요.

1. 다음 명령을 사용하여 드라이버 관리자를 설치합니다.

   ```
   sudo yum install unixODBC
   ```

1. ODBC 드라이버를 설치합니다. [Amazon Redshift ODBC 드라이버 다운로드 및 설치ODBC 드라이버 다운로드 및 설치](odbc20-install-linux.md).

1. ini 파일을 홈 디렉터리에 복사합니다.

   ```
   cp /opt/amazon/redshiftodbcx64/odbc.ini ~/.odbc.ini
   ```

1. 파일 위치를 가리키도록 환경 변수를 설정합니다.

   ```
   export ODBCINI=~/.odbc.ini
   export ODBCSYSINI=/opt/amazon/redshiftodbcx64/
   export AMAZONREDSHIFTODBCINI=/opt/amazon/redshiftodbcx64/amazon.redshiftodbc.ini
   ```

1. 이제 다음 명령을 실행하여 RSQL을 설치할 수 있습니다.

   ```
   sudo rpm -i AmazonRedshiftRsql-<version>.rhel.x86_64.rpm
   ```

## Mac용 RSQL 설치
<a name="rsql-query-tool-mac-install"></a>

아래 단계에 따라 macOS X용 RSQL을 설치합니다.

1. 다음 명령을 사용하여 드라이버 관리자를 설치합니다.

   ```
   brew install unixodbc --build-from-source
   ```

1. ODBC 드라이버를 설치합니다. [Amazon Redshift ODBC 드라이버 다운로드 및 설치ODBC 드라이버 다운로드 및 설치](odbc-driver-mac-how-to-install.md).

1. ini 파일을 홈 디렉터리에 복사합니다.

   ```
   cp /opt/amazon/redshift/Setup/odbc.ini ~/.odbc.ini
   ```

1. 파일 위치를 가리키도록 환경 변수를 설정합니다.

   ```
   export ODBCINI=~/.odbc.ini
   export ODBCSYSINI=/opt/amazon/redshift/Setup
   export AMAZONREDSHIFTODBCINI=/opt/amazon/redshift/lib/amazon.redshiftodbc.ini
   ```

1. `/usr/local/lib`에 없으면 `DYLD_LIBRARY_PATH`를 libodbc.dylib의 위치로 설정합니다.

   ```
   export DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:/usr/local/lib
   ```

1. pkg 파일을 두 번 클릭하여 설치 프로그램을 실행합니다.

1. 설치 관리자의 단계에 따라 설치를 완료합니다. 라이선스 계약 조건에 동의합니다.

## Windows용 RSQL 설치
<a name="rsql-query-tool-windows-install"></a>

아래 단계에 따라 Windows용 RSQL을 설치합니다.

1. ODBC 드라이버를 설치합니다. [Amazon Redshift ODBC 드라이버 다운로드 및 설치ODBC 드라이버 다운로드 및 설치](odbc-driver-windows-how-to-install.md).

1. RSQL 다운로드 파일을 두 번 클릭하여 설치 프로그램을 실행한 다음 화면 지시에 따라 설치를 완료합니다.

# Amazon Redshift RSQL 변경 로그
<a name="rsql-query-tool-changelog"></a>

*1.1.2(2025년 12월 11일)*

버그 수정
+ \$1goto 및 \$1label 명령에서 실패를 일으킨 버그를 수정했습니다.
+ 변수를 따옴표로 묶을 때 RSQL이 변수 값을 인쇄하지 못하는 버그를 수정했습니다.
+ UseDeclareFetch가 활성화된 상태에서 쿼리 결과가 ODBC DSN 가져오기 파라미터 크기를 초과할 때 RSQL 충돌이 발생하는 버그를 수정했습니다.
+ 페이저가 켜져 있더라도 여러 페이지의 결과가 한 번에 반환되는 문제를 수정했습니다.
+ 트랜잭션 블록 내에서 쿼리가 실패할 때 RSQL 충돌을 트리거하는 버그를 수정했습니다.

*1.1.1(2025-11-20)*

버그 수정
+ -c 플래그를 사용할 때 RSQL이 쿼리를 잘못 구문 분석하는 문제를 수정했습니다. 이 수정 사항은 모든 플랫폼에 적용됩니다.
+ Mac에서 사용자가 RSQL에서 \$1s 명령을 사용하지 못하게 하는 버그를 수정했습니다.

*1.1.0(2025-11-11)*

버그 수정
+ RSQL에서 예기치 않은 충돌을 일으키는 메모리 누수 문제를 해결했습니다.
+ RSQL에서 OpenSSL 종속성을 제거했습니다.
+ 동일한 환경에서 libpq/psql 설치와의 연결 충돌을 수정했습니다.
+ Amazon Linux 2023, Windows 및 macOS의 플랫폼 호환성을 개선했습니다.
+ 현재 표시 크기를 초과할 때 출력이 잘리는 문제를 수정했습니다.

*1.0.8(2023-06-19)*

버그 수정
+ SHOW 명령으로 출력이 잘리는 문제를 수정했습니다.
+ \$1de에 외부 Kinesis 스트림 및 Kafka 주제 설명을 위한 지원이 추가되었습니다.

*1.0.7(2023-03-22)*

버그 수정
+ RSQL이 구체화된 뷰를 설명할 수 없는 문제가 수정되었습니다.
+ Amazon Redshift Serverless를 사용할 때 stl\$1connection\$1log의 권한 거부 오류가 수정되었습니다.
+ RSQL이 \$1GOTO 레이블을 잘못 처리할 수 있는 문제가 해결되었습니다.
+ 자동 모드에서 SSL 메시지가 출력되는 문제가 해결되었습니다.
+ 저장된 프로시저를 설명할 때 임의의 문자가 표시되는 문제가 해결되었습니다.
+ 중복된 오류/정보 메시지가 출력되는 문제가 해결되었습니다.

New
+ RSQL이 이제 ODBC 드라이버에서 직접 SSL 정보를 가져옵니다.



*1.0.6(2023-02-21)*

버그 수정
+ Redshift 패치 1.0.46086(P173)에서 \$1d가 잘못된 정수 입력 구문: ‘xid’라는 오류가 발생하는 문제를 수정했습니다.

New
+ 지원되는 아키텍처를 반영하도록 설치 파일의 이름을 변경했습니다.



*1.0.5(2022-06-27)*

버그 수정
+ SQL 오류 메시지를 표준 오류(stderr)로 보냅니다.
+ ON\$1ERROR\$1STOP을 사용할 때 발생하는 종료 코드 문제를 해결했습니다. 이제 오류가 발생하면 스크립트가 종료되고 올바른 종료 코드를 반환합니다.
+ Maxerror가 이제 대/소문자를 구분하지 않습니다.

New
+ ODBC 2.x 드라이브에 대한 지원이 추가되었습니다.



*1.0.4(2022-03-19)*
+ RSPASSWORD 환경 변수에 대한 지원을 추가합니다. Amazon Redshift Redshift에 연결할 암호를 설정합니다. 예를 들어 `export RSPASSWORD=TestPassw0rd`입니다.



*1.0.3(2021-12-08)*

버그 수정
+ Windows OS에서 `\c` 또는 `\logon`을 사용하여 데이터베이스 간에 전환할 때 대화 상자 팝업이 수정되었습니다.
+ ssl 정보를 확인할 때 발생하는 충돌이 수정되었습니다.



## Amazon Redshift RSQL 이전 버전
<a name="rsql-query-tool-changelog-legacy-versions"></a>

링크 중 하나를 선택하여 운영 체제에 따라 필요한 Amazon Redshift RSQL 버전을 다운로드합니다.

**Linux 64비트 RPM**
+ [RSQL 버전 1.1.1](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.1.1/AmazonRedshiftRsql-1.1.1.rhel.x86_64.rpm)
+ [RSQL 버전 1.1.0](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.1.0/AmazonRedshiftRsql-1.1.0.rhel.x86_64.rpm)
+ [RSQL 버전 1.0.8](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.0.8/AmazonRedshiftRsql-1.0.8.x86_64.rpm)
+ [RSQL 버전 1.0.7](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.0.7/AmazonRedshiftRsql-1.0.7.x86_64.rpm)
+ [RSQL 버전 1.0.6](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.0.6/AmazonRedshiftRsql-1.0.6.x86_64.rpm)
+ [RSQL 버전 1.0.5](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.0.5/AmazonRedshiftRsql-1.0.5-1.x86_64.rpm)
+ [RSQL 버전 1.0.4](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.0.4/AmazonRedshiftRsql-1.0.4-1.x86_64.rpm)
+ [RSQL 버전 1.0.3](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.0.3/AmazonRedshiftRsql-1.0.3-1.x86_64.rpm)
+ [RSQL 버전 1.0.1](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.0.1/AmazonRedshiftRsql-1.0.1-1.x86_64.rpm) 

**macOS 64비트 DMG/PKG**
+ [RSQL 버전 1.1.1](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.1.1/AmazonRedshiftRsql-1.1.1.universal.pkg)
+ [RSQL 버전 1.1.0](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.1.0/AmazonRedshiftRsql-1.1.0.universal.pkg)
+ [RSQL 버전 1.0.8](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.0.8/AmazonRedshiftRsql-1.0.8.x86_64.dmg)
+ [RSQL 버전 1.0.7](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.0.7/AmazonRedshiftRsql-1.0.7.x86_64.dmg)
+ [RSQL 버전 1.0.6](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.0.6/AmazonRedshiftRsql-1.0.6.x86_64.dmg)
+ [RSQL 버전 1.0.5](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.0.5/AmazonRedshiftRsql-1.0.5.dmg)
+ [RSQL 버전 1.0.4](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.0.4/AmazonRedshiftRsql-1.0.4.dmg)
+ [RSQL 버전 1.0.3](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.0.3/AmazonRedshiftRsql-1.0.3.dmg)
+ [RSQL 버전 1.0.1](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.0.1/AmazonRedshiftRsql-1.0.1.dmg) 

**Windows 64비트 MSI**
+ [RSQL 버전 1.1.1](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.1.1/AmazonRedshiftRsql-1.1.1.x86_64.msi)
+ [RSQL 버전 1.1.0](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.1.0/AmazonRedshiftRsql-1.1.0.x86_64.msi)
+ [RSQL 버전 1.0.8](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.0.8/AmazonRedshiftRsql-1.0.8.x86_64.msi)
+ [RSQL 버전 1.0.7](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.0.7/AmazonRedshiftRsql-1.0.7.x86_64.msi)
+ [RSQL 버전 1.0.6](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.0.6/AmazonRedshiftRsql-1.0.6.x86_64.msi)
+ [RSQL 버전 1.0.5](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.0.5/AmazonRedshiftRsql-1.0.5.msi)
+ [RSQL 버전 1.0.4](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.0.4/AmazonRedshiftRsql-1.0.4.msi)
+ [RSQL 버전 1.0.3](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.0.3/AmazonRedshiftRsql-1.0.3.msi)
+ [RSQL 버전 1.0.1](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.0.1/AmazonRedshiftRsql-1.0.1.msi) 

# Amazon Redshift RSQL을 사용하여 클러스터에 연결
<a name="rsql-query-tool-starting-tool-connection"></a>

Amazon Redshift를 사용하면 RSQL로 클러스터에 연결하고 상호 작용할 수 있습니다. 이는 데이터를 쿼리하고, 데이터베이스 객체를 생성하고, Amazon Redshift 클러스터를 관리하는 안전한 방법을 제공하는 명령줄 도구입니다. 다음 섹션에서는 데이터 소스 이름(DSN)이 있거나 없는 RSQL을 사용하여 클러스터에 대한 연결을 설정하는 단계를 안내합니다.

## DSN을 사용하지 않고 연결
<a name="rsql-query-tool-starting-tool-connection-dsn-less-example"></a>

1. Amazon Redshift 콘솔에서 연결할 클러스터를 선택하고 엔드포인트, 데이터베이스 및 포트를 기록해 둡니다.

1. 명령 프롬프트에서 명령줄 파라미터를 사용하여 연결 정보를 지정합니다.

   ```
   rsql -h <endpoint> -U <username> -d <databasename> -p <port>
   ```

    여기에는 다음이 적용됩니다.
   +  *<endpoint>*은(는) 이전 단계에서 기록한 **엔드포인트(Endpoint)**입니다.
   +  *<username>*은 클러스터 연결 권한이 있는 사용자의 이름입니다.
   +  *<databasename>*은(는) 이전 단계에서 입력한 **데이터베이스 이름(Database Name)**입니다.
   +  *<port>*는 이전 단계에서 기록한 **포트(Port)**입니다. *<port>*는 선택적 파라미터입니다.

   예를 들면 다음과 같습니다.

   ```
   rsql -h testcluster.example.amazonaws.com -U user1 -d dev -p 5439
   ```

1.  암호 프롬프트에서 *<username>* 사용자의 암호를 입력합니다.

   성공적인 연결 응답은 다음과 같습니다.

   ```
   % rsql -h testcluster.example.com -d dev -U user1 -p 5349
   Password for user user1:
   DSN-less Connected
   DBMS Name: Amazon Redshift
   Driver Name: Amazon Redshift ODBC Driver
   Driver Version: 1.4.27.1000
   Rsql Version: 1.0.1
   Redshift Version: 1.0.29306
   Type "help" for help.
   
   (testcluster) user1@dev=#
   ```

연결 명령은 Linux, Mac OS 및 Windows에서 동일한 파라미터를 사용합니다.

## DSN으로 연결
<a name="rsql-query-tool-starting-tool-connection-dsn-example"></a>

DSN을 통해 연결 속성 구성을 간소화하여 RSQL을 Amazon Redshift에 연결할 수 있습니다. 이 주제에는 ODBC 드라이버 설치 설명과 DSN 속성 설명이 포함되어 있습니다.

### 암호와 함께 DSN 연결 사용
<a name="rsql-query-tool-starting-tool-connection-dsn-example-password"></a>

다음은 암호를 사용하는 DSN 연결 구성의 예를 보여줍니다. 기본 `<path to driver>`은 Mac OSX의 경우 `/opt/amazon/redshift/lib/libamazonredshiftodbc.dylib`이고 Linux의 경우 `/opt/amazon/redshiftodbc/lib/64/libamazonredshiftodbc64.so`입니다.

```
[testuser]
Driver=/opt/amazon/redshiftodbc/lib/64/libamazonredshiftodbc64.so
SSLMode=verify-ca
Min_TLS=1.2
boolsaschar=0
Host=<server endpoint>
Port=<database port>
Database=<dbname>
UID=<username>
PWD=<password>
sslmode=prefer
```

다음 출력은 성공적인 연결의 결과입니다.

```
% rsql -D testuser
DSN Connected
DBMS Name: Amazon Redshift
Driver Name: Amazon Redshift ODBC Driver
Driver Version: 1.4.27.1000
Rsql Version: 1.0.1
Redshift Version: 1.0.29306
Type "help" for help.

(testcluster) user1@dev=#
```

### 통합 인증 DSN 사용
<a name="rsql-query-tool-starting-tool-connection-dsn"></a>

Single Sign-On 인증을 위해 DSN을 구성할 수 있습니다. 다음은 Okta Single Sign-On을 사용하는 DSN 연결 구성의 예를 보여줍니다.

```
[testokta]
Driver=<path to driver>
SSLMode=verify-ca
Min_TLS=1.2
boolsaschar=0
Host=<server endpoint>
clusterid=<cluster id>
region=<region name>
Database=<dbname>
locale=en-US
iam=1
plugin_name=<plugin name>
uid=<okta username>
pwd=<okta password>
idp_host=<idp endpoint>
app_id=<app id>
app_name=<app name>
preferred_role=<role arn>
```

성공적인 연결의 샘플 출력입니다.

```
% rsql -D testokta 
DSN Connected
DBMS Name: Amazon Redshift
Driver Name: Amazon Redshift ODBC Driver
Driver Version: 1.4.27.1000
Rsql Version: 1.0.1
Redshift Version: 1.0.29306
Type "help" for help.

(testcluster) user1@dev=#
```

다음은 Azure Single Sign-On을 사용하는 DSN 연결 구성의 예를 보여줍니다.

```
[testazure]
Driver=<path to driver>
SSLMode=verify-ca
Min_TLS=1.2
boolsaschar=0
Host=<server endpoint>
Port=<cluster port>
clusterid=<cluster id>
region=<region name>
Database=<dbname>
locale=en-us
iam=1
plugin_name=<plugin name>
uid=<azure username>
pwd=<azure password>
idp_tenant=<Azure idp tenant uuid>
client_id=<Azure idp client uuid>
client_secret=<Azure idp client secret>
```

### IAM 프로파일과 함께 DSN 연결 사용
<a name="rsql-query-tool-starting-tool-connection-dsn-iam"></a>

구성된 IAM 프로파일을 사용하여 Amazon Redshift에 연결할 수 있습니다. IAM 프로파일에 `GetClusterCredentials`를 호출할 수 있는 권한이 있어야 합니다. 다음 예에서는 사용할 DSN 속성을 보여줍니다. `ClusterID` 및 `Region` 파라미터는 `Host`가 `examplecluster.abc123xyz789.us-west-2.redshift.amazonaws.com`과 같이 Amazon에서 제공하는 엔드포인트가 아닌 경우에만 필요합니다.

```
[testiam]
Driver=Default
Host=testcluster.example.com
Database=dev
DbUser=testuser
ClusterID=rsqltestcluster
Region=us-east-1
IAM=1
Profile=default
```

`Profile` 키 값은AWS CLI 자격 증명에서 선택하는 명명된 프로파일입니다. 이 예에서는 `default`라는 프로파일에 대한 자격 증명을 보여줍니다.

```
$ cat .aws/credentials
[default]
aws_access_key_id = ASIAIOSFODNN7EXAMPLE 
aws_secret_access_key = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
```

다음은 연결 응답을 보여줍니다.

```
$ rsql -D testiam
DSN Connected
DBMS Name: Amazon Redshift
Driver Name: Amazon Redshift ODBC Driver
Driver Version: 1.4.27.1000
Rsql Version: 1.0.1
Redshift Version: 1.0.29306
Type "help" for help.

(testcluster) testuser@dev=>
```

### 인스턴스 프로파일과 함께 DSN 연결 사용
<a name="rsql-query-tool-starting-tool-connection-dsn-instance"></a>

Amazon EC2 인스턴스 프로파일을 사용하여 Amazon Redshift에 연결할 수 있습니다. 인스턴스 프로파일에 `GetClusterCredentials`를 호출할 수 있는 권한이 있어야 합니다. 사용할 DSN 속성은 아래 예를 참조하세요. `ClusterID` 및 `Region` 파라미터는 `Host`가 `examplecluster.abc123xyz789.us-west-2.redshift.amazonaws.com`과 같이 Amazon에서 제공하는 엔드포인트가 아닌 경우에만 필요합니다.

```
[testinstanceprofile]
Driver=Default
Host=testcluster.example.com
Database=dev
DbUser=testuser
ClusterID=rsqltestcluster
Region=us-east-1
IAM=1
Instanceprofile=1
```

다음은 연결 응답을 보여줍니다.

```
$ rsql -D testinstanceprofile
DSN Connected
DBMS Name: Amazon Redshift
Driver Name: Amazon Redshift ODBC Driver
Driver Version: 1.4.27.1000
Rsql Version: 1.0.1
Redshift Version: 1.0.29306
Type "help" for help.

(testcluster) testuser@dev=>
```

### 기본 자격 증명 공급자 체인에서 DSN 연결 사용
<a name="rsql-query-tool-starting-tool-connection-dsn-provider-chain"></a>

기본 자격 증명 공급자 체인을 사용하여 연결하기 위해 IAM 속성만 지정하면 Amazon Redshift RSQL이 Java용 AWS SDK에서 [AWS 자격 증명으로 작업하기](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/credentials.html)에 나와 있는 순서대로 자격 증명 획득을 시도합니다. 체인에서 제공자 하나 이상이 `GetClusterCredentials` 권한이 있어야 합니다. 이것은 예를 들어 ECS 컨테이너에서 연결할 때 유용합니다.

```
[iamcredentials]
Driver=Default
Host=testcluster.example.com
Database=dev
DbUser=testuser
ClusterID=rsqltestcluster
Region=us-east-1
IAM=1
```

# Amazon Redshift RSQL 메타 명령
<a name="rsql-query-tool-commands"></a>

Amazon Redshift RSQL 메타 명령은 데이터베이스 또는 특정 데이터베이스 객체에 대한 정보 레코드를 반환합니다. 결과에는 다양한 열과 메타데이터가 포함될 수 있습니다. 다른 명령은 특정 작업을 수행합니다. 이러한 명령 앞에는 백슬래시를 붙입니다.

## \$1d[S\$1]
<a name="rsql-query-tool-describe-d"></a>

 로컬 사용자 생성 테이블, 일반 보기, 후기 바인딩 보기 및 구체화된 보기를 나열합니다. `\dS `는 `\d`와 같은 테이블과 보기도 나열하지만 반환된 레코드에는 시스템 객체가 포함됩니다. `+`는 나열된 모든 객체에 대한 추가 메타데이터 열 `description`을 생성합니다. 다음은 명령의 결과로 반환된 샘플 레코드를 보여줍니다.

```
List of relations
 schema |   name    | type  |  owner  
--------+-----------+-------+---------
 public | category  | table | awsuser
 public | date      | table | awsuser
 public | event     | table | awsuser
 public | listing   | table | awsuser
 public | sales     | table | awsuser
 public | users     | table | awsuser
 public | venue     | table | awsuser
(7 rows)
```

## \$1d[S\$1] NAME
<a name="rsql-query-tool-describe-s-plus-named"></a>

테이블, 보기 또는 인덱스에 대해 설명합니다. 열 이름 및 유형을 포함합니다. 또한 diststyle, 백업 구성, 생성 날짜(2018년 10월 이후 생성된 테이블) 및 제약 조건을 제공합니다. 예를 들어, `\dS+ sample`은 객체 속성을 반환합니다. `S+`를 추가하면 반환된 레코드에 추가 열이 포함됩니다.

```
Table "public.sample"
 Column |            Type             |   Collation    | Nullable | Default Value | Encoding  | DistKey | SortKey
--------+-----------------------------+----------------+----------+---------------+-----------+---------+---------
 col1   | smallint                    |                | NO       |               | none      | t       | 1
 col2   | character(100)              | case_sensitive | YES      |               | none      | f       | 2
 col3   | character varying(100)      | case_sensitive | YES      |               | text32k   | f       | 3
 col4   | timestamp without time zone |                | YES      |               | runlength | f       | 0
 col5   | super                       |                | YES      |               | zstd      | f       | 0
 col6   | bigint                      |                | YES      |               | az64      | f       | 0

Diststyle: KEY
Backup: YES
Created: 2021-07-20 19:47:27.997045
Unique Constraints:
    "sample_pkey" PRIMARY KEY (col1)
    "sample_col2_key" UNIQUE (col2)
Foreign-key constraints:
    "sample_col2_fkey" FOREIGN KEY (col2) REFERENCES lineitem(l_orderkey)
```

테이블의 배포 스타일 또는 *Diststyle*은 KEY, AUTO, EVEN 또는 ALL일 수 있습니다.

*백업(Backup)*은 스냅샷이 생성될 때 테이블이 백업되는지 여부를 나타냅니다. 유효한 값은 `YES` 또는 `NO`입니다.

*생성됨(Created)*은 테이블이 생성될 때의 타임스탬프입니다. 2018년 11월 이전에 생성된 Amazon Redshift 테이블에는 생성 날짜를 사용할 수 없습니다. 이 날짜 이전에 생성된 테이블은 n/a(해당 사항 없음)으로 표시됩니다.

*고유 제약 조건(Unique Constraints)*에는 테이블에 대한 고유 및 기본 키 제약 조건이 나열됩니다.

*외래 키 제약 조건(Foreign-key constraints)*에는 테이블에 대한 외래 키 제약 조건이 나열됩니다.

## \$1dC[\$1] [PATTERN]
<a name="rsql-query-tool-describe-dc"></a>

캐스트를 나열합니다. 소스 유형, 대상 유형 및 캐스트가 암시적인지 여부를 포함합니다.

다음은 `\dC+` 결과의 하위 집합을 보여줍니다.

```
List of casts
         source type         |         target type         |      function       |   implicit?   | description 
-----------------------------+-----------------------------+---------------------+---------------+-------------
 "char"                      | character                   | bpchar              | in assignment | 
 "char"                      | character varying           | text                | in assignment | 
 "char"                      | integer                     | int4                | no            | 
 "char"                      | text                        | text                | yes           | 
 "path"                      | point                       | point               | no            | 
 "path"                      | polygon                     | polygon             | in assignment | 
 abstime                     | date                        | date                | in assignment | 
 abstime                     | integer                     | (binary coercible)  | no            | 
 abstime                     | time without time zone      | time                | in assignment | 
 abstime                     | timestamp with time zone    | timestamptz         | yes           | 
 abstime                     | timestamp without time zone | timestamp           | yes           | 
 bigint                      | bit                         | bit                 | no            | 
 bigint                      | boolean                     | bool                | yes           | 
 bigint                      | character                   | bpchar              | in assignment | 
 bigint                      | character varying           | text                | in assignment | 
 bigint                      | double precision            | float8              | yes           | 
 bigint                      | integer                     | int4                | in assignment | 
 bigint                      | numeric                     | numeric             | yes           | 
 bigint                      | oid                         | oid                 | yes           | 
 bigint                      | real                        | float4              | yes           | 
 bigint                      | regclass                    | oid                 | yes           | 
 bigint                      | regoper                     | oid                 | yes           | 
 bigint                      | regoperator                 | oid                 | yes           | 
 bigint                      | regproc                     | oid                 | yes           | 
 bigint                      | regprocedure                | oid                 | yes           | 
 bigint                      | regtype                     | oid                 | yes           | 
 bigint                      | smallint                    | int2                | in assignment | 
 bigint                      | super                       | int8_partiql        | in assignment |
```

## \$1dd[S] [PATTERN]
<a name="rsql-query-tool-describe-dds"></a>

다른 곳에 표시되지 않는 객체 설명을 보여줍니다.

## \$1de
<a name="rsql-query-tool-describe-de"></a>

외부 테이블을 나열합니다. 여기에는 AWS Glue Data Catalog의 테이블, Hive Metastore 및 Amazon RDS/Aurora MySQL, Amazon RDS/Aurora PostgreSQL 및 Amazon Redshift 데이터 공유 테이블의 페더레이션 테이블이 포함됩니다.

## \$1de NAME
<a name="rsql-query-tool-describe-de-name"></a>

외부 테이블을 설명합니다.

다음 예에서는 AWS Glue 외부 테이블을 보여줍니다.

```
# \de spectrum.lineitem
                            Glue External table "spectrum.lineitem"
     Column      | External Type | Redshift Type | Position | Partition Key | Nullable
-----------------+---------------+---------------+----------+---------------+----------
 l_orderkey      | bigint        | bigint        | 1        | 0             |
 l_partkey       | bigint        | bigint        | 2        | 0             |
 l_suppkey       | int           | int           | 3        | 0             |
 l_linenumber    | int           | int           | 4        | 0             |
 l_quantity      | decimal(12,2) | decimal(12,2) | 5        | 0             |
 l_extendedprice | decimal(12,2) | decimal(12,2) | 6        | 0             |
 l_discount      | decimal(12,2) | decimal(12,2) | 7        | 0             |
 l_tax           | decimal(12,2) | decimal(12,2) | 8        | 0             |
 l_returnflag    | char(1)       | char(1)       | 9        | 0             |
 l_linestatus    | char(1)       | char(1)       | 10       | 0             |
 l_shipdate      | date          | date          | 11       | 0             |
 l_commitdate    | date          | date          | 12       | 0             |
 l_receiptdate   | date          | date          | 13       | 0             |
 l_shipinstruct  | char(25)      | char(25)      | 14       | 0             |
 l_shipmode      | char(10)      | char(10)      | 15       | 0             |
 l_comment       | varchar(44)   | varchar(44)   | 16       | 0             |

Location: s3://redshiftbucket/kfhose2019/12/31
Input_format: org.apache.hadoop.mapred.TextInputFormat
Output_format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
Serialization_lib: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
Serde_parameters: {"field.delim":"|","serialization.format":"|"}
Parameters: {"EXTERNAL":"TRUE","numRows":"178196721475","transient_lastDdlTime":"1577771873"}
```

Hive 메타스토어 테이블.입니다.

```
# \de emr.lineitem
                     Hive Metastore External Table "emr.lineitem"
     Column      | External Type | Redshift Type | Position | Partition Key | Nullable
-----------------+---------------+---------------+----------+---------------+----------
 l_orderkey      | bigint        | bigint        | 1        | 0             |
 l_partkey       | bigint        | bigint        | 2        | 0             |
 l_suppkey       | int           | int           | 3        | 0             |
 l_linenumber    | int           | int           | 4        | 0             |
 l_quantity      | decimal(12,2) | decimal(12,2) | 5        | 0             |
 l_extendedprice | decimal(12,2) | decimal(12,2) | 6        | 0             |
 l_discount      | decimal(12,2) | decimal(12,2) | 7        | 0             |
 l_tax           | decimal(12,2) | decimal(12,2) | 8        | 0             |
 l_returnflag    | char(1)       | char(1)       | 9        | 0             |
 l_linestatus    | char(1)       | char(1)       | 10       | 0             |
 l_commitdate    | date          | date          | 11       | 0             |
 l_receiptdate   | date          | date          | 12       | 0             |
 l_shipinstruct  | char(25)      | char(25)      | 13       | 0             |
 l_shipmode      | char(10)      | char(10)      | 14       | 0             |
 l_comment       | varchar(44)   | varchar(44)   | 15       | 0             |
 l_shipdate      | date          | date          | 16       | 1             |

Location: s3://redshiftbucket/cetas
Input_format: org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat
Output_format: org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat
Serialization_lib: org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe
Serde_parameters: {"serialization.format":"1"}
Parameters: {"EXTERNAL":"TRUE", "numRows":"4307207", "transient_lastDdlTime":"1626990007"}
```

PostgreSQL 외부 테이블입니다.

```
# \de pgrsql.alltypes
                                Postgres Federated Table "pgrsql.alltypes"
 Column |        External Type        |        Redshift Type        | Position | Partition Key | Nullable
--------+-----------------------------+-----------------------------+----------+---------------+----------
 col1   | bigint                      | bigint                      | 1        | 0             |
 col2   | bigint                      | bigint                      | 2        | 0             |
 col5   | boolean                     | boolean                     | 3        | 0             |
 col6   | box                         | varchar(65535)              | 4        | 0             |
 col7   | bytea                       | varchar(65535)              | 5        | 0             |
 col8   | character(10)               | character(10)               | 6        | 0             |
 col9   | character varying(10)       | character varying(10)       | 7        | 0             |
 col10  | cidr                        | varchar(65535)              | 8        | 0             |
 col11  | circle                      | varchar(65535)              | 9        | 0             |
 col12  | date                        | date                        | 10       | 0             |
 col13  | double precision            | double precision            | 11       | 0             |
 col14  | inet                        | varchar(65535)              | 12       | 0             |
 col15  | integer                     | integer                     | 13       | 0             |
 col16  | interval                    | varchar(65535)              | 14       | 0             |
 col17  | json                        | varchar(65535)              | 15       | 0             |
 col18  | jsonb                       | varchar(65535)              | 16       | 0             |
 col19  | line                        | varchar(65535)              | 17       | 0             |
 col20  | lseg                        | varchar(65535)              | 18       | 0             |
 col21  | macaddr                     | varchar(65535)              | 19       | 0             |
 col22  | macaddr8                    | varchar(65535)              | 20       | 0             |
 col23  | money                       | varchar(65535)              | 21       | 0             |
 col24  | numeric                     | numeric(38,20)              | 22       | 0             |
 col25  | path                        | varchar(65535)              | 23       | 0             |
 col26  | pg_lsn                      | varchar(65535)              | 24       | 0             |
 col28  | point                       | varchar(65535)              | 25       | 0             |
 col29  | polygon                     | varchar(65535)              | 26       | 0             |
 col30  | real                        | real                        | 27       | 0             |
 col31  | smallint                    | smallint                    | 28       | 0             |
 col32  | smallint                    | smallint                    | 29       | 0             |
 col33  | integer                     | integer                     | 30       | 0             |
 col34  | text                        | varchar(65535)              | 31       | 0             |
 col35  | time without time zone      | varchar(65535)              | 32       | 0             |
 col36  | time with time zone         | varchar(65535)              | 33       | 0             |
 col37  | timestamp without time zone | timestamp without time zone | 34       | 0             |
 col38  | timestamp with time zone    | timestamp with time zone    | 35       | 0             |
 col39  | tsquery                     | varchar(65535)              | 36       | 0             |
 col40  | tsvector                    | varchar(65535)              | 37       | 0             |
 col41  | txid_snapshot               | varchar(65535)              | 38       | 0             |
 col42  | uuid                        | varchar(65535)              | 39       | 0             |
 col43  | xml                         | varchar(65535)              | 40       | 0             |
```

## \$1df[anptw][S\$1] [PATTERN]
<a name="rsql-query-tool-df"></a>

 다양한 유형의 함수를 나열합니다. 예를 들어 `\df` 명령은 함수 목록을 반환합니다. 결과에는 이름, 반환된 데이터 유형, 액세스 권한 및 추가 메타데이터와 같은 속성이 포함됩니다. 함수 유형에는 트리거, 저장 프로시저, 윈도 함수 및 기타 유형이 포함될 수 있습니다. 명령에 `S+`를 추가하면(예: `\dfantS+`) `owner`, `security`, `access privileges` 등의 추가 메타데이터 열이 포함됩니다.

## \$1dL[S\$1] [PATTERN]
<a name="rsql-query-tool-describe-dl"></a>

 데이터베이스와 연결된 절차 언어에 대한 데이터를 나열합니다. 정보에는 plpgsql과 같은 이름과 신뢰할 수 있는지 여부, 액세스 권한 및 설명이 포함된 추가 메타데이터가 포함됩니다. 예를 들어 샘플 호출은 언어 및 해당 속성을 나열하는 `\dLS+`입니다. 명령에 `S+`를 추가하면 `call handler`, `access privileges`등의 추가 메타데이터 열이 포함됩니다.

샘플 결과:

```
List of languages
   name    | trusted | internal language |      call handler       |                         validator                          | access privileges |          description           
-----------+---------+-------------------+-------------------------+------------------------------------------------------------+-------------------+--------------------------------
 c         | f       | t                 | -                       | fmgr_c_validator(oid)                                      |                   | Dynamically-loaded C functions
 exfunc    | f       | f                 | exfunc_call_handler()   | -                                                          | rdsdb=U/rdsdb     | 
 internal  | f       | t                 | -                       | fmgr_internal_validator(oid)                               |                   | Built-in functions
 mlfunc    | f       | f                 | mlfunc_call_handler()   | -                                                          | rdsdb=U/rdsdb     | 
 plpgsql   | t       | f                 | plpgsql_call_handler()  | plpgsql_validator(oid)                                     |                   | 
 plpythonu | f       | f                 | plpython_call_handler() | plpython_compiler(cstring,cstring,cstring,cstring,cstring) | rdsdb=U/rdsdb     | 
 sql       | t       | t                 | -                       | fmgr_sql_validator(oid)                                    | =U/rdsdb          | SQL-language functions
```

## \$1dm[S\$1] [PATTERN]
<a name="rsql-query-tool-describe-dm"></a>

 구체화된 보기를 나열합니다. 예를 들어 `\dmS+`는 구체화된 보기와 해당 속성을 나열합니다. 명령에 `S+`를 추가하면 추가 메타데이터 열이 포함됩니다.

## \$1dn[S\$1] [PATTERN]
<a name="rsql-query-tool-describe-dn"></a>

 스키마를 나열합니다. 명령에 `S+`를 추가하면(예: `\dnS+`) `description`, `access privileges`등의 추가 메타데이터 열이 포함됩니다.

## \$1dp [PATTERN]
<a name="rsql-query-tool-describe-dp"></a>

 테이블, 보기 및 시퀀스 액세스 권한을 나열합니다.

## \$1dt[S\$1] [PATTERN]
<a name="rsql-query-tool-describe-dt"></a>

 테이블을 나열합니다. 명령에 `S+`를 추가하면(예: `\dtS+`) 이 경우 `description` 등의 추가 메타데이터 열이 포함됩니다.

## \$1du
<a name="rsql-query-tool-describe-du"></a>

 데이터베이스의 사용자를 나열합니다. 해당 이름과 슈퍼 사용자 및 속성 등의 역할을 포함합니다.

## \$1dv[S\$1] [PATTERN]
<a name="rsql-query-tool-describe-dv"></a>

 보기를 나열합니다. 스키마, 유형 및 소유자 데이터를 포함합니다. 명령에 `S+`를 추가하면(예:`\dvS+`) 추가 메타데이터 열이 포함됩니다.

## \$1H
<a name="rsql-query-tool-describe-h"></a>

 HTML 출력을 설정합니다. 이는 형식이 지정된 결과를 빠르게 반환하는 데 유용합니다. 예를 들어 `select * from sales; \H`는 sales 테이블의 결과를 HTML로 반환합니다. 테이블형 결과로 다시 전환하려면 `\q` 또는 quiet을 사용합니다.

## \$1i
<a name="rsql-query-tool-describe-i"></a>

 파일에서 명령을 실행합니다. 예를 들어, 작업 디렉터리에 rsql\$1steps.sql이 있다고 가정하면 `\i rsql_steps.sql`은 파일에서 명령을 실행합니다.

## \$1l[\$1] [PATTERN]
<a name="rsql-query-tool-describe-l"></a>

 데이터베이스를 나열합니다. 소유자, 인코딩 및 추가 정보가 포함됩니다.

## \$1q
<a name="rsql-query-tool-describe-q"></a>

 quit 또는 `\q` 명령은 데이터베이스 세션을 로그오프하고 RSQL을 종료합니다.

## \$1sv[\$1] VIEWNAME
<a name="rsql-query-tool-describe-sv-name"></a>

 보기의 정의를 표시합니다.

## \$1timing
<a name="rsql-query-tool-describe-timing"></a>

 예를 들어 쿼리의 실행 시간을 표시합니다.

## \$1z [PATTERN]
<a name="rsql-query-tool-describe-z"></a>

 \$1dp와 동일한 출력입니다.

## \$1?
<a name="rsql-query-tool-help"></a>

 도움말 정보를 표시합니다. 이 선택적 파라미터는 설명할 항목을 지정합니다.

## \$1EXIT
<a name="rsql-query-tool-flow-control-exit"></a>

 모든 데이터베이스 세션을 로그오프하고 Amazon Redshift RSQL을 종료합니다. 또한 선택적 종료 코드를 지정할 수 있습니다. 예를 들어, `\EXIT 15`는 Amazon Redshift RSQL 터미널을 종료하고 종료 코드 15를 반환합니다.

다음 예는 연결 및 RSQL 종료의 출력을 보여줍니다.

```
% rsql -D testuser
DSN Connected
DBMS Name: Amazon Redshift
Driver Name: Amazon Redshift ODBC Driver
Driver Version: 1.4.34.1000
Rsql Version: 1.0.1
Redshift Version: 1.0.29306 
Type "help" for help.

(testcluster) user1@dev=# \exit 15

% echo $?
15
```

## \$1EXPORT
<a name="rsql-query-tool-export"></a>

 RSQL이 후속 SQL SELECT 문에서 반환하는 데이터베이스 정보를 저장하는 데 사용하는 내보내기 파일의 이름을 지정합니다.

export\$101.sql

```
\export report file='E:\\accounts.out'
\rset rformat off
\rset width 1500
\rset heading "General Title"
\rset titledashes on
select * from td_dwh.accounts;
\export reset
```

콘솔 출력

```
Rformat is off.
Target width is 1500.
Heading is set to: General Title
Titledashes is on.
(exported 40 rows)
```

## \$1LOGON
<a name="rsql-query-tool-flow-control-logon"></a>

 데이터베이스에 연결합니다. 위치 구문이나 연결 문자열을 사용하여 연결 파라미터를 지정할 수 있습니다.

명령 구문은 `\logon {[DBNAME|- USERNAME|- HOST|- PORT|- [PASSWORD]] | conninfo}`입니다.

`DBNAME`은 연결할 데이터베이스의 이름입니다. `USERNAME`은 연결할 사용자 이름입니다. 기본 `HOST`는 `localhost`입니다. 기본 `PORT`는 `5439`입니다.

`\LOGON` 명령에 지정된 호스트 이름이 추가 `\LOGON` 명령에 대한 기본 호스트 이름이 됩니다. 기본 호스트 이름을 변경하려면 추가 `\LOGON` 명령에 새 `HOST`를 지정합니다.

`user1`에 대한 `\LOGON` 명령의 샘플 출력은 다음과 같습니다.

```
(testcluster) user1@redshiftdb=# \logon dev
DBMS Name: Amazon Redshift
Driver Name: Amazon Redshift ODBC Driver
Driver Version: 1.4.27.1000
Rsql Version: 1.0.1
You are now connected to database "dev" as user "user1".
(testcluster) user1@dev=#
```

*user2*에 대한 샘플 출력

```
(testcluster) user1@dev=# \logon dev user2 testcluster2.example.com
Password for user user2: 
DBMS Name: Amazon Redshift
Driver Name: Amazon Redshift ODBC Driver
Driver Version: 1.4.27.1000
Rsql Version: 1.0.1
You are now connected to database "dev" as user "user2" on host "testcluster2.example.com" at port "5439".
(testcluster2) user2@dev=#
```

## \$1REMARK
<a name="rsql-query-tool-flow-control-remark"></a>

 `\echo` 명령의 확장입니다. `\REMARK`는 지정된 문자열을 출력 스트림에 출력합니다. `\REMARK `는 출력을 분리하는 기능을 추가하여 `\echo`를 확장합니다.

다음 샘플은 명령의 출력을 보여줍니다.

```
(testcluster) user1@dev=# \remark 'hello//world'
hello
world
```

## \$1RSET
<a name="rsql-query-tool-rset"></a>

`\rset` 명령은 명령 파라미터와 변수를 설정합니다.`\rset`에는 대화형 모드와 배치 모드가 모두 있습니다. *-x*와 같은 bash 옵션이나 *--<arg>*와 같은 인수의 옵션을 지원하지 않습니다.

다음과 같은 변수를 설정합니다.
+ ERRORLEVEL
+ HEADING 및 RTITLE
+ RFORMAT
+ MAXERROR
+ TITLEDASHES
+ WIDTH

다음 예에서는 헤딩을 지정합니다.

```
\rset heading "Winter Sales Report"
```

`\rset` 사용 방법의 추가 예제를 보려면 [Amazon Redshift RSQL 변수](rsql-query-tool-variables.md) 주제에서 여러 예를 확인할 수 있습니다.

## \$1RUN
<a name="rsql-query-tool-flow-control-run"></a>

 지정된 파일에 포함된 Amazon Redshift RSQL 스크립트를 실행합니다. `\RUN`은 파일의 헤더 행을 건너뛰는 옵션을 추가하여 `\i` 명령을 확장합니다.

파일 이름에 쉼표, 세미콜론 또는 공백이 포함된 경우 작은따옴표로 묶습니다. 또한 텍스트가 파일 이름 뒤에 오는 경우 따옴표로 텍스트를 묶습니다. UNIX에서 파일 이름은 대/소문자를 구분합니다. Windows에서 파일 이름은 대/소문자를 구분하지 않습니다.

다음 샘플은 명령의 출력을 보여줍니다.

```
(testcluster) user1@dev=# \! cat test.sql
select count(*) as lineitem_cnt from lineitem;
select count(*) as customer_cnt from customer;
select count(*) as orders_cnt from orders;



(testcluster) user1@dev=# \run file=test.sql
 lineitem_cnt
--------------
      4307207
(1 row)

 customer_cnt
--------------
     37796166
(1 row)

 orders_cnt
------------
          0
(1 row)


(testcluster) user1@dev=# \run file=test.sql skip=2
2 records skipped in RUN file.
 orders_cnt
------------
          0
(1 row)
```

## \$1OS
<a name="rsql-query-tool-flow-control-os"></a>

 `\!` 명령의 별칭입니다. `\OS`는 파라미터로 전달된 운영 체제 명령을 실행합니다. 명령이 실행되면 컨트롤이 Amazon Redshift RSQL로 돌아갑니다. 예를 들어, `\os date` 명령을 실행하여 현재 시스템 날짜 시간을 인쇄하고 RSQL 터미널로 돌아갈 수 있습니다.

```
(testcluster) user1@dev=# \os date
Tue Sep 7 20:47:54 UTC 2021
```

## \$1GOTO
<a name="rsql-query-tool-flow-control-goto"></a>

 Amazon Redshift RSQL을 위한 새로운 명령입니다. `\GOTO`는 중간에 있는 모든 명령을 건너뛰고 지정된 `\LABEL`에서 처리를 재개합니다. `\LABEL`은 정방향 참조여야 합니다. 사전적으로 `\GOTO` 앞에 오는 `\LABEL`을 건너뛸 수 없습니다.

다음은 샘플 출력을 보여줍니다.

```
(testcluster) user1@dev=# \! cat test.sql
select count(*) as cnt from lineitem \gset
select :cnt as cnt;
\if :cnt > 100
    \goto LABELB
\endif

\label LABELA
\remark 'this is label LABELA'
\label LABELB
\remark 'this is label LABELB'


(testcluster) user1@dev=# \i test.sql
   cnt
---------
 4307207
(1 row)

\label LABELA ignored
\label LABELB processed
this is label LABELB
```

## \$1LABEL
<a name="rsql-query-tool-flow-control-label"></a>

 Amazon Redshift RSQL을 위한 새로운 명령입니다. `\LABEL`은 프로그램을 실행하기 위한 진입점을 `\GOTO` 명령의 대상으로 설정합니다.

다음은 명령의 샘플 출력을 보여줍니다.

```
(testcluster) user1@dev=# \! cat test.sql
select count(*) from lineitem limit 5;
\goto LABELB
\remark "this step was skipped by goto label";
\label LABELA
\remark 'this is label LABELA'
\label LABELB
\remark 'this is label LABELB'



(testcluster) user1@dev=# \i testgoto.sql
  count
 4307193
(1 row)

\label LABELA ignored
\label LABELB processed
this is label LABELB
```

## \$1IF (\$1ELSEIF, \$1ELSE, \$1ENDIF)
<a name="rsql-query-tool-flow-control-if"></a>

 `\IF` 및 관련 명령은 입력 스크립트의 일부를 조건부로 실행합니다. PSQL `\if`(`\elif`, `\else`, `\endif`) 명령의 확장입니다. `\IF` 및 `\ELSEIF`는 `AND`, `OR` 및 `NOT` 조건을 포함한 부울 표현식을 지원합니다.

다음은 명령의 샘플 출력을 보여줍니다.

```
(testcluster) user1@dev=# \! cat test.sql
SELECT query FROM stv_inflight LIMIT 1 \gset
select :query as query;
\if :query > 1000000
    \remark 'Query id is greater than 1000000'
\elseif :query = 1000000
    \remark 'Query id is equal than 1000000'
\else
    \remark 'Query id is less than 1000000'
\endif


(testcluster) user1@dev=# \i test.sql 
 query
--------
 994803
(1 row)
 
Query id is less than 1000000
```

분기 로직에 `ERRORCODE`를 사용합니다.

```
\if :'ERRORCODE' = '00000'
    \remark 'The statement was executed without error'
\else
    \remark :LAST_ERROR_MESSAGE
\endif
```

`\IF` 블록 내에서 `\GOTO`를 사용하여 코드 실행 방법을 제어합니다.

# Amazon Redshift RSQL 변수
<a name="rsql-query-tool-variables"></a>

 RSQL에서 일부 키워드는 변수로 작동합니다. 각각을 특정 값으로 설정하거나 값을 재설정할 수 있습니다. 대부분은 대화형 모드와 배치 모드가 있는 `\rset`에 의해 설정됩니다. 소문자나 대문자로 명령을 정의할 수 있습니다.

## ACTIVITYCOUNT
<a name="rsql-query-tool-activitycount"></a>

 마지막으로 제출된 요청의 영향을 받는 행 수를 나타냅니다. 데이터 반환 요청의 경우 데이터베이스에서 RSQL로 반환되는 행 수입니다. 값은 0 또는 양의 정수입니다. 최댓값은 18,446,744,073,709,551,615입니다.

 특수 처리되는 변수 `ACTIVITYCOUNT`는 `ROW_COUNT` 변수와 비슷합니다. 하지만 `ROW_COUNT`는 `SELECT`, `COPY` 또는 `UNLOAD`에 대한 명령 완료 시 영향을 받는 행 수를 클라이언트 애플리케이션에 보고하지 않습니다. 하지만 `ACTIVITYCOUNT`는 보고합니다.

activitycount\$101.sql:

```
select viewname, schemaname
from pg_views
where schemaname = 'not_existing_schema';
\if :ACTIVITYCOUNT = 0
\remark 'views do not exist'
\endif
```

콘솔 출력:

```
viewname | schemaname
----------+------------
(0 rows)

views do not exist
```

## ERRORLEVEL
<a name="rsql-query-tool-describe-rset-errorlevel"></a>

오류에 심각도 수준을 할당합니다. 심각도 수준에 따라 일련의 조치를 결정할 수 있습니다. `ERRORLEVEL` 명령을 사용하지 않은 경우 해당 값은 기본적으로 `ON`입니다.

errorlevel\$101.sql:

```
\rset errorlevel 42P01 severity 0

select * from tbl;

select 1 as col;

\echo exit
\quit
```

콘솔 출력:

```
Errorlevel is on.
rsql: ERROR: relation "tbl" does not exist
(1 row)

col
1

exit
```

## HEADING 및 RTITLE
<a name="rsql-query-tool-describe-rset-heading-rtitle"></a>

보고서 상단에 표시되는 헤더를 지정할 수 있습니다. `RSET RTITLE` 명령에서 지정한 헤더에는 클라이언트 컴퓨터의 현재 시스템 날짜를 자동으로 포함됩니다.

rset\$1heading\$1rtitle\$102.rsql 내용:

```
\remark Starting...
\rset rtitle "Marketing Department||Confidential//Third Quarter//Chicago"
\rset width 70
\rset rformat on
select * from rsql_test.tbl_currency order by id limit 2;
\exit
\remark Finishing...
```

콘솔 출력:

```
Starting...
Rtitle is set to: &DATE||Marketing Department||Confidential//Third Quarter//Chicago (Changes will take effect after RFORMAT is
switched ON)
Target width is 70.
Rformat is on.
09/11/20       Marketing       Department Confidential
                  Third Quarter
                     Chicago
id  | bankid  | name |      start_date
100 |       1 | USD | 2020-09-11 10:51:39.106905
110 |       1 | EUR | 2020-09-11 10:51:39.106905
(2 rows)

Press any key to continue . . .
```

## MAXERROR
<a name="rsql-query-tool-describe-rset-maxerror"></a>

RSQL이 해당 수준을 넘으면 작업 처리를 종료하는 최대 오류 심각도 수준을 지정합니다. 반환 코드는 각 작업 또는 태스크를 완료한 후 RSQL이 클라이언트 운영 체제에 반환하는 정수 값입니다. 반환 코드 값은 작업 또는 태스크의 완료 상태를 나타냅니다. 지정된 `maxerror` 값보다 큰 오류 심각도 수준을 생성하는 문이 스크립트에 포함된 경우 RSQL이 즉시 종료됩니다. 따라서 오류 심각도 수준 8에서 RSQL가 종료되도록 하려면 `RSET MAXERROR 7`을 사용합니다.

maxerror\$101.sql 내용:

```
\rset maxerror 0
                        
select 1 as col;

\quit
```

콘솔 출력:

```
Maxerror is default.
(1 row)

col
1
```

## RFORMAT
<a name="rsql-query-tool-describe-rset-heading-rformat"></a>

형식 지정 명령에 대한 설정을 적용할지 여부를 지정할 수 있습니다.

rset\$1rformat.rsql 내용:

```
\remark Starting...
\pset border 2
\pset format wrapped
\pset expanded on
\pset title 'Great Title'
select * from rsql_test.tbl_long where id = 500;
\rset rformat
select * from rsql_test.tbl_long where id = 500;
\rset rformat off
select * from rsql_test.tbl_long where id = 500;
\rset rformat on
select * from rsql_test.tbl_long where id = 500;
\exit
\remark Finishing...
```

콘솔 출력:

```
Starting...
Border style is 2. (Changes will take effect after RFORMAT is switched ON)
Output format is wrapped. (Changes will take effect after RFORMAT is switched ON)
Expanded display is on. (Changes will take effect after RFORMAT is switched ON)
Title is "Great Title". (Changes will take effect after RFORMAT is switched ON)
id  |                                                             long_string
500 | In general, the higher the number the more borders and lines the tables will have, but details depend on the particular
format.
(1 row)

Rformat is on.
Great Title
+-[ RECORD 1 ]+----------------------------------------------------------------------------------------------------------------------
-----------+
| id           | 500
|
| long_string | In general, the higher the number the more borders and lines the tables will have, but details depend on the
particular format. |
+-------------+----------------------------------------------------------------------------------------------------------------------
-----------+

Rformat is off.
id  |                                                             long_string
500 | In general, the higher the number the more borders and lines the tables will have, but details depend on the particular format.
(1 row)

Rformat is on.
Great Title
+-[ RECORD 1 ]+----------------------------------------------------------------------------------------------------------------------
-----------+
| id           | 500
|
| long_string | In general, the higher the number the more borders and lines the tables will have, but details depend on the
particular format. |
+-------------+----------------------------------------------------------------------------------------------------------------------
-----------+
Press any key to continue . . .
```

## ROW\$1COUNT
<a name="rsql-query-tool-describe-rset-row_count"></a>

이전 쿼리의 영향을 받는 레코드 수를 가져옵니다. 일반적으로 다음 코드 조각에서처럼 결과를 확인하는 데 사용됩니다.

```
SET result = ROW_COUNT;

IF result = 0
...
```

## TITLEDASHES
<a name="rsql-query-tool-describe-rset-heading-titledashes"></a>

이 컨트롤을 사용하면 SQL 문에 대해 반환된 열 데이터 위에 대시 문자 행을 인쇄할지 여부를 지정할 수 있습니다.

예제:

```
\rset titledashes on
select dept_no, emp_no, salary from rsql_test.EMPLOYEE
where dept_no = 100;
\rset titledashes off
select dept_no, emp_no, salary from rsql_test.EMPLOYEE
where dept_no = 100;
```

콘솔 출력:

```
dept_no      emp_no          salary
----------- ----------- --------------------
100         1000346        1300.00
100         1000245        5000.00
100         1000262        2450.00

dept_no     emp_no         salary
100         1000346        1300.00
100         1000245        5000.00
100         1000262        2450.00
```

## WIDTH
<a name="rsql-query-tool-describe-rset-heading-width"></a>

보고서의 출력 형식을 래핑으로 설정하고 각 행의 대상 너비를 지정합니다. 파라미터를 지정하지 않으면 형식과 대상 너비 모두 현재 설정이 반환됩니다.

rset\$1width\$101.rsql 내용:

```
\echo Starting...
\rset width
\rset width 50
\rset width
\quit
\echo Finishing...
```

콘솔 출력:

```
Starting...
Target width is 75.
Target width is 50.
Target width is 50.
Press any key to continue . . .
```

파라미터를 사용하는 예:

```
\echo Starting...
\rset rformat on
\pset format wrapped
select * from rsql_test.tbl_long where id = 500;
\rset width 50
select * from rsql_test.tbl_long where id = 500;
\quit
\echo Finishing...
```

콘솔 출력:

```
Starting...
Rformat is on.
Output format is wrapped.
id  |                                          long_string
500 | In general, the higher the number the more borders and lines the ta.
    |.bles will have, but details depend on the particular format.
(1 row)

Target width is 50.
id  |                                          long_string
500 | In general, the higher the number the more.
    |. borders and lines the tables will have, b.
    |.ut details depend on the particular format.
    |..
(1 row)
Press any key to continue . . .
```

# Amazon Redshift RSQL 오류 코드
<a name="rsql-query-tool-error-codes"></a>

성공 메시지, 경고 및 예외:

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/rsql-query-tool-error-codes.html)

데이터 예외:

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/rsql-query-tool-error-codes.html)

무결성 제약 조건 위반:

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/rsql-query-tool-error-codes.html)

# Amazon Redshift RSQL 환경 변수
<a name="rsql-query-tool-environment-variables"></a>

 Amazon Redshift RSQL은 환경 변수를 사용하여 기본 파라미터 값을 선택할 수 있습니다.

## RSPASSWORD
<a name="rsql-query-tool-rspassword"></a>

**중요**  
일부 운영 체제에서는 관리자 사용자가 아닌 사용자가 프로세스 환경 변수를 볼 수 있으므로 보안상의 이유로 이 환경 변수를 사용하지 않는 것이 좋습니다.

 Amazon Redshift에 연결할 때 사용할 Amazon Redshift RSQL의 암호를 설정합니다. 이 환경 변수에는 Amazon Redshift RSQL 1.0.4 이상이 필요합니다.

 RSPASSWORD가 설정된 경우 RSQL은 RSPASSWORD에 우선 순위를 둡니다. RSPASSWORD가 설정되지 않고 DSN을 사용해 연결하는 경우 RSQL은 DSN 파일의 파라미터에서 암호를 가져옵니다. 또한 RSPASSWORD가 설정되지 않고 DSN을 사용하지 않는 경우 RSQL은 연결을 시도한 후 암호 프롬프트를 제공합니다.

다음은 RSPASSWORD를 설정하는 예입니다.

```
export RSPASSWORD=TestPassw0rd
```

# 인증 프로파일을 사용하여 Amazon Redshift에 연결
<a name="connecting-with-authentication-profiles"></a>

Amazon Redshift에 대한 연결이 많은 경우 모든 연결에 대한 설정을 관리하기 어려울 수 있습니다. 각 JDBC 또는 ODBC 연결에서 특정 구성 옵션을 사용하는 경우가 많습니다. 인증 프로파일을 사용하여 연결 옵션을 함께 저장할 수 있습니다. 이렇게 하면 사용자가 연결할 프로파일을 선택할 수 있으며 개별 옵션에 대한 설정을 관리하지 않아도 됩니다. 다양한 시나리오와 사용자 유형에 프로파일을 적용할 수 있습니다.

인증 프로파일을 생성한 후 사용자가 연결 문자열에 즉시 사용 가능한 프로파일을 추가할 수 있습니다. 이렇게 하면 사용자는 각 역할 및 사용 사례에 적합한 설정을 사용하여 Amazon Redshift에 연결할 수 있습니다.

Amazon Redshift API 정보는 [CreateAuthenticationProfile](https://docs.aws.amazon.com/redshift/latest/APIReference/redshift-api.pdf#API_CreateAuthenticationProfile)을 참조하세요.

# 인증 프로파일 생성
<a name="connecting-with-authentication-profiles-creating"></a>

AWS CLI를 사용하여 `create-authentication-profile` 명령으로 인증 프로파일을 생성합니다. 여기서는 기존 Amazon Redshift 클러스터와 기존 데이터베이스가 있다고 가정합니다. 자격 증명에는 Amazon Redshift 데이터베이스에 연결할 수 있는 권한과 인증 프로파일을 가져올 수 있는 권한이 있어야 합니다. 구성 옵션을 JSON 문자열로 제공하거나 JSON 문자열이 포함된 파일을 참조합니다.

```
create-authentication-profile --authentication-profile-name<value: String> --authentication-profile-content<value: String>
```

 다음 예에서는 `ExampleProfileName`이라는 프로파일을 생성합니다. 여기에서 클러스터 이름 및 기타 옵션 설정을 정의하는 키와 값을 JSON 문자열로 추가할 수 있습니다.

```
create-authentication-profile --authentication-profile-name "ExampleProfileName" --authentication-profile-content "{\"AllowDBUserOverride\":\"1\",\"Client_ID\":\"ExampleClientID\",\"App_ID\":\"ExampleAppID\",\"AutoCreate\":false,\"enableFetchRingBuffer\":true,\"databaseMetadataCurrentDbOnly\":true}"
}
```

 이 명령은 지정된 JSON 설정으로 프로파일을 생성합니다. 프로파일이 생성되었음을 나타내는 다음이 반환됩니다.

 `{"AuthenticationProfileName": "ExampleProfileName", "AuthenticationProfileContent": "{\"AllowDBUserOverride\":\"1\",\"Client_ID\":\"ExampleClientID\",\"App_ID\":\"ExampleAppID\",\"AutoCreate\":false,\"enableFetchRingBuffer\":true,\"databaseMetadataCurrentDbOnly\":true}" } ` 

## 인증 프로파일 생성에 대한 제한 사항 및 할당량
<a name="connecting-with-authentication-profiles-limitations"></a>

각 고객에게는 10개의 인증 프로파일 할당량이 있습니다.

인증 프로파일에서 특정 오류가 발생할 수 있습니다. 예를 들어 기존 이름으로 새 프로파일을 생성하거나 프로파일 할당량을 초과하는 경우가 있습니다. 자세한 내용은 [CreateAuthenticationProfile](https://docs.aws.amazon.com/redshift/latest/APIReference/redshift-api.pdf#API_CreateAuthenticationProfile)을 참조하세요.

인증 프로파일 스토어에 JDBC, ODBC 및 Python 연결 문자열에 대한 특정 옵션 키와 값을 저장할 수 없습니다.
+ `AccessKeyID`
+ `access_key_id`
+ `SecretAccessKey`
+ `secret_access_key_id`
+ `PWD`
+ `Password`
+ `password`

JDBC 또는 ODBC 연결 문자열의 경우 프로파일 스토어에 키 또는 값 `AuthProfile`을 저장할 수 없습니다. Python 연결의 경우 `auth_profile`을 저장할 수 없습니다.

인증 프로파일은 Amazon DynamoDB에 저장되며 AWS에서 관리합니다.

# 인증 프로파일과 연결
<a name="connecting-with-authentication-profiles-using"></a>

인증 프로파일을 생성한 후 JDBC 버전 2.0 `AuthProfile`에 대한 연결 옵션으로 프로파일 이름을 포함할 수 있습니다. 이 연결 옵션을 사용하면 저장된 설정이 검색됩니다.

```
jdbc:redshift:iam://endpoint:port/database?AuthProfile=<Profile-Name>&AccessKeyID=<Caller-Access-Key>&SecretAccessKey=<Caller-Secret-Key>
```

다음은 JDBC URL 문자열의 예입니다.

```
jdbc:redshift:iam://examplecluster:us-west-2/dev?AuthProfile="ExampleProfile"&AccessKeyID="AKIAIOSFODNN7EXAMPLE"&SecretAccessKey="wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"
```

인증 프로파일 이름과 함께 JDBC URL에 `AccessKeyID`와 `SecretAccessKey`를 모두 지정합니다.

로깅 옵션이 포함된 다음 예와 같이 세미콜론 구분 기호로 구성 옵션을 구분할 수도 있습니다.

```
jdbc:redshift:iam://my_redshift_end_point:5439/dev?LogLevel=6;LogPath=/tmp;AuthProfile=my_profile;AccessKeyID="AKIAIOSFODNN7EXAMPLE";SecretAccessKey="wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"
```

**참고**  
 인증 프로파일에 기밀 정보를 추가하지 않습니다. 예를 들어 인증 프로파일에 `AccessKeyID` 또는 `SecretAccessKey` 값을 저장하지 마세요. 인증 프로필 스토어에는 보안 암호 키의 저장을 금지하는 규칙이 있습니다. 민감한 정보와 관련된 키와 값을 저장하려고 하면 오류가 발생합니다.

# 인증 프로파일 가져오기
<a name="connecting-with-authentication-profiles-getting"></a>

기존 인증 프로파일을 나열하려면 다음 명령을 호출합니다.

```
describe-authentication-profiles --authentication-profile-name <value: String>
```

다음 예에서는 2개의 검색된 프로파일을 보여줍니다. 프로파일 이름을 지정하지 않으면 모든 프로파일이 반환됩니다.

`{ "AuthenticationProfiles": [ { "AuthenticationProfileName": "testProfile1", "AuthenticationProfileContent": "{\"AllowDBUserOverride\":\"1\",\"Client_ID\":\"ExampleClientID\",\"App_ID\":\"ExampleAppID\",\"AutoCreate\":false,\"enableFetchRingBuffer\":true,\"databaseMetadataCurrentDbOnly\":true}" }, { "AuthenticationProfileName": "testProfile2", "AuthenticationProfileContent": "{\"AllowDBUserOverride\":\"1\",\"Client_ID\":\"ExampleClientID\",\"App_ID\":\"ExampleAppID\",\"AutoCreate\":false,\"enableFetchRingBuffer\":true,\"databaseMetadataCurrentDbOnly\":true}" } ] } `

# Amazon Redshift 연결 문제 해결
<a name="troubleshooting-connections"></a>

 SQL 클라이언트 도구에서 클러스터에 연결하는 데 문제가 발생하면 문제의 원인을 좁힐 수 있는 몇 가지 검사 방법이 있습니다. SSL 또는 서버 인증서를 사용할 때는 먼저 연결 문제를 해결하면서 이러한 복잡성을 제거했다가 이후 해결책을 발견했을 때 다시 추가하면 됩니다. 자세한 내용은 [연결을 위한 보안 옵션 구성](connecting-ssl-support.md) 섹션을 참조하세요.

애플리케이션에 영향을 미칠 수 있는 Amazon Redshift 기능의 동작 변경에 대한 자세한 내용은 [Amazon Redshift의 동작 변경 사항](behavior-changes.md) 섹션을 참조하세요.

**중요**  
Amazon Redshift는 SSL 인증서 관리 방법을 바꿨습니다. SSL을 사용하여 연결하는 데 문제가 있으면 현재 신뢰하는 루트 CA 인증서를 업데이트해야 할 수 있습니다. 자세한 내용은 [SSL 연결을 위해 ACM 인증서로 이전](connecting-transitioning-to-acm-certs.md) 섹션을 참조하세요.

 다음 섹션에서는 몇 가지 오류 메시지의 예와 가능한 연결 문제 해결책에 대해서 살펴보겠습니다. SQL 클라이언트 도구마다 오류 메시지가 다르기 때문에 아래와 같은 목록이 완벽할 수는 없지만 문제 해결을 위한 훌륭한 출발점이 될 것입니다.

## Amazon EC2 외부에서 연결 및 방화벽 시간 제한 문제 발생
<a name="connecting-firewall-guidance"></a>



 COPY 명령 같은 긴 쿼리를 실행할 때는 데이터베이스에 대한 클라이언트 연결이 멈추거나 제한 시간에 걸릴 수 있습니다. 이런 경우 Amazon Redshift 콘솔에서 쿼리의 완료 여부를 관찰할 수 있지만 클라이언트 도구에는 쿼리가 여전히 실행 중인 것으로 표시됩니다. 쿼리 결과는 연결 중단 시점에 따라 누락되거나 불완전할 수도 있습니다.

### 가능한 해결책
<a name="connecting-firewall-guidance.Solutions"></a>

이 문제는 Amazon EC2 인스턴스가 아닌 다른 컴퓨터에서 Amazon Redshift에 연결할 때 발생합니다. 이 경우 유휴 연결은 일정 시간 동안 사용하지 않으면 방화벽과 같은 중간 네트워크 구성 요소에 의해 종료됩니다. 이 동작은 가상 사설 네트워크(VPN) 또는 로컬 네트워크에서 로그온할 때 일반적입니다.

제한 시간 문제를 방지하려면 다음과 같이 변경하는 것이 좋습니다.
+ TCP/IP 제한 시간을 처리하는 클라이언트 시스템 값을 높이세요. 단, 이러한 시스템 값은 클러스터에 연결할 때 사용하는 컴퓨터에서 변경해야 합니다. 또한 제한 시간은 클라이언트와 네트워크를 고려하여 조정해야 합니다. 자세한 내용은 [TCP/IP 제한 시간 설정 변경](#connecting-firewall-guidance.change-tcpip-settings) 섹션을 참조하세요.
+ 그 밖의 옵션으로 keepalive 동작을 DSN 수준으로 설정합니다. 자세한 내용은 [DSN 제한 시간 설정 변경](#connecting-firewall-guidance.change-dsn-settings) 섹션을 참조하세요.

### TCP/IP 제한 시간 설정 변경
<a name="connecting-firewall-guidance.change-tcpip-settings"></a>

TCP/IP 제한 시간 설정을 변경하려면 클러스터에 연결할 때 사용하는 운영 체제에 따라 제한 시간 설정을 구성합니다.
+ Linux - 클라이언트가 Linux에서 실행 중인 경우 루트 사용자로 다음 명령을 실행하여 현재 세션의 시간 제한 설정을 변경합니다.

  ```
  /sbin/sysctl -w net.ipv4.tcp_keepalive_time=200 net.ipv4.tcp_keepalive_intvl=200 net.ipv4.tcp_keepalive_probes=5
  ```

  설정을 계속해서 유지하려면 `/etc/sysctl.conf` 파일을 생성하거나 다음 값으로 수정한 후 시스템을 재부팅하세요.

  ```
  net.ipv4.tcp_keepalive_time=200
  net.ipv4.tcp_keepalive_intvl=200
  net.ipv4.tcp_keepalive_probes=5
  ```
+ Windows - 클라이언트가 Windows에서 실행되는 경우 HKEY\$1LOCAL\$1MACHINE\$1SYSTEM\$1CurrentControlSet\$1Services\$1Tcpip\$1Parameters\$1에서 다음 레지스트리 설정 값을 편집합니다.
  + KeepAliveTime: 30000
  + KeepAliveInterval: 1000
  + TcpMaxDataRetransmissions: 10

  위 설정 값은 DWORD 데이터 형식을 사용합니다. 설정이 레지스트리 경로에 존재하지 않으면 설정을 직접 생성한 후 다음과 같은 권장 값을 지정할 수도 있습니다. Windows 레지스트리의 편집에 대한 자세한 내용은 Windows 설명서를 참조하세요.

  값을 설정한 후에는 컴퓨터를 다시 시작해야 변경 사항이 적용됩니다.

 
+ Mac - 클라이언트가 Mac에서 실행 중인 경우 다음 명령을 실행하여 현재 세션의 시간 제한 설정을 변경합니다.

  ```
  sudo sysctl net.inet.tcp.keepintvl=200000
  sudo sysctl net.inet.tcp.keepidle=200000
  sudo sysctl net.inet.tcp.keepinit=200000
  sudo sysctl net.inet.tcp.always_keepalive=1
  ```

  설정을 계속해서 유지하려면 `/etc/sysctl.conf` 파일을 생성하거나 다음 값으로 수정합니다.

  ```
  net.inet.tcp.keepidle=200000
  net.inet.tcp.keepintvl=200000
  net.inet.tcp.keepinit=200000
  net.inet.tcp.always_keepalive=1
  ```

  컴퓨터를 다시 시작한 후 다음 명령을 실행하여 값이 설정되었는지 확인합니다.

  ```
  sysctl net.inet.tcp.keepidle
  sysctl net.inet.tcp.keepintvl
  sysctl net.inet.tcp.keepinit
  sysctl net.inet.tcp.always_keepalive
  ```

### DSN 제한 시간 설정 변경
<a name="connecting-firewall-guidance.change-dsn-settings"></a>

원하는 경우 keepalive 동작을 DSN 수준으로 설정할 수 있습니다. odbc.ini 파일에서 다음 파라미터를 추가하거나 수정하면 가능합니다.

**KeepAlivesCount**  
연결이 끊긴 것으로 간주할 때까지 손실될 수 있는 TCP keepalive 패킷의 수입니다.

**KeepAlivesIdle**  
드라이버가 TCP keepalive 패킷을 전송할 때까지 아무런 작업 없이 대기하는 시간(초)입니다.

**KeepAlivesInterval**  
TCP keepalive가 재전송되는 시간 간격(초)입니다.

이러한 파라미터가 존재하지 않거나 값이 0인 경우에는 시스템이 TCP/IP에 지정한 keepalive 파라미터를 사용하여 DSN keepalive 동작을 결정합니다. Windows에서는 레지스트리의 TCP/IP 파라미터를 `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\`에서 확인할 수 있습니다. 그리고 Linux 및 macOS에서는 TCP/IP 파라미터를 sysctl.conf 파일에서 찾아볼 수 있습니다.

## 연결 거부 또는 실패
<a name="connecting-refusal-failure-issues"></a>

연결이 거부되거나 실패하면 다음 중 하나와 유사한 오류가 발생할 수 있습니다.
+ "Failed to establish a connection to *<endpoint>*."
+ "Could not connect to server: Connection timed out. Is the server running on host *'<endpoint>'* and accepting TCP/IP connections on port *'<port>'*?"
+ "Connection refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections."

### 가능한 해결책
<a name="connecting-refusal-failure-issues.Solutions"></a>

일반적으로 연결 구성에 실패했다는 오류 메시지가 수신되면 클러스터에 대한 액세스 권한과 관련된 문제이거나 네트워크 트래픽이 클러스터에 도달하는 것과 관련된 문제입니다.

클러스터가 있는 네트워크 외부의 클라이언트 도구에서 클러스터에 연결하려면 클러스터의 보안 그룹에 인바운드 규칙을 추가합니다. 규칙 구성은 Amazon Redshift 클러스터가 Virtual Private Cloud(VPC)에 생성되었는는지에 따라 달라집니다.
+ Amazon VPC를 기반으로 Virtual Private Cloud(VPC)에서 Amazon Redshift 클러스터를 생성한 경우 Amazon VPC에서 클라이언트 CIDR/IP 주소를 지정하는 VPC 보안 그룹에 인바운드 규칙을 추가합니다. 클러스터의 VPC 보안 그룹 구성 및 퍼블릭 액세스 옵션에 대한 자세한 내용은 [VPC의 Redshift 리소스](managing-clusters-vpc.md) 섹션을 참조하세요.
+  VPC 외부에 Amazon Redshift 클러스터를 생성한 경우에는 Amazon Redshift의 클러스터 보안 그룹에 클라이언트 CIDR/IP 주소를 추가합니다. 클러스터 보안 그룹 구성에 대한 자세한 내용은 [Amazon Redshift 보안 그룹](security-network-isolation.md#working-with-security-groups) 섹션을 참조하세요.

Amazon EC2 인스턴스에서 실행되는 클라이언트 도구에서 클러스터에 연결하려면 인바운드 규칙도 추가합니다. 이 경우 클러스터 보안 그룹에 규칙을 추가하세요. 규칙은 클라이언트 도구의 Amazon EC2 인스턴스와 연결된 Amazon EC2 보안 그룹을 지정해야 합니다.

 경우에 따라 방화벽과 같이 클라이언트와 서버 간에 계층이 있을 수 있습니다. 이러한 경우 클러스터에 대해 구성한 포트를 통한 인바운드 연결을 방화벽에서 허용하는지 확인합니다.

## 클라이언트와 드라이버가 호환되지 않습니다
<a name="connecting-architecture-mismatch"></a>

 클라이언트와 드라이버가 호환되지 않는 경우 “지정된 DSN에 드라이버와 애플리케이션 간의 아키텍처 불일치가 포함되어 있습니다”라는 오류가 표시될 수 있습니다.

### 가능한 해결책
<a name="connecting-architecture-mismatch.Solutions"></a>

 연결을 시도하다 아키텍처 불일치 오류가 발생하기도 합니다. 이는 클라이언트 도구와 드라이버가 호환되지 않는다는 것을 의미합니다. 이 오류는 시스템 아키텍처가 일치하지 않기 때문에 발생합니다. 예를 들어 클라이언트 도구가 32비트이지만 설치되어 있는 드라이버가 64비트 버전이면 이러한 불일치가 발생할 수 있습니다. 간혹 64비트 클라이언트 도구가 32비트 드라이버를 사용하는 경우가 있지만 64비트 드라이버에 32비트 애플리케이션을 사용할 수는 없습니다. 따라서 드라이버와 클라이언트 도구가 동일한 버전의 시스템 아키텍처를 사용하고 있는지 확인해야 합니다.

## 쿼리가 중단되거나, 간혹 클러스터까지 전송되지 않습니다
<a name="connecting-drop-issues"></a>

쿼리가 실행 중인 것으로 보이지만 SQL 클라이언트 도구에서는 중단되는 증 쿼리 완료에 대한 문제가 발생합니다. 간혹 시스템 테이블이나 Amazon Redshift 콘솔과 같은 클러스터에 쿼리가 표시되지 않기도 합니다.

### 가능한 해결책
<a name="connecting-drop-issues.Solutions"></a>

 이 문제는 패킷이 소실되어 발생할 수 있습니다. 이 경우 두 IP(Internet Protocol) 호스트 간 네트워크 경로에서 최대 전송 단위(MTU)의 크기 차이가 있습니다. 단일 이더넷 프레임으로 네트워크 연결을 통해 전송할 수 있는 패킷의 최대 크기(바이트)는 MTU의 크기에 따라 결정됩니다. AWS에서는 일부 Amazon EC2 인스턴스 유형이 1500MTU(이더넷 v2 프레임)를 지원하고, 그 밖에 9001MTU(TCP/IP 점보 프레임)를 지원하는 인스턴스 유형도 있습니다.

 MTU 크기 차이에서 발생할 수 있는 문제에 대한 해결책으로서 다음 중 한 가지를 권장합니다.
+ 클러스터가 EC2-VPC 플랫폼을 사용하는 경우에는 `Destination Unreachable`을 반환하는 사용자 정의 ICMP(Internet Control Message Protocol) 인바운드 규칙으로 Amazon VPC 보안 그룹을 구성합니다. 이 규칙은 전송 호스트에게 네트워크 경로를 따라 최저 MTU 크기를 사용하도록 지시합니다. 이러한 접근법에 대한 자세한 내용은 [ICMP "destination unreachable"을 허용하도록 보안 그룹 구성하기](#configure-custom-icmp) 섹션을 참조하세요.
+ 클러스터가 EC2-Classic 플랫폼을 사용하거나 ICMP 인바운드 규칙을 허용할 수 없는 경우 TCP/IP 점보 프레임을 비활성화하여 이더넷 v2 프레임을 사용하세요. 이러한 접근법에 대한 자세한 내용은 [인스턴스의 MTU 구성](#set-mtu) 섹션을 참조하세요.

### ICMP "destination unreachable"을 허용하도록 보안 그룹 구성하기
<a name="configure-custom-icmp"></a>

 두 호스트 사이의 네트워크에서 MTU 크기에 차이가 있다면 먼저 네트워크 설정이 PMTUD(path MTU discovery)를 차단하지 않는지 확인해야 합니다. 수신 호스트가 ICMP 메시지 `Destination Unreachable: fragmentation needed and DF set (ICMP Type 3, Code 4)`과 함께 전송 호스트에 응답하기 위해서는 PMTUD가 차단되어서는 안 됩니다. 이 메시지는 전송 호스트에게 네트워크 경로를 따라 요청을 재전송하려면 최저 MTU 크기를 사용하라는 의미입니다. 이러한 협상이 없으면 수신 호스트가 허용할 수 없을 만큼 요청이 너무 많아져서 패킷 손실이 발생할 수 있습니다. 이 ICMP 메시지에 대한 자세한 내용은 *IETF(Internet Engineering Task Force)* 웹 사이트의 [RFC792](http://tools.ietf.org/html/rfc792) 섹션을 참조하세요.

 Amazon VPC 보안 그룹에 이 ICMP 인바운드 규칙을 명시적으로 구성하지 않으면 PMTUD가 차단됩니다. AWS에서는 보안 그룹이 인바운드 및 아웃바운드 트래픽에 대한 규칙을 인스턴스로 지정하는 가상 방화벽입니다. Amazon Redshift 클러스터 보안 그룹에 대한 자세한 내용은 [Amazon Redshift 보안 그룹](security-network-isolation.md#working-with-security-groups) 섹션을 참조하세요. EC2-VPC 플랫폼을 사용하는 클러스터의 경우에는 Amazon Redshift가 VPC 보안 그룹을 사용하여 클러스터로 전송되는 트래픽을 허용하거나 거부합니다. 기본적으로 보안 그룹은 잠겨있기 때문에 인바운드 트래픽을 모두 거부합니다. EC2-Classic 또는 EC2-VPC 인스턴스에 대한 인바운드 및 아웃바운드 규칙을 설정하는 방법에 대한 자세한 내용은 **Amazon EC2 사용 설명서의 [EC2-Classic과 VPC의 인스턴스 간 차이점](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-classic-platform.html#ec2_classic_platform)을 참조하세요.

 VPC 보안 그룹에 규칙을 추가하는 방법에 대한 자세한 내용은 [VPC 보안 그룹](managing-vpc-security-groups.md) 섹션을 참조하세요. 이 규칙에 필요한 특정 PMTUD 설정에 대한 자세한 내용은 **Amazon EC2 사용 설명서의 [경로 MTU 검색](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/network_mtu.html#path_mtu_discovery)을 참조하세요.

### 인스턴스의 MTU 구성
<a name="set-mtu"></a>

클러스터가 EC2-Classic 플랫폼을 사용하거나 인바운드 트래픽에 대한 사용자 지정 ICMP 규칙을 허용할 수 없는 경우가 있습니다. 이러한 경우 Amazon Redshift 클러스터에 연결하는 EC2 인스턴스의 네트워크 인터페이스(NIC)에서 MTU를 1500으로 조정하는 것이 좋습니다. 이렇게 조정하면 TCP/IP 점포 프레임을 비활성화하여 동일한 패킷 크기를 계속해서 사용할 수 있습니다. 하지만 Amazon Redshift 연결에 그치지 않고 인스턴스 전체의 최대 네트워크 처리 속도까지 떨어뜨리는 단점도 있습니다. 자세한 내용은 다음 절차를 참조하세요.<a name="set-mtu-win-os"></a>

**Microsoft Windows 운영 체제에서 MTU를 설정하려면**

클라이언트가 Microsoft Windows 운영 체제 기반인 경우에는 `netsh` 명령을 사용하여 이더넷 어댑터의 MTU 값을 살펴보거나 설정할 수 있습니다.

1. 다음 명령을 실행하여 현재 MTU 값을 결정합니다.

   ```
   netsh interface ipv4 show subinterfaces
   ```

1.  출력 화면에서 `MTU` 어댑터의 `Ethernet` 값을 살펴봅니다.

1. 이 값이 `1500`이 아닌 경우에는 다음 명령을 실행하여 설정합니다.

   ```
   netsh interface ipv4 set subinterface "Ethernet" mtu=1500 store=persistent
   ```

   이 값을 설정한 후에는 컴퓨터를 다시 시작해야 변경 사항이 적용됩니다.<a name="set-mtu-linux-os"></a>

**Linux 운영 체제에서 MTU를 설정하려면**

 클라이언트가 Linux 운영 체제에서 작동하는 경우 `ip` 명령을 사용하여 MTU 값을 검토하고 설정할 수 있습니다.

1. 다음 명령을 실행하여 현재 MTU 값을 결정합니다.

   ```
   $ ip link show eth0
   ```

1. 출력 결과에서 `mtu` 다음의 값을 검토합니다.

1. 이 값이 `1500`이 아닌 경우에는 다음 명령을 실행하여 설정합니다.

   ```
   $ sudo ip link set dev eth0 mtu 1500
   ```<a name="set-mtu-mac-os"></a>

**Mac 운영 체제에서 MTU를 설정하려면**
+ `How to change the MTU for troubleshooting purposes`에 대한 macOS 지원 사이트의 지침을 따릅니다. 자세한 내용은 [지원 사이트](https://support.apple.com)를 참조하세요.

## JDBC Fetch Size 파라미터 설정
<a name="jdbc_fetch_size"></a>

기본적으로 Redshift JDBC 드라이버는 링 버퍼를 사용하여 메모리를 효율적으로 관리하고 메모리 부족 오류를 방지합니다. 가져오기 크기 파라미터는 링 버퍼가 명시적으로 비활성화된 경우에만 적용됩니다. 자세한 내용은 [링크](https://docs.aws.amazon.com/redshift/latest/mgmt/jdbc20-configuration-options.html#jdbc20-enablefetchringbuffer-option)를 참조하세요. 이 구성에서는 가져오기 크기를 설정하여 각 배치에서 검색되는 행 수를 제어해야 합니다.

다음과 같은 경우 가져오기 크기 파라미터를 사용합니다.
+ 행 기반 일괄 처리를 세밀하게 제어해야 하는 경우
+ 기존 가져오기 크기 동작이 필요한 레거시 애플리케이션 작업

링 버퍼가 비활성화된 경우, JDBC 드라이버는 기본적으로 쿼리의 모든 결과를 한 번에 수집합니다. 큰 결과 집합을 반환하는 쿼리는 과도한 메모리를 소비할 수 있습니다. 결과 세트를 한 번에 모두 검색하는 대신 배치로 검색하려면 애플리케이션에서 JDBC 가져오기 크기 파라미터를 설정합니다.

**참고**  
ODBC는 Fetch Size 파라미터가 지원되지 않습니다.

성능을 최적화하려면 메모리 부족 오류가 일어나지 않는 범위 내에서 페치 크기 값을 가장 높게 설정하세요. 페치 크기 값이 더 낮아지면 서버 전송이 늘어나서 실행 시간이 장기화될 수 있습니다. 서버는 클라이언트가 전체 결과 집합을 가져오거나 쿼리가 취소될 때까지 WLM 쿼리 슬롯이나 연결 메모리를 비롯한 리소스를 예약합니다. 이때 Fetch Size 값을 적절히 조정하면 이러한 리소스가 더욱 빠르게 해제되어 다른 쿼리에서도 사용할 수 있게 됩니다.

**참고**  
대용량 데이터 집합을 추출해야 하는 경우에는 [UNLOAD](https://docs.aws.amazon.com/redshift/latest/dg/r_UNLOAD.html) 문을 사용하여 데이터를 Amazon S3로 전송하는 것이 좋습니다. UNLOAD를 사용하면 컴퓨팅 노드가 병렬로 실행되어 데이터 전송 속도가 빨라집니다.

JDBC Fetch Size 파라미터 설정에 대한 자세한 내용은 PostgreSQL 설명서의 [Getting results based on a cursor](https://jdbc.postgresql.org/documentation/query/#getting-results-based-on-a-cursor)에서 확인할 수 있습니다.

# Amazon Redshift Data API 사용
<a name="data-api"></a>

Amazon Redshift 데이터 API는 데이터베이스 드라이버, 연결, 네트워크 구성, 데이터 버퍼링, 자격 증명 등을 관리할 필요가 없도록 하여 Amazon Redshift 데이터 웨어하우스에 대한 액세스를 간소화합니다. AWS SDK에서 데이터 API 작업을 사용하여 SQL 문을 실행할 수 있습니다. 데이터 API 작업에 대한 자세한 내용은 [Amazon Redshift 데이터 API 참조](https://docs.aws.amazon.com/redshift-data/latest/APIReference/)를 참조하세요.

데이터 API는 데이터베이스에 대한 지속적인 연결을 요구하지 않습니다. 대신에 AWS SDK와의 통합과 보안 HTTP 엔드포인트를 제공합니다. 연결을 관리하지 않고 엔드포인트를 사용하여 SQL 문을 실행할 수 있습니다. Data API에 대한 호출은 비동기식입니다. 데이터 API는 AWS Secrets Manager에 저장된 자격 증명 또는 임시 데이터베이스 자격 증명을 사용할 수 있습니다. 두 인증 방법 중 하나를 사용하여 API 호출에서 암호를 전달할 필요가 없습니다. AWS Secrets Manager에 대한 자세한 내용은 *AWS Secrets Manager User Guide*의 [What Is AWS Secrets Manager?](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html)를 참조하세요. 권한 부여에 AWS IAM Identity Center을 사용할 수도 있습니다.

이 데이터 API를 사용하면 프로그래밍 방식으로 AWS Lambda, Amazon SageMaker AI 노트북, AWS Cloud9을 포함한 웹 서비스 기반 애플리케이션으로 Amazon Redshift 데이터에 액세스할 수 있습니다. 이러한 애플리케이션에 대한 자세한 내용은 [AWS Lambda](https://aws.amazon.com/lambda/), [Amazon SageMaker AI](https://aws.amazon.com/sagemaker/) 및 [AWS Cloud9](https://aws.amazon.com/cloud9/) 섹션을 참조하세요.

데이터 API에 대해 자세히 알아보려면 AWS 빅 데이터 블로그에서 [Get started with the Amazon Redshift Data API](https://aws.amazon.com/blogs/big-data/get-started-with-the-amazon-redshift-data-api/)를 참조하세요**.

## Amazon Redshift Data API 작업
<a name="data-api-workflow"></a>

Amazon Redshift Data API를 사용하기 전에 다음 단계를 검토합니다.

1. Data API의 호출자로서 권한이 있는지 확인합니다. 권한 부여에 대한 자세한 내용은 [Amazon Redshift Data API에 대한 액세스 권한 부여](data-api-access.md) 섹션을 참조하세요.

1. Secrets Manager의 인증 자격 증명, 임시 자격 증명 또는 AWS IAM Identity Center을 사용하여 데이터 API를 직접적으로 호출할 계획인지 결정합니다. 자세한 내용은 [Amazon Redshift 데이터 API를 호출할 때 데이터베이스 인증 보안 인증 정보 선택](#data-api-calling-considerations-authentication) 섹션을 참조하세요.

1. 인증 자격 증명에 Secrets Manager 사용하는 경우 보안 암호를 설정합니다. 자세한 내용은 [AWS Secrets Manager에 데이터베이스 자격 증명 저장](data-api-secrets.md) 섹션을 참조하세요.

1. Data API를 호출할 때 고려 사항과 제한 사항을 검토합니다. 자세한 내용은 [Amazon Redshift Data API 호출 시 고려 사항](#data-api-calling-considerations) 섹션을 참조하세요.

1. AWS Command Line Interface(AWS CLI), 자체 코드 또는 Amazon Redshift 콘솔의 쿼리 편집기를 사용하여 Data API를 호출합니다. AWS CLI에서 호출 예는 [데이터 API 호출](data-api-calling.md) 섹션을 참조하세요.

## Amazon Redshift Data API 호출 시 고려 사항
<a name="data-api-calling-considerations"></a>

Data API를 호출할 때는 다음 사항을 고려하세요.
+ Amazon Redshift 데이터 API는 Amazon Redshift 프로비저닝 클러스터와 Redshift Serverless 작업 그룹의 데이터베이스에 액세스할 수 있습니다. Redshift 데이터 API를 사용할 수 있는 AWS 리전 목록은 *Amazon Web Services 일반 참조*의 [Redshift 데이터 API](https://docs.aws.amazon.com/general/latest/gr/redshift-service.html)에 나열된 엔드포인트를 참조하세요. 
+ 최대 쿼리 기간은 24시간입니다.
+ Amazon Redshift 클러스터당 최대 활성 쿼리(`STARTED` 및 `SUBMITTED` 쿼리) 수는 500개입니다.
+ 최대 쿼리 결과 크기는 500MB(gzip 압축 후)입니다. 직접 호출이 500MB를 초과하는 응답 데이터를 반환하면 직접 호출이 종료됩니다.
+ 쿼리 결과의 최대 보존 시간은 24시간입니다.
+ 최대 쿼리 문 크기는 100KB입니다.
+ Data API는 다음 노드 유형의 단일 노드 및 다중 노드 클러스터를 쿼리하는 데 사용할 수 있습니다.
  + dc2.large
  + dc2.8xlarge
  + ra3.large
  + ra3.xlplus
  + ra3.4xlarge
  + ra3.16xlarge
+ 클러스터는 Amazon VPC 서비스 기반의 Virtual Private Cloud(VPC)에 있어야 합니다.
+ 기본적으로 `ExecuteStatement` 또는 `BatchExecuteStatement` API 작업의 실행자와 동일한 IAM 역할을 가진 사용자는 `CancelStatement`, `DescribeStatement`, `GetStatementResult`, `GetStatementResultV2` 및 `ListStatements` API 작업을 사용하여 동일한 문에 대해 작업할 수 있습니다. 다른 사용자의 동일한 SQL 문에 대해 작업을 수행하려면 사용자가 SQL 문을 실행한 사용자의 IAM 역할을 맡을 수 있어야 합니다. 역할 수임 방법에 대한 자세한 내용은 [Amazon Redshift Data API에 대한 액세스 권한 부여](data-api-access.md) 섹션을 참조하세요.
+ `BatchExecuteStatement` API 작업의 `Sqls` 파라미터에 포함된 SQL 문은 단일 트랜잭션으로 실행됩니다. 배열 순서대로 순차 실행됩니다. 후순위 SQL 문은 배열 내 선순위 명령문이 완료될 때까지 시작되지 않습니다. SQL 문이 실패하면 하나의 트랜잭션으로 실행되므로 모든 작업이 롤백됩니다.
+ `ExecuteStatement` 또는 `BatchExecuteStatement` API 작업에 사용되는 클라이언트 토큰의 최대 보존 시간은 8시간입니다.
+ Amazon Redshift 프로비저닝된 클러스터와 Redshift Serverless 작업 그룹이 고객 관리형 키를 사용하여 암호화된 경우 Redshift는 Redshift 데이터 API가 작업에 키를 사용할 수 있도록 허용하는 권한을 생성합니다. 자세한 내용은 [Amazon Redshift 데이터 API와 함께 AWS KMS 사용](data-api-kms.md) 단원을 참조하세요.
+ Redshift 데이터 API의 각 API에는 요청을 제한하기 전에 초당 트랜잭션 할당량이 있습니다. 할당량에 대한 내용은 [Amazon Redshift 데이터 API의 할당량](amazon-redshift-limits.md#data-api-quotas-account) 섹션을 참조하세요. 요청 비율이 할당량을 초과하면 HTTP 상태 코드가 400인 `ThrottlingException` 오류가 반환됩니다. 제한에 대응하려면 **AWSSDK 및 도구 참조 안내서의 [재시도 동작](https://docs.aws.amazon.com/sdkref/latest/guide/feature-retry-behavior.html)에 설명된 재시도 전략을 사용하세요. 이 전략은 일부 AWS SDK의 제한 오류에 대해 자동으로 구현됩니다.
**참고**  
AWS Step Functions에서는 기본적으로 재시도가 활성화되지 않습니다. Step Functions 상태 머신에서 Redshift 데이터 API를 호출해야 하는 경우 Redshift 데이터 API 호출에 `ClientToken` 멱등성 파라미터를 포함하세요. `ClientToken`의 값은 재시도 시 지속되어야 합니다. `ExecuteStatement` API에 대한 다음 요청 스니펫 예시에서 `States.ArrayGetItem(States.StringSplit($$.Execution.Id, ':'), 7)` 식은 내장 함수를 사용하여 `$$.Execution.Id`의 UUID 부분을 추출합니다. UUID 부분은 상태 머신을 실행할 때마다 고유합니다. 자세한 내용은 **AWS Step Functions 개발자 안내서의 [내장 함수](https://docs.aws.amazon.com/step-functions/latest/dg/amazon-states-language-intrinsic-functions.html)를 참조하세요.  

  ```
  {
    "Database": "dev",
    "Sql": "select 1;",
    "ClusterIdentifier": "MyCluster",
    "ClientToken.$": "States.ArrayGetItem(States.StringSplit($$.Execution.Id, ':'), 7)"
  }
  ```

## Amazon Redshift 데이터 API를 호출할 때 데이터베이스 인증 보안 인증 정보 선택
<a name="data-api-calling-considerations-authentication"></a>

Data API를 호출할 때 일부 API 작업에 대해 다음 인증 방법 중 하나를 사용합니다. 각 방법에는 서로 다른 파라미터 조합이 필요합니다.

**AWS IAM Identity Center**  
데이터 API는 AWS IAM Identity Center에 등록된 Single Sign-On 사용자로 액세스할 수 있습니다. IAM Identity Center를 설정하는 단계에 대한 자세한 내용은 [신뢰할 수 있는 자격 증명 전파와 함께 데이터 API 사용](data-api-trusted-identity-propagation.md) 섹션을 참조하세요.

**AWS Secrets Manager**  
이 방법에서는 `username` 및 `password`가 있는 AWS Secrets Manager에 저장된 암호의 `secret-arn`을 입력합니다. 지정된 보안 암호에는 지정하는 `database`에 연결하기 위한 자격 증명이 포함되어 있습니다. 클러스터에 연결할 때는 데이터베이스 이름도 제공하며, 클러스터 식별자(`dbClusterIdentifier`)를 제공하는 경우 암호에 저장된 클러스터 식별자와 일치해야 합니다. 서버리스 작업 그룹에 연결할 때는 데이터베이스 이름도 제공합니다. 자세한 내용은 [AWS Secrets Manager에 데이터베이스 자격 증명 저장](data-api-secrets.md) 섹션을 참조하세요.  
이 방법에서는 데이터가 위치한 AWS 리전을 지정하는 `region` 값을 제공할 수도 있습니다.

**임시 자격 증명**  
이 방법에서는 다음 옵션 중 하나를 선택합니다.  
+ 서버리스 작업 그룹에 연결할 때는 작업 그룹 이름과 데이터베이스 이름을 지정합니다. 데이터베이스 사용자 이름은 IAM ID에서 파생됩니다. 예를 들어, `arn:iam::123456789012:user:foo`에는 데이터베이스 사용자 이름인 `IAM:foo`가 포함되어 있습니다. 또한 `redshift-serverless:GetCredentials` 작업을 호출할 수 있는 권한이 필요합니다.
+ 클러스터에 IAM ID로 연결할 때는 클러스터 식별자 및 데이터베이스 이름을 지정합니다. 데이터베이스 사용자 이름은 IAM ID에서 파생됩니다. 예를 들어, `arn:iam::123456789012:user:foo`에는 데이터베이스 사용자 이름인 `IAM:foo`가 포함되어 있습니다. 또한 `redshift:GetClusterCredentialsWithIAM` 작업을 호출할 수 있는 권한이 필요합니다.
+ 클러스터에 데이터베이스 사용자로 연결할 때는 클러스터 식별자, 데이터베이스 이름 및 데이터베이스 사용자 이름을 지정합니다. 또한 `redshift:GetClusterCredentials` 작업을 호출할 수 있는 권한이 필요합니다. 이 방법으로 연결할 때 데이터베이스 그룹에 가입하는 방법에 대한 자세한 내용은 [클러스터에 연결할 때 데이터베이스 그룹에 조인](data-api-dbgroups.md)을 참조하세요.
이 방법에서는 데이터가 위치한 AWS 리전을 지정하는 `region` 값을 제공할 수도 있습니다.

## Amazon Redshift Data API를 호출할 때 JDBC 데이터 형식 매핑
<a name="data-api-calling-considerations-jdbc"></a>

 다음 표는 JDBC(Java Database Connectivity) 데이터 유형을 데이터 API 호출에서 지정하는 데이터 형식에 매핑합니다.


****  

|  JDBC 데이터 형식  |  데이터 API 데이터 형식  | 
| --- | --- | 
|  `INTEGER, SMALLINT, BIGINT`  |  `LONG`  | 
|  `FLOAT, REAL, DOUBLE`  |  `DOUBLE`  | 
|  `DECIMAL`  |  `STRING`  | 
|  `BOOLEAN, BIT`  |  `BOOLEAN`  | 
|  `BLOB, BINARY, LONGVARBINARY`  |  `BLOB`  | 
|  `VARBINARY`  |  `STRING`  | 
|  `CLOB`  |  `STRING`  | 
|  다른 형식(날짜 및 시간과 관련된 형식 포함)  |  `STRING`  | 

문자열 값은 Amazon Redshift 데이터베이스로 전달되고 암시적으로 데이터베이스 데이터 형식으로 변환됩니다.

**참고**  
현재, Data API는 범용 고유 식별자(UUID) 배열을 지원하지 않습니다.

## Amazon Redshift Data API를 호출할 때 파라미터로 SQL 문 실행
<a name="data-api-calling-considerations-parameters"></a>

SQL 문의 일부에 대한 파라미터로 Data API 작업을 호출하여 데이터베이스 엔진에 제출된 SQL 텍스트를 제어할 수 있습니다. 명명된 파라미터는 SQL 텍스트에 하드코딩하지 않고 파라미터를 전달할 수 있는 유연한 방법을 제공합니다. SQL 텍스트를 재사용하고 SQL 삽입 문제를 방지하는 데 도움이 됩니다.

다음 예에서는 `execute-statement` AWS CLI 명령의 `parameters` 필드의 명명된 파라미터를 보여줍니다.

```
--parameters "[{\"name\": \"id\", \"value\": \"1\"},{\"name\": \"address\", \"value\": \"Seattle\"}]"
```

명명된 파라미터를 사용할 때는 다음 사항을 고려하세요.
+ 명명된 파라미터는 SQL 문의 값을 대체하는 데만 사용할 수 있습니다.
  + INSERT 문의 값을 대체할 수 있습니다(예: `INSERT INTO mytable VALUES(:val1)`).

    명명된 파라미터는 임의의 순서로 지정할 수 있으며 SQL 텍스트에서 파라미터를 두 번 이상 사용할 수 있습니다. 이전 예에 표시된 파라미터 옵션에서 값 `1` 및 `Seattle`이 테이블 열 `id` 및 `address`에 삽입됩니다. SQL 텍스트에서 다음과 같이 명명된 파라미터를 지정합니다.

    ```
    --sql "insert into mytable values (:id, :address)"
    ```
  + 조건 절의 값(예: `WHERE attr >= :val1`, `WHERE attr BETWEEN :val1 AND :val2` 및 `HAVING COUNT(attr) > :val`)을 대체할 수 있습니다.
  + SQL 문의 열 이름(예: `SELECT column-name`, `ORDER BY column-name` 또는 `GROUP BY column-name`)은 대체할 수 없습니다.

    예를 들어, 다음 SELECT 문은 잘못된 구문으로 실패합니다.

    ```
    --sql "SELECT :colname, FROM event" --parameters "[{\"name\": \"colname\", \"value\": \"eventname\"}]"
    ```

    구문 오류가 있는 문을 설명(`describe-statement` 작업)하면 반환된 `QueryString`이 파라미터(`"QueryString": "SELECT :colname, FROM event"`)의 열 이름을 대체하지 않으며 오류가 보고됩니다(오류: \$1"FROM\$1" 또는 근처에 구문 오류가 있음\$1n 위치: 12).
  + 집계 함수의 열 이름(예: `COUNT(column-name)`, `AVG(column-name)` 또는 `SUM(column-name)`)은 대체할 수 없습니다.
  + JOIN 절의 열 이름은 대체할 수 없습니다.
+ SQL 실행 시 암시적으로 데이터가 데이터 형식으로 캐스팅됩니다. 데이터 형식 캐스팅에 대한 자세한 내용은 *Amazon Redshift 데이터베이스 개발자 안내서*의 [데이터 형식](https://docs.aws.amazon.com/redshift/latest/dg/c_Supported_data_types.html)을 참조하세요.
+ 값을 NULL로 설정할 수 없습니다. Data API는 이를 리터럴 문자열 `NULL`로 해석합니다. 다음 예에서는 `id`를 리터럴 문자열 `null`로 바꿉니다. SQL NULL 값이 아닙니다.

  ```
  --parameters "[{\"name\": \"id\", \"value\": \"null\"}]"
  ```
+ 길이가 0인 값을 설정할 수 없습니다. Data API SQL 문이 실패합니다. 다음 예에서는 `id`를 길이가 0인 값으로 설정하려고 하여 SQL 문이 실패합니다.

  ```
  --parameters "[{\"name\": \"id\", \"value\": \"\"}]"
  ```
+ 파라미터를 사용하여 SQL 문에서 테이블 이름을 설정할 수 없습니다. Data API는 JDBC `PreparedStatement`의 규칙을 따릅니다.
+ `describe-statement` 작업의 출력은 SQL 문의 쿼리 파라미터를 반환합니다.
+ `execute-statement` 작업만 파라미터가 있는 SQL 문을 지원합니다.

## Amazon Redshift Data API를 호출할 때 멱등성 토큰으로 SQL 문 실행
<a name="data-api-calling-considerations-idempotency"></a>

변형 API 요청을 만들 때 요청은 일반적으로 작업의 비동기 워크플로가 완료되기 전에 결과를 반환합니다. 요청이 이미 결과를 반환했더라도 작업이 완료되기 전에 시간이 초과되거나 다른 서버 문제가 발생할 수도 있습니다. 이로 인해 요청의 성공 여부를 판단하기 어려울 수 있으며 작업이 성공적으로 완료되었는지 확인하기 위해 여러 번의 재시도가 발생할 수 있습니다. 그러나 원래 요청과 후속 재시도가 성공하면 작업이 여러 번 완료됩니다. 즉, 의도한 것보다 더 많은 리소스를 업데이트할 수 있습니다.

*멱등성*은 API 요청이 한 번만 완료되도록 합니다. 멱등성 요청을 사용하면 원래 요청이 성공적으로 완료되면 추가 작업을 수행하지 않고 후속 재시도가 성공적으로 완료됩니다. 데이터 API `ExecuteStatement` 및 `BatchExecuteStatement` 작업에는 선택적 `ClientToken` 멱등성 파라미터가 있습니다. `ClientToken`은 8시간 후에 만료됩니다.

**중요**  
AWS SDK에서 `ExecuteStatement` 및 `BatchExecuteStatement` 작업을 호출하면 재시도 시 사용할 클라이언트 토큰이 자동으로 생성됩니다. 이 경우 `ExecuteStatement` 및 `BatchExecuteStatement` 작업과 함께 `client-token` 파라미터를 사용하지 않는 것이 좋습니다. ClientToken을 보려면 `ClientToken`를 참조하세요. CloudTrail 로그 예제는 [Amazon Redshift Data API 예제](logging-with-cloudtrail.md#data-api-cloudtrail)를 참조하세요.

다음 `execute-statement` AWS CLI 명령은 멱등성을 위한 선택적 `client-token` 파라미터를 보여줍니다.

```
aws redshift-data execute-statement 
    --secret-arn arn:aws:secretsmanager:us-west-2:123456789012:secret:myuser-secret-hKgPWn 
    --cluster-identifier mycluster-test 
    --sql "select * from stl_query limit 1" 
    --database dev 
    --client-token b855dced-259b-444c-bc7b-d3e8e33f94g1
```

다음 테이블은 멱등성 API 요청에 대해 얻을 수 있는 몇 가지 일반적인 응답을 보여주고 재시도 권장 사항을 제공합니다.


| 응답 | 권장 사항 | 설명 | 
| --- | --- | --- | 
|  200 OK  |  다시 시도하지 않음  |  원래 요청이 성공적으로 완료되었습니다. 이후의 모든 재시도는 성공적으로 반환됩니다.  | 
|  400 시리즈 응답 코드   |  다시 시도하지 않음  |  다음 중에서는 요청에 문제가 있습니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/mgmt/data-api.html) 요청에 상태 변경 프로세스에 있는 리소스가 포함된 경우 요청 재시도가 성공할 수 있습니다.  | 
|  500 시리즈 응답 코드   |  재시도  |  이 오류는 AWS 서버 측 문제로 인해 발생하며 일반적으로 일시적입니다. 적절한 백오프 전략으로 요청을 반복합니다.  | 

Amazon Redshift 응답 코드에 대한 자세한 내용은 *Amazon Redshift API 참조*의 [Common Errors](https://docs.aws.amazon.com/redshift/latest/APIReference/CommonErrors.html)(일반 오류)를 참조하세요.

## Amazon Redshift Data API를 직접 호출할 때 세션 재사용으로 SQL 문 실행
<a name="data-api-calling-considerations-session-reuse"></a>

SQL 문을 실행하기 위해 API를 요청하면 일반적으로 SQL이 종료될 때 SQL이 실행되는 세션이 종료됩니다. 지정된 시간 동안 세션을 활성화하려면 Data API `ExecuteStatement` 및 `BatchExecuteStatement` 작업에는 옵션인 `SessionKeepAliveSeconds` 파라미터가 있습니다. `SessionId` 응답 필드에는 세션의 ID가 포함되어 있으며, 이는 후속 `ExecuteStatement` 및 `BatchExecuteStatement` 작업에 사용할 수 있습니다. 후속 직접 호출에서 유휴 제한 시간을 변경하려면 다른 `SessionKeepAliveSeconds`를 지정할 수 있습니다. `SessionKeepAliveSeconds`를 변경하지 않으면 초기 유휴 제한 시간 설정이 그대로 유지됩니다. 세션 재사용을 활용할 때는 다음을 고려하세요.
+ `SessionKeepAliveSeconds`의 최댓값은 24시간입니다.
+ 세션은 최대 24시간 동안 지속될 수 있습니다. 24시간이 지나면 세션이 강제로 닫히고 진행 중인 쿼리가 종료됩니다.
+ Amazon Redshift 클러스터 또는 Redshift Serverless 작업 그룹당 최대 세션 수는 500개입니다.
+ 세션에서 한 번에 하나의 쿼리만 실행할 수 있습니다. 동일한 세션에서 다음 쿼리를 실행하려면 쿼리가 완료될 때까지 기다려야 합니다. 즉, 제공된 세션에서는 쿼리를 병렬로 실행할 수 없습니다.
+ Data API는 지정된 세션에 대해 쿼리를 대기열에 넣을 수 없습니다.

`ExecuteStatement` 및 `BatchExecuteStatement` 작업에 대한 직접 호출에서 사용되는 `SessionId`를 검색하려면 `DescribeStatement` 및 `ListStatements` 작업을 직접 호출합니다.

다음 예제는 세션을 활성화하고 재사용하기 위해 `SessionKeepAliveSeconds` 및 `SessionId` 파라미터를 사용하는 방법을 보여줍니다. 먼저 옵션인 `session-keep-alive-seconds` 파라미터를 `2`로 설정한 상태에서 `execute-statement` AWS CLI 명령을 직접 호출합니다.

```
aws redshift-data execute-statement 
    --session-keep-alive-seconds 2 
    --sql "select 1" 
    --database dev 
    --workgroup-name mywg
```

응답에는 세션 식별자가 포함됩니다.

```
{
    "WorkgroupName": "mywg",
    "CreatedAt": 1703022996.436,
    "Database": "dev",
    "DbUser": "awsuser",
    "Id": "07c5ffea-76d6-4786-b62c-4fe3ef529680",
    "SessionId": "5a254dc6-4fc2-4203-87a8-551155432ee4"
}
```

그런 다음 첫 번째 직접 호출에서 반환된 `SessionId`를 사용하여 `execute-statement` AWS CLI 명령을 직접 호출합니다. 또한, 팔요에 따라 `session-keep-alive-seconds` 파라미터를 `10`으로 설정하여 유휴 제한 시간 값을 변경합니다.

```
aws redshift-data execute-statement 
    --sql "select 1" 
    --session-id 5a254dc6-4fc2-4203-87a8-551155432ee4
    --session-keep-alive-seconds 10
```

## SQL 문의 결과 가져오기
<a name="data-api-calling-considerations-result-format"></a>

결과 형식에 따라 다른 데이터 API 작업을 사용하여 SQL 결과를 가져옵니다. `ExecuteStatement` 및 `BatchExecuteStatement` 작업을 직접 호출할 때 결과를 JSON 또는 CSV 형식으로 지정할 수 있습니다. 지정하지 않으면 기본값은 JSON입니다. JSON 결과를 검색하려면 `GetStatementResult` 작업을 사용합니다. CSV 결과를 검색하려면 `GetStatementResultV2` 작업을 사용합니다.

JSON 형식으로 반환된 결과는 각 열에 대한 메타데이터를 포함하는 레코드입니다. 각 레코드는 JSON 형식입니다. 예를 들어, `GetStatementResult`의 응답은 다음과 유사합니다.

```
{
   "ColumnMetadata": [ 
      { 
         "isCaseSensitive": false,
         "isCurrency": false,
         "isSigned": true,
         "label": "?column?",
         "name": "?column?",
         "nullable": 1,
         "precision": 10,
         "scale": 0,
         "schemaName": "",
         "tableName": "",
         "typeName": "int4",
         "length": 0
      }
   ],
   "NextToken": "<token>",
   "Records": [
        [
            {
                "longValue": 1
            }
        ]
    ],
   "TotalNumRows": <number>
}
```

CSV 형식으로 반환된 결과는 각 열에 대한 메타데이터를 포함하는 레코드입니다. 결과는 1MB의 청크로 반환되며, 각 청크는 CSV 형식으로 행 수를 제한 없이 저장할 수 있습니다. 각 요청은 최대 15MB의 결과를 반환합니다. 결과가 15MB보다 크면 결과를 계속 검색하기 위해 다음 페이지 토큰이 반환됩니다. 예를 들어, `GetStatementResultV2`의 응답은 다음과 유사합니다.

```
{
    "ColumnMetadata": [
        {
            "isCaseSensitive": false,
            "isCurrency": false,
            "isSigned": true,
            "label": "?column?",
            "name": "?column?",
            "nullable": 1,
            "precision": 10,
            "scale": 0,
            "schemaName": "",
            "tableName": "",
            "typeName": "int4",
            "length": 0
        },
        {
            "isCaseSensitive": false,
            "isCurrency": false,
            "isSigned": true,
            "label": "?column?",
            "name": "?column?",
            "nullable": 1,
            "precision": 10,
            "scale": 0,
            "schemaName": "",
            "tableName": "",
            "typeName": "int4",
            "length": 0
        },
        {
            "isCaseSensitive": false,
            "isCurrency": false,
            "isSigned": true,
            "label": "?column?",
            "name": "?column?",
            "nullable": 1,
            "precision": 10,
            "scale": 0,
            "schemaName": "",
            "tableName": "",
            "typeName": "int4",
            "length": 0
        }
    ],
    "NextToken": "<token>",
    "Records": [
        [
            {
                "CSVRecords":"1,2,3\r\n4,5,6\r\n7,8,9\rn, .... 1MB" // First 1MB Chunk
            },
            {
                "CSVRecords":"1025,1026,1027\r\n1028,1029,1030\r\n....2MB" // Second 1MB chunk
            }
            ...
        ]
    ],
    "ResultFormat" : "CSV",
    "TotalNumRows": <number>
}
```

# Amazon Redshift Data API에 대한 액세스 권한 부여
<a name="data-api-access"></a>

Data API에 액세스하려면 사용자에게 권한이 부여되어야 합니다. 해당 사용자에게 미리 정의된 AWS Identity and Access Management(IAM) 정책인 관리형 정책을 추가하여 Data API에 액세스할 수 있는 권한을 부여할 수 있습니다. 가장 좋은 방법은 권한 정책을 IAM 역할에 연결한 다음 필요에 따라 사용자 및 그룹에 할당하는 것입니다. 자세한 내용은 [Amazon Redshift의 Identity and Access Management](https://docs.aws.amazon.com/redshift/latest/mgmt/redshift-iam-authentication-access-control.html)를 참조하세요. 관리형 정책에서 허용 및 거부하는 권한을 보려면 IAM 콘솔([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/))을 봅니다.

# IAM 권한 구성
<a name="data-api-iam"></a>

Amazon Redshift는 `AmazonRedshiftDataFullAccess` 관리형 정책을 제공합니다. 이 정책은 Amazon Redshift Data API 작업에 대한 전체 액세스 권한을 제공합니다. 이 정책은 또한 Amazon Redshift 클러스터 또는 Redshift Serverless 작업 그룹을 인증하고 이에 액세스하는 데 필요한 특정 Amazon Redshift, AWS Secrets Manager 및 IAM API 작업에 대한 범위 액세스를 허용합니다.

특정 리소스에 대한 액세스를 허용하는 자체 IAM 정책을 생성할 수도 있습니다. 정책을 생성하려면 `AmazonRedshiftDataFullAccess` 정책을 시작 템플릿으로 사용합니다. 정책을 생성한 후에는 해당 정책을 Data API에 액세스해야 하는 각 사용자에게 추가합니다.

사용자와 연결된 IAM 정책의 다음과 같은 요구 사항을 고려합니다.
+ AWS Secrets Manager를 사용하여 인증하는 경우 정책이 `secretsmanager:GetSecretValue` 작업을 사용하여 `RedshiftDataFullAccess` 키로 태그가 지정된 비밀을 검색하도록 허용하는지 확인합니다.
+ 임시 보안 인증 정보를 사용하여 클러스터에 인증하는 경우 정책이 클러스터의 모든 데이터베이스에 대해 데이터베이스 사용자 이름 `redshift_data_api_user`에 `redshift:GetClusterCredentials` 작업을 사용하도록 허용하는지 확인합니다. 이 사용자 이름은 데이터베이스에 이미 생성되어 있어야 합니다.
+ 임시 보안 인증 정보를 사용하여 서버리스 작업 그룹에 인증하는 경우 정책이 `RedshiftDataFullAccess` 키로 태깅된 작업 그룹을 가져오는 `redshift-serverless:GetCredentials` 작업의 사용을 허용하는지 확인합니다. 데이터베이스 사용자는 소스 AWS Identity and Access Management(IAM) 아이덴티티에 일대일로 매핑됩니다. 예를 들어 사용자 sample\$1user는 데이터베이스 사용자 `IAM:sample_user`로 매핑되고 IAM 역할 sample\$1role은 `IAMR:sample_role`로 매핑됩니다. 다양한 IAM 아이덴티티에 대한 자세한 내용은 IAM 사용 설명서에서 [IAM 자격 증명(사용자, 그룹 및 역할)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id.html)을 참조하세요.
+ IAM 작업 `redshift-data:GetStatementResult`는 `GetStatementResult` 및 `GetStatementResultV2` API 작업 모두에 대한 액세스를 허용합니다.

다음 링크는 *IAM User Guide*에서 AWS Identity and Access Management에 대한 자세한 정보를 제공합니다.
+ IAM 역할 생성에 대한 자세한 내용은 [IAM 역할 생성](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create.html)을 참조하세요.
+ IAM 정책 생성에 대한 자세한 내용은 [IAM 정책 생성](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)을 참조하세요.
+ 사용자에게 IAM 정책 추가에 대한 자세한 내용은 [IAM 자격 증명 권한 추가 및 제거](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html)를 참조하세요.

## 다른 계정에서 소유하고 있는 클러스터에서 쿼리 실행
<a name="data-api-run-query-on-others-cluster"></a>

다른 계정이 소유한 클러스터에서 쿼리를 실행하려면 소유 계정이 호출 계정에서 Data API가 수임할 수 있는 IAM 역할을 제공해야 합니다. 예를 들어 계정 B가 계정 A가 액세스해야 하는 클러스터를 소유하고 있다고 가정합니다. 계정 B는 AWS 관리형 정책 `AmazonRedshiftDataFullAccess`를 계정 B의 IAM 역할에 연결할 수 있습니다. 그런 다음 계정 B는 다음과 같은 신뢰 정책을 사용하여 계정 A를 신뢰합니다.``

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::111122223333:role/someRoleA"
                ]
            },
            "Action": "sts:AssumeRole"
        }
    ]
}
```

------

마지막으로 계정 A IAM 역할은 계정 B IAM 역할을 수임할 수 있어야 합니다.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Effect": "Allow",
        "Action": "sts:AssumeRole",
        "Resource": "arn:aws:iam::111122223333:role/someRoleB"
    }
}
```

------

## AWS 계정의 Redshift Serverless 작업 그룹 및 Amazon Redshift 클러스터로 리소스를 제한하는 IAM 역할 지정
<a name="data-api-restrict-to-account"></a>

ID 기반 정책에서 리소스 ARN을 지정하여 AWS 계정의 Redshift Serverless 작업 그룹 및 Amazon Redshift 클러스터에 대한 액세스 권한을 제어할 수 있습니다. 이 예제는 지정된 AWS 계정의 작업 그룹 및 클러스터에만 Data API에 액세스할 수 있는 정책을 만드는 방법을 보여줍니다.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "redshift-data:CancelStatement",
                "redshift-data:DescribeStatement",
                "redshift-data:GetStatementResult",
                "redshift-data:ListStatements"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": "redshift-data:*",
            "Resource": [
                "arn:aws:redshift:us-east-1:111122223333:workgroup/*",
                "arn:aws:redshift:us-east-1:111122223333:cluster:*"
            ]
        }
    ]
}
```

------

## SQL 문 정보에 대한 액세스 권한을 문 소유자로만 제한하는 IAM 정책 구성
<a name="data-api-restrict-to-statement-owner"></a>

기본적으로 Amazon Redshift Data API는 `ExecuteStatement` 및 `BatchExecuteStatement` 직접 호출 시 사용되는 IAM 역할을 SQL 문의 소유자로 취급합니다. 역할을 맡을 수 있는 사람은 누구나 결과를 포함하여 SQL 문에 대한 정보에 액세스할 수 있습니다. IAM 역할 세션에 대한 SQL 문 정보 액세스 권한을 특정 소유자로 제한하려면 `redshift-data:statement-owner-iam-userid: "${aws:userid}"` 조건을 추가하세요. 다음 IAM 정책은 액세스를 제한합니다.

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

****  

```
{
"Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "redshift-data:CancelStatement",
                "redshift-data:DescribeStatement",
                "redshift-data:GetStatementResult",
                "redshift-data:ListStatements"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "redshift-data:statement-owner-iam-userid": "${aws:userid}"
                }
            }
        }
    ]
}
```

------

`CancelStatement`, `DescribeStatement`, `GetStatementResult`, `ListStatements`와 함께 `statement-owner-iam-userid` 조건을 사용할 수 있습니다. 자세한 내용은 [Amazon Redshift Data API에서 정의한 작업](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonredshiftdataapi.html#amazonredshiftdataapi-redshift-data_statement-owner-iam-userid)을 참조하세요.

## SQL 결과에 대한 액세스 권한을 세션 소유자로만 제한하는 IAM 정책 구성
<a name="data-api-restrict-session-owner"></a>

기본적으로 Amazon Redshift Data API는 `ExecuteStatement` 및 `BatchExecuteStatement` 직접 호출 시 사용되는 IAM 역할을 SQL 문을 실행하는 데이터베이스 세션의 소유자로 취급합니다. 역할을 맡을 수 있는 사람은 누구나 데이터베이스 세션에 쿼리를 제출할 수 있습니다. 특정 소유자와의 IAM 역할 세션에 대한 세션 액세스를 제한하려면 ` redshift-data:session-owner-iam-userid: "${aws:userid}"` 조건을 추가하세요. 다음 IAM 정책은 액세스를 제한합니다.

다음 IAM 정책은 세션 소유자만 문 결과를 얻을 수 있도록 허용합니다. `session-owner-iam-userid` 조건은 리소스 액세스 권한을 지정된 `userid`로 제한하는 데 사용됩니다.

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

****  

```
{
"Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [ 
                "redshift-data:ExecuteStatement",
                "redshift-data:BatchExecuteStatement"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "redshift-data:session-owner-iam-userid": "${aws:userid}"
                }
            }
        }
    ]
}
```

------

`ExecuteStatement`, `BatchExecuteStatement`와 함께 `session-owner-iam-userid` 조건을 사용할 수 있습니다. 자세한 내용은 [Amazon Redshift Data API에서 정의한 작업](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonredshiftdataapi.html#amazonredshiftdataapi-redshift-data_statement-owner-iam-userid)을 참조하세요.

# AWS Secrets Manager에 데이터베이스 자격 증명 저장
<a name="data-api-secrets"></a>

Data API를 호출할 때 AWS Secrets Manager의 비밀을 사용하여 클러스터 또는 서버리스 작업 그룹에 대한 보안 인증 정보를 전달할 수 있습니다. 이 방식으로 자격 증명을 전달하려면 보안 암호의 이름 또는 보안 암호의 Amazon 리소스 이름(ARN)을 지정합니다.

Secrets Manager로 자격 증명을 저장하려면 `SecretManagerReadWrite` 관리형 정책 권한이 필요합니다. 최소 권한에 대한 자세한 내용은 *AWS Secrets Manager User Guide*의 [Creating and Managing Secrets with AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/managing-secrets.html)를 참조하세요.

**Amazon Redshift 클러스터의 보안 암호에 자격 증명을 저장하려면**

1. AWS Secrets Manager 콘솔을 사용하여 클러스터의 보안 인증 정보를 포함하는 비밀을 생성합니다.
   + [**새 보안 암호 저장(Store a new secret)**]을 선택할 때 [**Redshift 클러스터용 자격 증명(Credentials for Redshift cluster)**]을 선택합니다.
   + 보안 암호에 [**사용자 이름(User name)**](데이터베이스 사용자), [**암호(Password)**] 및 [**DB 클러스터(DB cluster)**](클러스터 식별자) 값을 저장합니다.
   + 키 `RedshiftDataFullAccess`로 보안 암호에 태그를 지정합니다. AWS 관리형 정책 `AmazonRedshiftDataFullAccess`는 키 `RedshiftDataFullAccess`로 태그가 지정된 보안 암호에 대해서만 작업 `secretsmanager:GetSecretValue`를 허용합니다.

   이에 관한 지침은 *AWS Secrets Manager User Guide*의 [Creating a Basic Secret](https://docs.aws.amazon.com/secretsmanager/latest/userguide/manage_create-basic-secret.html)을 참조하세요.

1. AWS Secrets Manager 콘솔을 사용하여 생성한 보안 암호에 대한 세부 정보를 보거나 `aws secretsmanager describe-secret` AWS CLI 명령을 실행합니다.

   보안 암호의 이름 및 ARN을 적어둡니다. 이러한 이름이나 ARN은 Data API 호출에서 사용할 수 있습니다.

**서버리스 작업 그룹의 비밀에 보안 인증 정보를 저장하려면**

1. 서버리스 작업 그룹에 대한 보안 인증 정보를 포함하는 비밀을 저장하려면 AWS Secrets Manager AWS CLI 명령을 사용합니다.
   + 파일에 보안 암호를 생성합니다(예: `mycreds.json` 이름의 JSON 파일) 파일에 **사용자 이름**(데이터베이스 사용자) 및 **암호** 값을 제공합니다.

     ```
     {
           "username": "myusername",
           "password": "mypassword"
     }
     ```
   + 비밀에 값을 저장하고 `RedshiftDataFullAccess` 키를 사용하여 비밀에 태그를 지정합니다.

     ```
     aws secretsmanager create-secret --name MyRedshiftSecret  --tags Key="RedshiftDataFullAccess",Value="serverless" --secret-string file://mycreds.json
     ```

     다음은 출력값을 보여줍니다.

     ```
     {
         "ARN": "arn:aws:secretsmanager:region:accountId:secret:MyRedshiftSecret-mvLHxf",
         "Name": "MyRedshiftSecret",
         "VersionId": "a1603925-e8ea-4739-9ae9-e509eEXAMPLE"
     }
     ```

   자세한 내용은 [AWS CLI 사용 설명서](https://docs.aws.amazon.com/secretsmanager/latest/userguide/manage_create-basic-secret.html#proc-create-api)에서 *AWS Secrets Manager로 기본 보안 암호 생성*을 참조하세요.

1. AWS Secrets Manager 콘솔을 사용하여 생성한 보안 암호에 대한 세부 정보를 보거나 `aws secretsmanager describe-secret` AWS CLI 명령을 실행합니다.

   보안 암호의 이름 및 ARN을 적어둡니다. 이러한 이름이나 ARN은 Data API 호출에서 사용할 수 있습니다.

# Data API에 대한 Amazon VPC 엔드포인트(AWS PrivateLink) 생성
<a name="data-api-vpc-endpoint"></a>

Amazon Virtual Private Cloud(Amazon VPC)를 사용하면 Amazon Redshift 클러스터 및 애플리케이션과 같은 AWS 리소스를 Virtual Private Cloud(VPC)에서 시작할 수 있습니다. AWS PrivateLink는 Amazon 네트워크에서 Virtual Private Cloud(VPC)와 AWS 서비스 간의 프라이빗 연결을 안전하게 제공합니다. AWS PrivateLink를 사용하면 VPC 엔드포인트를 생성하여 Amazon VPC 기반의 다른 계정 및 VPC에서 서비스에 연결할 수 있습니다. AWS PrivateLink에 대한 자세한 내용은 *Amazon Virtual Private Cloud 사용 설명서*의 [VPC 엔드포인트 서비스(AWS PrivateLink)](https://docs.aws.amazon.com/vpc/latest/userguide/endpoint-service.html)를 참조하세요.

Amazon VPC 엔드포인트를 사용하여 데이터 API를 호출할 수 있습니다. Amazon VPC 엔드포인트를 사용하면 퍼블릭 IP 주소를 사용하지 않고 Amazon VPC의 애플리케이션과 AWS 네트워크에서 데이터 API 간에 트래픽을 유지합니다. Amazon VPC 엔드포인트를 사용하면 퍼블릭 인터넷 연결 제한과 관련된 규정 준수 및 규정 요구 사항을 충족할 수 있습니다. 예를 들어 Amazon VPC 엔드포인트를 사용하는 경우 Amazon EC2 인스턴스에서 실행되는 애플리케이션과 해당 애플리케이션이 포함된 VPC의 데이터 API 간 트래픽을 유지할 수 있습니다.

Amazon VPC 엔드포인트를 생성한 후에는 애플리케이션에서 코드나 구성을 변경하지 않고 엔드포인트를 사용할 수 있습니다.

**데이터 API에 대한 Amazon VPC 엔드포인트를 생성하려면**

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

1. **엔드포인트**를 선택한 다음 **엔드포인트 생성**을 선택합니다.

1. **엔드포인트 생성** 페이지에서 **서비스 범주**에 대해 **AWS 서비스**를 선택합니다. [**서비스 이름(Service Name)**]에서 [**redshift-data**](`com.amazonaws.region.redshift-data`)를 선택합니다.

1. **VPC**의 경우 엔드포인트를 생성할 VPC를 선택합니다.

   데이터 API를 호출하는 애플리케이션이 포함된 VPC를 선택합니다.

1. **서브넷**의 경우 애플리케이션을 실행 중인 AWS 서비스에서 사용하는 각 가용 영역(AZ)의 서브넷을 선택합니다.

   Amazon VPC 엔드포인트를 생성하려면 엔드포인트에 액세스할 수 있는 프라이빗 IP 주소 범위를 지정합니다. 이렇게 하려면 각 가용 영역에 대한 서브넷을 선택합니다. 이렇게 하면 VPC 엔드포인트가 각 가용 영역별 프라이빗 IP 주소 범위로 제한되고 각 가용 영역에 Amazon VPC 엔드포인트가 생성됩니다.

1. **Enable DNS name(DNS 이름 활성화)**에서 **이 엔드포인트에 대해 활성화**를 선택합니다.

   프라이빗 DNS는 표준 데이터 API DNS 호스트 이름(`https://redshift-data.region.amazonaws.com`)을 Amazon VPC 엔드포인트에 특정한 DNS 호스트 이름과 연결된 프라이빗 IP 주소로 확인합니다. 따라서 데이터 API 엔드포인트 URL을 업데이트하기 위해 코드나 구성을 변경하지 않고도 AWS CLI 또는 AWS SDK를 사용하여 데이터 API VPC 엔드포인트에 액세스할 수 있습니다.

1. **보안 그룹**의 경우 Amazon VPC 엔드포인트와 연결할 보안 그룹을 선택합니다.

   애플리케이션을 실행 중인 AWS 서비스에 대한 액세스를 허용하는 보안 그룹을 선택합니다. 예를 들어 Amazon EC2 인스턴스가 애플리케이션을 실행 중인 경우 Amazon EC2 인스턴스에 대한 액세스를 허용하는 보안 그룹을 선택합니다. 보안 그룹을 사용하면 VPC의 리소스에서 Amazon VPC 엔드포인트로 가는 트래픽을 제어할 수 있습니다.

1. [**Create endpoint**]를 선택합니다.

엔드포인트를 생성한 후 AWS Management Console에서 링크를 선택하여 엔드포인트 세부 정보를 봅니다.

엔드포인트 **세부 정보** 탭에는 Amazon VPC 엔드포인트를 만드는 동안 생성된 DNS 호스트 이름이 표시됩니다.

표준 엔드포인트(`redshift-data.region.amazonaws.com`) 또는 VPC 관련 엔드포인트 중 하나를 사용하여 Amazon VPC에서 데이터 API를 호출할 수 있습니다. 표준 데이터 API 엔드포인트는 자동으로 Amazon VPC 엔드포인트로 라우팅됩니다. 이 라우팅은 Amazon VPC 엔드포인트를 생성할 때 프라이빗 DNS 호스트 이름을 활성화했기 때문에 발생합니다.

데이터 API 호출에서 Amazon VPC 엔드포인트를 사용하는 경우 애플리케이션과 데이터 API 간의 모든 트래픽은 해당 트래픽이 포함된 Amazon VPC에 남아 있습니다. 모든 유형의 데이터 API 호출에 Amazon VPC 엔드포인트를 사용할 수 있습니다. 데이터 API 호출에 대한 자세한 내용은 [Amazon Redshift Data API 호출 시 고려 사항](data-api.md#data-api-calling-considerations) 섹션을 참조하세요.

# 클러스터에 연결할 때 데이터베이스 그룹에 조인
<a name="data-api-dbgroups"></a>

데이터베이스 그룹은 데이터베이스 사용자의 모음입니다. 그룹에 데이터베이스 권한을 부여할 수 있습니다. 관리자는 데이터 API로 SQL을 실행할 때 이러한 데이터베이스 그룹이 고려되도록 IAM 역할을 구성할 수 있습니다. 자세한 내용은 **Amazon Redshift 데이터베이스 개발자 안내서의 [그룹](https://docs.aws.amazon.com/redshift/latest/dg/r_Groups.html)을 참조하세요.

데이터 API가 클러스터에 연결할 때 호출에 지정된 데이터베이스 사용자가 데이터베이스 그룹에 조인하도록 데이터 API 호출자의 IAM 역할을 구성할 수 있습니다. 이 기능은 프로비저닝된 클러스터에 연결할 때만 지원됩니다. Redshift Serverless 작업 그룹에 연결할 때는 지원되지 않습니다. 데이터 API 호출자의 IAM 역할도 `redshift:JoinGroup` 작업을 허용해야 합니다.

IAM 역할에 태그를 추가하여 이를 구성합니다. 호출자의 IAM 역할의 관리자는 `RedshiftDbGroups` 키와 데이터베이스 그룹 목록의 키 값을 사용하여 태그를 추가합니다. 값은 콜론(:)으로 구분된 데이터베이스 그룹의 이름을 총 256자까지 나열한 목록입니다. 데이터베이스 그룹은 연결된 데이터베이스에 이전에 정의되어 있어야 합니다. 지정된 그룹이 데이터베이스에서 발견되지 않으면 무시됩니다. 예를 들어 `accounting` 및 `retail` 데이터베이스 그룹의 경우 키-값은 `accounting:retail`입니다. 태그 키-값 쌍 `{"Key":"RedshiftDbGroups","Value":"accounting:retail"}`은 데이터 API에서 데이터 API 호출에서 제공된 데이터베이스 사용자와 연관된 데이터베이스 그룹을 결정하는 데 사용됩니다.

**데이터베이스 그룹에 조인하려면**

1. AWS Management Console에 로그인하여 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)에서 IAM 콘솔을 엽니다.

1. 콘솔의 탐색 창에서 [**역할(Roles)**]을 선택한 다음 편집할 역할의 이름을 선택합니다.

1. **태그** 탭을 선택한 후 **태그 관리**를 선택합니다.

1. **태그 추가**를 선택한 다음 **RedshiftDbGroups** 키와 *database-groups-colon-separated* 목록인 값을 추가합니다.

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

   이제 이 IAM 역할이 첨부된 IAM 주체가 Data API를 호출하면 지정된 데이터베이스 사용자가 IAM 역할에 지정된 데이터베이스 그룹에 조인합니다.

IAM 역할 및 IAM 사용자를 포함하여 보안 주체에 태그를 연결하는 방법에 대한 자세한 내용은 *IAM 사용 설명서*의 [IAM 리소스에 태깅](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html)을 참조하세요.

# 신뢰할 수 있는 자격 증명 전파와 함께 데이터 API 사용
<a name="data-api-trusted-identity-propagation"></a>

Amazon Redshift 계정 관리자는 Amazon Redshift 클러스터 또는 작업 그룹을 AWS IAM Identity Center와 통합할 수 있으므로 Single Sign-On으로 Amazon Redshift에 대한 인력 액세스를 관리하는 데 도움이 됩니다. 자세한 내용은 [Amazon Redshift와 AWS IAM Identity Center 통합 설정](redshift-iam-access-control-idp-connect-console.md) 섹션을 참조하세요. Amazon Redshift 데이터 API는 IAM Identity Center 사용자 ID를 Amazon Redshift 클러스터 또는 작업 그룹 및 AWS Lake Formation과 같은 체인 아래 단계의 다른 서비스에 전파하는 것을 지원합니다. [신뢰할 수 있는 ID 전파를 사용하여 프로그래밍 방식으로 AWS 서비스 액세스](https://aws.amazon.com/blogs//security/access-aws-services-programmatically-using-trusted-identity-propagation/)의 단계에 따라 데이터 API를 사용하여 설정하고 쿼리할 수 있습니다.

ID 강화 IAM 역할 세션에서 IAM Identity Center 사용자 ID를 사용하여 데이터 API를 직접적으로 호출하는 경우, 동일한 IAM Identity Center 사용자를 사용하여 결과 문 및 문 결과에만 액세스할 수 있습니다. 예를 들어 다음 AWS CLI 명령은 `execute-statement` 작업을 직접적으로 호출함으로써 신뢰할 수 있는 ID 전파를 사용하여 SQL 명령을 실행합니다.

```
aws redshift-data execute-statement 
--sql "select current_user;" 
--cluster-id mycluster
--database dev
```

다음 AWS CLI 명령은 `batch-execute-statement` 작업을 직접적으로 호출하여 두 개의 SQL 명령을 실행합니다.

```
aws redshift-data batch-execute-statement 
--sqls  "select current_user;"  "select current_date;"
--cluster-id mycluster
--database dev
```

자격 증명 강화 IAM 역할 세션에서 제출한 `cancel-statement`, `describe-statement`, `get-statement-result` 및 `get-statement-result-v2`를 사용하여 문에 액세스하려면 IAM Identity Center 사용자 및 IAM 역할이 `execute-statment` 또는 `batch-execute-statement`를 실행하는 데 사용된 자격 증명과 일치해야 합니다. 예를 들어 다음 AWS CLI 명령은 SQL 문의 결과를 가져옵니다.

```
aws redshift-data get-statement-result 
--id a1b2c3d4-5678-90ab-cdef-EXAMPLE11111
```

문을 나열하려면 IAM Identity Center 사용자가 할당된 Amazon Redshift IAM Identity Center 애플리케이션에만 액세스할 수 있도록 `cluster-identifier` 또는 `workgroup-name` 파라미터를 제공해야 합니다. 예를 들어 다음 AWS CLI 명령은 특정 클러스터에 대한 문을 나열합니다.

```
aws redshift-data list-statements
--cluster-identifier mycluster
```

또한 신뢰할 수 있는 자격 증명 전파를 사용하여 클러스터 또는 작업 그룹의 데이터베이스 객체에 액세스하는 데이터 API 작업을 간접적으로 호출할 수 있습니다. 여기에는 `list-databases`, `list-schemas`, `list-tables` 및 `describe-table` 작업이 포함됩니다.

IAM Identity Center 사용자가 수행한 API 직접 호출은 AWS CloudTrail에서 추적할 수 있습니다. CloudTrail 이벤트의 `onBehalfOf` 섹션에는 IAM Identity Center 사용자 ID와 ID 스토어 ARN이 표시됩니다. 다음 예제는 IAM Identity Center 사용자 ID가 `a1b2c3d4-5678-90ab-cdef-EXAMPLE11111`이고 Identity 스토어 ARN이 `arn:aws:identitystore::123456789012:identitystore/d-9067bc44d2`인 `onBehalfOf` 섹션이 표시된 CloudTrail 이벤트의 스니펫을 보여줍니다.

```
{
            "eventVersion":"1.10",
            "userIdentity":{
            "type":"AssumedRole",
            ...
            },
            "onBehalfOf":{
            "userId":"a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
            "identityStoreArn":"arn:aws:identitystore::123456789012:identitystore/d-9067bc44d2"
            }
            },
            "eventTime":"2025-01-13T04:46:27Z",
            "eventSource":"redshift-data.amazonaws.com",
            "eventName":"ExecuteStatement",
            "awsRegion":"us-east-1"
            }
```

다음 SQL 명령을 실행하여 IAM Identity Center 사용자가 제출한 쿼리를 확인할 수 있습니다. 이 예제에서 Identity Center에 등록된 이메일은 `username@example.com`입니다.

```
SELECT
    h.query_id,
    h.database_name,
    h.status,
    h.query_text,
    u.usename,
    h.start_time,
    h.end_time
FROM
    sys_query_history h
LEFT JOIN
    pg_user u
ON
    h.user_id = u.usesysid
where u.usename='awsidc:username@example.com'    
ORDER BY
    h.start_time DESC;
```

# 데이터 API 호출
<a name="data-api-calling"></a>

Data API 또는 AWS CLI를 호출하여 클러스터 또는 서버리스 작업 그룹에서 SQL 문을 실행할 수 있습니다. SQL 문을 실행하는 프라이머리 작업은 *Amazon Redshift Data API 참조* 내 [https://docs.aws.amazon.com/redshift-data/latest/APIReference/API_ExecuteStatement.html](https://docs.aws.amazon.com/redshift-data/latest/APIReference/API_ExecuteStatement.html) 및 [https://docs.aws.amazon.com/redshift-data/latest/APIReference/API_BatchExecuteStatement.html](https://docs.aws.amazon.com/redshift-data/latest/APIReference/API_BatchExecuteStatement.html)입니다. Data API는 AWS SDK에서 지원되는 프로그래밍 언어를 지원합니다. 이에 대한 자세한 내용은 [AWS 기반의 도구](https://aws.amazon.com/tools/)를 참조하세요.

Data API 호출의 코드 예제를 보려면 *GitHub*에서 [Getting Started with Redshift Data API](https://github.com/aws-samples/getting-started-with-amazon-redshift-data-api#getting-started-with-redshift-data-api)를 참조하세요. 이 리포지토리에는 AWS Lambda를 사용하여 Amazon EC2, AWS Glue Data Catalog 및 Amazon SageMaker Runtime에서 Amazon Redshift 데이터에 액세스하는 예가 있습니다. 프로그래밍 언어의 예로는 Python, Go, Java 및 Javascript가 있습니다.

AWS CLI를 사용하여 Data API를 호출할 수 있습니다.

다음 예에서는 AWS CLI를 사용하여 Data API를 호출합니다. 예제를 실행하려면 환경에 맞게 파라미터 값을 편집합니다. 많은 예제에서 `cluster-identifier`가 클러스터에 대해 실행되도록 제공됩니다. 서버리스 작업 그룹에 대해 실행할 때는 `workgroup-name`을 대신 제공해야 합니다. 이 예에서는 몇 가지 Data API 작업을 보여줍니다. 자세한 내용은 *AWS CLI 명령 참조*를 참조하세요.

다음 예의 명령은 가독성을 위해 분할되고 형식이 지정되었습니다. 모든 파라미터와 응답이 모든 예시에 표시되는 것은 아닙니다. 전체 요청 구문, 요청 파라미터, 응답 구문 및 응답 요소의 API 정의는 [Amazon Redshift Data API Reference](https://docs.aws.amazon.com/redshift-data/latest/APIReference/)를 참조하세요.

# Amazon Redshift 데이터 웨어하우스에 SQL 스테이트먼트 전달
<a name="pass-sql-statements"></a>

이 페이지의 예제에서는 데이터 웨어하우스에 SQL 스테이트먼트를 전달하는 다양한 방법을 다룹니다.

## SQL 스테이트먼트 실행
<a name="data-api-calling-cli-execute-statement"></a>

SQL 문을 실행하려면 `aws redshift-data execute-statement` AWS CLI 명령을 사용합니다.

다음 AWS CLI 명령은 클러스터에 대해 SQL 문을 실행하고 결과를 가져올 식별자를 반환합니다. 이 예에서는 AWS Secrets Manager 인증 방법을 사용합니다.

```
aws redshift-data execute-statement 
    --secret-arn arn:aws:secretsmanager:us-west-2:123456789012:secret:myuser-secret-hKgPWn 
    --cluster-identifier mycluster-test 
    --sql "select * from stl_query limit 1" 
    --database dev
```

다음은 이 응답의 예입니다.

```
{
    "ClusterIdentifier": "mycluster-test",
    "CreatedAt": 1598323175.823,
    "Database": "dev",
    "Id": "c016234e-5c6c-4bc5-bb16-2c5b8ff61814",
    "SecretArn": "arn:aws:secretsmanager:us-west-2:123456789012:secret:myuser-secret-hKgPWn"
}
```

다음 AWS CLI 명령은 클러스터에 대해 SQL 문을 실행하고 결과를 가져올 식별자를 반환합니다. 이 예에서는 임시 자격 증명 인증 방법을 사용합니다.

```
aws redshift-data execute-statement 
    --db-user myuser 
    --cluster-identifier mycluster-test 
    --database dev 
    --sql "select * from stl_query limit 1"
```

다음은 이 응답의 예입니다.

```
{
    "ClusterIdentifier": "mycluster-test",
    "CreatedAt": 1598306924.632,
    "Database": "dev",
    "DbUser": "myuser",
    "Id": "d9b6c0c9-0747-4bf4-b142-e8883122f766"
}
```

다음 AWS CLI 명령은 서버리스 작업 그룹에 대해 SQL 문을 실행하고 결과를 가져올 식별자를 반환합니다. 이 예에서는 임시 자격 증명 인증 방법을 사용합니다.

```
aws redshift-data execute-statement 
    --database dev 
    --workgroup-name myworkgroup 
    --sql "select 1;"
```

다음은 이 응답의 예입니다.

```
{
 "CreatedAt": "2022-02-11T06:25:28.748000+00:00",
 "Database": "dev",
 "DbUser": "IAMR:RoleName",
 "Id": "89dd91f5-2d43-43d3-8461-f33aa093c41e",
 "WorkgroupName": "myworkgroup"
}
```

다음 AWS CLI 명령은 클러스터에 대해 SQL 문을 실행하고 결과를 가져올 식별자를 반환합니다. 이 예에서는AWS Secrets Manager 인증 방법과 멱등성 토큰을 사용합니다.

```
aws redshift-data execute-statement 
    --secret-arn arn:aws:secretsmanager:us-west-2:123456789012:secret:myuser-secret-hKgPWn 
    --cluster-identifier mycluster-test 
    --sql "select * from stl_query limit 1" 
    --database dev 
    --client-token b855dced-259b-444c-bc7b-d3e8e33f94g1
```

다음은 이 응답의 예입니다.

```
{
    "ClusterIdentifier": "mycluster-test",
    "CreatedAt": 1598323175.823,
    "Database": "dev",
    "Id": "c016234e-5c6c-4bc5-bb16-2c5b8ff61814",
    "SecretArn": "arn:aws:secretsmanager:us-west-2:123456789012:secret:myuser-secret-hKgPWn"
}
```

## 파라미터가 있는 SQL 스테이트먼트 실행
<a name="data-api-calling-cli-execute-statement-parameters"></a>

SQL 문을 실행하려면 `aws redshift-data execute-statement` AWS CLI 명령을 사용합니다.

 다음 AWS CLI 명령은 클러스터에 대해 SQL 문을 실행하고 결과를 가져올 식별자를 반환합니다. 이 예에서는 AWS Secrets Manager 인증 방법을 사용합니다. SQL 텍스트에는 명명된 파라미터 `distance`가 있습니다. 이 경우, 조건자에 사용되는 거리는 `5`입니다. SELECT 문에서는 열 이름에 대해 명명된 파라미터를 조건자에서만 사용할 수 있습니다. SQL 문의 명명된 파라미터 값은 `parameters` 옵션에 지정됩니다.

```
aws redshift-data execute-statement 
    --secret-arn arn:aws:secretsmanager:us-west-2:123456789012:secret:myuser-secret-hKgPWn 
    --cluster-identifier mycluster-test 
    --sql "SELECT ratecode FROM demo_table WHERE trip_distance > :distance"  
    --parameters "[{\"name\": \"distance\", \"value\": \"5\"}]"
    --database dev
```

다음은 이 응답의 예입니다.

```
{
    "ClusterIdentifier": "mycluster-test",
    "CreatedAt": 1598323175.823,
    "Database": "dev",
    "Id": "c016234e-5c6c-4bc5-bb16-2c5b8ff61814",
    "SecretArn": "arn:aws:secretsmanager:us-west-2:123456789012:secret:myuser-secret-hKgPWn"
}
```

다음 예에서는 샘플 데이터베이스의 `EVENT` 테이블을 사용합니다. 자세한 내용은 *Amazon Redshift 데이터베이스 개발자 안내서*의 [EVENT 테이블](https://docs.aws.amazon.com/redshift/latest/dg/r_eventtable.html)을 참조하세요.

데이터베이스에 `EVENT` 테이블이 없으면 다음과 같이 Data API를 사용하여 생성할 수 있습니다.

```
aws redshift-data execute-statement 
--database dev
--cluster-id mycluster-test
--db-user awsuser
--sql "create table event( eventid integer not null distkey, 
                           venueid smallint not null, 
                           catid smallint not null, 
                           dateid smallint not null sortkey, 
                           eventname varchar(200), 
                           starttime timestamp)"
```

다음 명령은 `EVENT` 테이블에 한 행을 삽입합니다.

```
aws redshift-data execute-statement 
--database dev
--cluster-id mycluster-test
--db-user awsuser 
--sql "insert into event values(:eventid, :venueid::smallint, :catid, :dateid, :eventname, :starttime)" 
--parameters "[{\"name\": \"eventid\", \"value\": \"1\"}, {\"name\": \"venueid\", \"value\": \"1\"}, 
               {\"name\": \"catid\", \"value\": \"1\"}, 
               {\"name\": \"dateid\", \"value\": \"1\"}, 
               {\"name\": \"eventname\", \"value\": \"event 1\"}, 
               {\"name\": \"starttime\", \"value\": \"2022-02-22\"}]"
```

다음 명령은 `EVENT` 테이블에 두 번째 행을 삽입합니다. 이 예제에서는 다음 작업을 설명합니다.
+ `id`라는 파라미터가 SQL 텍스트에서 4번 사용됩니다.
+ 파라미터 `starttime`을 삽입할 때 암시적 형식 변환이 자동으로 적용됩니다.
+ `venueid` 열은 SMALLINT 데이터 형식으로 캐스팅됩니다.
+ DATE 데이터 형식을 나타내는 문자열은 암시적으로 TIMESTAMP 데이터 형식으로 변환됩니다.
+ 주석은 SQL 텍스트 내에서 사용할 수 있습니다.

```
aws redshift-data execute-statement 
--database dev
--cluster-id mycluster-test
--db-user awsuser 
--sql "insert into event values(:id, :id::smallint, :id, :id, :eventname, :starttime) /*this is comment, and it won't apply parameterization for :id, :eventname or :starttime here*/" 
--parameters "[{\"name\": \"eventname\", \"value\": \"event 2\"}, 
               {\"name\": \"starttime\", \"value\": \"2022-02-22\"}, 
               {\"name\": \"id\", \"value\": \"2\"}]"
```

다음은 삽입된 두 행을 보여줍니다.

```
 eventid | venueid | catid | dateid | eventname |      starttime
---------+---------+-------+--------+-----------+---------------------
       1 |       1 |     1 |      1 | event 1   | 2022-02-22 00:00:00
       2 |       2 |     2 |      2 | event 2   | 2022-02-22 00:00:00
```

다음 명령은 WHERE 절에서 명명된 파라미터를 사용하여 행을 검색합니다. 여기서 `eventid`는 `1`입니다.

```
aws redshift-data execute-statement 
--database dev
--cluster-id mycluster-test
--db-user awsuser 
--sql "select * from event where eventid=:id"
--parameters "[{\"name\": \"id\", \"value\": \"1\"}]"
```

다음 명령을 실행하여 이전 SQL 문의 SQL 결과를 가져옵니다.

```
aws redshift-data get-statement-result --id 7529ad05-b905-4d71-9ec6-8b333836eb5a        
```

다음 결과를 제공합니다.

```
{
    "Records": [
        [
            {
                "longValue": 1
            },
            {
                "longValue": 1
            },
            {
                "longValue": 1
            },
            {
                "longValue": 1
            },
            {
                "stringValue": "event 1"
            },
            {
                "stringValue": "2022-02-22 00:00:00.0"
            }
        ]
    ],
    "ColumnMetadata": [
        {
            "isCaseSensitive": false,
            "isCurrency": false,
            "isSigned": true,
            "label": "eventid",
            "length": 0,
            "name": "eventid",
            "nullable": 0,
            "precision": 10,
            "scale": 0,
            "schemaName": "public",
            "tableName": "event",
            "typeName": "int4"
        },
        {
            "isCaseSensitive": false,
            "isCurrency": false,
            "isSigned": true,
            "label": "venueid",
            "length": 0,
            "name": "venueid",
            "nullable": 0,
            "precision": 5,
            "scale": 0,
            "schemaName": "public",
            "tableName": "event",
            "typeName": "int2"
        },
        {
            "isCaseSensitive": false,
            "isCurrency": false,
            "isSigned": true,
            "label": "catid",
            "length": 0,
            "name": "catid",
            "nullable": 0,
            "precision": 5,
            "scale": 0,
            "schemaName": "public",
            "tableName": "event",
            "typeName": "int2"
        },
        {
            "isCaseSensitive": false,
            "isCurrency": false,
            "isSigned": true,
            "label": "dateid",
            "length": 0,
            "name": "dateid",
            "nullable": 0,
            "precision": 5,
            "scale": 0,
            "schemaName": "public",
            "tableName": "event",
            "typeName": "int2"
        },
        {
            "isCaseSensitive": true,
            "isCurrency": false,
            "isSigned": false,
            "label": "eventname",
            "length": 0,
            "name": "eventname",
            "nullable": 1,
            "precision": 200,
            "scale": 0,
            "schemaName": "public",
            "tableName": "event",
            "typeName": "varchar"
        },
        {
            "isCaseSensitive": false,
            "isCurrency": false,
            "isSigned": false,
            "label": "starttime",
            "length": 0,
            "name": "starttime",
            "nullable": 1,
            "precision": 29,
            "scale": 6,
            "schemaName": "public",
            "tableName": "event",
            "typeName": "timestamp"
        }
    ],
    "TotalNumRows": 1
}
```

## 여러 SQL 스테이트먼트 실행
<a name="data-api-calling-cli-batch-execute-statement"></a>

하나의 명령으로 여러 SQL 문을 실행하려면 `aws redshift-data batch-execute-statement` AWS CLI 명령을 사용합니다.

다음 AWS CLI 명령은 클러스터에 대해 3개의 SQL 문을 실행하고 결과를 가져올 식별자를 반환합니다. 이 예에서는 임시 자격 증명 인증 방법을 사용합니다.

```
aws redshift-data batch-execute-statement 
    --db-user myuser 
    --cluster-identifier mycluster-test 
    --database dev 
    --sqls "set timezone to BST" "select * from mytable" "select * from another_table"
```

다음은 이 응답의 예입니다.

```
{
    "ClusterIdentifier": "mycluster-test",
    "CreatedAt": 1598306924.632,
    "Database": "dev",
    "DbUser": "myuser",
    "Id": "d9b6c0c9-0747-4bf4-b142-e8883122f766"
}
```

# SQL 스테이트먼트에 대한 메타데이터 나열
<a name="data-api-calling-cli-list-statements"></a>

SQL 문에 대한 메타데이터를 나열하려면 `aws redshift-data list-statements` AWS CLI 명령을 사용합니다. 이 명령을 실행하기 위한 권한 부여는 호출자의 IAM 권한을 기반으로 합니다.

다음 AWS CLI 명령은 실행된 SQL 문을 나열합니다.

```
aws redshift-data list-statements 
    --status ALL
```

다음은 이 응답의 예입니다.

```
{
    "Statements": [
        {
            "CreatedAt": 1598306924.632,
            "Id": "d9b6c0c9-0747-4bf4-b142-e8883122f766",
            "QueryString": "select * from stl_query limit 1",
            "Status": "FINISHED",
            "UpdatedAt": 1598306926.667
        },
        {
            "CreatedAt": 1598311717.437,
            "Id": "e0ebd578-58b3-46cc-8e52-8163fd7e01aa",
            "QueryString": "select * from stl_query limit 1",
            "Status": "FAILED",
            "UpdatedAt": 1598311719.008
        },
        {
            "CreatedAt": 1598313683.65,
            "Id": "c361d4f7-8c53-4343-8c45-6b2b1166330c",
            "QueryString": "select * from stl_query limit 1",
            "Status": "ABORTED",
            "UpdatedAt": 1598313685.495
        },
        {
            "CreatedAt": 1598306653.333,
            "Id": "a512b7bd-98c7-45d5-985b-a715f3cfde7f",
            "QueryString": "select 1",
            "Status": "FINISHED",
            "UpdatedAt": 1598306653.992
        }
    ]
}
```

# SQL 스테이트먼트에 대한 메타데이터 설명
<a name="data-api-calling-cli-describe-statement"></a>

SQL 문에 대한 메타데이터에 대한 설명을 가져오려면 `aws redshift-data describe-statement` AWS CLI 명령을 사용합니다. 이 명령을 실행하기 위한 권한 부여는 호출자의 IAM 권한을 기반으로 합니다.

다음 AWS CLI 명령은 SQL 문을 설명합니다.

```
aws redshift-data describe-statement 
    --id d9b6c0c9-0747-4bf4-b142-e8883122f766
```

다음은 이 응답의 예입니다.

```
{
    "ClusterIdentifier": "mycluster-test",
    "CreatedAt": 1598306924.632,
    "Duration": 1095981511,
    "Id": "d9b6c0c9-0747-4bf4-b142-e8883122f766",
    "QueryString": "select * from stl_query limit 1",
    "RedshiftPid": 20859,
    "RedshiftQueryId": 48879,
    "ResultRows": 1,
    "ResultSize": 4489,
    "Status": "FINISHED",
    "UpdatedAt": 1598306926.667
}
```

다음은 여러 SQL 문으로 `batch-execute-statement` 명령을 실행한 후 `describe-statement` 응답의 예입니다.

```
{
    "ClusterIdentifier": "mayo",
    "CreatedAt": 1623979777.126,
    "Duration": 6591877,
    "HasResultSet": true,
    "Id": "b2906c76-fa6e-4cdf-8c5f-4de1ff9b7652",
    "RedshiftPid": 31459,
    "RedshiftQueryId": 0,
    "ResultRows": 2,
    "ResultSize": 22,
    "Status": "FINISHED",
    "SubStatements": [
        {
            "CreatedAt": 1623979777.274,
            "Duration": 3396637,
            "HasResultSet": true,
            "Id": "b2906c76-fa6e-4cdf-8c5f-4de1ff9b7652:1",
            "QueryString": "select 1;",
            "RedshiftQueryId": -1,
            "ResultRows": 1,
            "ResultSize": 11,
            "Status": "FINISHED",
            "UpdatedAt": 1623979777.903
        },
        {
            "CreatedAt": 1623979777.274,
            "Duration": 3195240,
            "HasResultSet": true,
            "Id": "b2906c76-fa6e-4cdf-8c5f-4de1ff9b7652:2",
            "QueryString": "select 2;",
            "RedshiftQueryId": -1,
            "ResultRows": 1,
            "ResultSize": 11,
            "Status": "FINISHED",
            "UpdatedAt": 1623979778.076
        }
    ],
    "UpdatedAt": 1623979778.183
}
```

# SQL 스테이트먼트 결과 가져오기
<a name="data-api-calling-cli-get-statement-result"></a>

실행된 SQL 문에서 결과를 가져오려면 `redshift-data get-statement-result` 또는 `redshift-data get-statement-result-v2` AWS CLI 명령을 사용합니다. `get-statement-result`의 결과는 JSON 형식입니다. `get-statement-result-v2`의 결과는 CSV 형식입니다. `execute-statement` 또는 `batch-execute-statement`에 대한 응답으로 수신하는 `Id`를 제공할 수 있습니다. `batch-execute-statement`에 의해 실행된 SQL 문의 `Id` 값은 `describe-statement`의 결과에서 검색할 수 있으며 `b2906c76-fa6e-4cdf-8c5f-4de1ff9b7652:2`와 같이 콜론과 시퀀스 번호가 접미사로 붙습니다. `batch-execute-statement`가 있는 여러 SQL 문을 실행하면 `describe-statement`와 같이 각 SQL 문에 `Id` 값이 있습니다. 이 명령을 실행하기 위한 권한 부여는 호출자의 IAM 권한을 기반으로 합니다.

다음 문은 `ResultFormat`이 `JSON`의 기본값을 갖게 하는 `execute-statement`에 의해 실행되는 SQL 문의 결과를 반환합니다. 결과를 검색하려면 `get-statement-result` 작업을 직접 호출합니다.

```
aws redshift-data get-statement-result 
    --id d9b6c0c9-0747-4bf4-b142-e8883122f766
```

다음 문은 `batch-execute-statement`에 의해 실행되는 두 번째 SQL 문의 결과를 반환합니다.

```
aws redshift-data get-statement-result 
    --id b2906c76-fa6e-4cdf-8c5f-4de1ff9b7652:2
```

다음은 SQL 결과가 응답 키 `Records`의 JSON 형식으로 반환되는 `get-statement-result` 직접 호출에 대한 응답의 예입니다.

```
{
    "ColumnMetadata": [
        {
            "isCaseSensitive": false,
            "isCurrency": false,
            "isSigned": true,
            "label": "userid",
            "length": 0,
            "name": "userid",
            "nullable": 0,
            "precision": 10,
            "scale": 0,
            "schemaName": "",
            "tableName": "stll_query",
            "typeName": "int4"
        },
        {
            "isCaseSensitive": false,
            "isCurrency": false,
            "isSigned": true,
            "label": "query",
            "length": 0,
            "name": "query",
            "nullable": 0,
            "precision": 10,
            "scale": 0,
            "schemaName": "",
            "tableName": "stll_query",
            "typeName": "int4"
        },
        {
            "isCaseSensitive": true,
            "isCurrency": false,
            "isSigned": false,
            "label": "label",
            "length": 0,
            "name": "label",
            "nullable": 0,
            "precision": 320,
            "scale": 0,
            "schemaName": "",
            "tableName": "stll_query",
            "typeName": "bpchar"
        },
        {
            "isCaseSensitive": false,
            "isCurrency": false,
            "isSigned": true,
            "label": "xid",
            "length": 0,
            "name": "xid",
            "nullable": 0,
            "precision": 19,
            "scale": 0,
            "schemaName": "",
            "tableName": "stll_query",
            "typeName": "int8"
        },
        {
            "isCaseSensitive": false,
            "isCurrency": false,
            "isSigned": true,
            "label": "pid",
            "length": 0,
            "name": "pid",
            "nullable": 0,
            "precision": 10,
            "scale": 0,
            "schemaName": "",
            "tableName": "stll_query",
            "typeName": "int4"
        },
        {
            "isCaseSensitive": true,
            "isCurrency": false,
            "isSigned": false,
            "label": "database",
            "length": 0,
            "name": "database",
            "nullable": 0,
            "precision": 32,
            "scale": 0,
            "schemaName": "",
            "tableName": "stll_query",
            "typeName": "bpchar"
        },
        {
            "isCaseSensitive": true,
            "isCurrency": false,
            "isSigned": false,
            "label": "querytxt",
            "length": 0,
            "name": "querytxt",
            "nullable": 0,
            "precision": 4000,
            "scale": 0,
            "schemaName": "",
            "tableName": "stll_query",
            "typeName": "bpchar"
        },
        {
            "isCaseSensitive": false,
            "isCurrency": false,
            "isSigned": false,
            "label": "starttime",
            "length": 0,
            "name": "starttime",
            "nullable": 0,
            "precision": 29,
            "scale": 6,
            "schemaName": "",
            "tableName": "stll_query",
            "typeName": "timestamp"
        },
        {
            "isCaseSensitive": false,
            "isCurrency": false,
            "isSigned": false,
            "label": "endtime",
            "length": 0,
            "name": "endtime",
            "nullable": 0,
            "precision": 29,
            "scale": 6,
            "schemaName": "",
            "tableName": "stll_query",
            "type": 93,
            "typeName": "timestamp"
        },
        {
            "isCaseSensitive": false,
            "isCurrency": false,
            "isSigned": true,
            "label": "aborted",
            "length": 0,
            "name": "aborted",
            "nullable": 0,
            "precision": 10,
            "scale": 0,
            "schemaName": "",
            "tableName": "stll_query",
            "typeName": "int4"
        },
        {
            "isCaseSensitive": false,
            "isCurrency": false,
            "isSigned": true,
            "label": "insert_pristine",
            "length": 0,
            "name": "insert_pristine",
            "nullable": 0,
            "precision": 10,
            "scale": 0,
            "schemaName": "",
            "tableName": "stll_query",
            "typeName": "int4"
        },
        {
            "isCaseSensitive": false,
            "isCurrency": false,
            "isSigned": true,
            "label": "concurrency_scaling_status",
            "length": 0,
            "name": "concurrency_scaling_status",
            "nullable": 0,
            "precision": 10,
            "scale": 0,
            "schemaName": "",
            "tableName": "stll_query",
            "typeName": "int4"
        }
    ],
    "Records": [
        [
            {
                "longValue": 1
            },
            {
                "longValue": 3
            },
            {
                "stringValue": "health"
            },
            {
                "longValue": 1023
            },
            {
                "longValue": 15279
            },
            {
                "stringValue": "dev"
            },
            {
                "stringValue": "select system_status from stv_gui_status;"
            },
            {
                "stringValue": "2020-08-21 17:33:51.88712"
            },
            {
                "stringValue": "2020-08-21 17:33:52.974306"
            },
            {
                "longValue": 0
            },
            {
                "longValue": 0
            },
            {
                "longValue": 6
            }
        ]
    ],
    "TotalNumRows": 1
}
```

다음 예시에서는 결과를 JSON으로 반환하기 위해 `execute-statement`로 실행되는 SQL 문을 보여줍니다. 테이블 `testingtable`에는 3개의 정수 열(col1, col2, col3)이 있고, 값(1, 2, 3), (4, 5, 6), (7, 8, 9)이 있는 3개의 행이 있습니다.

```
aws redshift-data execute-statement 
    --database dev 
    --sql "SELECT col1, col2, col3 FROM testingtable" 
    --cluster-id mycluster-test 
    --result-format JSON
```

```
{
    "ClusterIdentifier": "mycluster-test",
    "CreatedAt": "2024-04-02T16:45:25.144000+00:00",
    "Database": "dev",
    "DbUser": "IAMR:Administrator",
    "Id": "d468d942-6df9-4f85-8ae3-bac01a61aec3"
}
```

다음은 SQL 결과가 응답 키 `Records`의 JSON 형식으로 반환되는 `get-statement-result` 직접 호출에 대한 응답의 예입니다.

```
aws redshift-data get-statement-result
    --id d468d942-6df9-4f85-8ae3-bac01a61aec3
```

```
{
    "Records": [
        [
            {
                "longValue": 1
            },
            {
                "longValue": 2
            },
            {
                "longValue": 3
            }
        ],
        [
            {
                "longValue": 4
            },
            {
                "longValue": 5
            },
            {
                "longValue": 6
            }
        ],
        [
            {
                "longValue": 7
            },
            {
                "longValue": 8
            },
            {
                "longValue": 9
            }
        ]
    ],
    "ColumnMetadata": [
        {
            "isCaseSensitive": false,
            "isCurrency": false,
            "isSigned": true,
            "label": "col1",
            "name": "col1",
            "nullable": 1,
            "precision": 10,
            "scale": 0,
            "schemaName": "public",
            "tableName": "testingtable",
            "typeName": "int4",
            "length": 0
        },
        {
            "isCaseSensitive": false,
            "isCurrency": false,
            "isSigned": true,
            "label": "col2",
            "name": "col2",
            "nullable": 1,
            "precision": 10,
            "scale": 0,
            "schemaName": "public",
            "tableName": "testingtable",
            "typeName": "int4",
            "length": 0
        },
        {
            "isCaseSensitive": false,
            "isCurrency": false,
            "isSigned": true,
            "label": "col3",
            "name": "col3",
            "nullable": 1,
            "precision": 10,
            "scale": 0,
            "schemaName": "public",
            "tableName": "testingtable",
            "typeName": "int4",
            "length": 0
        }
    ],
    "TotalNumRows": 3
}
```

다음 예시에서는 결과를 CSV로 반환하기 위해 `execute-statement`로 실행되는 SQL 문을 보여줍니다. 테이블 `testingtable`에는 3개의 정수 열(col1, col2, col3)이 있고, 값(1, 2, 3), (4, 5, 6), (7, 8, 9)이 있는 3개의 행이 있습니다.

```
aws redshift-data execute-statement 
    --database dev 
    --sql "SELECT col1, col2, col3 FROM testingtable" 
    --cluster-id mycluster-test 
    --result-format CSV
```

```
{
    "ClusterIdentifier": "mycluster-test",
    "CreatedAt": "2024-04-02T16:45:25.144000+00:00",
    "Database": "dev",
    "DbUser": "IAMR:Administrator",
    "Id": "d468d942-6df9-4f85-8ae3-bac01a61aec3"
}
```

다음은 SQL 결과가 응답 키 `Records`의 CSV 형식으로 반환되는 `get-statement-result-v2` 직접 호출에 대한 응답의 예입니다. 행은 캐리지 리턴과 줄 바꿈(\$1r\$1n)으로 구분됩니다. `Records`에서 반환되는 첫 번째 행은 열 헤더입니다. CSV 형식으로 반환된 결과는 1MB로 반환되며, 각 청크는 최대 1MB까지 행 수를 저장할 수 있습니다.

```
aws redshift-data get-statement-result-v2
    --id d468d942-6df9-4f85-8ae3-bac01a61aec3
```

```
{
    "Records": [
        {
            "CSVRecords": "col1,col2,col3\r\n1,2,3\r\n4,5,6\r\n7,8,9\r\n"
        }
    ],
    "ColumnMetadata": [
        {
            "isCaseSensitive": false,
            "isCurrency": false,
            "isSigned": true,
            "label": "col1",
            "name": "col1",
            "nullable": 1,
            "precision": 10,
            "scale": 0,
            "schemaName": "public",
            "tableName": "testingtable",
            "typeName": "int4",
            "length": 0
        },
        {
            "isCaseSensitive": false,
            "isCurrency": false,
            "isSigned": true,
            "label": "col2",
            "name": "col2",
            "nullable": 1,
            "precision": 10,
            "scale": 0,
            "schemaName": "public",
            "tableName": "testingtable",
            "typeName": "int4",
            "length": 0
        },
        {
            "isCaseSensitive": false,
            "isCurrency": false,
            "isSigned": true,
            "label": "col3",
            "name": "col3",
            "nullable": 1,
            "precision": 10,
            "scale": 0,
            "schemaName": "public",
            "tableName": "testingtable",
            "typeName": "int4",
            "length": 0
        }
    ],
    "TotalNumRows": 3,
    "ResultFormat": "csv"
}
```

# 테이블 설명
<a name="data-api-calling-cli-describe-table"></a>

테이블을 설명하는 메타데이터를 가져오려면 `aws redshift-data describe-table` AWS CLI 명령을 사용합니다.

다음 AWS CLI 명령은 클러스터에 대해 SQL 문을 실행하고 테이블을 설명하는 메타데이터를 반환합니다. 이 예에서는 AWS Secrets Manager 인증 방법을 사용합니다.

```
aws redshift-data describe-table  
    --cluster-identifier mycluster-test 
    --database dev 
    --schema information_schema 
    --table sql_features 
    --secret-arn arn:aws:secretsmanager:us-west-2:123456789012:secret:myuser-secret-hKgPWn
```

다음은 이 응답의 예입니다.

```
{
    "ColumnList": [
        {
            "isCaseSensitive": false,
            "isCurrency": false,
            "isSigned": false,
            "length": 2147483647,
            "name": "feature_id",
            "nullable": 1,
            "precision": 2147483647,
            "scale": 0,
            "schemaName": "information_schema",
            "tableName": "sql_features",
            "typeName": "character_data"
        },
        {
            "isCaseSensitive": false,
            "isCurrency": false,
            "isSigned": false,
            "length": 2147483647,
            "name": "feature_name",
            "nullable": 1,
            "precision": 2147483647,
            "scale": 0,
            "schemaName": "information_schema",
            "tableName": "sql_features",
            "typeName": "character_data"
        }     
    ]
}
```

다음 AWS CLI 명령은 클러스터에 대해 테이블을 설명하는 SQL 문을 실행합니다. 이 예에서는 임시 자격 증명 인증 방법을 사용합니다.

```
aws redshift-data describe-table 
    --db-user myuser 
    --cluster-identifier mycluster-test 
    --database dev 
    --schema information_schema 
    --table sql_features
```

다음은 이 응답의 예입니다.

```
{
    "ColumnList": [
        {
            "isCaseSensitive": false,
            "isCurrency": false,
            "isSigned": false,
            "length": 2147483647,
            "name": "feature_id",
            "nullable": 1,
            "precision": 2147483647,
            "scale": 0,
            "schemaName": "information_schema",
            "tableName": "sql_features",
            "typeName": "character_data"
        },
        {
            "isCaseSensitive": false,
            "isCurrency": false,
            "isSigned": false,
            "length": 2147483647,
            "name": "feature_name",
            "nullable": 1,
            "precision": 2147483647,
            "scale": 0,
            "schemaName": "information_schema",
            "tableName": "sql_features",
            "typeName": "character_data"
        },
        {
            "isCaseSensitive": false,
            "isCurrency": false,
            "isSigned": false,
            "length": 2147483647,
            "name": "sub_feature_id",
            "nullable": 1,
            "precision": 2147483647,
            "scale": 0,
            "schemaName": "information_schema",
            "tableName": "sql_features",
            "typeName": "character_data"
        },
        {
            "isCaseSensitive": false,
            "isCurrency": false,
            "isSigned": false,
            "length": 2147483647,
            "name": "sub_feature_name",
            "nullable": 1,
            "precision": 2147483647,
            "scale": 0,
            "schemaName": "information_schema",
            "tableName": "sql_features",
            "typeName": "character_data"
        },
        {
            "isCaseSensitive": false,
            "isCurrency": false,
            "isSigned": false,
            "length": 2147483647,
            "name": "is_supported",
            "nullable": 1,
            "precision": 2147483647,
            "scale": 0,
            "schemaName": "information_schema",
            "tableName": "sql_features",
            "typeName": "character_data"
        },
        {
            "isCaseSensitive": false,
            "isCurrency": false,
            "isSigned": false,
            "length": 2147483647,
            "name": "is_verified_by",
            "nullable": 1,
            "precision": 2147483647,
            "scale": 0,
            "schemaName": "information_schema",
            "tableName": "sql_features",
            "typeName": "character_data"
        },
        {
            "isCaseSensitive": false,
            "isCurrency": false,
            "isSigned": false,
            "length": 2147483647,
            "name": "comments",
            "nullable": 1,
            "precision": 2147483647,
            "scale": 0,
            "schemaName": "information_schema",
            "tableName": "sql_features",
            "typeName": "character_data"
        }
    ]
}
```

# 클러스터의 데이터베이스 나열
<a name="data-api-calling-cli-list-databases"></a>

클러스터의 데이터베이스를 나열하려면 `aws redshift-data list-databases` AWS CLI 명령을 사용합니다.

다음 AWS CLI 명령은 클러스터에 대해 SQL 문을 실행하여 데이터베이스를 나열합니다. 이 예에서는 AWS Secrets Manager 인증 방법을 사용합니다.

```
aws redshift-data list-databases  

    --secret-arn arn:aws:secretsmanager:us-west-2:123456789012:secret:myuser-secret-hKgPWn 
    --cluster-identifier mycluster-test 
    --database dev
```

다음은 이 응답의 예입니다.

```
{
    "Databases": [
        "dev"
    ]
}
```

다음 AWS CLI 명령은 클러스터에 대해 SQL 문을 실행하여 데이터베이스를 나열합니다. 이 예에서는 임시 자격 증명 인증 방법을 사용합니다.

```
aws redshift-data list-databases  
    --db-user myuser 
    --cluster-identifier mycluster-test 
    --database dev
```

다음은 이 응답의 예입니다.

```
{
    "Databases": [
        "dev"
    ]
}
```

# 데이터베이스의 스키마 나열
<a name="data-api-calling-cli-list-schemas"></a>

데이터베이스의 스키마를 나열하려면 `aws redshift-data list-schemas` AWS CLI 명령을 사용합니다.

다음 AWS CLI 명령은 클러스터에 대해 SQL 문을 실행하여 데이터베이스의 스키마를 나열합니다. 이 예에서는 AWS Secrets Manager 인증 방법을 사용합니다.

```
aws redshift-data list-schemas 
    --secret-arn arn:aws:secretsmanager:us-west-2:123456789012:secret:myuser-secret-hKgPWn 
    --cluster-identifier mycluster-test 
    --database dev
```

다음은 이 응답의 예입니다.

```
{
    "Schemas": [
        "information_schema",
        "pg_catalog",
        "pg_internal",
        "public"
    ]
}
```

다음 AWS CLI 명령은 클러스터에 대해 SQL 문을 실행하여 데이터베이스의 스키마를 나열합니다. 이 예에서는 임시 자격 증명 인증 방법을 사용합니다.

```
aws redshift-data list-schemas 
    --db-user mysuser 
    --cluster-identifier mycluster-test 
    --database dev
```

다음은 이 응답의 예입니다.

```
{
    "Schemas": [
        "information_schema",
        "pg_catalog",
        "pg_internal",
        "public"
    ]
}
```

# 데이터베이스의 테이블 나열
<a name="data-api-calling-cli-list-tables"></a>

데이터베이스의 테이블을 나열하려면 `aws redshift-data list-tables` AWS CLI 명령을 사용합니다.

다음 AWS CLI 명령은 클러스터에 대해 SQL 문을 실행하여 데이터베이스의 테이블을 나열합니다. 이 예에서는 AWS Secrets Manager 인증 방법을 사용합니다.

```
aws redshift-data list-tables 
    --secret-arn arn:aws:secretsmanager:us-west-2:123456789012:secret:myuser-secret-hKgPWn 
    --cluster-identifier mycluster-test 
    --database dev 
    --schema information_schema
```

다음은 이 응답의 예입니다.

```
{
    "Tables": [
        {
            "name": "sql_features",
            "schema": "information_schema",
            "type": "SYSTEM TABLE"
        },
        {
            "name": "sql_implementation_info",
            "schema": "information_schema",
            "type": "SYSTEM TABLE"
        }
}
```

다음 AWS CLI 명령은 클러스터에 대해 SQL 문을 실행하여 데이터베이스의 테이블을 나열합니다. 이 예에서는 임시 자격 증명 인증 방법을 사용합니다.

```
aws redshift-data list-tables  

     --db-user myuser 
     --cluster-identifier mycluster-test 
     --database dev 
     --schema information_schema
```

다음은 이 응답의 예입니다.

```
{
    "Tables": [
        {
            "name": "sql_features",
            "schema": "information_schema",
            "type": "SYSTEM TABLE"
        },
        {
            "name": "sql_implementation_info",
            "schema": "information_schema",
            "type": "SYSTEM TABLE"
        }
    ]
}
```

# Amazon Redshift Data API 문제 해결
<a name="data-api-troubleshooting"></a>

공통 오류 메시지를 소개하는 다음 섹션부터는 데이터 API를 사용하면서 발생하는 문제를 해결하는 데 유용합니다.

**Topics**
+ [쿼리 패킷이 너무 큽니다](#data-api-troubleshooting-packet-too-large)
+ [데이터베이스 응답이 크기 제한을 초과했습니다](#data-api-troubleshooting-response-size-too-large)

## 쿼리 패킷이 너무 큽니다
<a name="data-api-troubleshooting-packet-too-large"></a>

쿼리에 대한 패킷이 너무 크다는 오류가 표시되면 일반적으로 행에 대해 반환된 결과 집합이 너무 큽니다. 데이터 API는 데이터베이스에서 반환되는 결과 집합에서 각 행의 크기를 64KB로 제한합니다.

이 문제를 해결하려면 결과 집합의 각 행마다 크기를 64KB 이하로 유지해야 합니다.

## 데이터베이스 응답이 크기 제한을 초과했습니다
<a name="data-api-troubleshooting-response-size-too-large"></a>

데이터베이스 응답이 크기 제한을 초과했음을 나타내는 오류가 표시되면 일반적으로 데이터베이스에서 반환된 결과 집합의 크기가 너무 큽니다. Data API는 데이터베이스에서 반환되는 결과 집합의 크기를 500MB로 제한합니다.

이러한 문제를 해결하려면 Data API 직접 호출 시 반환되는 데이터 크기를 500MB 이하로 유지해야 합니다. 반환해야 하는 결과 집합의 크기가 500MB를 넘으면 쿼리에서 `LIMIT` 절을 사용하여 여러 문의 직접 호출을 실행할 수 있습니다.

# Amazon EventBridge로 Amazon Redshift Data API 작업 예약
<a name="data-api-calling-event-bridge"></a>

선택된 이벤트와 일치할 경우 대상으로 라우팅하여 작업을 실행하는 규칙을 생성할 수 있습니다. 규칙을 사용하여 미리 결정된 일정에 따라 조치를 취할 수도 있습니다. 자세한 내용은 [Amazon EventBridge 사용 가이드](https://docs.aws.amazon.com/eventbridge/latest/userguide/)를 참조하세요.

EventBridge로 Data API 작업을 예약하려면 연결된 IAM 역할이 CloudWatch Events(events.amazonaws.com)의 보안 주체를 신뢰해야 합니다. 이 역할에는 관리형 정책 `AmazonEventBridgeFullAccess`에 해당하는 정책이 연결되어 있어야 합니다. Data API에 의해 관리되는 `AmazonRedshiftDataFullAccess` 정책 권한도 있어야 합니다. IAM 콘솔에서 이러한 권한으로 IAM 역할을 생성할 수 있습니다. IAM 콘솔에서 역할을 생성할 때 CloudWatch Events에 대해 AWS 서비스 신뢰할 수 있는 엔터티를 선택합니다. EventBridge 대상의 `RoleArn` JSON 값에 IAM 역할을 지정합니다. 서비스 역할 생성에 대한 자세한 내용은 *IAM User Guide*의 [Creating a Role for an AWS Service (Console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html#roles-creatingrole-service-console)를 참조하세요.

Amazon EventBridge에서 생성하는 규칙의 `name`은 `RedshiftDataParameters`의 `StatementName`과 일치해야 합니다.

다음 예제는 한 개 또는 여러 개의 SQL 문을 사용하고 Amazon Redshift 클러스터 또는 Amazon Redshift Serverless 작업 그룹을 데이터 웨어하우스로 사용하여 EventBridge 규칙을 생성하는 변형을 보여줍니다.

## 단일 SQL 문 및 클러스터를 사용한 호출
<a name="data-api-calling-event-bridge-sql-cluster"></a>

다음 예에서는 AWS CLI를 사용하여 Amazon Redshift 클러스터에 대해 SQL 문을 실행하는 데 사용되는 EventBridge 규칙을 생성합니다.

```
aws events put-rule 
--name test-redshift-cluster-data 
--schedule-expression "rate(1 minute)"
```

그런 다음 규칙에 지정된 일정에 따라 실행되도록 EventBridge 대상이 생성됩니다.

```
aws events put-targets 
--cli-input-json file://data.json
```

입력 data.json 파일은 다음과 같습니다. `Sql` JSON 키는 단일 SQL 문이 있음을 나타냅니다. `Arn` JSON 값에는 클러스터 식별자가 포함됩니다. `RoleArn` JSON 값에는 앞서 설명한 대로 SQL을 실행하는 데 사용되는 IAM 역할이 포함됩니다.

```
{
    "Rule": "test-redshift-cluster-data",
    "EventBusName": "default",
    "Targets": [
        {
            "Id": "2",
            "Arn": "arn:aws:redshift:us-east-1:123456789012:cluster:mycluster",
            "RoleArn": "arn:aws:iam::123456789012:role/Administrator",
            "RedshiftDataParameters": {
                "Database": "dev",
                "DbUser": "root",
                "Sql": "select 1;",
                "StatementName": "test-redshift-cluster-data",
                "WithEvent": true
            }
        }
    ]
}
```

## 단일 SQL 문 및 작업 그룹을 사용한 호출
<a name="data-api-calling-event-bridge-sql-workgroup"></a>

다음 예에서는 AWS CLI를 사용하여 Amazon Redshift Serverless 작업 그룹에 대해 SQL 문을 실행하는 데 사용되는 EventBridge 규칙을 생성합니다.

```
aws events put-rule 
--name  test-redshift-serverless-workgroup-data 
--schedule-expression "rate(1 minute)"
```

그런 다음 규칙에 지정된 일정에 따라 실행되도록 EventBridge 대상이 생성됩니다.

```
aws events put-targets 
--cli-input-json file://data.json
```

입력 data.json 파일은 다음과 같습니다. `Sql` JSON 키는 단일 SQL 문이 있음을 나타냅니다. `Arn` JSON 값에는 작업 그룹 이름이 포함됩니다. `RoleArn` JSON 값에는 앞서 설명한 대로 SQL을 실행하는 데 사용되는 IAM 역할이 포함됩니다.

```
{
    "Rule": "test-redshift-serverless-workgroup-data", 
    "EventBusName": "default", 
    "Targets": [ 
        {
            "Id": "2",
            "Arn": "arn:aws:redshift-serverless:us-east-1:123456789012:workgroup/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
            "RoleArn": "arn:aws:iam::123456789012:role/Administrator", 
            "RedshiftDataParameters": {
                "Database": "dev",
                "Sql": "select 1;",
                "StatementName": "test-redshift-serverless-workgroup-data", 
                "WithEvent": true 
            } 
        } 
    ] 
}
```

## 여러 SQL 문 및 클러스터를 사용한 호출
<a name="data-api-calling-event-bridge-sqls-cluster"></a>

다음 예에서는 AWS CLI를 사용하여 Amazon Redshift 클러스터에 대해 여러 SQL 문을 실행하는 데 사용되는 EventBridge 규칙을 생성합니다.

```
aws events put-rule 
--name  test-redshift-cluster-data 
--schedule-expression "rate(1 minute)"
```

그런 다음 규칙에 지정된 일정에 따라 실행되도록 EventBridge 대상이 생성됩니다.

```
aws events put-targets 
--cli-input-json file://data.json
```

입력 data.json 파일은 다음과 같습니다. `Sqls` JSON 키는 여러 SQL 문이 있음을 나타냅니다. `Arn` JSON 값에는 클러스터 식별자가 포함됩니다. `RoleArn` JSON 값에는 앞서 설명한 대로 SQL을 실행하는 데 사용되는 IAM 역할이 포함됩니다.

```
{
    "Rule": "test-redshift-cluster-data", 
    "EventBusName": "default", 
    "Targets": [ 
        {
            "Id": "2",
            "Arn": "arn:aws:redshift:us-east-1:123456789012:cluster:mycluster",
            "RoleArn": "arn:aws:iam::123456789012:role/Administrator", 
            "RedshiftDataParameters": {
                "Database": "dev",
                "Sqls": ["select 1;", "select 2;", "select 3;"],
                "StatementName": "test-redshift-cluster-data", 
                "WithEvent": true 
            } 
        } 
    ] 
}
```

## 여러 SQL 문 및 작업 그룹을 사용한 호출
<a name="data-api-calling-event-bridge-sqls-workgroup"></a>

다음 예에서는 AWS CLI를 사용하여 Amazon Redshift Serverless 작업 그룹에 대해 여러 SQL 문을 실행하는 데 사용되는 EventBridge 규칙을 생성합니다.

```
aws events put-rule 
--name  test-redshift-serverless-workgroup-data 
--schedule-expression "rate(1 minute)"
```

그런 다음 규칙에 지정된 일정에 따라 실행되도록 EventBridge 대상이 생성됩니다.

```
aws events put-targets 
--cli-input-json file://data.json
```

입력 data.json 파일은 다음과 같습니다. `Sqls` JSON 키는 여러 SQL 문이 있음을 나타냅니다. `Arn` JSON 값에는 작업 그룹 이름이 포함됩니다. `RoleArn` JSON 값에는 앞서 설명한 대로 SQL을 실행하는 데 사용되는 IAM 역할이 포함됩니다.

```
{
    "Rule": "test-redshift-serverless-workgroup-data", 
    "EventBusName": "default", 
    "Targets": [ 
        {
            "Id": "2",
            "Arn": "arn:aws:redshift-serverless:us-east-1:123456789012:workgroup/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
            "RoleArn": "arn:aws:iam::123456789012:role/Administrator", 
            "RedshiftDataParameters": {
                "Database": "dev",
                "Sqls": ["select 1;", "select 2;", "select 3;"],
                "StatementName": "test-redshift-serverless-workgroup-data", 
                "WithEvent": true 
            } 
        } 
    ] 
}
```

# Data API 모니터링
<a name="data-api-monitoring"></a>

Data API 및 다른 AWS 솔루션의 안정성, 가용성 및 성능을 유지하려면 모니터링이 중요합니다. AWS는 Data API를 모니터링하고, 이상이 있을 때 이를 보고하고, 필요한 경우 자동 조치를 취할 수 있도록 다음과 같은 모니터링 도구를 제공합니다.
+ Amazon EventBridge를 사용하면 AWS 서비스를 자동화하고 애플리케이션 가용성 문제나 리소스 변경 같은 시스템 이벤트에 자동으로 대응할 수 있습니다. AWS 서비스의 이벤트는 거의 실시간으로 EventBridge로 전송됩니다. 원하는 이벤트만 표시하도록 간단한 규칙을 작성한 후 규칙과 일치하는 이벤트 발생 시 실행할 자동화 작업을 지정할 수 있습니다. 자세한 내용은 [Amazon EventBridge 사용 설명서](https://docs.aws.amazon.com/eventbridge/latest/userguide/)를 참조하세요.
+ AWS CloudTrail은 직접 수행하거나 AWS 계정을 대신하여 수행한 API 호출 및 관련 이벤트를 캡처하고 지정한 Amazon S3 버킷에 로그 파일을 전송합니다. 어떤 사용자 및 계정이 AWS를 직접적으로 호출했는지, 어떤 소스 IP 주소에 직접 호출이 이루어졌는지, 언제 직접 호출이 발생했는지 확인할 수 있습니다. Amazon Redshift를 AWS CloudTrail에 통합하는 방법을 자세히 알아보려면 [CloudTrail을 사용한 로깅](https://docs.aws.amazon.com/redshift/latest/mgmt/logging-with-cloudtrail.html)을 참조하세요. CloudTrail에 대한 자세한 내용은 [AWS CloudTrail 사용자 안내서](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/)를 참조하세요.

**Topics**
+ [Amazon EventBridge에서 Amazon Redshift Data API에 대한 이벤트 모니터링](data-api-monitoring-events.md)

# Amazon EventBridge에서 Amazon Redshift Data API에 대한 이벤트 모니터링
<a name="data-api-monitoring-events"></a>

자체 애플리케이션, SaaS(Software-as-a-Service) 애플리케이션 및 AWS 서비스의 실시간 데이터 스트림을 제공하는 EventBridge의 Data API 이벤트를 모니터링할 수 있습니다. EventBridge는 해당 데이터를 AWS Lambda, Amazon SNS 등의 대상으로 라우팅합니다. 이러한 이벤트는 CloudWatch Events에 나타나는 이벤트와 동일하며, AWS 리소스의 변경 사항을 설명하는 시스템 이벤트의 스트림을 거의 실시간 제공합니다. Amazon Redshift 데이터베이스가 포함된 계정으로 이벤트가 전송됩니다. 예를 들어 다른 계정의 역할을 수임하면 이벤트가 해당 계정으로 전송됩니다. 자세한 내용은 *Amazon EventBridge 사용 설명서*의 [Amazon EventBridge 이벤트](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-events.html)를 참조하세요.

`ExecuteStatement` 또는 `BatchExecuteStatement` API 작업이 `WithEvent` 옵션을 `true`로 설정하면 Data API 이벤트가 전송됩니다. 이벤트의 `state` 필드에는 다음 값 중 하나가 포함됩니다.
+ ABORTED – 쿼리 실행이 사용자에 의해 중지되었습니다.
+ [실패(FAILED)] – 쿼리 실행에 실패했습니다.
+ [완료(FINISHED)] – 쿼리 실행이 완료되었습니다.

이벤트는 보장된 방식으로 전달됩니다. 자세한 내용은 *Amazon EventBridge 사용 설명서*의 [AWS 서비스 이벤트](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-service-event.html)를 참조하세요.

## Data API 완료 이벤트의 예
<a name="data-api-monitoring-events-finished"></a>

다음 예에서는 `ExecuteStatement` API 작업이 완료될 때 Data API에 대한 이벤트를 보여줍니다. 이 예에서 `test.testtable`이라는 문이 실행을 완료했습니다.

```
{
    "version": "0",
    "id": "18e7079c-dd4b-dd64-caf9-e2a31640dab0",
    "detail-type": "Redshift Data Statement Status Change",
    "source": "aws.redshift-data",
    "account": "123456789012",
    "time": "2020-10-01T21:14:26Z",
    "region": "us-east-1",
    "resources": [
        "arn:aws:redshift:us-east-1:123456789012:cluster:redshift-cluster-1"
    ],
    "detail": {
        "principal": "arn:aws:iam::123456789012:user/myuser",
        "statementName": "test.testtable",
        "statementId": "dd2e1ec9-2ee3-49a0-819f-905fa7d75a4a",
        "redshiftQueryId": -1,
        "state": "FINISHED",
        "rows": 1,
        "expireAt": 1601673265
    }
}
```

# Amazon Redshift 데이터 API와 함께 AWS KMS 사용
<a name="data-api-kms"></a>

Amazon Redshift 클러스터 또는 Redshift Serverless 작업 그룹을 고객 관리형 키로 암호화하는 경우 Amazon Redshift 데이터 API는 동일한 고객 관리형 키를 사용하여 쿼리와 결과를 저장하고 암호화합니다.

데이터 API는 기본적으로 데이터를 암호화하여 쿼리 텍스트 및 쿼리 결과와 같은 민감한 정보를 보호합니다. 이 보호를 위해 AWS에서 소유한 AWS KMS 암호화 키를 사용합니다.

저장 데이터의 기본 암호화는 민감한 데이터를 보호하는 데 수반되는 운영 오버헤드와 복잡성을 줄여줍니다. 이 방법으로 엄격한 암호화 규정 준수 및 규제 요구 사항을 충족하는 안전한 애플리케이션을 구축할 수 있습니다.

## AWS KMS에서 권한 부여 사용
<a name="data-api-kms-grants"></a>

데이터 API는 고객 관리형 키를 사용하려면 권한 부여가 필요합니다.

고객 관리형 키로 암호화된 클러스터에 대해 `ExecuteStatement` 또는 `BatchExecuteStatement`를 직접 호출하면 Amazon Redshift는 AWS KMS에 [https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html) 요청을 전송하여 사용자를 대신하여 권한 부여를 생성합니다. AWS KMS는 권한 부여를 사용하여 계정의 KMS 키에 대한 데이터 API 액세스 권한을 부여합니다.

데이터 API는 다음 작업에 대해 고객 관리형 키를 사용할 수 있는 권한이 필요합니다.
+ AWS KMS에 [https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html) 요청을 보내 고객 관리형 키로 쿼리 메타데이터를 암호화합니다.
+ AWS KMS에 [https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html) 요청을 보내 고객 관리 키로 암호화된 데이터 키를 생성합니다.
+ 암호화된 데이터 키를 암호화할 수 있도록 암호화된 데이터 키의 암호를 해독하기 위한 [https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) 요청을 AWS KMS에 보냅니다.

언제든지 권한 부여에 대한 액세스 권한을 취소하거나 고객 관리형 키에 대한 Amazon Redshift 액세스 권한을 제거할 수 있습니다. 그렇게 할 경우 API는 고객이 관리하는 키로 암호화된 데이터에 더 이상 접근할 수 없게 되어 해당 데이터에 의존하는 작업에 영향을 미칩니다. 예를 들어 권한 부여를 취소한 후 쿼리 결과를 검색하거나 쿼리 상태를 추적하려고 하면 데이터 API가 `AccessDeniedException`을 반환합니다.

## 고객 관리형 키에 대한 키 정책
<a name="data-api-kms-policy"></a>

키 정책은 고객 관리형 키에 대한 액세스를 제어합니다. 모든 고객 관리형 키에는 키를 사용할 수 있는 사람과 키를 사용하는 방법을 결정하는 문장이 포함된 정확히 하나의 키 정책이 있어야 합니다. 고객 관리형 키를 만들 때 키 정책을 지정할 수 있습니다. 자세한 내용은 *AWS Key Management Service 개발자 안내서*의 [고객 관리형 키](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-mgn-key)를 참조하세요.

데이터 API에서 고객 관리형 키를 사용하려면 먼저 Amazon Redshift에 대한 액세스를 허용해야 합니다. 키 정책에서 다음 API 작업을 허용해야 합니다.
+ `kms:CreateGrant` – 고객 관리형 키에 권한 부여를 추가합니다. 권한 부여는 지정된 AWS KMS 키에 대한 액세스를 제어하여 Amazon Redshift에 필요한 권한 부여 작업에 대한 액세스를 허용합니다. 자세한 내용은 [AWS KMS에서 권한 부여 사용](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html#terms-grant-operations)을 참조하세요.

다음은 예제 키 정책입니다.

```
"Statement":[
   {
      "Sid":"Allow access to principals authorized to use Amazon Redshift",
      "Effect":"Allow",
      "Principal":{
         "AWS":"*"
      },
      "Action":[
         "kms:DescribeKey",
         "kms:CreateGrant"
      ],
      "Resource":"*",
      "Condition":{
         "StringEquals":{
            "kms:ViaService":"redshift.amazonaws.com",
            "kms:CallerAccount":"111122223333"
         }
      }
   },
   {
      "Sid":"AllowKeyAdministratorsAccess",
      "Effect":"Allow",
      "Principal":{
         "AWS":"arn:aws:iam::111122223333:role/ExampleAdminRole"
      },
      "Action":"kms:*",
      "Resource":"*"
   },
   {
      "Sid":"AllowKeyUseForExampleRole",
      "Effect":"Allow",
      "Principal":{
         "AWS":"arn:aws:iam::111122223333:role/ExampleUserRole"
      },
      "Action":[
         "kms:Encrypt",
         "kms:Decrypt",
         "kms:ReEncrypt*",
         "kms:GenerateDataKey*",
         "kms:DescribeKey"
      ],
      "Resource":"*"
   }
]
```

## 데이터 API 암호화 컨텍스트
<a name="data-api-kms-encryption"></a>

암호화 컨텍스트는 데이터에 대한 추가 컨텍스트 정보를 포함하는 키-값 페어의 선택적 집합입니다. AWS KMS는 암호화 컨텍스트를 인증된 암호화를 지원하기 위한 추가 인증 데이터로 사용합니다. 데이터 암호화 요청에 암호화 컨텍스트를 포함하는 경우, AWS KMS는 암호화된 데이터에 암호화 컨텍스트를 바인딩합니다. 이 데이터를 해독하려면 요청에 동일한 암호화 컨텍스트를 포함해야 합니다.

데이터 API는 프로비저닝된 클러스터의 모든 AWS KMS 암호화 작업에서 동일한 세 개의 암호화 컨텍스트 키-값 페어를 사용합니다.
+ `aws:redshift:arn` - 클러스터의 Amazon 리소스 이름(ARN)
+ `aws:redshift:createtime` - 클러스터 생성을 요청한 시점의 타임스탬프
+ `serviceName` – `RedshiftDataAPI`

```
"EncryptionContextSubset": {
    "aws:redshift:arn": "arn:aws:redshift:us-east-1:123456789012:cluster:redshift-cluster",
    "aws:redshift:createtime": "20250815T0000Z",
    "serviceName": "RedshiftDataAPI",
}
```

데이터 API는 서버리스 작업 그룹의 모든 AWS KMS 암호화 작업에 두 개의 암호화 컨텍스트 키-값 페어를 사용합니다.
+ `aws:redshift-serverless:arn` - 네임스페이스의 Amazon 리소스 이름(ARN)
+ `serviceName` – RedshiftDataAPI

```
"EncryptionContextSubset": {
    "aws:redshift-serverless:arn": "arn:aws:redshift-serverless:us-east-1:123456789012:namespace:12345678-1234-1234-1234-123456789012",
    "serviceName": "RedshiftDataAPI"
}
```

암호화에 대한 자세한 내용은 [AWS KMS의 암호화 세부 정보 소개](https://docs.aws.amazon.com/kms/latest/cryptographic-details/intro.html)를 참조하세요. Amazon Redshift 및 AWS KMS 통합에 대한 자세한 내용은 [Amazon Redshift가 AWS KMS를 사용하는 방법](https://docs.aws.amazon.com/kms/latest/developerguide/services-redshift.html)을 참조하세요.

# Amazon Sagemaker Unified Studio를 사용하여 Amazon Redshift 및 SageMaker Lakehouse의 데이터베이스 쿼리
<a name="sagemaker-unified-studio"></a>

Amazon SageMaker Unified Studio는 콘솔 외부 개발 환경을 제공하며 SageMaker Lakehouse, Amazon Redshift 및 Amazon Athena의 데이터에 대한 SQL 분석을 지원합니다. 관리자의 URL을 사용하여 Amazon SageMaker Unified Studio로 이동하고 SSO 또는 AWS 자격 증명을 사용하여 로그인합니다. 첫 번째 프로젝트를 설정하는 방법에 대한 자세한 내용은 *Amazon SageMaker Unified Studio 사용자 가이드*의 [시작하기](https://docs.aws.amazon.com/sagemaker-unified-studio/latest/userguide/getting-started.html)를 참조하세요.

Amazon SageMaker Unified Studio에서 [쿼리 편집기](https://docs.aws.amazon.com/sagemaker-unified-studio/latest/userguide/query-editor-navigate.html)로 Amazon Redshift 및 Amazon Athena를 실행하여 [SQL 분석](https://docs.aws.amazon.com/sagemaker-unified-studio/latest/userguide/sql-query.html)을 수행할 수 있습니다. 쿼리 편집기를 사용하여 쿼리를 작성 및 실행하고, 결과를 보고, 팀과 작업을 공유할 수 있습니다. AWS 계정(동일 계정 및 다른 AWS 계정)의 Redshift 데이터 웨어하우스에 대해 쿼리를 실행하고, 동일한 인터페이스를 사용하여 Redshift와 Athena에 대한 SQL 쿼리를 작성하고, Amazon Managed Workflows for Apache Airflow를 사용하여 SQL 쿼리를 예약할 수 있습니다. Amazon Q 생성형 SQL을 사용하여 자연어에서 SQL을 생성할 수도 있습니다.