

# Aurora PostgreSQL DB 클러스터에서 Amazon S3로 데이터 내보내기
<a name="postgresql-s3-export"></a>

Aurora PostgreSQL DB 클러스터에서 데이터를 쿼리하여 Amazon S3 버킷에 저장된 파일로 직접 내보낼 수 있습니다. 이 작업을 수행하려면 먼저 Aurora PostgreSQL `aws_s3` 확장을 설치해야 합니다. 이 확장은 쿼리 결과를 Amazon S3로 내보내는 데 사용하는 기능을 제공합니다. 다음에서는 확장 프로그램을 설치하는 방법과 Amazon S3로 데이터를 내보내는 방법을 확인할 수 있습니다.

프로비저닝된 인스턴스 또는 Aurora Serverless v2 DB 인스턴스에서 내보낼 수 있습니다. 이 단계는 Aurora Serverless v1에서 지원되지 않습니다.

**참고**  
Amazon S3로 계정 간 내보내기는 지원되지 않습니다.

현재 사용 가능한 모든 Aurora PostgreSQL 버전은 Amazon Simple Storage Service로 데이터 내보내기를 지원합니다. 자세한 버전 정보는 *Aurora PostgreSQL 릴리스 정보*에서 [Amazon Aurora PostgreSQL 업데이트](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html)를 참조하세요.

