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

所要時間2分
0

ローカルコンピュータを使用して、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 クラスターを作成するには、次の手順を実行します。

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

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

  3. Amazon Redshift コンソール で、クラスターサブネットを作成します。次の情報を入力します。
    [VPC ID] には、お使いの Amazon VPC の ID を選択します。
    [サブネット ID] で、プライベートサブネットの ID を選択します。

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

  5. インスタンスのセキュリティグループからのインバウンドトラフィックを許可するルールをセキュリティグループに追加します。次の情報を入力します。
    [タイプ] で、[カスタム TCP] を選択します。
    [ポート範囲] に、Amazon Redshift のデフォルトポート 5439 を入力します。
    [送信元][カスタム] を選択し、セキュリティグループの名前を入力します。

  6. 新しい Amazon Redshift クラスターを起動するかスナップショットからクラスターを復元します[その他の構成] ページで、次のオプションを選択します。
    [VPC を選択] で、お使いの Amazon VPC を選択します。
    [クラスターサブネットグループ] で、サブネットグループを選択します。
    [一般公開] ** で [いいえ] を選択します。
    VPC セキュリティグループ では、セキュリティグループを選択します。クラスターが
    使用可能な**状態になるまで待ちます。

  7. 次のコマンドを実行して、ローカルマシンから EC2 インスタンスに接続します。

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

    **注:**your_key.pemyour_EC2_endpoint を自分の値に置き換えてください。詳細については、「SSH を使用して Linux または macOS から Linux インスタンスに接続します。」を参照してください。

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

    sudo yum install telnet
  9. telnet を使用して Amazon Redshift クラスターへの接続をテストするには、次のコマンドを実行します。

    telnet cluster-endpoint cluster-port

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

    dig cluster-endpoint

    **注:**cluster-endpoint をご利用のクラスターエンドポイントに置き換えてください。

トンネルの作成

トンネルを作成するには、次の手順を実行します。

  1. SQL Workbench/J をローカルマシンにインストールします。
  2. 最新の Amazon Redshift JDBC ドライバーをダウンロードしてください。
  3. SQL ワークベンチ/J では、JDBC ドライバーを使用して接続プロファイルを作成します。
  4. SQL Workbench/J で SSH 接続を設定するには、[SSH] を選択し、次の情報を入力します。
    [SSH ホスト名] には、EC2 インスタンスのパブリック IP アドレスまたは DNS を入力します。
    [SSH ポート] には、22 と入力します。
    [ユーザー名]ec2-user と入力します。
    [プライベートキーファイル] に、EC2 インスタンスの作成時にダウンロードした.pem ファイルを入力します。
    [パスワード] フィールドは空白のままにします。
    [ローカルポート] に、空いているローカルポートを入力します。Amazon Redshift クラスターはデフォルトでポート 5439 を使用します。
    [DB ホスト名] には、クラスターエンドポイントを入力します。エンドポイントにポート番号やデータベース名を含めることはできません。
    [DB ポート]5439 と入力します。
    [JDBC URL の書き換え] オプションを選択します。
  5. [OK] を選択します。
  6. JDBC URL、スーパーユーザー名、およびパスワードを正しく入力してください。
  7. 接続が機能していることを確認するには、[Test] を選択します。詳細については、SQL Workbench/J ウェブサイトの「Connecting through an SSH tunnel」を参照してください。

(オプション) AWS ID およびアクセス管理 (IAM) ユーザーの接続を変更する

IAM ユーザーとして Amazon Redshift クラスターに接続するには、次の手順を実行して接続プロファイルを変更します。

  1. IAM ユーザーポリシーを確認してください。IAM ユーザーポリシーで、dbgroup、dbuser、dbname リソースに GetClusterCredentials、**JoinGroup **、CreateClusterUser の Amazon Redshift アクションを許可する必要があります。以下に IAM ポリシーの例を示します。
    {
        "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"
                ]
            }
        ]
    }
    注:us-west-2 はクラスターが属する AWS リージョンに、012345678912 は AWS アカウント ID に、user_name は Amazon Redshift ユーザーの名前に置き換えてください。または、特定のユーザー名の代わりに「*」を使用することもできます。
  2. SQL Workbench/J で、接続プロファイルの JDBC URL の最初の部分を jdbc:redshift:iam に変更します。たとえば、JDBC URL を jdbc:redshift:iam://127.0.0.1:5439/example に変更します。
  3. [拡張プロパティ] を選択し、次の情報を入力します。
    [AccessKeyID] には、IAM ユーザーの [アクセスキー ID] を入力します。
    [SecretAccessKey] には、IAM ユーザーのシークレットアクセスキーを入力します。
    (オプション) [DbGroups] では、このオプションを選択して IAM ユーザーを強制的に既存のグループに参加させます。
    [DbUser] には、IAM ユーザーの名前を入力します。
    [AutoCreate] では、オプションを [true] に設定します。
    [ClusterID] には、Amazon Redshift クラスターの名前を入力します。
    [Region] には、us-east-1 など、クラスターが属するリージョンを入力します。
  4. クラスター接続プロファイルページで、[テスト] を選択します。

関連情報

Amazon Redshift クラスターに接続できないのはなぜですか?

AWS公式
AWS公式更新しました 4ヶ月前
コメントはありません