2017-09-01 3 views
2

RDSでPostgres 9.5を使用し、バルク挿入を実行する際にSQLログをオフにするユースケースがあります。一括挿入SQ​​L文は大きく、設定されたlog_min_durationよりも時間がかかることがわかっているので、ロギングのメリットはあまりありません。RDS PostgresはSQL log_statementの値を変更します

this postで述べたように、私はpsqlクライアントでset_configを実行しようとしました。残念ながら、私は許可が拒否されます。 psql経由でログインしたユーザは、rds_superuserのメンバーです。

SELECT current_setting('log_statement'); 
┌─────────────────┐ 
│ current_setting │ 
├─────────────────┤ 
│ mod    │ 
└─────────────────┘ 
(1 row) 

SELECT set_config('log_statement', 'mod', false); 

ERROR: 42501: permission denied to set parameter "log_statement" 
LOCATION: set_config_option, guc.c:5804 

我々は許可拒否を取得し、RDS

+0

'rds_superuser'はあなたにローカルのスーパーユーザ権限を与えます(例えば' show is_superuser; 'でチェックします)? ["*スーパーユーザーのみがこの設定を変更できます*"](https://www.postgresql.org/docs/9.5/static/runtime-config-logging.html#GUC-LOG-STATEMENT)? – dhke

+0

ありがとう@dhke、それは問題でした - rds_superuserはis_superuserを許可しません。この部分については知らなかった。ありがとう。 – sumit

答えて

3

RDS上のpostgresに、実行時にこの設定を変更するにはその可能性はバニラのPostgresに異なる権限モデルを使用している場合、第二の人々が知っている理由は上の任意のアイデアなので、 rds_superuserロールには、実際のスーパーユーザーが持つすべての権限が実際にはありません。事実上、RDSは「管理された」データベースホスティングソリューションであり、完全なアクセス権は、その管理を破るか妥協する能力を与えます。代わりに、この役割はa list of specific permissionsです。

ほとんどの設定では、Amazonが "Parameter Groups"と呼ぶものを使用する必要があります。これはAWSコンソールまたはAPIで管理されます。

logging in Postgres RDSに特定のページがあり、パラメータグループを使用してlog_statementオプションを設定する例がいくつかあります。

これは、データベース接続で設定を動的に変更できないことを意味します。 pl/pgsql機能では、the AWS APIまたはofficial CLI clientを使用してバッチジョブの一部として変更することができます。

+0

この回答を受け入れるつもりです。それはパーミッションの部分に答えてくれますし、アプリがRDSでlog_statementの設定を変更できるかどうか – sumit

関連する問題