如何從本機電腦存取私有 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 Machine Image (AMI) 將 EC2 執行個體啟動到 Amazon VPC 的公有子網路。在建立執行個體時,選擇下列選項:
    對於自動指派公共 IP,選擇啟用。或者,將彈性 IP 位址指派給執行個體
    使用 SSH 規則建立新的安全群組
    對於來源,選擇自訂,然後輸入您的 CIDR 區塊。或者,選擇我的 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 Workbench/J 中,使用 JDBC 驅動程式來建立連線設定檔。
  4. 若要在 SQL Workbench/J 中設定 SSH 連線,請選擇 SSH,然後輸入下列資訊:
    對於 SSH 主機名稱,輸入 EC2 執行個體的公有 IP 位址或 DNS。
    對於 SSH 連接埠,輸入 22
    對於使用者名稱,輸入 ec2-user
    對於私有金鑰檔案,輸入您在建立 EC2 執行個體時下載的 .pem 檔案。
    對於密碼,將欄位保留空白。
    對於本機連接埠,輸入任何免費的本機連接埠。依預設,您的 Amazon Redshift 叢集會使用連接埠 5439。
    對於資料庫主機名稱,輸入叢集端點。端點不能包含連接埠號碼或資料庫名稱。
    對於資料庫連接埠,輸入 5439
    選取重寫 JDBC URL 選項。
  5. 選擇確定
  6. 確保正確輸入 JDBC URL、超級使用者名稱和密碼。
  7. 若要確認連線是否正常運作,請選擇測試。如需詳細資訊,請參閱在 SQL Workbench/J 網站中的透過 SSH 通道連接

(選用) 修改 AWS Identity and Access Management (IAM) 使用者的連線

若要以 IAM 使用者身分連接至 Amazon Redshift 叢集,請完成下列步驟來修改連線設定檔:

  1. 檢閱 IAM 使用者政策。IAM 使用者政策必須允許 dbgroup、dbuser,和 dbnameuser 資源的 GetClusterCredentialsJoinGroupCreateClusterUser 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 叢集的名稱。
    對於區域,輸入叢集所在的區域,例如 us-east-1
  4. 在叢集連線設定檔頁面上,選擇測試

相關資訊

為什麼我無法連接至 Amazon Redshift 叢集?

AWS 官方
AWS 官方已更新 7 個月前