Aurora PostgreSQL DB クラスターから Amazon S3 へのデータのエクスポート - Amazon Aurora

Aurora PostgreSQL DB クラスターから Amazon S3 へのデータのエクスポート

Aurora PostgreSQL DB クラスター からデータをクエリし、Amazon S3 バケットに保存されているファイルに直接エクスポートできます。これを行うには、Aurora PostgreSQL aws_s3拡張機能を最初にインストールします。このエクステンションでは、Amazon S3 へのクエリの結果のエクスポートに使用する関数が利用できます。次に、拡張機能のインストール方法と Amazon S3 へのデータのエクスポート方法を説明します。

プロビジョニングされた DB インスタンスまたは Aurora Serverless v2 DB インスタンスからエクスポートできます。これらの手順は Aurora Serverless v1 ではサポートされていません。

注記

クロスアカウントでの Amazon S3 はサポートされていません。

現在利用可能な Aurora PostgreSQL のバージョンでは、データの Amazon Simple Storage Service へのエクスポートがサポートされています。詳細なバージョン情報については、「Aurora PostgreSQL リリースノート」の「Amazon Aurora PostgreSQL の更新」を参照してください。

エクスポートにバケットを設定していない場合は、Amazon Simple Storage Service ユーザーガイドで次のトピックを参照してください。

デフォルトでは、Aurora PostgreSQL から Amazon S3 にエクスポートされたデータは、AWS マネージドキー によるサーバー側の暗号化が使用されます。また、既に作成したカスタマーマネージドキーを使用することもできます。バケット暗号化を使用している場合は、Amazon S3 バケットは AWS Key Management Service (AWS KMS) キー (SSE-KMS) で暗号化されている必要があります。現在、Amazon S3 マネージドキー (SSE-S3) で暗号化されたバケットはサポートされていません。

注記

AWS Management Console、AWS CLI、または Amazon RDS API を使用して、DB および DB クラスターのスナップショットデータを Amazon S3 に保存できます。詳細については、「Amazon S3 への DB クラスタースナップショットデータのエクスポート」を参照してください。

aws_s3 拡張機能のインストール

Aurora PostgreSQL DB クラスター で Amazon Simple Storage Service を使用する前に、aws_s3 拡張機能をインストールする必要があります。この拡張機能には、Aurora PostgreSQL DB クラスターのライターインスタンス から Amazon S3 バケットへデータをエクスポートするための関数も含まれています。また、Amazon S3 からデータをインポートするための関数も含まれます。詳しくは、「Amazon S3 から Aurora PostgreSQL DB クラスターにデータをインポートする」を参照してください。aws_s3 拡張機能は aws_commons 拡張機能の一部のヘルパー関数に依存しており、必要に応じて自動的にインストールされます。

aws_s3 拡張機能をインストールするには
  1. rds_superuser 権限があるユーザーとして、psql (または pgAdmin) を使用して Aurora PostgreSQL DB クラスターのライターインスタンス に接続します。設定プロセス中にデフォルトの名前を保持している場合は、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 にエクスポートするための関数が使用できるようになりました。

ご使用の Aurora PostgreSQL バージョンで、Amazon S3 へのエクスポートがサポートされていることを確認します

describe-db-engine-versions コマンドを使用して、Aurora PostgreSQL バージョンが Amazon S3 へのエクスポートをサポートしていることを確認できます。次の例では、バージョン 10.14 が Amazon S3 にエクスポートできるかどうかを確認します。

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

出力に "s3Export" の文字列が含まれている場合 、エンジンは Amazon S3 エクスポートをサポートします。それ以外の場合、エンジンはエクスポートをサポートしません。

Amazon S3 へのデータのエクスポートの概要

Aurora PostgreSQL データベースに格納されたデータを Amazon S3 バケットにエクスポートするには、以下の手順に従います。

Aurora PostgreSQL データを S3 にエクスポートするには
  1. データのエクスポートに使用する Amazon S3 ファイルパスを指定します。このプロセスの詳細については、「エクスポート先の Amazon S3 ファイルパスを指定する」を参照してください。

  2. Amazon S3 バケットへのアクセス許可を提供します。

    Amazon S3 ファイルにデータをエクスポートするには、Aurora 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 ユーザーガイドの「Create a bucket」と「View an object」を参照してください。

  • ファイルパス - ファイルパスは、Amazon S3 バケット内のエクスポートが格納される場所を識別します。ファイルパスは、次のもので構成されます。

    • 仮想フォルダパスを識別するオプションのパスプレフィックス。

    • 保存する 1 つ以上のファイルを識別するファイルプレフィックス。より大きなエクスポートは複数のファイルに格納され、それぞれの最大サイズは約 6 GB です。追加のファイル名には、同じファイルプレフィックスが付いていますが、末尾に _partXX が付加されます。XX は、2、3 などを表します。

    例えば、exports フォルダとファイルプレフィックスを持つ query-1-export ファイルパスは /exports/query-1-export です。

  • AWS リージョン (オプション) - Amazon S3 バケットがある AWS リージョン。AWS リージョンの値を指定しない場合、Aurora は、エクスポートする DB クラスターと同じ 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( 'amzn-s3-demo-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 関数を使用したクエリデータのエクスポート」を参照してください。