내보내기용으로 버킷을 설정하지 않은 경우 *Amazon Simple Storage Service 사용 설명서*의 다음 주제를 참조하세요.
+ [Amazon S3 설정](https://docs.aws.amazon.com/AmazonS3/latest/userguide/setting-up-s3.html)
+ [버킷 생성](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html)

기본적으로 Aurora PostgreSQL에서 Amazon S3로 내보낸 데이터는 AWS 관리형 키를 통한 서버 측 암호화를 사용합니다. 이미 생성한 고객 관리형 키를 사용할 수도 있습니다. 버킷 암호화를 사용하는 경우 Amazon S3 버킷은 AWS Key Management Service(AWS KMS) 키(SSE-KMS)로 암호화되어야 합니다. 현재 Amazon S3 관리형 키(SSE-S3)로 암호화된 버킷은 지원되지 않습니다.

**참고**  
AWS Management Console, AWS CLI 또는 Amazon RDS API를 사용하여 DB 및 DB 클러스터 스냅샷 데이터를 Amazon S3에 저장할 수 있습니다. 자세한 내용은 [Amazon S3로 DB 클러스터 스냅샷 데이터 내보내기](aurora-export-snapshot.md) 단원을 참조하세요.

**Topics**
+ [aws\$1s3 확장 설치](#USER_PostgreSQL.S3Export.InstallExtension)
+ [Amazon S3으로 데이터 내보내기 개요](#postgresql-s3-export-overview)
+ [내보낼 Amazon S3 파일 경로 지정](#postgresql-s3-export-file)
+ [Amazon S3 버킷에 대한 액세스 권한 설정](postgresql-s3-export-access-bucket.md)
+ [aws\$1s3.query\$1export\$1to\$1s3 함수를 사용하여 쿼리 데이터 내보내기](postgresql-s3-export-examples.md)
+ [함수 참조](postgresql-s3-export-functions.md)
+ [Amazon S3 액세스 문제 해결](postgresql-s3-export-troubleshoot.md)

## aws\$1s3 확장 설치
<a name="USER_PostgreSQL.S3Export.InstallExtension"></a>

Amazon Simple Storage Service를 Aurora PostgreSQL DB 클러스터 와 함께 사용하려면 먼저 `aws_s3` 확장을 설치해야 합니다. 이 확장은 Aurora PostgreSQL DB 클러스터의 라이터 인스턴스에서 Amazon S3 버킷으로 데이터를 내보내는 기능을 제공합니다. Amazon S3에서 데이터를 가져오기 위한 함수도 제공합니다. 자세한 내용은 [PostgreSQL DB 인스턴스용 Aurora PostgreSQL DB 클러스터](USER_PostgreSQL.S3Import.md) 단원을 참조하세요. `aws_s3` 확장은 필요할 때 자동으로 설치되는 `aws_commons` 확장의 일부 도우미 기능에 따라 다릅니다.

**`aws_s3` 확장을 설치하려면**

1. psql(또는 PGAdmin)을 사용하여 Aurora PostgreSQL DB 클러스터의 라이터 인스턴스에 `rds_superuser` 권한을 가진 사용자로 연결합니다. 설정 과정에서 기본 이름을 계속 사용했다면 `postgres`로 연결합니다.

   ```
   psql --host=111122223333.aws-region.rds.amazonaws.com --port=5432 --username=postgres --password
   ```

1. 다음 명령을 실행하여 확장을 생성합니다.

   ```
   postgres=> CREATE EXTENSION aws_s3 CASCADE;
   NOTICE: installing required extension "aws_commons"
   CREATE EXTENSION
   ```

1. 확장 프로그램이 설치되었는지 확인하려면 psql `\dx` 메타 명령을 사용하면 됩니다.

   ```
   postgres=> \dx
          List of installed extensions
       Name     | Version |   Schema   |                 Description
   -------------+---------+------------+---------------------------------------------
    aws_commons | 1.2     | public     | Common data types across AWS services
    aws_s3      | 1.1     | public     | AWS S3 extension for importing data from S3
    plpgsql     | 1.0     | pg_catalog | PL/pgSQL procedural language
   (3 rows)
   ```

이제 Amazon S3에서 데이터를 가져오고 Amazon S3로 데이터를 내보내는 기능을 사용할 수 있습니다.

### Aurora PostgreSQL 버전에서 Amazon S3로 내보내기를 지원하는지 확인
<a name="postgresql-s3-supported"></a>

`describe-db-engine-versions` 명령을 사용하여 Aurora PostgreSQL 버전이 Amazon S3로 내보내기를 지원하는지 확인할 수 있습니다. 다음 예제에서는 버전 10.14를 Amazon S3로 내보낼 수 있는지 확인합니다.

```
aws rds describe-db-engine-versions --region us-east-1 \
--engine aurora-postgresql --engine-version 10.14 | grep s3Export
```

출력에 `"s3Export"` 문자열이 포함된 경우 엔진은 Amazon S3 내보내기를 지원합니다. 그렇지 않으면 엔진이 이 내보내기를 지원하지 않습니다.

## Amazon S3으로 데이터 내보내기 개요
<a name="postgresql-s3-export-overview"></a>

Aurora PostgreSQL 데이터베이스에 저장된 데이터를 Amazon S3 버킷으로 내보내려면 다음 절차를 따르세요.

**Aurora PostgreSQL 데이터를 S3로 내보내려면**

1. 데이터를 내보내는 데 사용할 Amazon S3 파일 경로를 식별합니다. 이 프로세스에 대한 자세한 내용은 [내보낼 Amazon S3 파일 경로 지정](#postgresql-s3-export-file) 단원을 참조하십시오.

1. Amazon S3 버킷에 액세스할 수 있는 권한을 부여합니다.

   Amazon S3 파일로 데이터를 내보내려면 Aurora PostgreSQL DB 클러스터에 내보내기 시 스토리지에 사용할 Amazon S3 버킷에 액세스할 수 있는 권한을 부여합니다. 여기에는 다음 단계가 포함됩니다.

   1. 내보낼 Amazon S3 버킷에 대한 액세스를 제공하는 IAM 정책을 생성합니다.

   1. IAM 역할 생성.

   1. 생성한 정책을 생성한 역할에 연결하십시오.

   1. 이 IAM 역할을 DB 클러스터 에 추가합니다.

   이 프로세스에 대한 자세한 내용은 [Amazon S3 버킷에 대한 액세스 권한 설정](postgresql-s3-export-access-bucket.md) 단원을 참조하십시오.

1. 데이터를 가져올 데이터베이스 쿼리를 식별합니다. `aws_s3.query_export_to_s3` 함수를 호출하여 쿼리 데이터를 내보냅니다.

   앞의 준비 작업을 완료한 후 [aws\$1s3.query\$1export\$1to\$1s3](postgresql-s3-export-functions.md#aws_s3.export_query_to_s3) 함수를 사용하여 쿼리 결과를 Amazon S3으로 내보냅니다. 이 프로세스에 대한 자세한 내용은 [aws\$1s3.query\$1export\$1to\$1s3 함수를 사용하여 쿼리 데이터 내보내기](postgresql-s3-export-examples.md) 단원을 참조하세요.

## 내보낼 Amazon S3 파일 경로 지정
<a name="postgresql-s3-export-file"></a>

다음 정보를 지정하여 데이터를 내보낼 Amazon S3 위치를 식별합니다.
+ 버킷 이름 – *버킷*은 Amazon S3 객체 또는 파일을 위한 컨테이너입니다.

  Amazon S3을 이용한 데이터 저장에 대한 자세한 내용은 *Amazon Simple Storage Service 사용 설명서*의 [Creating a bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html) 및 [Working with objects](https://docs.aws.amazon.com/AmazonS3/latest/userguide/uploading-downloading-objects.html)를 참조하세요.
+ 파일 경로 – 파일 경로는 내보낸 데이터가 Amazon S3 버킷에서 저장되는 위치를 식별합니다. 파일 경로는 다음과 같이 구성됩니다.
  + 가상 폴더 경로를 식별하는 선택적 경로 접두사입니다.
  + 저장할 하나 이상의 파일을 식별하는 파일 접두사입니다. 내보내는 데이터가 클 경우 각각 최대 크기가 약 6GB인 여러 파일에 저장됩니다. 추가 파일 이름의 파일 접두사도 동일하지만 `_partXX`가 추가됩니다. `XX`는 2, 3 등을 나타냅니다.

  예를 들어 `exports` 폴더와 `query-1-export` 파일 접두사가 있는 파일 경로는 `/exports/query-1-export`입니다.
+ AWS 리전(선택 사항) – Amazon S3 버킷이 위치한 AWS 리전입니다. AWS 리전 값을 지정하지 않으면 Aurora는 DB 클러스터 내보내기와 동일한 AWS 리전의 Amazon S3에 파일을 저장합니다.
**참고**  
현재 AWS 리전은 내보내는 DB 클러스터의 리전과 동일해야 합니다.

  AWS 리전 이름 및 연결된 값의 목록은 [리전 및 가용 영역](Concepts.RegionsAndAvailabilityZones.md) 섹션을 참조하십시오.

내보내는 데이터를 저장할 위치에 대한 Amazon S3 파일 정보를 보관하려면 [aws\$1commons.create\$1s3\$1uri](postgresql-s3-export-functions.md#aws_commons.create_s3_uri) 함수를 사용하여 다음과 같이 `aws_commons._s3_uri_1` 복합 구조를 생성할 수 있습니다.

```
psql=> SELECT aws_commons.create_s3_uri(
   'amzn-s3-demo-bucket',
   'sample-filepath',
   'us-west-2'
) AS s3_uri_1 \gset
```

나중에 이 `s3_uri_1` 값을 [aws\$1s3.query\$1export\$1to\$1s3](postgresql-s3-export-functions.md#aws_s3.export_query_to_s3) 함수에 대한 호출의 파라미터로 제공합니다. 예제는 [aws\$1s3.query\$1export\$1to\$1s3 함수를 사용하여 쿼리 데이터 내보내기](postgresql-s3-export-examples.md)을 참조하세요.