RDS for PostgreSQL DB 인스턴스에서 Amazon S3로 데이터 내보내기 - Amazon Relational Database Service

RDS for PostgreSQL DB 인스턴스에서 Amazon S3로 데이터 내보내기

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

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

참고

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

현재 사용 가능한 모든 RDS PostgreSQL 버전은 Amazon Simple Storage Service로 데이터 내보내기를 지원합니다. 자세한 버전 정보는 Amazon RDS for PostgreSQL 릴리스 정보에서 Amazon RDS for PostgreSQL 업데이트를 참조하세요.

내보내기용으로 버킷을 설정하지 않은 경우 Amazon Simple Storage Service 사용 설명서의 다음 주제를 참조하세요.

Amazon S3에 대한 업로드는 기본값으로 서버 측 암호화를 사용합니다. 암호화를 사용하는 경우 Amazon S3 버킷은 AWS 관리형 키로 암호화되어야 합니다. 고객 관리형 키를 사용해서 암호화된 버킷으로 데이터를 내보낼 수 있습니다.

참고

AWS Management Console, AWS CLI 또는 Amazon RDS API를 사용하여 DB 스냅샷 데이터를 Amazon S3에 저장할 수 있습니다. 자세한 내용은 Amazon S3로 DB 스냅샷 데이터 내보내기 단원을 참조하세요.

aws_s3 확장 설치

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

aws_s3 확장을 설치하려면
  1. psql(또는 PGAdmin)을 사용하여 RDS for PostgreSQL DB 인스턴스rds_superuser 권한을 가진 사용자로 연결합니다. 설정 과정에서 기본 이름을 계속 사용했다면 postgres로 연결합니다.

    psql --host=111122223333.aws-region.rds.amazonaws.com --port=5432 --username=postgres --password
  2. 다음 명령을 실행하여 확장을 생성합니다.

    postgres=> CREATE EXTENSION aws_s3 CASCADE; NOTICE: installing required extension "aws_commons" CREATE EXTENSION
  3. 확장 프로그램이 설치되었는지 확인하려면 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로 데이터를 내보내는 기능을 사용할 수 있습니다.

RDS for PostgreSQL 버전에서 Amazon S3로 내보내기를 지원하는지 확인

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

aws rds describe-db-engine-versions --region us-east-1 --engine postgres --engine-version 10.14 | grep s3Export

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

Amazon S3으로 데이터 내보내기 개요

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

데이터를 S3로 내보내려면
  1. 데이터를 내보내는 데 사용할 Amazon S3 파일 경로를 식별합니다. 이 프로세스에 대한 자세한 내용은 내보낼 Amazon S3 파일 경로 지정 단원을 참조하십시오.

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

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

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

    2. IAM 역할 생성.

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

    4. 이 IAM 역할을 DB 인스턴스에 추가합니다.

    이 프로세스에 대한 자세한 내용은 Amazon S3 버킷에 대한 액세스 권한 설정 단원을 참조하십시오.

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

    앞의 준비 작업을 완료한 후 aws_s3.query_export_to_s3 함수를 사용하여 쿼리 결과를 Amazon S3으로 내보냅니다. 이 프로세스에 대한 자세한 내용은 aws_s3.query_export_to_s3 함수를 사용하여 쿼리 데이터 내보내기 단원을 참조하세요.

내보낼 Amazon S3 파일 경로 지정

