Amazon Aurora
Aurora 사용 설명서

데이터를 PostgreSQL과 호환되는 Amazon Aurora로 마이그레이션

기존 데이터베이스의 데이터를 PostgreSQL과 호환되는 Amazon Aurora DB 클러스터로 마이그레이션하기 위한 몇 가지 옵션이 있습니다. 마이그레이션할 데이터베이스와 데이터 크기에 따라서도 마이그레이션 옵션이 달라집니다. 마이그레이션 옵션은 다음과 같습니다.

RDS PostgreSQL DB 인스턴스에서 마이그레이션

Amazon RDS PostgreSQL DB 스냅샷의 데이터를 Aurora PostgreSQL DB 클러스터로 직접 마이그레이션할 수 있습니다. 자세한 내용은 RDS PostgreSQL DB 스냅샷을 Aurora PostgreSQL DB 클러스터로 마이그레이션 단원을 참조하십시오.

또한 PostgreSQL DB 인스턴스의 Aurora PostgreSQL 읽기 전용 복제본을 생성하여 RDS PostgreSQL DB 인스턴스에서 마이그레이션할 수도 있습니다. PostgreSQL DB 인스턴스와 Aurora PostgreSQL 읽기 복제본 사이의 복제 지연 시간이 0이 되면 복제를 멈출 수 있습니다. 이때부터 읽기 및 쓰기 작업에서 Aurora 읽기 복제본을 독립 실행형 Aurora PostgreSQL DB 클러스터로 사용할 수 있습니다. 자세한 내용은 Aurora 읽기 전용 복제본을 사용하여 RDS PostgreSQL DB 인스턴스의 데이터를 Aurora PostgreSQL DB 클러스터로 마이그레이션 단원을 참조하십시오.

PostgreSQL과 호환되지 않는 데이터베이스에서 마이그레이션

AWS Database Migration Service(AWS DMS)를 사용하여 PostgreSQL과 호환되지 않는 데이터베이스의 데이터를 마이그레이션할 수 있습니다. AWS DMS에 대한 자세한 내용은 AWS Database Migration Service란 무엇입니까?를 참조하십시오.

Amazon S3 데이터 가져오기

Amazon S3 데이터는 RDS PostgreSQL DB 인스턴스의 Aurora PostgreSQL DB 클러스터에 속한 테이블로 가져와서 마이그레이션할 수 있습니다. 자세한 내용은 PostgreSQL DB 인스턴스용 Aurora PostgreSQL DB 클러스터 단원을 참조하십시오.

Aurora를 사용할 수 있는 AWS 리전 목록은 AWS General Reference에서 Amazon Aurora단원을 참조하십시오.

RDS PostgreSQL DB 스냅샷을 Aurora PostgreSQL DB 클러스터로 마이그레이션

Aurora PostgreSQL DB 클러스터를 생성하여 RDS PostgreSQL DB 인스턴스의 DB 스냅샷을 마이그레이션할 수 있습니다. 새롭게 생성된 Aurora PostgreSQL DB 클러스터는 원본 RDS PostgreSQL DB 인스턴스의 데이터로 채워집니다. 이때 DB 스냅샷은 PostgreSQL 9.6.1 또는 9.6.3 기반 RDS DB 인스턴스의 스냅샷이어야 합니다. DB 스냅샷 생성에 대한 자세한 내용은 DB 스냅샷 생성 단원을 참조하십시오.

경우에 따라 DB 스냅샷이 데이터를 저장할 AWS 리전에 속하지 않을 수도 있습니다. 이때는 Amazon RDS 콘솔을 사용해 DB 스냅샷을 해당 AWS 리전으로 복사하십시오. DB 스냅샷 복사에 대한 자세한 내용은 DB 스냅샷 복사 단원을 참조하십시오.

콘솔을 사용하여 DB 스냅샷을 마이그레이션할 경우, 콘솔에서 DB 클러스터와 기본 인스턴스 모두를 생성하는 데 필요한 작업이 따릅니다.

AWS Key Management Service(AWS KMS) 암호화 키를 사용하여 새 Aurora PostgreSQL DB 클러스터가 유휴 상태에서 암호화되도록 선택할 수도 있습니다. 이 옵션은 암호화되지 않은 DB 스냅샷에만 가능합니다.

