如何從本機電腦存取私有 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 Machine Image (AMI) 將 EC2 執行個體啟動到 Amazon VPC 的公有子網路。在建立執行個體時,選擇下列選項:
對於自動指派公共 IP,選擇啟用。或者,將彈性 IP 位址指派給執行個體。
使用 SSH 規則建立新的安全群組。
對於來源,選擇自訂,然後輸入您的 CIDR 區塊。或者,選擇我的 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 Workbench/J 中,使用 JDBC 驅動程式來建立連線設定檔。
- 若要在 SQL Workbench/J 中設定 SSH 連線,請選擇 SSH,然後輸入下列資訊:
對於 SSH 主機名稱,輸入 EC2 執行個體的公有 IP 位址或 DNS。
對於 SSH 連接埠,輸入 22。
對於使用者名稱,輸入 ec2-user。
對於私有金鑰檔案,輸入您在建立 EC2 執行個體時下載的 .pem 檔案。
對於密碼,將欄位保留空白。
對於本機連接埠,輸入任何免費的本機連接埠。依預設,您的 Amazon Redshift 叢集會使用連接埠 5439。
對於資料庫主機名稱,輸入叢集端點。端點不能包含連接埠號碼或資料庫名稱。
對於資料庫連接埠,輸入 5439。
選取重寫 JDBC URL 選項。 - 選擇確定。
- 確保正確輸入 JDBC URL、超級使用者名稱和密碼。
- 若要確認連線是否正常運作,請選擇測試。如需詳細資訊,請參閱在 SQL Workbench/J 網站中的透過 SSH 通道連接。
(選用) 修改 AWS Identity and Access Management (IAM) 使用者的連線
若要以 IAM 使用者身分連接至 Amazon Redshift 叢集,請完成下列步驟來修改連線設定檔:
- 檢閱 IAM 使用者政策。IAM 使用者政策必須允許 dbgroup、dbuser,和 dbnameuser 資源的 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 叢集的名稱。
對於區域,輸入叢集所在的區域,例如 us-east-1。 - 在叢集連線設定檔頁面上,選擇測試。
相關資訊
相關內容
- 已提問 9 個月前lg...
- 已提問 9 個月前lg...
- 已提問 6 個月前lg...
- 已提問 6 個月前lg...
- 已提問 1 年前lg...
- AWS 官方已更新 1 年前
- AWS 官方已更新 9 個月前
- AWS 官方已更新 2 年前
- AWS 官方已更新 2 年前