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

最終更新日: 2021 年 7 月 26 日

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

簡単な説明

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

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

解決方法

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

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

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

2.    [クラスター] を選択します。

3.    接続しようとしているクラスターを選択します。

4.    [Actions] (アクション) を選択します。

5.    [パブリックアクセスに可能な設定を変更] を選択します。

6.    VPC の外部のインスタンスとデバイスがクラスターエンドポイントを介してデータベースに接続するように許可するには、[パブリックにアクセス可能な設定を変更] を選択します。

7.    [有効にする] を選択します。

8.    (オプション) Elastic IP アドレスを選択します。

9.    [確定] を選択し、変更を保存します。

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

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

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

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.    [Save (保存)] を選択します。

別の 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!