S3에서 Aurora로 데이터 가져오기

배경



Athena로 처리하고 있던 데이터를 Aurora로 관리하는 사양이 생겼기 때문에, S3에서 Aurora로의 데이터 임포트를 생각하기 시작했다.

데이터 가져오기



Aurao의 공식 문서를 참조하면 대체로 갈 수 있습니다.

Amazon S3 버킷 텍스트 파일에서 Amazon Aurora MySQL DB 클러스터로 데이터 로드 - Amazon Relational Database Service

↑의 문서를 간단히 정리하면 다음과 같습니다.
  • IAM policy 생성 (S3에 대한 액세스 권한)
  • IAM Role 생성(Aurora에서 AWS에 대한 권한)
  • Aurora의 parameter group 설정
  • 클러스터의 parameter group (각 인스턴트의 설정이 같으면, 클러스터만을 설정하면 OK).
  • 각 인스턴트의 parameter group

  • Amazon Aurora MySQL에서 AWS의 다른 서비스로 네트워크 통신 활성화 - Amazon Relational Database Service

  • 빠진 곳



    Amazon Aurora MySQL에서 AWS의 다른 서비스로 네트워크 통신 활성화 - Amazon Relational Database Service

    ↑는 몰랐기 때문에 무시했다. 그랬더니 전혀 S3와 연결되지 않았다. 그렇네요. Aurora는 private vpc에 놓여 있기 때문에 그대로 외부 S3에 액세스 할 수 없습니다.

    대책



    endpoint 만들기

    VPC -> 엔드포인트 -> 엔드포인트 생성



    결과



    다음과 같이 테스트했습니다.

    테스트 데이터


  • 테이블 만들기
  • mysql> create table users_01(
        -> userid integer not null primary key,
        -> username char(8),
        -> firstname varchar(30),
        -> lastname varchar(30),
        -> city varchar(30),
        -> state char(2),
        -> email varchar(100),
        -> phone char(14),
        -> likesports varchar(100),
        -> liketheatre varchar(100),
        -> likeconcerts varchar(100),
        -> likejazz varchar(100),
        -> likeclassical varchar(100),
        -> likeopera varchar(100),
        -> likerock varchar(100),
        -> likevegas varchar(100),
        -> likebroadway varchar(100),
        -> likemusicals varchar(100));
    Query OK, 0 rows affected (3.44 sec)
    
  • txt 파일 준비
  • aws s3 cp allusers_pipe.txt s3://fout-fox-development/allusers_pipe.txt
    
  • 데이터 가져오기
  • mysql> LOAD DATA FROM S3 's3://fout-fox-development/allusers_pipe.txt'
        -> INTO TABLE users_01
        -> FIELDS TERMINATED BY '|'
        -> LINES TERMINATED BY '\n'
        -> (@var1, @var2, @var3, @var4, @var5, @var6, @var7, @var8, @var9, @var10, @var11, @var12, @var13, @var14, @var15, @var16, @var17, @var18)
        -> SET
        -> userid = @var1,
        -> username = @var2,
        -> firstname = @var3,
        -> lastname = @var4,
        -> city=@var5,
        -> state=@var6,
        -> email=@var7,
        -> phone=@var8,
        -> likesports=@var9,
        -> liketheatre=@var10,
        -> likeconcerts=@var11,
        -> likejazz=@var12,
        -> likeclassical=@var13,
        -> likeopera=@var14,
        -> likerock=@var15,
        -> likevegas=@var16,
        -> likebroadway=@var17,
        -> likemusicals=@var18;
    Query OK, 49990 rows affected (8.81 sec)
    Records: 49990  Deleted: 0  Skipped: 0  Warnings: 0
    

    공연



    참조


  • Amazon S3 버킷 텍스트 파일에서 Amazon Aurora MySQL DB 클러스터로 데이터 로드 - Amazon Relational Database Service
  • Bulk Load Data Files into Aurora RDS from S3 Bucket using AWS Data Pipeline - Cloud IQ Tech
  • Timeouts Loading Data from S3 to Aurora – drew jess – Medium
  • 좋은 웹페이지 즐겨찾기