

# RDS for PostgreSQL データベースログファイル
<a name="USER_LogAccess.Concepts.PostgreSQL"></a>

次の種類の ログファイルをモニタリングできます。
+ PostgreSQL ログ
+ アップグレードログ
+ IAM データベース認証エラーログ
**注記**  
IAM データベース認証エラーログを有効にするには、まず RDS for PostgreSQL DB インスタンスの IAM データベース認証を有効にする必要があります。IAM データベース認証の有効化の詳細については、「[IAM データベース認証の有効化と無効化](UsingWithRDS.IAMDBAuth.Enabling.md)」を参照してください。

 RDS for PostgreSQL では、データベースアクティビティをデフォルトの PostgreSQL ログファイルに記録します。オンプレミスの PostgreSQL DB インスタンスの場合、これらのメッセージは `log/postgresql.log` にローカルに保存されます。、RDS for PostgreSQL DB インスタンスの場合、ログファイルは Amazon RDS インスタンスにあります。これらのログには、AWS マネジメントコンソール 経由でアクセスすることもできます。ここでは、ログを表示またはダウンロードできます。デフォルトのロギングレベルは、ログインの失敗、致命的なサーバーエラー、デッドロック、およびクエリエラーをキャプチャします。

ファイルベースのデータベースログの表示、ダウンロード、モニタリングの方法の詳細については、「[Amazon RDS ログファイルのモニタリング](USER_LogAccess.md)」を参照してください。PostgreSQL ログの詳細については、「[Amazon RDS および Aurora PostgreSQL ログの操作: パート 1](https://aws.amazon.com/blogs/database/working-with-rds-and-aurora-postgresql-logs-part-1/)」および「[Amazon RDS および Aurora PostgreSQL ログの操作: パート 2](https://aws.amazon.com/blogs/database/working-with-rds-and-aurora-postgresql-logs-part-2/)」を参照してください。

このトピックで説明した標準の PostgreSQL ログに加えて、 RDS for PostgreSQL は PostgreSQL 監査エクステンション (`pgAudit`) もサポートしています。規制対象の業界や政府機関のほとんどは、法的要件に準拠するために、データに加えられた変更の監査ログまたは監査証跡を維持する必要があります。pgAudit のインストールおよび使用の詳細については、「[pgAudit を使用してデータベースのアクティビティを記録する](Appendix.PostgreSQL.CommonDBATasks.pgaudit.md)」を参照してください。

**Topics**
+ [RDS for PostgreSQL でのログ記録のパラメータ](USER_LogAccess.Concepts.PostgreSQL.overview.parameter-groups.md)
+ [RDS for PostgreSQL DB インスタンスのクエリログ記録をオンにする](USER_LogAccess.Concepts.PostgreSQL.Query_Logging.md)
+ [Amazon CloudWatch Logs への PostgreSQL ログの発行](#USER_LogAccess.Concepts.PostgreSQL.PublishtoCloudWatchLogs)

# RDS for PostgreSQL でのログ記録のパラメータ
<a name="USER_LogAccess.Concepts.PostgreSQL.overview.parameter-groups"></a>

さまざまなパラメータを変更することで、 RDS for PostgreSQL DB インスタンスのロギング動作をカスタマイズできます。次のテーブルには、ログの保存期間、ログをローテーションするタイミング、ログを CSV (カンマ区切り値) 形式で出力するかどうかなどに影響するパラメータがあります。他の設定の中でも、STDERR に送信されたテキスト出力を確認できます。変更可能なパラメータの設定を変更するには、のカスタム DB パラメータグループを使用します。RDS for PostgreSQL インスタンス。詳細については、「[Amazon RDS DB インスタンスの DB パラメータグループ](USER_WorkingWithDBInstanceParamGroups.md)」を参照してください。


| パラメータ  | デフォルト | 説明  | 
| --- | --- | --- | 
| log\$1destination | stderr | ログの出力形式を設定します。デフォルトは `stderr` ですが、設定に `csvlog` を追加してカンマ区切り値 (CSV) を指定することもできます。詳細については、「[ログの送信先の設定 (`stderr`、`csvlog`)](#USER_LogAccess.Concepts.PostgreSQL.Log_Format)」を参照してください。 | 
| log\$1filename |  postgresql.log.%Y-%m-%d-%H  | ログファイル名のパターンを指定します。デフォルトに加えて、このパラメータはファイル名パターンの `postgresql.log.%Y-%m-%d` と `postgresql.log.%Y-%m-%d-%H%M` をサポートします。 | 
| log\$1line\$1prefix | %t:%r:%u@%d:[%p]: | 時間 (%t)、リモート ホスト (%r)、ユーザー (%u)、データベース (%d)、およびプロセス ID (%p) を記録するために、`stderr` に書き込まれる各ログ行のプレフィックスを定義します。 | 
| log\$1rotation\$1age | 60 | ログファイルが自動的にローテーションされるまでの分数。この値は、1～1,440 分の間で変更できます。詳細については、「[ログファイルのローテーションの設定](#USER_LogAccess.Concepts.PostgreSQL.log_rotation)」を参照してください。 | 
| log\$1rotation\$1size | – | ログが自動的にローテーションされるサイズ (kB)。ログは `log_rotation_age` パラメータに基づいてローテーションされるため、デフォルトではこのパラメータは使用されません。詳細については[ログファイルのローテーションの設定](#USER_LogAccess.Concepts.PostgreSQL.log_rotation)を参照してください。 | 
| rds.log\$1retention\$1period | 4320 | 指定した時間 (分) より古い PostgreSQL ログは削除されます。デフォルト値の 4,320 分では、3 日後にログファイルが削除されます。詳細については、「[ログの保持期間の設定](#USER_LogAccess.Concepts.PostgreSQL.log_retention_period)」を参照してください。 | 

アプリケーションの問題を特定するには、ログでクエリの失敗、ログインの失敗、デッドロック、および致命的なサーバーエラーを探すことができます。例えば、従来のアプリケーションを Oracle から Amazon RDS PostgreSQL に変換したが、一部のクエリは正しく変換されなかったとします。これらの誤った形式のクエリは、ログにエラーメッセージを生成し、ログから問題を特定することができます。クエリログの詳細については、「[ RDS for PostgreSQL DB インスタンスのクエリログ記録をオンにする](USER_LogAccess.Concepts.PostgreSQL.Query_Logging.md)」参照してください。

次のトピックでは、PostgreSQL ログの基本的な詳細を制御するさまざまなパラメータの設定方法について説明します。

**Topics**
+ [ログの保持期間の設定](#USER_LogAccess.Concepts.PostgreSQL.log_retention_period)
+ [ログファイルのローテーションの設定](#USER_LogAccess.Concepts.PostgreSQL.log_rotation)
+ [ログの送信先の設定 (`stderr`、`csvlog`)](#USER_LogAccess.Concepts.PostgreSQL.Log_Format)
+ [log\$1line\$1prefix パラメータの概要](#USER_LogAccess.Concepts.PostgreSQL.Log_Format.log-line-prefix)

## ログの保持期間の設定
<a name="USER_LogAccess.Concepts.PostgreSQL.log_retention_period"></a>

`rds.log_retention_period` パラメータは、 RDS for PostgreSQL DB インスタンスがログファイルを保持する期間を指定します。デフォルトの設定は 3 日 (4,320 分) ですが、この値を 1 日 (1,440 分) から 7 日 (10,080 分) までの任意の時間に設定できます。 RDS for PostgreSQL DB インスタンスに、一定期間ログファイルを保持するのに十分なストレージがあることを確認してください。

ログを定期的に Amazon CloudWatch Logs に公開することをお勧めします。これにより、ログが から削除された後も、システムデータを表示して分析できます。RDS for PostgreSQL DB インスタンス。詳細については、「[Amazon CloudWatch Logs への PostgreSQL ログの発行](USER_LogAccess.Concepts.PostgreSQL.md#USER_LogAccess.Concepts.PostgreSQL.PublishtoCloudWatchLogs)」を参照してください。

## ログファイルのローテーションの設定
<a name="USER_LogAccess.Concepts.PostgreSQL.log_rotation"></a>

 Amazon RDS は、デフォルトで 1 時間ごとに新しいログファイルを作成します。このタイミングは、`log_rotation_age` パラメータによって制御されます。このパラメータのデフォルト値は 60 (分) ですが、1 分から 24 時間 (1,440 分) までの任意の時間に設定できます。ローテーションの時期になると、新しい個別のログファイルが作成されます。ファイルには、`log_filename` パラメータによって指定されたパターンに従って名前が付けられます。

ログファイルは、`log_rotation_size` パラメータで指定されたサイズに従ってローテーションすることもできます。このパラメータは、ログが指定されたサイズ (キロバイト単位) に達したときにローテーションされるように指定します。RDS for PostgreSQL DB インスタンスの場合、`log_rotation_size` は未設定です。つまり、値が指定されていません。ただし、このパラメータは 0～2,097,151 KB (キロバイト) の範囲で設定できます。

ログファイル名は、`log_filename` パラメータで指定されたファイル名のパターンに基づきます。このパラメータに使用できる設定は次のとおりです。
+ `postgresql.log.%Y-%m-%d` — ログファイル名のデフォルトフォーマット。年、月、日をログファイルの名前に含めます。
+ `postgresql.log.%Y-%m-%d-%H` — ログファイル名形式に時間を含めます。

詳細については、PostgreSQL ドキュメントの「[https://www.postgresql.org/docs/current/runtime-config-logging.html#GUC-LOG-ROTATION-AGE](https://www.postgresql.org/docs/current/runtime-config-logging.html#GUC-LOG-ROTATION-AGE)」と「[https://www.postgresql.org/docs/current/runtime-config-logging.html#GUC-LOG-ROTATION-SIZE](https://www.postgresql.org/docs/current/runtime-config-logging.html#GUC-LOG-ROTATION-SIZE)」を参照してください。

## ログの送信先の設定 (`stderr`、`csvlog`)
<a name="USER_LogAccess.Concepts.PostgreSQL.Log_Format"></a>

デフォルトでは、 Amazon RDS PostgreSQL はスタンダードエラー (stderr) 形式でログを生成します。この形式は、`log_destination` パラメータのデフォルト設定です。各メッセージには、`log_line_prefix` パラメータで指定したパターンを使用してプレフィックスが付きます。詳細については、「[log\$1line\$1prefix パラメータの概要](#USER_LogAccess.Concepts.PostgreSQL.Log_Format.log-line-prefix)」を参照してください。

 RDS for PostgreSQL は、`csvlog` フォーマットでログを生成することもできます。`csvlog` は、ログデータをカンマ区切り値 (CSV) データとして分析する場合に便利です。例えば、`log_fdw` 拡張機能を使用して外部テーブルとしてログを使用するとします。`stderr` ログファイルについて作成された外部テーブルには、ログイベントデータを含む 1 つの列が含まれます。`log_destination` パラメータに `csvlog` を追加すると、外部テーブルの複数の列の区切りを含む CSV 形式のログファイルが取得できます。ログをより簡単に分類して分析できるようになりました。`log_fdw` を `csvlog` を指定して使用する方法については、「[SQL を使用した DB ログのアクセスのための log\$1fdw 拡張機能の使用](CHAP_PostgreSQL.Extensions.log_fdw.md)」を参照してください。

このパラメータに `csvlog` を指定する場合、`stderr` ファイル と `csvlog` ファイルの両方が生成されることに注意してください。ログのストレージと回転率に影響する `rds.log_retention_period` とその他の設定を考慮し、ログによって消費されるストレージに注意してください。`stderr` と `csvlog` を使用すると、ログで消費されるストレージが 2 倍以上になります。

`log_destination` に `csvlog` を追加して、`stderr` だけに戻す場合は、パラメータをリセットする必要があります。そのためには、Amazon RDS コンソールを開いて、インスタンスのカスタム DB パラメータグループを開きます。`log_destination` パラメータを選択し、**[Edit parameter]** (パラメータの編集) を選択し、**[Reset]** (リセット) を選択します。

ログの設定の詳細については、「[Amazon RDS および Aurora PostgreSQL ログの操作:パート 1](https://aws.amazon.com/blogs/database/working-with-rds-and-aurora-postgresql-logs-part-1/)」を参照してください。

## log\$1line\$1prefix パラメータの概要
<a name="USER_LogAccess.Concepts.PostgreSQL.Log_Format.log-line-prefix"></a>

`stderr` ログ形式では、各ログメッセージの先頭に `log_line_prefix` パラメータで指定した詳細が追加されます。デフォルト値は次のとおりです。

```
%t:%r:%u@%d:[%p]:t
```

Aurora PostgreSQL バージョン 16 以降では、以下を選択することもできます。

```
%m:%r:%u@%d:[%p]:%l:%e:%s:%v:%x:%c:%q%a
```

stderr に送信される各ログエントリには、選択した値に応じて次の情報が含まれます。
+ `%t` – ミリ秒なしのログエントリの時刻
+ `%m` – ミリ秒付きのログエントリの時刻
+  `%r` – リモートホストのアドレス。
+  `%u@%d` – ユーザー名 @ データベース名。
+  `[%p]` – プロセス ID (使用可能な場合)。
+  `%l` – セッションあたりのログ行数 
+  `%e` – SQL エラーコード 
+  `%s` – プロセス開始時間 
+  `%v` – 仮想トランザクション ID 
+  `%x` – トランザクション ID 
+  `%c` – セッション ID 
+  `%q` – セッション以外のターミネータ 
+  `%a` – アプリケーション名 

# RDS for PostgreSQL DB インスタンスのクエリログ記録をオンにする
<a name="USER_LogAccess.Concepts.PostgreSQL.Query_Logging"></a>

次のテーブルに示すパラメータの一部を設定することで、クエリ、ロック待ちのクエリ、チェックポイント、その他多くの詳細を含む、データベースアクティビティに関するより詳細な情報を収集できます。このトピックでは、クエリのログ記録に焦点を当てます。


| パラメータ  | デフォルト | 説明  | 
| --- | --- | --- | 
| log\$1connections | – | 成功した各接続をログに記録します。 | 
| log\$1disconnections | – | 各セッションの終了とその期間を記録します。 | 
| log\$1checkpoints | 1 | 各チェックポイントをログに記録します。 | 
| log\$1lock\$1waits | – | 長期間にわたるロックの待機をログに記録します。デフォルトでは、このパラメータは設定されていません。 | 
| log\$1min\$1duration\$1sample | – | (ms) ステートメントのサンプリングに関する最小実行時間を設定します。この値を超えるとステートメントがサンプリングされてログに記録されます。サンプルサイズは、log\$1statement\$1sample\$1rate パラメータを使用して設定されます。 | 
| log\$1min\$1duration\$1statement | – | 少なくとも指定された時間以上実行された SQL ステートメントはすべてログに記録されます。デフォルトでは、このパラメータは設定されていません。このパラメータを有効にすると、最適化されていないクエリを見つけるために役立ちます。 | 
| log\$1statement | – | ログに記録するステートメントのタイプを設定します。デフォルトでは、このパラメータは設定されていませんが、`all`、`ddl`、または `mod` に変更して、ログに記録する SQL ステートメントのタイプを指定できます。このパラメータの `none` 以外を指定する場合は、ログファイル内のパスワードが漏洩しないように、追加の手順も実行する必要があります。詳細については、「[クエリのログ記録を使用する際のパスワード漏洩リスクの軽減パスワード漏洩リスクの軽減](#USER_LogAccess.Concepts.PostgreSQL.Query_Logging.mitigate-risk)」を参照してください。 | 
| log\$1statement\$1sample\$1rate | – | `log_min_duration_sample` で指定された時間を超えるステートメントがログに記録される割合で、0.0 から 1.0 の間の浮動小数点値で表されます。 | 
| log\$1statement\$1stats | – | 累積処理のパフォーマンスの統計情報をサーバーログに書き込みます。 | 

## ログ記録を使用してパフォーマンスの低いクエリを見つける
<a name="USER_LogAccess.Concepts.PostgreSQL.Query_Logging.using"></a>

SQL ステートメントとクエリをログに記録すると、パフォーマンスの悪いクエリを見つけるのに役立ちます。この機能を有効にするには、このセクションで説明されているとおり、`log_statement` および `log_min_duration` パラメータの設定を変更します。 RDS for PostgreSQL DB インスタンス、のクエリログ記録を有効にする前に、ログにパスワードが漏洩する可能性と、そのリスクを軽減する方法について知っておく必要があります。詳細については、「[クエリのログ記録を使用する際のパスワード漏洩リスクの軽減パスワード漏洩リスクの軽減](#USER_LogAccess.Concepts.PostgreSQL.Query_Logging.mitigate-risk)」を参照してください。

`log_statement` および `log_min_duration` のパラメータに関する参照情報は、以下を参照してください。log\$1statement

このパラメータは、ログに送信する SQL ステートメントのタイプを指定します。デフォルト値は `none` です。このパラメータを `all`、`ddl`、または `mod` に変更する場合は、ログにパスワードが漏洩するリスクを軽減するために、必ず推奨アクションを適用してください。詳細については、「[クエリのログ記録を使用する際のパスワード漏洩リスクの軽減パスワード漏洩リスクの軽減](#USER_LogAccess.Concepts.PostgreSQL.Query_Logging.mitigate-risk)」を参照してください。

**すべて**  
すべてのステートメントを記録します。この設定はデバッグ目的での使用を推奨します。

**ddl**  
CREATE、ALTER、DROP などのすべてのデータ定義言語 (DDL) ステートメントをログに記録します。

**mod**  
データを変更する DDL ステートメントと、INSERT、UPDATE、DELETE などのデータ操作言語 (DML) ステートメントをすべてログに記録します。

**なし**  
SQL ステートメントはログに記録されません。ログにパスワードが漏れてしまうリスクを避けるため、この設定をお勧めします。log\$1min\$1duration\$1statement

少なくとも指定された時間以上実行された SQL ステートメントはすべてログに記録されます。デフォルトでは、このパラメータは設定されていません。このパラメータを有効にすると、最適化されていないクエリを見つけるために役立ちます。

**–1–2147483647**  
ステートメントがログに記録される実行時間のミリ秒 (ms) 数。

**クエリのログ記録を設定するには**

これらのステップは、RDS for PostgreSQL DB インスタンスはカスタム DB パラメータグループを使用します。

1. `log_statement` パラメータを `all` に設定します。以下の例に示しているのは、このパラメータ設定で `postgresql.log` ファイルに書き込まれる情報です。

   ```
   2022-10-05 22:05:52 UTC:52.95.4.1(11335):postgres@labdb:[3639]:LOG: statement: SELECT feedback, s.sentiment,s.confidence
   FROM support,aws_comprehend.detect_sentiment(feedback, 'en') s
   ORDER BY s.confidence DESC;
   2022-10-05 22:05:52 UTC:52.95.4.1(11335):postgres@labdb:[3639]:LOG: QUERY STATISTICS
   2022-10-05 22:05:52 UTC:52.95.4.1(11335):postgres@labdb:[3639]:DETAIL: ! system usage stats:
   ! 0.017355 s user, 0.000000 s system, 0.168593 s elapsed
   ! [0.025146 s user, 0.000000 s system total]
   ! 36644 kB max resident size
   ! 0/8 [0/8] filesystem blocks in/out
   ! 0/733 [0/1364] page faults/reclaims, 0 [0] swaps
   ! 0 [0] signals rcvd, 0/0 [0/0] messages rcvd/sent
   ! 19/0 [27/0] voluntary/involuntary context switches
   2022-10-05 22:05:52 UTC:52.95.4.1(11335):postgres@labdb:[3639]:STATEMENT: SELECT feedback, s.sentiment,s.confidence
   FROM support,aws_comprehend.detect_sentiment(feedback, 'en') s
   ORDER BY s.confidence DESC;
   2022-10-05 22:05:56 UTC:52.95.4.1(11335):postgres@labdb:[3639]:ERROR: syntax error at or near "ORDER" at character 1
   2022-10-05 22:05:56 UTC:52.95.4.1(11335):postgres@labdb:[3639]:STATEMENT: ORDER BY s.confidence DESC;
   ----------------------- END OF LOG ----------------------
   ```

1. `log_min_duration_statement` パラメータを設定します。以下の例に示しているのは、パラメータを `postgresql.log` に設定したときに `1` ファイルに書き込まれる情報です。

   `log_min_duration_statement` パラメータで指定された期間を超えるクエリはログに記録されます。例を以下に示します。 RDS for PostgreSQL DB インスタンスのログファイルは Amazon RDS コンソールで表示できます。

   ```
   2022-10-05 19:05:19 UTC:52.95.4.1(6461):postgres@labdb:[6144]:LOG: statement: DROP table comments;
   2022-10-05 19:05:19 UTC:52.95.4.1(6461):postgres@labdb:[6144]:LOG: duration: 167.754 ms
   2022-10-05 19:08:07 UTC::@:[355]:LOG: checkpoint starting: time
   2022-10-05 19:08:08 UTC::@:[355]:LOG: checkpoint complete: wrote 11 buffers (0.0%); 0 WAL file(s) added, 0 removed, 0 recycled; write=1.013 s, sync=0.006 s, total=1.033 s; sync files=8, longest=0.004 s, average=0.001 s; distance=131028 kB, estimate=131028 kB
   ----------------------- END OF LOG ----------------------
   ```

### クエリのログ記録を使用する際のパスワード漏洩リスクの軽減
<a name="USER_LogAccess.Concepts.PostgreSQL.Query_Logging.mitigate-risk"></a>

パスワードが漏洩しないように、`log_statement` を `none` に設定したままにしておくことをお勧めします。`log_statement` を `all`、`ddl`、または `mod` に設定した場合は、次の手順を 1 つ以上実行することをお勧めします。
+ クライアントの場合は、機密情報を暗号化します。詳細については、PostgreSQL ドキュメントの「[暗号化オプション](https://www.postgresql.org/docs/current/encryption-options.html)」を参照してください。`CREATE` および `ALTER` ステートメントの `ENCRYPTED` (および`UNENCRYPTED`) オプションを使用してください。詳細については、PostgreSQL のドキュメントの「[CREATE USER](https://www.postgresql.org/docs/current/sql-createuser.html)」を参照してください。
+  RDS for PostgreSQL DB インスタンスでは 、PostgreSQL 監査 (pgAudit) 拡張機能をセットアップして使用します。この拡張機能は、ログに送信された CREATE および ALTER ステートメントの機密情報を編集します。詳細については、「[pgAudit を使用してデータベースのアクティビティを記録する](Appendix.PostgreSQL.CommonDBATasks.pgaudit.md)」を参照してください。
+ CloudWatch ログへのアクセスを制限します。
+ IAM など、より強力な認証メカニズムを使用してください。

## Amazon CloudWatch Logs への PostgreSQL ログの発行
<a name="USER_LogAccess.Concepts.PostgreSQL.PublishtoCloudWatchLogs"></a>

PostgreSQL ログレコードを高い耐久性の高いのストレージに保存するには、Amazon CloudWatch Logs を使用できます。CloudWatch Logs では、ログデータのリアルタイム分析を実行したり、CloudWatch を使用してメトリクスを表示したり、アラームを作成したりすることもできます。例えば、`log_statement` を `ddl` に設定した場合、DDL ステートメントが実行されるたびに警告するアラームを設定できます。RDS for PostgreSQL DB インスタンスの作成プロセス中に PostgreSQL が CloudWatch Logs のログをアップロードするように選択できます。その時点でログをアップロードしないことを選択した場合は、後でインスタンスを変更してその時点からログのアップロードを開始できます。つまり、既存のログはアップロードされません。変更した RDS for PostgreSQL DB インスタンスで作成された新しいログのみがアップロードされます。

現在の PostgreSQL バージョンで利用可能なすべての RDS は、CloudWatch Logs へのログファイルの発行をサポートしています。詳細については、「*Amazon RDS for PostgreSQL リリースノート*」の「[Amazon RDS for PostgreSQL の更新](https://docs.aws.amazon.com/AmazonRDS/latest/PostgreSQLReleaseNotes/postgresql-versions.html)」を参照してください。

CloudWatch Logs を操作するには、ログデータをロググループに発行するように PostgreSQL DB インスタンス用 RDS を設定します。

RDS for PostgreSQL では、次のログの種類を CloudWatch Logs に発行できます。
+ PostgreSQL ログ
+ アップグレードログ 
+ IAM データベース認証エラーログ

設定が完了すると、Amazon RDS はログイベントを CloudWatch ロググループのログストリーミングに発行します。例えば、PostgreSQL ログデータは `/aws/rds/instance/my_instance/postgresql` ロググループに保存されます。ログを表示するには、[https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/) で CloudWatch コンソールを開きます。

### コンソール
<a name="USER_LogAccess.Concepts.PostgreSQL.PublishtoCloudWatchLogs.CON"></a>

**コンソールを使用して CloudWatch Logs に PostgreSQL ログを発行するには**

1. Amazon RDS コンソール ([https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)) を開きます。

1. ナビゲーションペインで、[**データベース**] を選択します。

1. 変更する DB インスタンスを選択してから、[**変更**] を選択します。

1. [**ログのエクスポート**] セクションで、CloudWatch Logs に公開するログを選択します。

   [**ログのエクスポート**] セクションは、CloudWatch Logs への発行をサポートしている PostgreSQL バージョンでのみ使用できます。

1. [**続行**] を選択し、概要ページで [**Modify DB Instance**] (DB インスタンスの変更) を選択します。

### AWS CLI
<a name="USER_LogAccess.Concepts.PostgreSQL.PublishtoCloudWatchLogs.CLI"></a>

PostgreSQL ログは、AWS CLI を使用して発行することができます。以下のパラメータを使用して、[https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) コマンドを呼び出せます。
+ `--db-instance-identifier`
+ `--cloudwatch-logs-export-configuration`

**注記**  
`--cloudwatch-logs-export-configuration` オプションへの変更は常に DB インスタンスに即時適用されます。それで、`--apply-immediately` と `--no-apply-immediately` オプションは効果がありません。

以下の CLI コマンドを呼び出すことで PostgreSQL ログを発行することもできます。
+ [https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-db-snapshot.html](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-db-snapshot.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-to-point-in-time.html](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-to-point-in-time.html)

以下のオプションを使用して、これらの CLI コマンドの 1 つを実行します。
+ `--db-instance-identifier`
+ `--enable-cloudwatch-logs-exports`
+ `--db-instance-class`
+ `--engine`

実行する CLI コマンドに応じて、他のオプションが必要となる場合があります。

**Example CloudWatch Logs にログを発行するようにインスタンスを変更する**  
次の例では、ログファイルが CloudWatch Logs に発行されるよう既存の PostgreSQL DB インスタンスを変更します。`--cloudwatch-logs-export-configuration` 値は JSON オブジェクトです。このオブジェクトのキーは `EnableLogTypes` であり、値は `postgresql` と `upgrade` を任意に組み合わせた文字列の配列です。  
Linux、macOS、Unix の場合:  

```
1. aws rds modify-db-instance \
2.     --db-instance-identifier mydbinstance \
3.     --cloudwatch-logs-export-configuration '{"EnableLogTypes":["postgresql", "upgrade"]}'
```
Windows の場合:  

```
1. aws rds modify-db-instance ^
2.     --db-instance-identifier mydbinstance ^
3.     --cloudwatch-logs-export-configuration '{"EnableLogTypes":["postgresql","upgrade"]}'
```

**Example CloudWatch Logs にログを発行するようにインスタンスを作成する**  
次の例では、PostgreSQL DB インスタンスを作成してログファイルを CloudWatch Logs に発行します。`--enable-cloudwatch-logs-exports` 値は、JSON 形式の文字列の配列です。この文字列は `postgresql` と `upgrade` の任意の組み合わせです。  
Linux、macOS、Unix の場合:  

```
1. aws rds create-db-instance \
2.     --db-instance-identifier mydbinstance \
3.     --enable-cloudwatch-logs-exports '["postgresql","upgrade"]' \
4.     --db-instance-class db.m4.large \
5.     --engine postgres
```
Windows の場合:  

```
1. aws rds create-db-instance ^
2.     --db-instance-identifier mydbinstance ^
3.     --enable-cloudwatch-logs-exports '["postgresql","upgrade"]' ^
4.     --db-instance-class db.m4.large ^
5.     --engine postgres
```

### RDS API
<a name="USER_LogAccess.Concepts.PostgreSQL.PublishtoCloudWatchLogs.API"></a>

PostgreSQL ログは、RDS API を使用して発行することができます。以下のパラメータを使用して、[https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html) アクションを呼び出せます。
+ `DBInstanceIdentifier`
+ `CloudwatchLogsExportConfiguration`

**注記**  
`CloudwatchLogsExportConfiguration` パラメータへの変更は常に DB インスタンスに即時適用されます。それで、`ApplyImmediately` パラメータは効果がありません。

以下の RDS API オペレーションを呼び出すことで PostgreSQL ログを発行することもできます。
+ [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html)
+ [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceFromDBSnapshot.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceFromDBSnapshot.html)
+ [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceToPointInTime.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceToPointInTime.html)

以下のパラメータでこの RDS API オペレーションの 1 つを実行します。
+ `DBInstanceIdentifier`
+ `EnableCloudwatchLogsExports`
+ `Engine`
+ `DBInstanceClass`

実行するオペレーションに応じて、他のパラメータが必要となる場合があります。

 