RDS 콘솔을 사용해 PostgreSQL DB 스냅샷을 마이그레이션하려면

  1. AWS Management 콘솔에 로그인한 다음 https://console.aws.amazon.com/rds/에서 Amazon RDS 콘솔을 엽니다.

  2. [Snapshots]를 선택합니다.

  3. 스냅샷 페이지에서 Aurora PostgreSQL DB 클러스터로 마이그레이션하려는 스냅샷을 선택합니다.

  4. [Migrate Database]를 선택합니다.

  5. [Migrate Database] 페이지에서 다음과 같이 값을 설정합니다.

    • DB 인스턴스 클래스: 데이터베이스에 필요한 스토리지 및 용량이 있는 DB 인스턴스 클래스를 선택합니다(예: db.r3.large). Aurora 클러스터 볼륨은 데이터베이스의 데이터 양이 증가함에 따라 최대 크기인 64 tebibytes (TiB)까지 자동으로 증가합니다. 따라서 현재 스토리지 요구 사항에 맞는 DB 인스턴스 클래스를 선택해야 합니다. 자세한 내용은 Aurora 스토리지 개요 단원을 참조하십시오.

    • DB 인스턴스 식별자: 선택한 AWS 리전의 계정에 대해 고유한 DB 클러스터의 이름을 입력합니다. 이 식별자는 DB 클러스터에 속한 인스턴스의 엔드포인트 주소로 사용됩니다. 선택한 AWS 리전 및 DB 엔진 포함(예: aurora-cluster1) 등의 몇 가지 지능적 요소를 이름에 추가할 수 있습니다.

      DB 인스턴스 식별자는 다음과 같은 제약 조건이 있습니다.

      • 1–63자의 영숫자 또는 하이픈으로 구성되어야 합니다.

      • 첫 번째 문자는 글자이어야 합니다.

      • 하이픈으로 끝나거나 하이픈이 2개 연속으로 이어져서는 안 됩니다.

      • AWS 리전별로 AWS 계정 하나당 모든 DB 인스턴스는 고유해야 합니다.

    • VPC: 기존 VPC가 있을 경우 해당 VPC 식별자(예: vpc-a464d1c1)를 선택하여 이 VPC를 Aurora PostgreSQL DB 클러스터에 사용할 수 있습니다. 기존 VPC 사용 방법에 대한 자세한 내용은 Amazon Aurora에 사용할 VPC의 생성 방법 단원을 참조하십시오.

      기존 VPC가 없다면 [Create a new VPC]를 선택하여 Amazon RDS에서 VPC를 새로 생성하도록 할 수 있습니다.

    • 서브넷 그룹: 기존 서브넷 그룹이 있으면 해당 서브넷 그룹 식별자(예: gs-subnet-group1)를 선택하여 Aurora PostgreSQL DB 클러스터에 기존 서브넷 그룹을 사용할 수 있습니다.

      기존 서브넷 그룹이 없다면 [Create a new subnet group]을 선택하여 Amazon RDS에서 서브넷 그룹을 새로 생성하도록 할 수 있습니다.

    • 퍼블릭 액세스 가능: VPC에 있는 리소스만 DB 클러스터의 인스턴스에 액세스할 수 있도록 하려면 아니요를 선택합니다. 퍼블릭 네트워크에 있는 리소스가 DB 클러스터의 인스턴스에 액세스할 수 있도록 하려면 를 선택합니다. 기본값은 [Yes]입니다.

      참고

      퍼블릭 서브넷에서는 프로덕션 DB 클러스터가 필요 없을 수도 있습니다. 애플리케이션 서버만 DB 클러스터에 액세스하기 때문입니다. DB 클러스터가 퍼블릭 서브넷에 필요 없는 경우에는 [Publicly Accessible]을 [No]로 설정합니다.

    • 가용 영역: Aurora PostgreSQL DB 클러스터의 기본 인스턴스를 호스팅할 가용 영역을 선택합니다. Amazon RDS가 가용 영역을 선택하도록 하려면 기본 설정 없음을 선택합니다.

    • 데이터베이스 포트: Aurora PostgreSQL DB 클러스터의 인스턴스에 연결할 때 사용할 기본 포트를 입력합니다. 기본값은 5432입니다.

      참고

      기업 방화벽 뒤에 있어서 PostgreSQL 기본 포트인 5432 같은 기본 포트에 액세스하지 못할 수도 있습니다. 이런 경우에는 기업 방화벽이 허용하는 포트 값을 입력합니다. 나중에 Aurora PostgreSQL DB 클러스터에 연결할 때도 필요하므로 이 포트 값을 기억해야 합니다.

    • 암호화 활성: 새 Aurora PostgreSQL DB 클러스터가 "유휴 상태에서" 암호화하게 하려면 를 선택합니다. 를 선택하면 AWS KMS 암호화 키를 마스터 키 값으로 선택해야 합니다.

    • 마이너 버전 자동 업그레이드: PostgreSQL DB 엔진의 마이너 버전 업그레이드가 있을 때 Aurora PostgreSQL DB 클러스터가 업그레이드를 자동으로 수신하도록 하려면 Enable auto minor version upgrade(마이너 버전 자동 업그레이드 활성화)를 선택합니다.

      마이너 버전 자동 업그레이드 옵션은 Aurora PostgreSQL DB 클러스터에 대해 PostgreSQL 엔진 마이너 버전으로의 업그레이드에만 적용됩니다. 시스템 안정성 유지를 위한 정기 패치에는 적용되지 않습니다.

  6. [Migrate]를 선택하여 DB 스냅샷을 마이그레이션합니다.

  7. [Instances]를 선택한 다음 화살표 아이콘을 선택하여 DB 클러스터 세부 정보를 표시하고 마이그레이션 진행 상황을 모니터링합니다. 세부 정보 페이지를 보면 DB 클러스터의 기본 인스턴스에 연결하는 데 사용할 클러스터 엔드포인트가 표시됩니다. Aurora PostgreSQL DB 클러스터 연결에 대한 자세한 내용은 Amazon Aurora DB 클러스터 연결 단원을 참조하십시오.

Aurora 읽기 전용 복제본을 사용하여 RDS PostgreSQL DB 인스턴스의 데이터를 Aurora PostgreSQL DB 클러스터로 마이그레이션

Aurora 읽기 전용 복제본을 사용하여 PostgreSQL DB 인스턴스에서 Aurora PostgreSQL DB 클러스터로 마이그레이션할 수 있습니다. RDS PostgreSQL DB 인스턴스에서 Aurora PostgreSQL DB 클러스터로 마이그레이션해야 할 때는 이러한 방식을 사용하는 것이 좋습니다.

이때 Amazon RDS는 PostgreSQL DB 엔진의 스트리밍 복제 기능을 사용해 PostgreSQL DB 인스턴스에 따라 특정 유형의 DB 클러스터를 생성합니다. 이러한 유형의 DB 클러스터를 Aurora 읽기 전용 복제본이라고 부릅니다. 원본 PostgreSQL DB 인스턴스에 적용된 업데이트는 Aurora 읽기 전용 복제본에 비동기 방식으로 복제됩니다.

Aurora 읽기 전용 복제본을 사용한 데이터 마이그레이션 개요

RDS PostgreSQL DB 인스턴스에서 Aurora PostgreSQL DB 클러스터로 마이그레이션하려면 원본 PostgreSQL DB 인스턴스의 Aurora 읽기 전용 복제본을 생성하는 것이 좋습니다. PostgreSQL DB 인스턴스와 Aurora PostgreSQL 읽기 복제본 사이의 복제 지연 시간이 0이 되면 복제를 멈출 수 있습니다. 이때 Aurora 읽기 복제본을 독립 실행형 Aurora PostgreSQL DB 클러스터로 승격시킬 수 있습니다. 이렇게 승격된 독립 실행형 DB 클러스터는 쓰기 부하를 허용합니다.

마이그레이션에는 상당한 시간이 드는데, 데이터 테비바이트(TiB)당 몇 시간 정도가 소요됩니다. 마이그레이션이 진행 중인 동안 Amazon RDS PostgreSQL 인스턴스는 Write Ahead Log(WAL) 세그먼트를 누적합니다. Amazon RDS 인스턴스에 이러한 세그먼트를 위한 충분한 스토리지 용량이 있는지 확인해야 합니다.

PostgreSQL DB 인스턴스의 Aurora 읽기 전용 복제본을 생성하면 Amazon RDS는 원본 PostgreSQL DB 인스턴스의 DB 스냅샷을 만듭니다. 이 스냅샷은 Amazon RDS 전용이며 비용이 따로 발생하지 않습니다. 그런 다음 Amazon RDS가 데이터를 DB 스냅샷에서 Aurora 읽기 전용 복제본으로 마이그레이션합니다. DB 스냅샷 데이터가 새로운 Aurora PostgreSQL DB 클러스터로 마이그레이션된 후 RDS는 PostgreSQL DB 인스턴스와 Aurora PostgreSQL DB 클러스터 간 복제를 시작합니다.

PostgreSQL DB 인스턴스 하나에 Aurora 읽기 전용 복제본 하나만 둘 수 있습니다. Amazon RDS PostgreSQL 인스턴스의 Aurora 읽기 전용 복제본을 생성하려고 하는데 이미 읽기 전용 복제본이 있는 경우 요청이 거부됩니다.

참고

Aurora PostgreSQL과 복제 마스터인 RDS PostgreSQL DB 인스턴스의 PostgreSQL 엔진 버전 간 기능 차이로 인해 복제 문제가 발생할 수 있습니다. 해당하는 Aurora PostgreSQL 버전과 호환되는 Amazon RDS PostgreSQL 인스턴스에서만 복제할 수 있습니다. 예를 들어 지원되는 Aurora PostgreSQL 버전이 9.6.3인 경우 Amazon RDS PostgreSQL DB 인스턴스는 버전 9.6.1 이상을 실행해야 합니다. 오류가 발생하면 Amazon RDS 커뮤니티 포럼 또는 AWS Support에서 지원을 받을 수 있습니다.

PostgreSQL 읽기 전용 복제본에 대한 자세한 내용은 Amazon RDS 사용 설명서에서 읽기 전용 복제본 작업 단원을 참조하십시오.

