ローカルマシンからプライベート Amazon Redshift クラスターにアクセスする方法を教えてください。

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

ローカルコンピュータを使用して、Amazon Virtual Private Cloud (Amazon VPC) のプライベートサブネットにある Amazon Redshift クラスターにアクセスしたいです。どうすればよいですか?

簡単な説明

Amazon Elastic Compute Cloud (Amazon EC2) インスタンスと SQL Workbench/J を使用して、SSH トンネルを作成します。トンネルは、ローカルマシンからのすべての着信トラフィックをプライベート Amazon Redshift クラスターにルーティングします。

解決方法

Amazon VPC、EC2 インスタンス、Amazon Redshift クラスターを作成する

1.    パブリックサブネットとプライベートサブネットを持つ Amazon VPC を作成します

2.    Amazon Linux 2 Amazon マシンイメージ (AMI) から、ステップ 1 で作成した Amazon VPC のパブリックサブネットに、EC2 インスタンスを起動します 。インスタンスを作成するには、次の方法があります。
ステップ 3 の 自動割り当てパブリック IP で、有効化を選択します。または、インスタンスに Elastic IP アドレスを割り当てることでもインスタンスを作成できます
ステップ 6 で、SSH ルールを使用して新しいセキュリティグループを作成します。[ソース] で [カスタム] を選択してから、IP CIDR ブロックを入力するか、 [My IP] をクリックします。

3.    Amazon Redshift コンソールで、クラスターサブネットグループを作成します
[VPC ID] で、ステップ 1 で作成した Amazon VPC の ID を選択します。
[Subnet ID] で、プライベートサブネットの ID を選択します。

4.    新しい セキュリティグループを作成します。

5.    インスタンスのセキュリティグループからのインバウンドトラフィックを許可する新たに作成したセキュリティグループにルールを追加します。
[Type] で、[Custom TCP] を選択します。
[Port Range] に、5439 (Amazon Redshift のデフォルトのポート) を入力します。
[Source] で、[Custom] をクリックしてから、ステップ 2 で作成したセキュリティグループの名前を入力します。

6.    新しい Amazon Redshift クラスターを起動するか、スナップショットからクラスターを復元します。[追加の設定] ページで、以下のオプションを選択します。
[VPC の選択] で、ステップ 1 で作成した Amazon VPC を選択します。
[クラスターサブネットグループ] で、ステップ 3 で作成したグループを選択します。
[Publicly accessible] で、[No] を選択します。
[VPC セキュリティグループ] で、ステップ 4 で作成したセキュリティグループを選択します。

クラスターが利用可能な状態になるまで待ってから続行してください。

7.    次のコマンドを実行して、ローカルマシンから EC2 インスタンスに接続します。your_key.pemyour_EC2_endpoint をご自分の値に置き換えます。詳細については、SSH を使用した Linux インスタンスへの接続をご参照ください。

ssh -i "your_key.pem" ec2-user@your_EC2_endpoint

8.    telnet をインストールするには、次のコマンドを実行します。

sudo yum install telnet

9.    telnet を使用して、Amazon Redshift クラスターへの接続をテストします。次のコマンドで、 cluster-endpointcluster-port をご自分の値に置き換えます。

telnet cluster-endpoint cluster-port

または、dig を使用して、ローカルマシンが Amazon Redshift クラスターのプライベート IP アドレスにアクセスできることを確認します。次のコマンドで、cluster-endpoint をご自分の値に置き換えます。

dig cluster-endpoint

トンネルの作成

1.    ローカルマシンに SQL Workbench/J をインストールします 。

2.    最新の Amazon Redshift JDBC ドライバーをダウンロードします。

3.    SQL Workbench/J で、ステップ 2 でダウンロードした JDBC ドライバーを使用して 接続プロファイルを作成します。

4.    SQL Workbench/J で SSH 接続を設定するには、[SSH] を選択し、次のように入力します。
SSH hostname: EC2 インスタンスのパブリック IP アドレスまたは DNS
SSH ポート: 22
ユーザーネーム: ec2-user
プライベート キーファイル: EC2 インスタンスの作成時にダウンロードした .pem ファイル
パスワード: このフィールドはブランクのままにします
ローカルポート: 任意の空きローカルポート (Amazon Redshift クラスターはデフォルトでポート 5439 を使用します)
DB ホスト名: クラスターエンドポイント (ポート番号やデータベース名を含めないでください)
DB ポート: 5439
Rewriet JDBC URL: このオプションを選択します

5.    [OK] をクリックして SSH 設定を保存します。

6.    JDBC URL とスーパーユーザー名およびパスワードが正しく入力されていることを確認します。

7.    [Test] をクリックして、 この接続が機能していることを確認します。詳細については、SQL Workbench/J ドキュメントの「Connecting through an SSH tunnel」をご参照ください。

(オプション) AWS Identity and Access Management(IAM) ユーザーの接続を変更する

IAM ユーザーとして Amazon Redshift クラスターに接続するには、前のステップで作成した接続プロファイルを変更します。

1.    IAM ユーザーに、dbgroup、dbuser、dbname リソースに対する GetClusterCredentials、JoinGroup、CreateClusterUser Amazon Redshift アクションを許可するポリシーがあることを確認します。次のように各値を置き換えます。
us-west-2: クラスターがあるリージョン
012345678912: AWS アカウント ID
clustername: クラスター名
group_name: データベースグループ名
user_name: Amazon Redshift ユーザー名 (特定のユーザーを指定する代わりに「*」を使用することもできます)
database_name: データベース名

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "redshift:GetClusterCredentials",
                "redshift:CreateClusterUser",
                "redshift:JoinGroup"
            ],
            "Resource": [
                "arn:aws:redshift:eu-west-2:012345678912:dbgroup:clustername/group_name",
                "arn:aws:redshift:eu-west-2:012345678912:dbuser:clustername/user_name or * ",
                "arn:aws:redshift:eu-west-2:012345678912:dbname:clustername/database_name"
            ]
        }
    ]
}

2.    SQL Workbench/J で、接続プロファイルの JDBC URL の最初の部分を jdbc: redshift: iam に変更します。(たとえば、JDBC URLを「jdbc: redshift: iam: //127.0.0. 1:5439 /example」に変更します。)

3.    Extended Properties を選択し、次のプロパティを作成します。
AccessKeyID
: IAM ユーザーのアクセスキー ID
SecretAccessKey: IAM ユーザーのシークレットアクセスキー
DbGroups: IAM ユーザーが既存のグループに参加するよう強制します
DbUser: IAM ユーザー名
AutoCreate: true に設定します
ClusterID
: Amazon Redshift クラスター名 (データベース名ではありません)
Region: クラスターがある AWS リージョン (us-east-1など)

4.    クラスター接続プロファイルのページで、[Test] を選択します。


この記事はお役に立ちましたか?


請求に関するサポートまたは技術サポートが必要ですか?