Amazon Redshift クラスターに接続できません

最終更新日: 2020 年 2 月 11 日

Amazon Redshift クラスターに接続できません。

簡単な説明

Amazon Redshift クラスターに接続するには、次を確認します。

  • Amazon Redshift クラスターがパブリックサブネットにあり、インターネット経由でアクセスする場合は、[パブリックにアクセス可能] が [はい] に設定されていることを確認してください。
  • Amazon Redshift クラスターがプライベートサブネット内にある場合は、パブリックサブネット内のネットワークアドレス変換 (NAT) ゲートウェイを使用してインターネットにアクセスします。プライベートサブネット内のクラスターは、NAT ゲートウェイを使用してインターネットに接続できますが、インターネットはクラスターへの接続を開始できません。
  • Amazon Redshift クラスターが別の Virtual Private Cloud (VPC) にあるリソースと通信するようにする場合は、VPC ピア接続を作成します。

解決方法

クラスターはパブリックサブネット内にありますが、自分のローカルコンピュータからインターネット経由で接続できません。

注意: 以下の手順を実行する前に、VPC にインターネットゲートウェイが接続されていることを確認してください。

  1. Amazon Redshift コンソールを開きます。
  2. クラスターを選択します。
  3. 接続しようとしているクラスターを選択します。
  4. [アクション] タブを選択し、[パブリックにアクセス可能な設定を変更] を選択します。
  5. VPC の外部のインスタンスとデバイスがクラスターエンドポイントを介してデータベースに接続するように許可するには、[はい] を選択します。
  6. Elastic IP アドレスを選択します。
  7. 確認を選択します。

クラスターはプライベートサブネット内にありますが、自分のローカルコンピュータから接続できません。

ローカルマシンに接続するには、クラスターがパブリックサブネットに存在する必要があります。

ローカルマシンからクラスターにアクセスするには、次の手順を実行します。

  1. Amazon Redshift コンソールを開きます。
  2. クラスターを選択します。
  3. 接続しようとしているクラスターを選択します。
  4. [構成] タブを選択して、[クラスタープロパティ] ページを開きます。
  5. [VPC を表示] を選択して、Amazon VPC コンソールを開きます。
  6. ナビゲーションペインで [ルートテーブル] を選択します。
  7. クラスターが存在するサブネットに関連付けられている [ルートテーブル] を選択します。
  8. [編集] を選択します。
  9. [ルートを追加] をクリックします。
    IPv4 トラフィックの場合、送信先フィールド内で「0.0.0.0/0と入力し、ターゲットフィールドにインターネットゲートウェイ ID を選択します。
    IPv6 トラフィックの場合、送信先フィールド内で「::/0と入力し、ターゲットフィールドにインターネットゲートウェイ ID を選択します。
  10. [保存] を選択します。

別の VPC にある Amazon Elastic Compute Cloud (Amazon EC2) インスタンスから自分のクラスターにアクセスできません。

VPC 間に VPC ピアリング接続を作成します。VPC ピアリング接続により、2 つの VPC がプライベート IP アドレスを使用して互いに通信できるようになります。

  1. VPC ピアリング接続の作成と使用の手順通りに実行します。
    注意:
    VPC が同じ AWS アカウントにある場合は、IPv4 CIDR ブロックが重ならないようにしてください。
  2. 両方のルートテーブルを更新します
  3. セキュリティグループを更新して、ピア VPC グループを参照できるようにします
  4. EC2 インスタンスで、ネットワークユーティリティ (netcat など) を使用し、VPC ピアリング接続をテストします。例:
nc -zv <hostname> <port>

VPC ピアリング接続に成功すると、次の出力が表示されます。

$ nc -zv example.123456789.us-east-1.redshift.amazonaws.com 5439
found 0 associations
found 1 connections:
     1:    flags=82<CONNECTED,PREFERRED>
    outif en0
    src xx.xxx.xxx.xx port 53396
    dst xx.xxx.xxx.xxx port 5439
    rank info not available
    TCP aux info available

Connection to example.123456789.us-east-1.redshift.amazonaws.com port 5439 [tcp/*] succeeded!