Aurora 읽기 전용 복제본을 사용한 데이터 마이그레이션 준비

데이터를 RDS PostgreSQL 인스턴스에서 Aurora PostgreSQL 클러스터로 마이그레이션하려면 먼저 인스턴스의 스토리지 용량이 충분한지 확인해야 합니다. 스토리지 용량은 마이그레이션 과정에서 누적되는 Write Ahead Log(WAL) 세그먼트를 위한 것입니다. 이를 확인하기 위한 몇 가지 지표와 설명은 다음과 같습니다.

지표 설명

FreeStorageSpace

사용 가능한 스토리지 공간.

단위: 바이트

OldestReplicationSlotLag

가장 지연된 복제본에 있는 WAL 데이터의 지연 크기.

단위: 메가바이트

RDSToAuroraPostgreSQLReplicaLag

Aurora PostgreSQL DB 클러스터가 원본 RDS DB 인스턴스보다 늦어지는 시간(초).

TransactionLogsDiskUsage

트랜잭션 로그에 사용된 디스크 공간.

단위: 메가바이트

RDS 인스턴스 모니터링에 대한 자세한 내용은 Amazon RDS 사용 설명서에서 모니터링 단원을 참조하십시오.

Aurora 읽기 전용 복제본 생성

PostgreSQL DB 인스턴스의 Aurora 읽기 전용 복제본은 콘솔 또는 AWS CLI를 사용해 생성할 수 있습니다.

콘솔

원본 PostgreSQL DB 인스턴스에서 Aurora 읽기 전용 복제본을 생성하려면

  1. AWS Management 콘솔에 로그인한 다음 https://console.aws.amazon.com/rds/에서 Amazon RDS 콘솔을 엽니다.

  2. 탐색 창에서 데이터베이스를 선택합니다.

  3. Aurora 읽기 전용 복제본의 원본으로 사용할 PostgreSQL DB 인스턴스를 선택한 후 작업에서 Aurora 읽기 전용 복제본 생성을 선택합니다.

    
                                    Aurora 읽기 전용 복제본 생성
  4. 다음 표의 설명대로 Aurora 읽기 전용 복제본에 사용하려는 DB 클러스터 사양을 선택합니다.

    옵션 설명

    DB 인스턴스 클래스

    DB 클러스터의 기본 인스턴스에 대한 처리 및 메모리 요건을 정의한 DB 인스턴스 클래스를 선택합니다. DB 인스턴스 클래스 옵션에 대한 자세한 정보는 DB 인스턴스 클래스 선택 단원을 참조하십시오.

    다중 AZ 배포

    대상 AWS 리전의 다른 가용 영역에 새 DB 클러스터의 라이터 인스턴스를 생성하려면 다른 영역에 복제본 생성을 선택합니다. 다중 가용 영역에 대한 자세한 내용은 리전 및 가용 영역 선택 단원을 참조하십시오.

    DB 인스턴스 식별자

    Aurora 읽기 전용 복제본 DB 클러스터의 기본 인스턴스 이름을 입력합니다. 이 식별자는 새 DB 클러스터의 기본 인스턴스에 대한 엔드포인트 주소로 사용됩니다.

    DB 인스턴스 식별자는 다음과 같은 제약 조건이 있습니다.

    • 1–63자의 영숫자 또는 하이픈으로 구성되어야 합니다.

    • 첫 번째 문자는 글자이어야 합니다.

    • 하이픈으로 끝나거나 하이픈이 2개 연속으로 이어져서는 안 됩니다.

    • AWS 리전별로 각 AWS 계정의 모든 DB 인스턴스에 대해 고유해야 합니다.

    Aurora 읽기 전용 복제본 DB 클러스터는 원본 DB 인스턴스의 스냅샷에서 생성됩니다. 따라서 Aurora 읽기 전용 복제본의 마스터 사용자 이름과 마스터 암호는 원본 DB 인스턴스의 마스터 사용자 이름 및 마스터 암호와 동일합니다.

    가상 프라이빗 클라우드(VPC)

    DB 클러스터를 호스팅할 VPC를 선택합니다. Amazon RDS에서 VPC를 생성하도록 하려면 새 VPC 생성을 선택합니다. 자세한 내용은 DB 클러스터 사전 요구사항 단원을 참조하십시오.

    서브넷 그룹

    DB 클러스터에 사용할 DB 서브넷 그룹을 선택합니다. Amazon RDS에서 자동으로 DB 서브넷 그룹을 생성하도록 하려면 새 DB 서브넷 그룹 생성을 선택합니다. 자세한 내용은 DB 클러스터 사전 요구사항 단원을 참조하십시오.

    퍼블릭 액세스 가능성

    DB 클러스터에 퍼블릭 IP 주소를 할당하려면 를 선택하고, 그렇지 않으면 아니요를 선택합니다. DB 클러스터의 인스턴스는 퍼블릭과 프라이빗 DB 인스턴스를 모두 혼합하여 사용할 수 있습니다. 모든 사용자의 액세스에서 인스턴스를 숨기는 방법에 대한 자세한 내용은 VPC에 있는 DB 인스턴스를 인터넷에서 숨기기 단원을 참조하십시오.

    [Availability zone]

    특정 가용 영역의 지정 여부를 결정합니다. 가용 영역에 대한 자세한 내용은 리전 및 가용 영역 선택 단원을 참조하십시오.

    VPC 보안 그룹

    VPC 보안 그룹을 한 개 이상 선택하여 DB 클러스터에 대한 네트워크 액세스를 보안합니다. Amazon RDS에서 VPC 보안 그룹을 생성하게 하려면 새 VPC 보안 그룹 생성을 선택합니다. 자세한 내용은 DB 클러스터 사전 요구사항 단원을 참조하십시오.

    데이터베이스 포트

    애플리케이션과 유틸리티가 데이터베이스에 액세스할 때 사용할 포트를 지정합니다. Aurora PostgreSQL DB 클러스터는 기본적으로 PostgreSQL 포트, 5432로 지정됩니다. 일부 기업에서는 방화벽으로 이 포트에 대한 연결을 차단합니다. 이처럼 기업 방화벽이 기본 포트를 차단할 경우 새로운 DB 클러스터에 다른 포트를 선택해야 합니다.

    DB 파라미터 그룹

    Aurora PostgreSQL DB 클러스터의 DB 파라미터 그룹을 선택합니다. Aurora는 기본 DB 파라미터 그룹을 제공하며, DB 파라미터 그룹을 직접 생성할 수도 있습니다. DB 파라미터 그룹에 대한 자세한 내용은 DB 파라미터 그룹 및 DB 클러스터 파라미터 그룹 작업 단원을 참조하십시오.

    DB 클러스터 파라미터 그룹

    Aurora PostgreSQL DB 클러스터의 DB 클러스터 파라미터 그룹을 선택합니다. Aurora는 기본 DB 클러스터 파라미터 그룹을 제공하며, DB 클러스터 파라미터 그룹을 직접 생성할 수도 있습니다. DB 클러스터 파라미터 그룹에 대한 자세한 내용은 DB 파라미터 그룹 및 DB 클러스터 파라미터 그룹 작업 단원을 참조하십시오.

    암호화

    새 Aurora DB 클러스터를 유휴 상태에서 암호화하려면 [Enable encryption]을 선택합니다. 암호화 활성을 선택하면 마스터 키 값으로 AWS KMS 암호화 키도 선택해야 합니다.

    Priority

    DB 클러스터의 장애 조치 우선 순위를 선택합니다. 값을 선택하지 않을 경우 기본값은 tier-1입니다. 기본 인스턴스의 결함으로부터 복구할 때 이 우선 순위에 따라 Aurora 복제본이 승격되는 순서가 결정됩니다. 자세한 내용은 Aurora DB 클러스터의 내결함성 단원을 참조하십시오.

    백업 보존 기간

    –가 데이터베이스 백업 사본을 보존하는 기간을 1Aurora35일로 선택합니다. 백업 사본은 데이터베이스를 마지막 특정 시점으로 복구(PITR)하는 데 사용됩니다.

    확장 모니터링

    DB 클러스터가 실행되는 운영 체제에 대한 실시간 지표 수집을 활성화하려면 [Enable enhanced monitoring]을 선택합니다. 자세한 내용은 확장 모니터링 단원을 참조하십시오.

    역할 모니터링

    확장 모니터링 활성화를 선택하는 경우에만 사용할 수 있습니다. 확장 모니터링에 사용할 AWS Identity and Access Management(IAM) 역할입니다. 자세한 내용은 확장 모니터링 설정 및 활성화 단원을 참조하십시오.

    Granularity

    확장 모니터링 활성화를 선택하는 경우에만 사용할 수 있습니다. DB 클러스터에 대해 지표를 수집하는 간격(초)을 설정하십시오.

    Auto minor version upgrade

    PostgreSQL DB 엔진의 마이너 버전 업그레이드가 있을 때 Aurora PostgreSQL DB 클러스터가 자동으로 업그레이드를 받도록 하려면 를 선택합니다.

    마이너 버전 자동 업그레이드 옵션은 Aurora PostgreSQL DB 클러스터에 대해 PostgreSQL 엔진의 마이너 버전 업그레이드에만 적용됩니다. 시스템 안정성 유지를 위한 정기 패치에는 적용되지 않습니다.

    유지 관리 기간

    시스템 유지 관리를 실행하는 기간을 주 단위로 선택합니다.

  5. [Create read replica]를 선택합니다.

