ローカルマシンからプライベートの Amazon Redshift クラスターにアクセスする方法を教えてください。
ローカルコンピュータを使用して、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 クラスターを作成する
Amazon VPC、EC2 インスタンスおよび Amazon Redshift クラスターを作成するには、次の手順を実行します。
-
パブリックサブネットとプライベートサブネットを使用して Amazon VPC を作成します。
-
Amazon Linux 2 Amazon マシンイメージ (AMI) から Amazon VPC のパブリックサブネットに EC2 インスタンスを起動します。インスタンスを作成するときは、次のオプションを選択します。
[パブリック IP の自動割り当て] で [有効化] を選択します。または、インスタンスに Elastic IP アドレスを割り当てます。
SSH ルールを使用して新しいセキュリティグループを作成します。
[ソース] で [カスタム] を選択し、CIDR ブロックを入力します。または、[My IP] を選択します。 -
Amazon Redshift コンソール で、クラスターサブネットを作成します。次の情報を入力します。
[VPC ID] には、お使いの Amazon VPC の ID を選択します。
[サブネット ID] で、プライベートサブネットの ID を選択します。 -
インスタンスのセキュリティグループからのインバウンドトラフィックを許可するルールをセキュリティグループに追加します。次の情報を入力します。
[タイプ] で、[カスタム TCP] を選択します。
[ポート範囲] に、Amazon Redshift のデフォルトポート 5439 を入力します。
[送信元] で [カスタム] を選択し、セキュリティグループの名前を入力します。 -
新しい Amazon Redshift クラスターを起動するか、スナップショットからクラスターを復元します。[その他の構成] ページで、次のオプションを選択します。
[VPC を選択] で、お使いの Amazon VPC を選択します。
[クラスターサブネットグループ] で、サブネットグループを選択します。
[一般公開] ** で [いいえ] を選択します。
VPC セキュリティグループ では、セキュリティグループを選択します。クラスターが使用可能な**状態になるまで待ちます。 -
次のコマンドを実行して、ローカルマシンから EC2 インスタンスに接続します。
ssh -i "your_key.pem" ec2-user@your_EC2_endpoint
**注:**your_key.pem と your_EC2_endpoint を自分の値に置き換えてください。詳細については、「SSH を使用して Linux または macOS から Linux インスタンスに接続します。」を参照してください。
-
次のコマンドを実行して telnet をインストールします。
sudo yum install telnet
-
telnet を使用して Amazon Redshift クラスターへの接続をテストするには、次のコマンドを実行します。
telnet cluster-endpoint cluster-port
**注:**cluster-endpoint と cluster-port を自分の値に置き換えてください。
または、次のコマンドを実行し、dig を使用して、ローカルマシンが Amazon Redshift クラスターのプライベート IP アドレスにアクセスできることを確認します。dig cluster-endpoint
**注:**cluster-endpoint をご利用のクラスターエンドポイントに置き換えてください。
トンネルの作成
トンネルを作成するには、次の手順を実行します。
- SQL Workbench/J をローカルマシンにインストールします。
- 最新の Amazon Redshift JDBC ドライバーをダウンロードしてください。
- SQL ワークベンチ/J では、JDBC ドライバーを使用して接続プロファイルを作成します。
- SQL Workbench/J で SSH 接続を設定するには、[SSH] を選択し、次の情報を入力します。
[SSH ホスト名] には、EC2 インスタンスのパブリック IP アドレスまたは DNS を入力します。
[SSH ポート] には、22 と入力します。
[ユーザー名] に ec2-user と入力します。
[プライベートキーファイル] に、EC2 インスタンスの作成時にダウンロードした.pem ファイルを入力します。
[パスワード] フィールドは空白のままにします。
[ローカルポート] に、空いているローカルポートを入力します。Amazon Redshift クラスターはデフォルトでポート 5439 を使用します。
[DB ホスト名] には、クラスターエンドポイントを入力します。エンドポイントにポート番号やデータベース名を含めることはできません。
[DB ポート] に 5439 と入力します。
[JDBC URL の書き換え] オプションを選択します。 - [OK] を選択します。
- JDBC URL、スーパーユーザー名、およびパスワードを正しく入力してください。
- 接続が機能していることを確認するには、[Test] を選択します。詳細については、SQL Workbench/J ウェブサイトの「Connecting through an SSH tunnel」を参照してください。
(オプション) AWS ID およびアクセス管理 (IAM) ユーザーの接続を変更する
IAM ユーザーとして Amazon Redshift クラスターに接続するには、次の手順を実行して接続プロファイルを変更します。
- IAM ユーザーポリシーを確認してください。IAM ユーザーポリシーで、dbgroup、dbuser、dbname リソースに GetClusterCredentials、**JoinGroup **、CreateClusterUser の Amazon Redshift アクションを許可する必要があります。以下に IAM ポリシーの例を示します。
注:us-west-2 はクラスターが属する AWS リージョンに、012345678912 は AWS アカウント ID に、user_name は Amazon Redshift ユーザーの名前に置き換えてください。または、特定のユーザー名の代わりに「*」を使用することもできます。{ "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" ] } ] }
- SQL Workbench/J で、接続プロファイルの JDBC URL の最初の部分を jdbc:redshift:iam に変更します。たとえば、JDBC URL を jdbc:redshift:iam://127.0.0.1:5439/example に変更します。
- [拡張プロパティ] を選択し、次の情報を入力します。
[AccessKeyID] には、IAM ユーザーの [アクセスキー ID] を入力します。
[SecretAccessKey] には、IAM ユーザーのシークレットアクセスキーを入力します。
(オプション) [DbGroups] では、このオプションを選択して IAM ユーザーを強制的に既存のグループに参加させます。
[DbUser] には、IAM ユーザーの名前を入力します。
[AutoCreate] では、オプションを [true] に設定します。
[ClusterID] には、Amazon Redshift クラスターの名前を入力します。
[Region] には、us-east-1 など、クラスターが属するリージョンを入力します。 - クラスター接続プロファイルページで、[テスト] を選択します。
関連情報
関連するコンテンツ
- 質問済み 6ヶ月前lg...
- 質問済み 2ヶ月前lg...
- 質問済み 6ヶ月前lg...
- 質問済み 3年前lg...
- 質問済み 6ヶ月前lg...
- AWS公式更新しました 8ヶ月前
- AWS公式更新しました 2ヶ月前