0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Aurora PostgreSQL × S3 でデータ連携を行う

Last updated at Posted at 2025-10-19

はじめに

Aurora PostgreSQLはS3と連携できる機能がある。

これを使えば、通常はアプリ側でS3からダウンロードして取り込むような処理を、
アプリを介さずにS3 → PostgreSQLへ直接インポートすることが可能となる。

よって以下のメリットがあると考える。

  • アプリ側でファイルを扱う必要がない
  • アプリ側のディスク容量を気にしなくていい
  • 実装がシンプルになる

今回の記事ではこの機能を用いて、通常のインポート方法と比較してみたいと思う。
※機能の詳細についてはこちらを見ていただければと。

検証環境

  • AWS 東京リージョン
  • Aurora PostgreSQL17.4 (スペック:db.t3.medium)
  • large_test_data.csv (1000万行のテストデータ)
  • test_table (データ格納用テーブル)

S3のファイルをインポート

  1. まずはS3連携するための拡張機能をインストールする

    CREATE EXTENSION IF NOT EXISTS aws_s3 CASCADE;
    
  2. S3上のファイルをインポートする

    postgres=> SELECT aws_s3.table_import_from_s3(
        'test_table',
        '',       
        '(format csv, header true)',
        '<S3バケット名>',
        'large_test_data.csv',
        'ap-northeast-1',
        '<Auroraに紐づけたIAMロール名>'
    );
                                             table_import_from_s3                                         
    ------------------------------------------------------------------------------------------------------
     10000000 rows imported into relation "test_table" from file large_test_data.csv of 208888910 bytes
    (1 row)
    
    Time: 11639.759 ms (00:11.640)
    postgres=>
    

通常の方法(アプリを介してインポート)の場合

  1. まずはS3のファイルをダウンロードする
    ~ $ time aws s3 cp s3://<S3バケット名>/large_test_data.csv ./
    download: s3://<S3バケット名>/large_test_data.csv to ./large_test_data.csv
    
    real    0m2.301s
    
  2. COPYコマンドを使って、インポートする
    postgres=> \COPY test_table (id, name, age)
    FROM 'large_test_data.csv'
    WITH (FORMAT csv, HEADER true);
    COPY 10000000
    Time: 11416.487 ms (00:11.416)
    postgres=> 
    

まとめ

結果としては以下となった。

方法 処理時間
S3連携 11.6秒
アプリ経由 13.7秒 (ダウンロード:2.3秒、COPYコマンド:11.4秒)

処理時間としては、S3連携のほうがわずかに早いという結果になった。
あまり大きな差が出なかったが、アプリを介さずに済むというのが最大の利点だと思う。
今回はインポートを試したが、もちろんエクスポートもできる。
また、AuroraからLambdaを呼び出す、なんてこともできるようだ。

あまり現場で使われていない(知られていない?)機能だが、
メリットが多々あるので、積極的に活用していきたい

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?