Amazon S3のデータをAmazon Auroraにインポートする

AWS

2023.9.28

Topics

はじめに

こんにちは。Kisaragiです。
この記事では、Amazon S3からAurora PostgreSQL DBにデータをインポートする過程を解説します。

環境

  • Amazon Aurora PostgreSQL 14.6 (Serverless v2)
  • Amazon Linux 2023
  • CSVファイル

VPC,S3,EC2等の基本設定については解説いたしません。

【1】IAM作成

【1-1】IAMポリシー作成

  1. IAMコンソール画面からポリシーを作成します。
  2. JSON形式に変更します。
  3. 以下のJSONコードを使用します。
    {
        "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/*"
                ]
            }
        ]
    }
    

    *12-13行のyour-s3-bucketにはS3バケット名を入力してください。

  4. ポリシー名を入力し、ポリシー作成を完了します。

【1-2】IAMロール作成

  1. IAMコンソール画面からロールを作成します。
  2. カスタム信頼ポリシーを選択します。
  3. 以下のJSONコードを使用します。
    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Principal": {
                    "Service": "rds.amazonaws.com"
                },
                "Action": "sts:AssumeRole"
            }
        ]
    }
    

  4. 作成したポリシーを選択します。
  5. ロール名を入力し、ロール作成を完了します。

【1-3】データベースにIAMロール追加

  1. データベースへ移動します。
  2. IAMロールの管理タブでロールを追加します。

【2】VPCエンドポイント作成

プライベートサブネットにあるデータベースが直接S3と通信する為にはVPCエンドポイントが必要です。

  1. VPCエンドポイントコンソールからエンドポイントを作成します。
  2. エンドポイント名を入力し、S3 Gatewayタイプのエンドポイントを指定します。
  3. データベースがあるVPCを選択し、ルートテーブルを設定し、エンドポイント作成を完了します。

【3】S3のデータをDBにインポート

【3-1】aws_s3 拡張機能のインストール

  1. インスタンスからDBに接続します。
psql --host=111122223333.aws-region.rds.amazonaws.com --port=5432 --username=postgres --password

111122223333.aws-region.rds.amazonaws.comにはライタークラスタのエンドポイントを入力します。

▼ DBに接続が完了したら、aws_s3拡張機能のインストールコマンドを入力します。

CREATE EXTENSION aws_s3 CASCADE;

【3-2】インポート

  1. CSVインポートに使うテーブルを作成します。
    今回のCSVのカラムは「episode, steps, action, waypoint」を使用しました。
  2. インポートコマンドでS3にあるCSVデータを作成したテーブルにインポートします。
SELECT aws_s3.table_import_from_s3(
'テーブル名',
'カラムリスト', #空文字の場合、テーブルのカラムと一致
'PostgreSQL', #COPYの引数・フォーマット
'S3バケット名',
'S3キー',
'S3リージョン'
);

【3-3】インポート確認

  1. select * from tablename; コマンドでCSVデータがインポートされたことを確認します。
  2. CSVデータがインポートされたことが確認できます。

参考資料

💡 Amazon S3 から Aurora PostgreSQL DB クラスターにデータをインポートする

kisaragi

2023年度新卒入社。クラウドエンジニア。出身は韓国です。 2月生まれの「如月」です。宜しくお願い致します。 尊敬するエンジニア:waka、Cold-Airflowさん

Recommends

こちらもおすすめ

Special Topics

注目記事はこちら