AWS CLI

원본 PostgreSQL DB 인스턴스에서 Aurora 읽기 전용 복제본을 생성하려면 create-db-clustercreate-db-instance AWS CLI 명령을 사용하여 새 Aurora PostgreSQL DB 클러스터를 생성합니다. create-db-cluster 명령을 호출할 때는 원본 PostgreSQL DB 인스턴스의 Amazon 리소스 이름(ARN)을 식별하는 --replication-source-identifier 파라미터를 포함시키십시오. Amazon RDS ARN에 대한 자세한 내용은 AWS General Reference에서 Amazon Relational Database Service(Amazon RDS) 단원을 참조하십시오.

마스터 사용자 이름, 마스터 암호 또는 데이터베이스 이름은 지정하지 마십시오. Aurora 읽기 전용 복제본은 원본 PostgreSQL DB 인스턴스와 동일한 마스터 사용자 이름, 마스터 암호 및 데이터베이스 이름을 갖게 됩니다.

Linux, OS X, Unix의 경우:

aws rds create-db-cluster --db-cluster-identifier sample-replica-cluster --engine aurora-postgresql \ --db-subnet-group-name mysubnetgroup --vpc-security-group-ids sg-c7e5b0d2 \ --replication-source-identifier arn:aws:rds:us-west-2:123456789012:db:master-postgresql-instance

Windows의 경우:

aws rds create-db-cluster --db-cluster-identifier sample-replica-cluster --engine aurora-postgresql ^ --db-subnet-group-name mysubnetgroup --vpc-security-group-ids sg-c7e5b0d2 ^ --replication-source-identifier arn:aws:rds:us-west-2:123456789012:db:master-postgresql-instance

콘솔을 사용하여 Aurora 읽기 전용 복제본을 생성하면 RDS에서 DB 클러스터 Aurora 읽기 전용 복제본의 기본 인스턴스를 자동으로 생성합니다. CLI를 사용하여 Aurora 읽기 전용 복제본을 생성할 경우 반드시 DB 클러스터용 기본 인스턴스를 명시적으로 생성해야 합니다. 기본 인스턴스는 클러스터에 생성된 최초의 DB 인스턴스입니다.

create-db-instance CLI 명령을 다음 파라미터와 함께 사용하여 DB 클러스터의 기본 인스턴스를 생성할 수 있습니다.

  • --db-cluster-identifier

    DB 클러스터의 이름입니다.

  • --db-instance-class

    기본 인스턴스에 사용할 DB 인스턴스 클래스의 이름입니다.

  • --db-instance-identifier

    기본 인스턴스의 이름입니다.

  • --engine aurora-postgresql

    사용할 데이터베이스 엔진입니다.

다음 예제에서는 이름이 myreadreplicacluster인 DB 클러스터에서 myreadreplicainstance라는 이름으로 기본 인스턴스를 생성합니다. 이때 myinstanceclass에서 지정한 DB 인스턴스 클래스를 사용합니다.

Linux, OS X, Unix의 경우:

aws rds create-db-instance \ --db-cluster-identifier myreadreplicacluster \ --db-instance-class myinstanceclass --db-instance-identifier myreadreplicainstance \ --engine aurora-postgresql

Windows의 경우:

aws rds create-db-instance \ --db-cluster-identifier myreadreplicacluster \ --db-instance-class myinstanceclass --db-instance-identifier myreadreplicainstance \ --engine aurora-postgresql

RDS API

원본 PostgreSQL DB 인스턴스에서 Aurora 읽기 전용 복제본을 생성하려면 RDS API 작업인 CreateDBClusterCreateDBInstance를 사용해 새 Aurora DB 클러스터와 기본 인스턴스를 생성합니다. 마스터 사용자 이름, 마스터 암호 또는 데이터베이스 이름은 지정하지 마십시오. Aurora 읽기 전용 복제본은 원본 PostgreSQL DB 인스턴스와 동일한 마스터 사용자 이름, 마스터 암호 및 데이터베이스 이름을 갖게 됩니다.

원본 PostgreSQL DB 인스턴스에서 Aurora 읽기 전용 복제본의 새 Aurora DB 클러스터를 생성할 수 있습니다. RDS API 작업인 CreateDBCluster를 다음 파라미터와 함께 사용하면 가능합니다.

  • DBClusterIdentifier

    생성할 DB 클러스터의 이름입니다.

  • DBSubnetGroupName

    이 DB 클러스터와 연결할 DB 서브넷 그룹의 이름입니다.

  • Engine=aurora-postgresql

    사용할 엔진 이름입니다.

  • ReplicationSourceIdentifier

    원본 PostgreSQL DB 인스턴스의 Amazon 리소스 이름(ARN)입니다. Amazon RDS ARN에 대한 자세한 내용은 Amazon Web Services 일반 참조에서 Amazon Relational Database Service(Amazon RDS) 단원을 참조하십시오.

  • VpcSecurityGroupIds

    DB 클러스터와 연결할 Amazon EC2 VPC 보안 그룹 목록입니다.