다음 정보를 지정하여 데이터를 내보낼 Amazon S3 위치를 식별합니다.

  • 버킷 이름 – 버킷은 Amazon S3 객체 또는 파일을 위한 컨테이너입니다.

    Amazon S3을 이용한 데이터 저장에 대한 자세한 내용은 Amazon Simple Storage Service 사용 설명서버킷 생성객체 보기를 참조하세요.

  • 파일 경로 – 파일 경로는 내보낸 데이터가 Amazon S3 버킷에서 저장되는 위치를 식별합니다. 파일 경로는 다음과 같이 구성됩니다.

    • 가상 폴더 경로를 식별하는 선택적 경로 접두사입니다.

    • 저장할 하나 이상의 파일을 식별하는 파일 접두사입니다. 내보내는 데이터가 클 경우 각각 최대 크기가 약 6GB인 여러 파일에 저장됩니다. 추가 파일 이름의 파일 접두사도 동일하지만 _partXX가 추가됩니다. XX는 2, 3 등을 나타냅니다.

    예를 들어 exports 폴더와 query-1-export 파일 접두사가 있는 파일 경로는 /exports/query-1-export입니다.

  • AWS 리전(선택 사항) – Amazon S3 버킷이 위치한 AWS 리전입니다. AWS 리전 값을 지정하지 않으면 Amazon RDSDB 인스턴스 내보내기와 동일한 AWS 리전의 Amazon S3에 파일을 저장합니다.

    참고

    현재 AWS 리전은 내보내는 DB 인스턴스의 리전과 동일해야 합니다.

    AWS 리전 이름 및 연결된 값의 목록은 리전, 가용 영역 및 로컬 영역 섹션을 참조하십시오.

내보내는 데이터를 저장할 위치에 대한 Amazon S3 파일 정보를 보관하려면 aws_commons.create_s3_uri 함수를 사용하여 다음과 같이 aws_commons._s3_uri_1 복합 구조를 생성할 수 있습니다.

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

나중에 이 s3_uri_1 값을 aws_s3.query_export_to_s3 함수에 대한 호출의 파라미터로 제공합니다. 예제는 aws_s3.query_export_to_s3 함수를 사용하여 쿼리 데이터 내보내기을 참조하세요.

Amazon S3 버킷에 대한 액세스 권한 설정

데이터를 Amazon S3으로 내보내려면 PostgreSQL DB 인스턴스에 파일이 저장될 Amazon S3 버킷에 액세스할 수 있는 권한을 부여합니다.

이렇게 하려면 다음 절차를 따르십시오.

