

# Aurora PostgreSQL DB クラスターから Amazon S3 へのデータのエクスポート
<a name="postgresql-s3-export"></a>

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 の更新](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/AuroraPostgreSQL.Updates.html)」を参照してください。

エクスポートにバケットを設定していない場合は、*Amazon Simple Storage Service ユーザーガイド*で次のトピックを参照してください。
+ [Amazon S3 のセットアップ](https://docs.aws.amazon.com/AmazonS3/latest/userguide/setting-up-s3.html)
+ [バケットの作成](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html)

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

**注記**  
AWS マネジメントコンソール、AWS CLI、または Amazon RDS API を使用して、DB および DB クラスターのスナップショットデータを Amazon S3 に保存できます。詳細については、「[Amazon S3 への DB クラスタースナップショットデータのエクスポート](aurora-export-snapshot.md)」を参照してください。

**Topics**
+ [aws\$1s3 拡張機能のインストール](#USER_PostgreSQL.S3Export.InstallExtension)
+ [Amazon S3 へのデータのエクスポートの概要](#postgresql-s3-export-overview)
+ [エクスポート先の Amazon S3 ファイルパスを指定する](#postgresql-s3-export-file)
+ [Amazon S3 バケットへのアクセスを設定する](postgresql-s3-export-access-bucket.md)
+ [aws\$1s3.query\$1export\$1to\$1s3 関数を使用したクエリデータのエクスポート](postgresql-s3-export-examples.md)
+ [関数リファレンス](postgresql-s3-export-functions.md)
+ [Amazon S3 へのアクセスのトラブルシューティング](postgresql-s3-export-troubleshoot.md)

## aws\$1s3 拡張機能のインストール
<a name="USER_PostgreSQL.S3Export.InstallExtension"></a>

Aurora PostgreSQL DB クラスター で Amazon Simple Storage Service を使用する前に、`aws_s3` 拡張機能をインストールする必要があります。この拡張機能には、Aurora PostgreSQL DB クラスターのライターインスタンス から Amazon S3 バケットへデータをエクスポートするための関数も含まれています。また、Amazon S3 からデータをインポートするための関数も含まれます。詳しくは、「[Amazon S3 から Aurora PostgreSQL DB クラスター にデータをインポートする](USER_PostgreSQL.S3Import.md)」を参照してください。`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
   ```

1. 拡張機能をインストールするには、次のコマンドを実行します。

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

1. 拡張機能がインストールされていることを確認するには、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 へのエクスポートがサポートされていることを確認します
<a name="postgresql-s3-supported"></a>

`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 へのデータのエクスポートの概要
<a name="postgresql-s3-export-overview"></a>

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

**Aurora PostgreSQL データを S3 にエクスポートするには**

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

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

   Amazon S3 ファイルにデータをエクスポートするには、Aurora PostgreSQL DB クラスターに、エクスポートの際に保存に使用される Amazon S3 バケットへのアクセス許可を付与する必要があります。これには、次のステップが含まれます。

   1. エクスポート先の Amazon S3 バケットへのアクセスを提供する IAM ポリシーを作成します。

   1. IAM ロールを作成します。

   1. 作成したポリシーを、作成したロールにアタッチします。

   1. この IAM ロールを DB クラスターに追加します。

   このプロセスの詳細については、「[Amazon S3 バケットへのアクセスを設定する](postgresql-s3-export-access-bucket.md)」を参照してください。

1. データを取得するためのデータベースクエリを識別します。`aws_s3.query_export_to_s3` 関数を呼び出して、クエリデータをエクスポートします。

   前述の準備タスクを完了したら、[aws\$1s3.query\$1export\$1to\$1s3](postgresql-s3-export-functions.md#aws_s3.export_query_to_s3) 関数を使用してクエリ結果を Amazon S3 にエクスポートします。このプロセスの詳細については、「[aws\$1s3.query\$1export\$1to\$1s3 関数を使用したクエリデータのエクスポート](postgresql-s3-export-examples.md)」を参照してください。

## エクスポート先の Amazon S3 ファイルパスを指定する
<a name="postgresql-s3-export-file"></a>

次の情報を指定して、Amazon S3 データのエクスポート先となる場所を指定します。
+ バケット名 - *バケット*は、Amazon S3 オブジェクトまたはファイルのコンテナです。

  Amazon S3 を使用したデータの保存の詳細については、「*Amazon Simple Storage Service ユーザーガイド*」の「[バケットの作成](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html)」と「[オブジェクトの使用](https://docs.aws.amazon.com/AmazonS3/latest/userguide/uploading-downloading-objects.html)」を参照してください。
+ ファイルパス - ファイルパスは、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 リージョン名と関連する値のリストについては、「[リージョンとアベイラビリティーゾーン](Concepts.RegionsAndAvailabilityZones.md)」を参照してください。

エクスポートの保存先に関する Amazon S3 ファイル情報を保持するには、 [aws\$1commons.create\$1s3\$1uri](postgresql-s3-export-functions.md#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\$1s3.query\$1export\$1to\$1s3](postgresql-s3-export-functions.md#aws_s3.export_query_to_s3) 関数の呼び出しでパラメータとして指定します。例については、「[aws\$1s3.query\$1export\$1to\$1s3 関数を使用したクエリデータのエクスポート](postgresql-s3-export-examples.md)」を参照してください。