다음 예제에서는 소스 PostgreSQL DB 인스턴스에서 myreadreplicacluster라는 이름의 DB 클러스터를 생성합니다. 이 클러스터는 ARN이 mysqlmasterARN으로 설정됩니다. 또한 이름이 mysubnetgroup인 DB 서브넷 그룹과 이름이 mysecuritygroup인 VPC 보안 그룹에 연결됩니다.

https://rds.us-east-1.amazonaws.com/ ?Action=CreateDBCluster &DBClusterIdentifier=myreadreplicacluster &DBSubnetGroupName=mysubnetgroup &Engine=aurora-postgresql &ReplicationSourceIdentifier=mysqlmasterARN &SignatureMethod=HmacSHA256 &SignatureVersion=4 &Version=2014-10-31 &VpcSecurityGroupIds=mysecuritygroup &X-Amz-Algorithm=AWS4-HMAC-SHA256 &X-Amz-Credential=AKIADQKE4SARGYLE/20150927/us-east-1/rds/aws4_request &X-Amz-Date=20150927T164851Z &X-Amz-SignedHeaders=content-type;host;user-agent;x-amz-content-sha256;x-amz-date &X-Amz-Signature=6a8f4bd6a98f649c75ea04a6b3929ecc75ac09739588391cd7250f5280e716db

콘솔을 사용하여 Aurora 읽기 전용 복제본을 생성하면 Amazon RDS에서 DB 클러스터 Aurora 읽기 전용 복제본의 기본 인스턴스를 자동으로 생성합니다. CLI를 사용하여 Aurora 읽기 전용 복제본을 생성할 경우 반드시 DB 클러스터용 기본 인스턴스를 명시적으로 생성해야 합니다. 기본 인스턴스는 클러스터에 생성된 최초의 DB 인스턴스입니다.

RDS API 작업인 CreateDBInstance를 다음 파라미터와 함께 사용하여 DB 클러스터의 기본 인스턴스를 생성할 수 있습니다.

  • DBClusterIdentifier

    DB 클러스터의 이름입니다.

  • DBInstanceClass

    기본 인스턴스에 사용할 DB 인스턴스 클래스의 이름입니다.

  • DBInstanceIdentifier

    기본 인스턴스의 이름입니다.

  • Engine=aurora-postgresql

    사용할 엔진 이름입니다.

다음 예제에서는 이름이 myreadreplicacluster인 DB 클러스터에서 myreadreplicainstance라는 이름으로 기본 인스턴스를 생성합니다. 이때 myinstanceclass에서 지정한 DB 인스턴스 클래스를 사용합니다.

https://rds.us-east-1.amazonaws.com/ ?Action=CreateDBInstance &DBClusterIdentifier=myreadreplicacluster &DBInstanceClass=myinstanceclass &DBInstanceIdentifier=myreadreplicainstance &Engine=aurora-postgresql &SignatureMethod=HmacSHA256 &SignatureVersion=4 &Version=2014-09-01 &X-Amz-Algorithm=AWS4-HMAC-SHA256 &X-Amz-Credential=AKIADQKE4SARGYLE/20140424/us-east-1/rds/aws4_request &X-Amz-Date=20140424T194844Z &X-Amz-SignedHeaders=content-type;host;user-agent;x-amz-content-sha256;x-amz-date &X-Amz-Signature=bee4aabc750bf7dad0cd9e22b952bd6089d91e2a16592c2293e532eeaab8bc77

Aurora 읽기 전용 복제본 승격

마이그레이션이 완료된 후 Aurora 읽기 전용 복제본을 독립 실행형 DB 클러스터로 승격시키고 클라이언트 애플리케이션을 Aurora 읽기 전용 복제본의 엔드포인트로 보낼 수 있습니다. Aurora 엔드포인트에 대한 자세한 내용은 Amazon Aurora 연결 관리 단원을 참조하십시오. 승격은 매우 신속하게 완료해야 합니다. 승격이 완료될 때까지 마스터 PostgreSQL DB 인스턴스를 삭제하거나 DB 인스턴스와 Aurora 읽기 전용 복제본의 링크를 해제할 수 없습니다.

Aurora 읽기 전용 복제본을 승격시키기 전에 원본 PostgreSQL DB 인스턴스에 대한 트랜잭션 쓰기를 중단합니다. 그런 다음 Aurora 읽기 전용 복제본에서 복제 지연 시간이 0이 될 때까지 기다립니다.

읽기 전용 복제본을 승격한 후 다음과 같이 승격이 완료되었는지 확인합니다. 먼저 탐색 창에서 인스턴스를 선택한 후 자신의 읽기 전용 복제본에서 Promoted Read Replica cluster to stand-alone database cluster(독립 실행형 데이터베이스 클러스터로 승격된 읽기 전용 복제본 클러스터)가 있는지 확인합니다. 승격이 완료된 후에는 마스터 PostgreSQL DB 인스턴스와 Aurora 읽기 전용 복제본의 링크가 해제됩니다. 이때 원한다면 DB 인스턴스를 안전하게 삭제할 수 있습니다.

콘솔

Aurora 읽기 전용 복제본을 Aurora DB 클러스터로 승격시키려면

  1. AWS Management 콘솔에 로그인한 다음 https://console.aws.amazon.com/rds/에서 Amazon RDS 콘솔을 엽니다.

  2. 탐색 창에서 인스턴스를 선택합니다.

  3. Aurora 읽기 전용 복제본의 DB 인스턴스를 선택한 후 작업에서 읽기 전용 복제본 승격을 선택합니다.

  4. [Promote Read Replica]를 선택합니다.

AWS CLI

Aurora 읽기 전용 복제본을 독립형 DB 클러스터로 승격시키려면 promote-read-replica-db-cluster AWS CLI 명령을 사용하십시오.

Linux, OS X, Unix의 경우:

aws rds promote-read-replica-db-cluster \ --db-cluster-identifier myreadreplicacluster

Windows의 경우:

aws rds promote-read-replica-db-cluster ^ --db-cluster-identifier myreadreplicacluster

PostgreSQL DB 인스턴스용 Aurora PostgreSQL DB 클러스터

PostgreSQL DB 인스턴스용 Aurora PostgreSQL DB 클러스터. 이를 위해서는 Aurora PostgreSQL가 제공하는 aws_s3 PostgreSQL 확장을 사용합니다.

참고

Amazon S3에서 Aurora PostgreSQL로 가져오려면 데이터베이스에서 PostgreSQL 버전 10.7 이상을 실행 중이어야 합니다.

Amazon S3를 이용한 데이터 저장에 대한 자세한 내용은 Amazon Simple Storage Service 시작 안내서버킷 생성을 참조하십시오. 파일을 Amazon S3 버킷에 업로드하는 방법에 관한 지침은 Amazon Simple Storage Service 시작 안내서버킷에 객체 추가를 참조하십시오.

Amazon S3 데이터 가져오기 개요

Amazon S3 버킷에 저장된 데이터를 PostgreSQL 데이터베이스 테이블로 가져오려면 다음 단계를 따릅니다.