IAM 역할을 통해 PostㅍgreSQL DB 인스턴스에 액세스할 수 있는 권한을 Amazon S3에 부여하려면
  1. IAM 정책을 생성합니다.

    이 정책은 PostgreSQL DB 인스턴스가 Amazon S3에 액세스할 수 있도록 허용하는 권한을 버킷 및 객체에 부여합니다.

    이 정책을 생성하는 과정에서 다음 단계를 수행하십시오.

    1. 다음과 같은 필수 작업을 정책에 포함하여 PostgreSQL DB 인스턴스에서 Amazon S3 버킷으로 파일 전송을 허용합니다.

      • s3:PutObject

      • s3:AbortMultipartUpload

    2. Amazon S3 버킷과 버킷의 객체를 식별하는 Amazon 리소스 이름(ARN)을 포함합니다. Amazon S3에 액세스하기 위한 ARN 형식은 arn:aws:s3:::your-s3-bucket/*입니다.

    PostgreSQL용 Amazon RDS에 대한 IAM 정책 생성에 대한 자세한 내용은 IAM 데이터베이스 액세스를 위한 IAM 정책 생성 및 사용 단원을 참조하십시오. IAM 사용 설명서자습서: 첫 번째 고객 관리형 정책 생성 및 연결도 참조하십시오.

    다음 AWS CLI 명령은 이 옵션으로 rds-s3-export-policy라는 IAM 정책을 만듭니다. your-s3-bucket이라는 버킷에 대한 액세스 권한을 부여합니다.

    주의

    특정 버킷에 액세스하도록 구성된 엔드포인트 정책이 있는 프라이빗 VPC 내에 데이터베이스를 설정하는 것이 좋습니다. 자세한 내용은 Amazon VPC 사용 설명서의 Amazon S3용 엔드포인트 정책 사용을 참조하십시오.

    모든 리소스에 액세스할 수 있는 정책은 생성하지 않는 것이 좋습니다. 이러한 액세스 권한은 데이터 보안에 위협이 될 수 있습니다. S3:PutObject를 사용하여 모든 리소스에 액세스할 수 있는 권한을 "Resource":"*"에 부여하는 정책을 생성하면 내보내기 권한이 있는 사용자가 계정의 모든 버킷으로 데이터를 내보낼 수 있습니다. 또한 사용자는 AWS 리전 내의 공개적으로 쓰기 가능한 버킷으로 데이터를 내보낼 수 있습니다.

    정책을 만든 후에 정책의 Amazon 리소스 이름(ARN)을 기록하십시오. IAM 역할에 정책을 연결할 때 이후 단계에 ARN이 필요합니다.

    aws iam create-policy --policy-name rds-s3-export-policy --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Sid": "s3export", "Action": [ "s3:PutObject", "s3:AbortMultipartUpload" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::your-s3-bucket/*" ] } ] }'
  2. IAM 역할 생성.

    Amazon RDS이 이 IAM 역할을 수임하여 사용자 대신 Amazon S3 버킷에 액세스할 수 있도록 역할을 생성합니다. 자세한 내용은 IAM 사용 설명서IAM 사용자에게 권한을 위임하기 위한 역할 생성을 참조하세요.

    서비스 권한을 특정 리소스로 제한하는 리소스 기반 정책의 aws:SourceArnaws:SourceAccount 전역 조건 컨텍스트 키를 사용하는 것이 좋습니다. 이는 혼동된 대리자 문제를 방지하는 가장 효과적인 방법입니다.

    두 전역 조건 컨텍스트 키와 계정 ID를 포함한 aws:SourceArn 값을 모두 사용하는 경우, aws:SourceAccount 값 및 aws:SourceArn 값의 계정은 동일한 정책 문에서 사용될 경우 반드시 같은 계정 ID를 사용해야 합니다.

    • 단일 리소스에 대한 교차 서비스 액세스를 원하는 경우 aws:SourceArn을 사용하세요.

    • 해당 계정의 모든 리소스가 교차 서비스 사용과 연결되도록 허용하려는 경우 aws:SourceAccount를 사용하세요.

    정책에서는 리소스의 전체 ARN이 포함된 aws:SourceArn 전역 조건 컨텍스트 키를 사용해야 합니다. 다음 예제에서는 AWS CLI 명령을 사용하여 rds-s3-export-role이라는 역할을 생성하는 방법을 보여줍니다.

    Linux, macOS 또는 Unix의 경우:

    aws iam create-role \ --role-name rds-s3-export-role \ --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "111122223333", "aws:SourceArn": "arn:aws:rds:us-east-1:111122223333:db:dbname" } } } ] }'

    Windows의 경우:

    aws iam create-role ^ --role-name rds-s3-export-role ^ --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "111122223333", "aws:SourceArn": "arn:aws:rds:us-east-1:111122223333:db:dbname" } } } ] }'
  3. 생성한 IAM 역할에 생성한 IAM 정책을 연결합니다.

    다음 AWS CLI 명령은 앞서 생성한 정책을 rds-s3-export-role.라는 역할에 연결합니다. your-policy-arn을 이전 단계에서 기록한 정책 ARN으로 바꿉니다.

    aws iam attach-role-policy --policy-arn your-policy-arn --role-name rds-s3-export-role
  4. IAM 역할을 DB 인스턴스에 추가합니다. 이렇게 하려면 다음에 설명한 대로 AWS Management Console 또는 AWS CLI를 사용합니다.

콘솔을 사용하여 PostgreSQL DB 인스턴스에 대해 IAM 역할을 추가하려면
  1. AWS Management Console에 로그인한 후 https://console.aws.amazon.com/rds/에서 Amazon RDS 콘솔을 엽니다.

  2. 세부 정보를 표시하고자 하는 PostgreSQL DB 인스턴스 이름을 선택합니다.

  3. Connectivity & security(연결성 및 보안) 탭에 있는 Manage IAM roles(IAM 역할 관리) 섹션의 이 인스턴스에 IAM 역할 추가에서 추가할 역할을 선택합니다.

  4. 기능에서 s3Export를 선택합니다.

  5. [Add role]을 선택합니다.

CLI를 사용하여 PostgreSQL DB 인스턴스에 대해 IAM 역할을 추가하려면
  • 다음 명령을 사용해 my-db-instance라는 PostgreSQL DB 인스턴스에 역할을 추가합니다. your-role-arn을 이전 단계에서 기록한 정책 ARN으로 교체합니다. s3Export 옵션의 값에 대해 --feature-name를 사용합니다.

    Linux, macOS 또는 Unix의 경우는 다음과 같습니다.

    aws rds add-role-to-db-instance \ --db-instance-identifier my-db-instance \ --feature-name s3Export \ --role-arn your-role-arn \ --region your-region

    Windows의 경우:

    aws rds add-role-to-db-instance ^ --db-instance-identifier my-db-instance ^ --feature-name s3Export ^ --role-arn your-role-arn ^ --region your-region

aws_s3.query_export_to_s3 함수를 사용하여 쿼리 데이터 내보내기

aws_s3.query_export_to_s3 함수를 호출하여 PostgreSQL 데이터를 Amazon S3으로 내보냅니다.

필수 조건

aws_s3.query_export_to_s3 함수를 사용하기 전에 다음 사전 조건을 충족해야 합니다.

다음 예제에서는 sample_table이라는 데이터베이스 테이블을 사용합니다. 이 예제에서는 sample-bucket이라는 버킷으로 데이터를 내보냅니다. 예제 테이블과 데이터는 psql에서 다음 SQL 문을 사용하여 생성됩니다.

psql=> CREATE TABLE sample_table (bid bigint PRIMARY KEY, name varchar(80)); psql=> INSERT INTO sample_table (bid,name) VALUES (1, 'Monday'), (2,'Tuesday'), (3, 'Wednesday');

aws_s3.query_export_to_s3 호출

다음은 aws_s3.query_export_to_s3 함수를 호출하는 기본 방법을 보여줍니다.

이 예제에서는 s3_uri_1 변수를 사용하여 Amazon S3 파일을 식별하는 정보가 포함된 구조를 식별합니다. aws_commons.create_s3_uri 함수를 사용하여 구조를 생성합니다.

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

파라미터가 다음 두 aws_s3.query_export_to_s3 함수 호출에 따라 달라도 이러한 예제에 대한 결과는 동일합니다. sample_table 테이블의 모든 행은 sample-bucket이라는 버킷으로 내보내집니다.

psql=> SELECT * FROM aws_s3.query_export_to_s3('SELECT * FROM sample_table', :'s3_uri_1'); psql=> SELECT * FROM aws_s3.query_export_to_s3('SELECT * FROM sample_table', :'s3_uri_1', options :='format text');

파라미터는 다음과 같이 설명됩니다.

  • 'SELECT * FROM sample_table' – 첫 번째 파라미터는 SQL 쿼리를 포함하는 필수 텍스트 문자열입니다. PostgreSQL 엔진은 이 쿼리를 실행합니다. 쿼리 결과는 다른 파라미터에서 식별된 S3 버킷에 복사됩니다.

  • :'s3_uri_1' – 이 파라미터는 Amazon S3 파일을 식별하는 구조입니다. 이 예제에서는 변수를 사용하여 이전에 생성된 구조를 식별합니다. 대신 다음과 같이 aws_commons.create_s3_uri 함수 호출 내에 aws_s3.query_export_to_s3 함수 호출을 인라인을 포함시켜 구조를 생성할 수 있습니다.

    SELECT * from aws_s3.query_export_to_s3('select * from sample_table', aws_commons.create_s3_uri('sample-bucket', 'sample-filepath', 'us-west-2') );
  • options :='format text'options 파라미터는 PostgreSQL COPY 인수를 포함하는 선택적 텍스트 문자열입니다. 복사 프로세스에서는 PostgreSQL COPY 명령의 인수 및 형식을 사용합니다.

지정된 파일이 Amazon S3 버킷에 없으면 생성됩니다. 파일이 이미 있는 경우 파일을 덮어씁니다. Amazon S3에서 내보낸 데이터에 액세스하는 구문은 다음과 같습니다.

s3-region://bucket-name[/path-prefix]/file-prefix

내보내는 데이터가 클 경우 각각 최대 크기가 약 6GB인 여러 파일에 저장됩니다. 추가 파일 이름의 파일 접두사도 동일하지만 _partXX가 추가됩니다. XX는 2, 3 등을 나타냅니다. 예를 들어 데이터 파일을 저장하는 경로를 다음과 같이 지정한다고 가정합니다.

s3-us-west-2://my-bucket/my-prefix

내보내기 시 세 개의 데이터 파일을 만들어야 하는 경우 Amazon S3 버킷에 다음 데이터 파일이 포함됩니다.

s3-us-west-2://my-bucket/my-prefix s3-us-west-2://my-bucket/my-prefix_part2 s3-us-west-2://my-bucket/my-prefix_part3

이 함수에 대한 전체 참조 및 이 함수를 호출하는 추가 방법은 aws_s3.query_export_to_s3 단원을 참조하세요. Amazon S3에서 파일에 액세스하는 방법에 대한 자세한 내용은 Amazon Simple Storage Service 사용 설명서객체 보기를 참조하세요.

사용자 지정 구분 기호를 사용하는 CSV 파일로 내보내기

다음 예제에서는 aws_s3.query_export_to_s3 함수를 호출하여 사용자 지정 구분 기호를 사용하는 파일로 데이터를 내보내는 방법을 보여줍니다. 이 예제에서는 PostgreSQL COPY 명령의 인수를 사용하여 쉼표로 구분된 값(CSV) 형식과 콜론(:) 구분 기호를 지정합니다.

SELECT * from aws_s3.query_export_to_s3('select * from basic_test', :'s3_uri_1', options :='format csv, delimiter $$:$$');

인코딩을 사용하여 이진 파일로 내보내기

다음 예제에서는 aws_s3.query_export_to_s3 함수를 호출하여 Windows-1253 인코딩이 있는 이진 파일로 데이터를 내보내는 방법을 보여줍니다.

SELECT * from aws_s3.query_export_to_s3('select * from basic_test', :'s3_uri_1', options :='format binary, encoding WIN1253');

Amazon S3 액세스 문제 해결

데이터를 Amazon S3로 내보내려고 할 때 연결 문제가 발생하면 먼저 DB 인스턴스에 연결된 VPC 보안 그룹의 아웃바운드 액세스 규칙이 네트워크 연결을 허용하는지 확인합니다. 특히 보안 그룹에는 DB 인스턴스가 TCP 트래픽을 포트 443 및 IPv4 주소(0.0.0.0/0)로 보낼 수 있도록 허용하는 규칙이 있어야 합니다. 자세한 내용은 보안 그룹을 생성하여 VPC 내부의 DB 인스턴스에 대한 액세스를 제공을 참조하세요.

권장 사항은 다음을 참조하세요.

함수 참조

aws_s3.query_export_to_s3

PostgreSQL 쿼리 결과를 Amazon S3 버킷으로 내보냅니다. aws_s3 확장은 aws_s3.query_export_to_s3 함수를 제공합니다.

두 가지 필수 파라미터는 querys3_info입니다. 이러한 파라미터는 내보낼 쿼리를 정의하고 내보낼 Amazon S3 버킷을 식별합니다. 다양한 내보내기 파라미터를 정의하기 위해 options라는 선택적 파라미터가 제공됩니다. aws_s3.query_export_to_s3 함수 사용 예는 aws_s3.query_export_to_s3 함수를 사용하여 쿼리 데이터 내보내기 단원을 참조하십시오.

구문

aws_s3.query_export_to_s3( query text, s3_info aws_commons._s3_uri_1, options text )
입력 파라미터
query

PostgreSQL 엔진이 실행하는 SQL 쿼리를 포함하는 필수 텍스트 문자열입니다. 이 쿼리의 결과는 s3_info 파라미터에서 식별된 S3 버킷에 복사됩니다.

s3_info

S3 객체에 대한 다음 정보를 포함하는 aws_commons._s3_uri_1 복합 키입니다.

  • bucket – 파일을 포함할 Amazon S3 버킷의 이름입니다.

  • file_path – Amazon S3 파일 이름 및 경로입니다.

  • region - 버킷이 있는 AWS 리전입니다. AWS 리전 이름 및 연결된 값의 목록은 리전, 가용 영역 및 로컬 영역 섹션을 참조하십시오.

    현재, 이 값은 내보내는 DB 인스턴스의 AWS 리전과 동일해야 합니다. 기본값은 내보내는 DB 인스턴스의 AWS 리전입니다.

aws_commons._s3_uri_1 복합 구조를 생성하려면 aws_commons.create_s3_uri 함수를 참조하십시오.

options

PostgreSQL COPY 명령에 대한 인수를 포함하는 선택적 텍스트 문자열입니다. 이러한 인수는 내보낼 때 데이터를 복사하는 방법을 지정합니다. 자세한 내용은 PostgreSQL COPY 설명서를 참조하십시오.

대체 입력 파라미터

s3_info 파라미터 대신에 확장 파라미터 세트를 사용하면 테스트에 도움이 됩니다. 다음은 aws_s3.query_export_to_s3 함수에 대한 추가 구문 변형입니다.

s3_info 파라미터를 사용해 Amazon S3 파일을 식별하는 대신 bucket, file_pathregion 파라미터의 조합을 사용하십시오.

aws_s3.query_export_to_s3( query text, bucket text, file_path text, region text, options text )
query

PostgreSQL 엔진이 실행하는 SQL 쿼리를 포함하는 필수 텍스트 문자열입니다. 이 쿼리의 결과는 s3_info 파라미터에서 식별된 S3 버킷에 복사됩니다.

bucket

파일이 들어 있는 Amazon S3 버킷의 이름이 포함된 필수 텍스트 문자열입니다.

file_path

파일 경로를 포함한 Amazon S3 파일 이름이 포함된 필수 텍스트 문자열입니다.

region

버킷이 있는 AWS 리전을 포함하는 선택적 텍스트 문자열입니다. AWS 리전 이름 및 연결된 값의 목록은 리전, 가용 영역 및 로컬 영역 섹션을 참조하십시오.

현재, 이 값은 내보내는 DB 인스턴스의 AWS 리전과 동일해야 합니다. 기본값은 내보내는 DB 인스턴스의 AWS 리전입니다.

options

PostgreSQL COPY 명령에 대한 인수를 포함하는 선택적 텍스트 문자열입니다. 이러한 인수는 내보낼 때 데이터를 복사하는 방법을 지정합니다. 자세한 내용은 PostgreSQL COPY 설명서를 참조하십시오.

출력 파라미터

aws_s3.query_export_to_s3( OUT rows_uploaded bigint, OUT files_uploaded bigint, OUT bytes_uploaded bigint )
rows_uploaded

지정된 쿼리에 대해 Amazon S3에 성공적으로 업로드된 테이블 행 수입니다.

files_uploaded

Amazon S3에 업로드된 파일 수입니다. 파일은 약 6GB 크기로 생성됩니다. 생성된 각 추가 파일 이름에 _partXX가 추가됩니다. XX는 2, 3 등을 나타냅니다.

bytes_uploaded

Amazon S3에 업로드된 총 바이트 수입니다.

예시

psql=> SELECT * from aws_s3.query_export_to_s3('select * from sample_table', 'sample-bucket', 'sample-filepath'); psql=> SELECT * from aws_s3.query_export_to_s3('select * from sample_table', 'sample-bucket', 'sample-filepath','us-west-2'); psql=> SELECT * from aws_s3.query_export_to_s3('select * from sample_table', 'sample-bucket', 'sample-filepath','us-west-2','format text');

aws_commons.create_s3_uri

Amazon S3 파일 정보를 저장할 aws_commons._s3_uri_1 구조를 생성합니다. aws_commons.create_s3_uri 함수의 s3_info 파라미터에서 aws_s3.query_export_to_s3 함수의 결과를 사용합니다. aws_commons.create_s3_uri 함수 사용 예는 내보낼 Amazon S3 파일 경로 지정 단원을 참조하십시오.

구문

aws_commons.create_s3_uri( bucket text, file_path text, region text )
입력 파라미터
bucket

파일의 Amazon S3 버킷 이름이 포함된 필수 텍스트 문자열입니다.

file_path

파일 경로를 포함한 Amazon S3 파일 이름이 포함된 필수 텍스트 문자열입니다.

region

파일이 위치한 AWS 리전이 포함된 필수 텍스트 문자열입니다. AWS 리전 이름 및 연결된 값의 목록은 리전, 가용 영역 및 로컬 영역 섹션을 참조하십시오.