Amazon Redshift 接続エラーのトラブルシューティング方法を教えてください。

最終更新日: 2020 年 9 月 10 日

Amazon Redshift クラスターに接続できませんこれを解決するにはどうすればよいですか?

解決方法

Amazon Redshift クラスターが最近サイズ変更されたか、スナップショットから復元された

Amazon Redshift クラスターが最近サイズ変更またはスナップショットから復元された場合は、クラスターのサブネットを確認してください。クラスターは、スナップショットのサイズ変更または復元を行う前に、同じサブネット内で起動する必要があります。

Amazon Redshift クラスターが最近サイズ変更または復元されなかった場合は、ネットワーク設定を確認してください。ネットワーク設定は、古いサブネットと新しいサブネットの両方で同じである必要があります。

Amazon Redshift クラスターがパブリックサブネットに存在する

パブリックサブネットにある Amazon Redshift クラスターに接続する場合は、以下を確認してください。

  • Amazon Redshift クラスターが「パブリックにアクセス可能」に設定されていることを確認します。 パブリックにアクセス可能なオプションの詳細については、「VPC でのクラスターの管理」を参照してください。
  • ルートテーブルにインターネットゲートウェイがアタッチされていることを確認します。

接続をテストするには、telnet を使用して、Amazon Redshift クラスターへの接続をテストします。

telnet <cluster endpoint> <cluster port>

Amazon Redshift クラスターがプライベートサブネットに存在する

Amazon Redshift クラスターがプライベートサブネットに存在する場合は、以下を確認してください。

  • 必ず NAT ゲートウェイをパブリックサブネットのルートテーブルにアタッチしてください。NAT ゲートウェイにより、プライベートサブネット内のクラスターがインターネットに接続できます。
  • クラスターが「パブリックにアクセス可能」に設定されていないことを確認してください。

クライアントが Amazon Redshift クラスターのリーダーノードのプライベート IP アドレスに到達できることを確認するには、dig コマンドを使用します。

dig <cluster endpoint>

Amazon Redshift クラスターへの接続をテストするには、telnet コマンドを使用します。

telnet <cluster endpoint><cluster port>

Telnet が失敗するか、Amazon Redshift クラスターにまだアクセスできない

telnet コマンドで Amazon Redshift クラスター接続が「失敗」と示された場合は、次の条件に該当することを確認します。

  • セキュリティグループのインバウンドルールでは、タイプが TCP の Amazon Redshift ポート (デフォルト 5439) が許可されます。
  • Amazon Redshift クラスターに接続する CIDR 範囲または IP は、セキュリティグループの進入ルールに追加されます。

telnet コマンドで Amazon Redshift クラスター接続が「成功」と示されているが、クラスターがクライアントからアクセスできない状態になっている場合は、ネットワークのファイアウォールを確認してください。ファイアウォールが Amazon Redshift ポートをブロックしている可能性があります (デフォルトのポートは 5439)。

無効な操作による接続エラー

Amazon Redshift クラスターの任意の接続で SSL を有効にする必要がある場合、次の接続エラーが表示されることがあります。

Error: [Amazon](500310) Invalid operation: no pg_hba.conf entry for host "::ffff:205.xxx.xxx.xxx", user "username", database "dbname", SSL off;

require_ssl パラメータが「true」に設定されているかどうかを確認するには、次の手順に従います。

1.    Amazon Redshift コンソールを開きます。

2.    [設定] タブを選択します。

3.    Amazon Redshift クラスターに関連付けられているパラメータグループを変更します。

4.    (オプション) AWS コマンドラインインターフェイス (AWS CLI) を使用して SSL 設定を確認します。

describe-cluster-parameters

SSL 設定が「true」に設定されている場合は、次のアプローチを検討してください。

  • require_ssl パラメータを「false」(デフォルトのパラメーター値) に戻します。SSL 設定を変更するには、Amazon Redshift クラスターに関連付けられているパラメータグループを編集します。パラメータグループは、Amazon Redshift コンソールの [パラメータ] タブから編集できます。
  • SSL 接続がユースケースまたは環境の要件である場合は、接続文字列に必要な SSL パラメータが含まれていることを確認してください。

以下はその例です。

jdbc:redshift://examplecluster.abc123xyz789.us-west-2.redshift.amazonaws.com:5439/dev?ssl=true

致命的な接続エラー

Amazon Redshift クラスターに開いている接続が多すぎる場合、次のエラーが表示されます。

Error: FATAL:  connection limit [500]/[2000] exceeded for user

エラーメッセージが示しているように、Amazon Redshift の dc1.large、dc2.large、ds2.xlarge ノードタイプの最大接続制限は 500 です。ds2.8xlarge、dc2.8xlarge、dc1.8xlarge、ra3.4xlarge、ra3.16xlarge ノードの場合、最大接続制限は 2000 です。

Amazon Redshift クラスターで開いている接続の数を確認するには、次の手順を実行します。

1.    Amazon CloudWatch コンソールを開きます。

2.    Amazon CloudWatch Logs のエントリで DatabaseConnections メトリクスを探します。

3.    STL_CONNECTION_LOG テーブルを使用して、開いている接続を確認します。

select recordtime, username, dbname, remotehost, remoteport
from stl_connection_log
where event = 'initiating session'
and pid not in
(select pid from stl_connection_log
where event = 'disconnecting session')
order by 1 desc;

4.    STV_SESSIONS テーブルを使って、Amazon Redshift のアクティブなユーザーセッションに関する情報を表示します。

select * from stv_sessions;

開いている接続が多数ある場合は、次の方法を検討してください。

  • PG_TERMINATE_BACKEND コマンドを使用して、アイドル状態のセッションをシャットダウンします。
  • Amazon Redshift クラスターへの接続に使用するオペレーティングシステムに基づいて、クライアント側の TCP/IP タイムアウト設定を変更します 。TCP/IP タイムアウト設定の更新は、アイドル状態のセッションが開いたままにならないようにするのに役立ちます。

接続拒否エラー

Amazon Redshift クラスターが接続を確立できない場合、「Connection Refused」(接続が拒否されました) というエラーを受け取ることがあります。

Error:  amazon 500150 error setting/closing connection: operation timed out/ connection refused.

このエラーは、Amazon Redshift クラスターへのアクセス許可の問題を示している可能性があります。この接続エラーを解決するには、次の方法を検討してください。

  • Amazon Virtual Private Cloud (Amazon VPC) でクラスターを作成した場合は、クライアント CIDR/IP アドレスを VPC セキュリティグループに追加します。クラスターの VPC セキュリティグループの設定の詳細については、「VPC でのクラスターの管理」を参照してください。
  • VPC の外部でクラスターを作成した場合は、クライアント CIDR/IP アドレスをクラスターセキュリティグループに追加します。クラスターセキュリティグループの設定の詳細については、「Amazon Redshift クラスターセキュリティグループ」を参照してください。