S3 데이터를 Aurora PostgreSQL 로 가져오려면

  1. 필요한 PostgreSQL 확장을 설치합니다. 여기에는 aws_s3aws_commons 확장이 포함됩니다. 이렇게 하려면 psql을 시작하고 다음 명령을 사용합니다.

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

    aws_s3 확장에서는 Amazon S3 데이터를 가져오는 데 사용하는 aws_s3.table_import_from_s3 함수를 제공합니다. aws_commons 확장은 추가 헬퍼 함수를 제공합니다.

  2. 사용할 데이터베이스 테이블과 Amazon S3 파일을 식별합니다.

    aws_s3.table_import_from_s3 함수에는 가져온 데이터를 배치할 PostgreSQL 데이터베이스 테이블의 이름이 필요합니다. 또한 이 함수에서 가져올 Amazon S3 파일도 식별해야 합니다. 이 정보를 제공하려면 다음 단계를 따릅니다.

    1. 데이터를 배치할 PostgreSQL 데이터베이스 테이블을 식별합니다. 예를 들어 다음은 이 항목의 예제에 사용되는 샘플 t1 데이터베이스 테이블입니다.

      psql=> CREATE TABLE t1 (col1 varchar(80), col2 varchar(80), col3 varchar(80));
    2. 가져올 Amazon S3 파일을 식별하려면 다음 정보를 가져옵니다.

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

      • 파일 경로 – 파일 경로를 통해 파일이 Amazon S3 버킷에 배치됩니다.

      • AWS 리전 – AWS 리전은 Amazon S3 버킷이 있는 위치입니다. 예를 들어 S3 버킷이 미국 동부(버지니아 북부) 리전에 있는 경우 us-east-1을 사용합니다. AWS 리전 이름 및 연결된 값의 목록은 리전 및 가용 영역 선택 단원을 참조하십시오.

      이 정보를 얻는 방법에 대해 알아보려면 Amazon Simple Storage Service 시작 안내서에서 객체 보기를 참조하십시오. AWS CLI 명령 aws s3 cp를 사용하여 정보를 확인할 수 있습니다. 정보가 정확하면 이 명령이 Amazon S3 파일의 복사본을 다운로드합니다.

      aws s3 cp s3://sample_s3_bucket/sample_file_path ./
    3. aws_commons.create_s3_uri 함수를 사용하여 Amazon S3 파일 정보를 보관할 aws_commons._s3_uri_1 구조를 생성합니다. 이 aws_commons._s3_uri_1 구조를 aws_s3.table_import_from_s3 함수에 대한 호출의 파라미터로 제공합니다.

      psql 예제에서 다음을 참조하십시오.

      psql=> SELECT aws_commons.create_s3_uri( 'sample_s3_bucket', 'sample.csv', 'us-east-1' ) AS s3_uri \gset
  3. Amazon S3 파일에 액세스할 수 있는 권한을 부여합니다.

    Amazon S3 파일에서 데이터를 가져오려면 Aurora PostgreSQL DB 클러스터에 파일이 저장된 Amazon S3 버킷에 액세스할 수 있는 권한을 부여해야 합니다. 이렇게 하려면 AWS Identity and Access Management(IAM) 역할 또는 보안 자격 증명을 사용합니다. 자세한 내용은 Amazon S3 버킷에 대한 액세스 권한 설정 단원을 참조하십시오.

  4. aws_s3.table_import_from_s3 함수를 호출하여 Amazon S3 데이터를 가져옵니다.

    위 준비 작업을 완료한 후에는 aws_s3.table_import_from_s3 함수를 사용해 Amazon S3 데이터를 가져옵니다. 자세한 내용은 aws_s3.table_import_from_s3 함수를 사용하여 Amazon S3 데이터 가져오기 단원을 참조하십시오.

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

Amazon S3 파일에서 데이터를 가져오려면 Aurora PostgreSQL DB 클러스터에 파일이 저장된 Amazon S3 버킷에 액세스할 수 있는 권한을 부여해야 합니다. 다음 항목에서 설명하는 두 방법 중 하나를 사용하여 Amazon S3 버킷에 대한 액세스 권한을 부여합니다.

IAM 역할을 사용해 Amazon S3 버킷에 액세스

Amazon S3 파일에서 데이터를 로드하기 전에 Aurora PostgreSQL DB 클러스터DB 클러스터에 파일이 저장된 Amazon S3 버킷에 액세스할 수 있는 권한을 부여합니다. 그러면 추가 자격 증명 정보를 관리하거나 aws_s3.table_import_from_s3 함수 호출에서 제공할 필요가 없습니다.

이렇게 하려면 Amazon S3 버킷에 대한 액세스 권한을 부여하는 IAM 정책을 생성합니다. IAM 역할을 생성하여 정책을 역할에 연결합니다. 그런 다음 IAM 역할을 DB 클러스터에 할당합니다.

IAM 역할을 통해 Amazon S3에 액세스할 수 있는 권한을 PostgreSQL DB 인스턴스용 Aurora PostgreSQL DB 클러스터 에 부여하려면

  1. IAM 정책을 생성합니다. 이 정책은 Aurora PostgreSQL DB 클러스터 가 Amazon S3에 액세스할 수 있도록 허용하는 버킷 및 객체 권한을 부여합니다.

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

    • s3:GetObject

    • s3:ListBucket

    정책에 다음 리소스를 포함하여 Amazon S3 버킷 및 그 안의 객체를 식별합니다. 다음은 Amazon S3에 액세스하기 위한 Amazon 리소스 이름(ARN) 형색입니다.

    • arn:aws:s3:::your-s3-bucket

    • arn:aws:s3:::your-s3-bucket/*

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

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

    참고

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

    Linux, OS X, Unix의 경우:

    aws iam create-policy \ --policy-name rds-s3-import-policy \ --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Sid": "s3import", "Action": [ "s3:GetObject", "s3:ListBucket", ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::your-s3-bucket", "arn:aws:s3:::your-s3-bucket/*" ] } ] }'

    Windows의 경우:

    aws iam create-policy ^ --policy-name rds-s3-import-policy ^ --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Sid": "s3import", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::your-s3-bucket", "arn:aws:s3:::your-s3-bucket/*" ] } ] }'
  2. IAM 역할 생성. Aurora PostgreSQL이 이 IAM 역할을 수임하여 사용자 대신 Amazon S3 버킷에 액세스할 수 있도록 역할을 생성합니다. 자세한 내용은 IAM 사용 설명서의 역할을 만들어 IAM 사용자에게 권한 위임 단원을 참조하십시오.

    다음 예제에서는 AWS CLI 명령을 사용해 rds-s3-import-role이라는 역할을 생성하는 방법을 보여줍니다.

    Linux, OS X, Unix의 경우:

    aws iam create-role \ --role-name rds-s3-import-role \ --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }'

    Windows의 경우:

    aws iam create-role ^ --role-name rds-s3-import-role ^ --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }'
  3. 생성한 IAM 역할에 생성한 IAM 정책을 연결합니다.

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

    Linux, OS X, Unix의 경우:

    aws iam attach-role-policy \ --policy-arn your-policy-arn \ --role-name rds-s3-import-role

    Windows의 경우:

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

콘솔

콘솔을 사용하여 PostgreSQL DB 클러스터에 대해 IAM 역할을 추가하려면

  1. AWS Management 콘솔에 로그인한 다음 https://console.aws.amazon.com/rds/에서 Amazon RDS 콘솔을 엽니다.

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

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

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

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

AWS CLI

CLI를 사용하여 PostgreSQL DB 클러스터에 대해 IAM 역할을 추가하려면

  • 다음 명령을 사용해 my-db-cluster라는 PostgreSQL DB 클러스터에 역할을 추가합니다. your-role-arn을 이전 단계에서 기록한 정책 ARN으로 교체합니다. --feature-name 옵션의 값에 대해 s3Import를 사용합니다.

    Linux, OS X, Unix의 경우:

    aws rds add-role-to-db-cluster \ --db-cluster-identifier my-db-cluster \ --feature-name s3Import \ --role-arn your-role-arn \ --region your-region

    Windows의 경우:

    aws rds add-role-to-db-cluster ^ --db-cluster-identifier my-db-cluster ^ --feature-name s3Import ^ --role-arn your-role-arn ^ --region your-region

보안 자격 증명을 사용해 Amazon S3 버킷에 액세스

원할 경우 IAM 역할을 사용하는 대신 보안 자격 증명을 사용해 Amazon S3 버킷에 대한 액세스 권한을 부여여할 수 있습니다. 이렇게 하려면 aws_s3.table_import_from_s3 함수 호출에 credentials 파라미터를 사용합니다.

credentials 파라미터는 AWS 자격 증명을 포함하는 aws_commons._aws_credentials_1 유형의 구조입니다. 다음과 같이 aws_commons.create_aws_credentials 함수를 사용해 aws_commons._aws_credentials_1 구조에서 액세스 키와 비밀 키를 설정하십시오.

psql=> SELECT aws_commons.create_aws_credentials( 'sample_access_key', 'sample_secret_key', '') AS creds \gset

다음과 같이 aws_commons._aws_credentials_1 구조를 생성한 후 aws_s3.table_import_from_s3 함수를 credentials 파라미터와 함께 사용해 데이터를 가져옵니다.

psql=> SELECT aws_s3.table_import_from_s3( 't', '', '(format csv)', :'s3_uri', :'creds' );

또는 aws_commons.create_aws_credentials 함수 호출 인라인을 aws_s3.table_import_from_s3 함수 호출에 포함할 수 있습니다.

psql=> SELECT aws_s3.table_import_from_s3( 't', '', '(format csv)', :'s3_uri', aws_commons.create_aws_credentials('sample_access_key', 'sample_secret_key', '') );

Amazon S3 액세스 문제 해결

Amazon S3 파일 데이터를 가져오려 할 때 연결 문제가 발생할 경우 다음 권장 사항을 참조하십시오.

aws_s3.table_import_from_s3 함수를 사용하여 Amazon S3 데이터 가져오기

aws_s3.table_import_from_s3 함수를 호출하여 Amazon S3 데이터를 가져옵니다.

참고

다음 예제에서는 Amazon S3 버킷에 대한 액세스 권한을 제공하기 위해 IAM 역할 방법을 사용합니다. 따라서 aws_s3.table_import_from_s3 함수 호출에는 자격 증명 파라미터가 없습니다.

다음은 psql을 사용하는 일반적인 PostgreSQL의 예입니다.

psql=> SELECT aws_s3.table_import_from_s3( 't1', '', '(format csv)', :'s3_uri' );

파라미터는 다음과 같습니다.

  • t1 – 데이터를 복사할 PostgreSQL DB 클러스터의 테이블에 지정된 이름입니다.

  • '' – 데이터베이스 테이블의 열 목록입니다(선택 사항). 이 파라미터를 사용해 S3 데이터 중 어떤 열이 어떤 테이블 열에 들어가는지 표시할 수 있습니다. 열을 지정하지 않으면 모든 열이 테이블에 복사됩니다. 열 목록 사용에 대한 예시는 사용자 지정 구분 기호를 사용하는 Amazon S3 파일 가져오기 단원을 참조하십시오.

  • (format csv) – PostgreSQL COPY 인수입니다. 복사 프로세스에서는 PostgreSQL COPY 명령의 인수 및 형식을 사용합니다. 앞의 예에서 COPY 명령은 쉼표로 구분된 값(CSV) 파일 형식을 사용해 데이터를 복사합니다.

  • s3_uri – Amazon S3 파일을 식별하는 정보가 포함된 구조입니다. aws_commons.create_s3_uri 함수를 사용하여 s3_uri 구조를 생성하는 예제는 Amazon S3 데이터 가져오기 개요 단원을 참조하십시오.

이 함수의 전체 참조는 aws_s3.table_import_from_s3 단원을 참조하십시오.

다음 예제에서는 Amazon S3 데이터를 가져오기를 수행할 때 다양한 종류의 파일을 지정하는 방법을 보여줍니다.

사용자 지정 구분 기호를 사용하는 Amazon S3 파일 가져오기

다음 예제에서는 사용자 지정 구분 기호를 사용하는 파일을 가져오는 방법을 보여줍니다. 또한 aws_s3.table_import_from_s3 함수의 column_list 파라미터를 사용해 데이터베이스 테이블에서 데이터를 배치할 곳을 제어하는 방법을 보여줍니다.

이 예에서는 다음 정보가 Amazon S3 파일의 파이프로 구분된 열에 정리되어 있다고 가정합니다.

1|foo1|bar1|elephant1 2|foo2|bar2|elephant2 3|foo3|bar3|elephant3 4|foo4|bar4|elephant4 ...

사용자 지정 구분 기호를 사용하는 파일을 가져오려면

  1. 가져온 데이터에 대해 데이터베이스에서 테이블을 생성합니다.

    psql=> CREATE TABLE test (a text, b text, c text, d text, e text); CREATE TABLE
  2. aws_s3.table_import_from_s3 함수의 다음과 같은 형식을 사용해 Amazon S3 파일에서 데이터를 가져옵니다.

    aws_commons.create_s3_uri 함수 호출 인라인을 aws_s3.table_import_from_s3 함수 호출에 포함하여 파일을 지정할 수 있습니다.

    psql=> SELECT aws_s3.table_import_from_s3( 'test', 'a,b,d,e', 'DELIMITER ''|''', aws_commons.create_s3_uri('sampleBucket', 'pipeDelimitedSampleFile', 'us-east-2') );

이제 데이터는 다음 열의 테이블에 있습니다.

psql=> SELECT * FROM test; a | b | c | d | e ---+------+---+---+------+----------- 1 | foo1 | | bar1 | elephant1 2 | foo2 | | bar2 | elephant2 3 | foo3 | | bar3 | elephant3 4 | foo4 | | bar4 | elephant4

Amazon S3 압축(gzip) 파일 가져오기

다음 예에서는 gzip으로 압축된 Amazon S3에서 파일을 가져오는 방법을 보여줍니다.

파일이 다음 Amazon S3 메타데이터를 포함하고 있는지 확인합니다.

  • 키: Content-Encoding

  • 값: gzip

이 값을 Amazon S3 메타데이터에 추가하는 것에 관한 자세한 내용은 Amazon Simple Storage Service 콘솔 사용 설명서S3 객체에 메타데이터를 추가하려면 어떻게 해야 합니까?를 참조하십시오.

아래와 같이 gzip 파일을 PostgreSQL DB 인스턴스용 Aurora PostgreSQL DB 클러스터로 가져옵니다.

psql=> CREATE TABLE test_gzip(id int, a text, b text, c text, d text); CREATE TABLE psql=> SELECT aws_s3.table_import_from_s3( 'test_gzip', '', '(format csv)', 'myS3Bucket', 'test-data.gz', 'us-east-2' );

인코딩된 Amazon S3 파일 가져오기

다음 예에서는 Windows-1252 인코딩이 있는 Amazon S3에서 파일을 가져오는 방법을 보여줍니다.

psql=> SELECT aws_s3.table_import_from_s3( 'test_table', '', 'encoding ''WIN1252''', aws_commons.create_s3_uri('sampleBucket', 'SampleFile', 'us-east-2') );

함수 참조

aws_s3.table_import_from_s3

Amazon S3 데이터를 Aurora PostgreSQL 테이블로 가져옵니다. aws_s3 확장은 aws_s3.table_import_from_s3 함수를 제공합니다.

세 가지 필수 파라미터는 table_name, column_listoptions입니다. 이 파라미터에서는 데이터베이스 테이블을 식별하고 데이터가 테이블로 복사되는 방식을 지정합니다.

다음 파라미터도 사용할 수 있습니다.

  • s3_info 파라미터는 가져올 Amazon S3 파일을 지정합니다. 이 파라미터를 사용하는 경우 IAM 역할에서 PostgreSQL DB 클러스터에 대해 Amazon S3에 액세스할 수 있는 권한을 제공합니다.

    aws_s3.table_import_from_s3 ( table_name text, column_list text, options text, s3_info aws_commons._s3_uri_1 )
  • credentials 파라미터에서는 Amazon S3에 액세스할 수 있는 자격 증명을 지정합니다. 이 파라미터를 사용할 때는 IAM 역할을 사용하지 마십시오.

    aws_s3.table_import_from_s3 ( table_name text, column_list text, options text, s3_info aws_commons._s3_uri_1, credentials aws_commons._aws_credentials_1 )

aws_s3.table_import_from_s3 파라미터는 다음 표에 설명되어 있습니다.

파라미터 설명
table_name 데이터를 가져올 필수 텍스트 문자열로서, PostgreSQL 데이터베이스 테이블의 이름을 포함합니다.
column_list

데이터를 복사할 PostgreSQL 데이터베이스 테이블 열의 목록(선택 사항)을 포함하는 필수 텍스트 문자열입니다. 문자열이 비어 있는 경우 테이블의 모든 열이 사용됩니다. 문제 해결 예는 사용자 지정 구분 기호를 사용하는 Amazon S3 파일 가져오기 단원을 참조하십시오.

options

PostgreSQL COPY 명령에 대한 인수를 포함하는 필수 텍스트 스트링입니다. 이 인수에서는 데이터가 PostgreSQL 테이블에 복사되는 방식을 지정합니다. 자세한 내용은 PostgreSQL COPY 설명서를 참조하십시오.

s3_info

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

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

  • file_path – 파일의 Amazon S3 경로입니다.

  • region – 파일이 위치한 AWS 리전입니다. AWS 리전 이름 및 연결된 리전 값의 목록은 리전 및 가용 영역 선택 단원을 참조하십시오.

aws_commons._s3_uri_1 복합 구조를 생성하려면 aws_commons.create_s3_uri 단원을 참조하십시오.

credentials

가져오기 작업에 사용할 다음 자격 증명을 포함하는 aws_commons._aws_credentials_1 복합 유형입니다.

  • 액세스 키

  • 비밀 키

  • 세션 토큰

aws_commons._aws_credentials_1 복합 구조를 생성하려면 aws_commons.create_aws_credentials 단원을 참조하십시오.

대체 파라미터

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

  • s3_info 파라미터를 사용해 Amazon S3 파일을 식별하는 대신 bucket, file_pathregion 파라미터의 조합을 사용하십시오. IAM 역할은 이러한 형식의 함수를 통해 PostgreSQL DB 인스턴스에 대해 Amazon S3에 액세스할 수 있는 권한을 제공합니다.

    aws_s3.table_import_from_s3 ( table_name text, column_list text, options text, bucket text, file_path text, region text )
  • credentials 파라미터를 사용해 Amazon S3 액세스를 지정하는 대신 access_key, session_keysession_token 파라미터의 조합을 사용하십시오.

    aws_s3.table_import_from_s3 ( table_name text, column_list text, options text, bucket text, file_path text, region text, access_key text, secret_key text, session_token text )

이러한 대체 파라미터에 대한 설명을 다음 표에서 확인하십시오.

파라미터 설명
bucket

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

file_path

파일의 Amazon S3 경로가 포함된 텍스트 문자열입니다.

region 파일이 위치한 AWS 리전이 포함된 텍스트 문자열입니다. AWS 리전 이름 및 연결된 값의 목록은 리전 및 가용 영역 선택 단원을 참조하십시오.
access_key 가져오기 작업에 사용할 액세스 키가 포함된 텍스트 문자열입니다. 기본값은 NULL입니다.
secret_key 가져오기 작업에 사용할 비밀 키가 포함된 텍스트 문자열입니다. 기본값은 NULL입니다.
session_token (선택 사항) 가져오기 작업에 사용할 세션 키가 포함된 텍스트 문자열입니다. 기본값은 NULL입니다.

aws_commons.create_s3_uri

Amazon S3 파일 정보를 저장할 aws_commons._s3_uri_1 구조를 생성합니다. aws_s3.table_import_from_s3 함수의 s3_info 파라미터에서 aws_commons.create_s3_uri 함수의 결과를 사용합니다. 함수 구문은 다음과 같습니다.

aws_commons.create_s3_uri( bucket text, file_path text, region text )

aws_commons.create_s3_uri 함수 파라미터는 다음 표에 설명되어 있습니다.

파라미터 설명
bucket

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

file_path

파일의 Amazon S3 경로가 포함된 필수 텍스트 문자열입니다.

region

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

aws_commons.create_aws_credentials

aws_commons._aws_credentials_1 구조에서 액세스 키와 비밀 키를 설정합니다. aws_s3.table_import_from_s3 함수의 credentials 파라미터에서 aws_commons.create_aws_credentials 함수의 결과를 사용합니다. 함수 구문은 다음과 같습니다.

aws_commons.create_aws_credentials( access_key text, secret_key text, session_token text )

aws_commons.create_aws_credentials 함수 파라미터는 다음 표에 설명되어 있습니다.

파라미터 설명
access_key

Amazon S3 파일 가져오기에 사용할 액세스 키가 포함된 필수 텍스트 문자열입니다. 기본값은 NULL입니다.

secret_key Amazon S3 파일 가져오기에 사용할 비밀 키가 포함된 필수 텍스트 문자열입니다. 기본값은 NULL입니다.
session_token Amazon S3 파일 가져오기에 사용할 세션 토큰이 포함된 텍스트 문자열(선택 사항)입니다. 기본값은 NULL입니다. 선택 사항인 session_token을 제공하는 경우 임시 자격 증명을 사용할 수 있습니다.