Amazon Web Services

System Managerを利用したVPC内Redshiftへの接続

Redshiftを構築するにあたって、private subnet内で構築を求められる要件はよくあるかと思います。

その場合、踏み台サーバーをpublic subnetに配置し、トンネルとして接続することになるのですが、先日のAWS System Managerのアップデートにより、セッションマネージャを利用することで踏み台サーバーをprivate subnetに配置しつつ、接続することができるようになりました。

https://aws.amazon.com/jp/about-aws/whats-new/2022/05/aws-systems-manager-support-port-forwarding-remote-hosts-using-session-manager/

Redshift Data APIを利用することでもアクセス可能ではありますが、cliでは容易にとはいかないですし、選択肢が増えるのは大変喜ばしいです。

以下で簡単に紹介しようと思います。

 

Redshift クラスタの構築

private subnet内に構築します。

コンソールにしたがってよしなに構築しましょう

踏み台EC2サーバーの構築

同じsubnet内に構築しつつ、「arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore」のpolicyを含むroleをattachしてあげましょう。

次にもしVPCエンドポイントの設定なされていない場合は

  • ssm
  • ssmmessages
  • ec2
  • ec2messages
  • s3

を作成しましょう。

問題なく設定されている場合、セッションマネージャのコンソールにインスタンスが追加されます。

 

しかし、このバージョンのssm agentの場合、まだリモートサーバーのポートフォワーディングが対応しておらずエラーとなります。
Run commandなどを利用してアップデートしてあげましょう。
https://dev.classmethod.jp/articles/private-ec2-ssm-vpcendpoint-policy/
こちらを参照させていただきました。

Redshiftへの接続

試しにローカルより接続を試みます。


$ psql -h redshift-cluster-private.xxxxxxxx.ap-northeast-1.redshift.amazonaws.com -p 5439 -U awsuser -d dev

この状態で当然timeoutとなりました。

それでは、セッションマネージャを利用してトンネルをはります。


$ aws ssm start-session \
--target i-xxxx \
--document-name AWS-StartPortForwardingSessionToRemoteHost \
--parameters '{"host":["redshift-cluster-private.ctmohfbtomhz.ap-northeast-1.redshift.amazonaws.com"],"portNumber":["5439"], "localPortNumber":["5439"]}'

この状態で、psqlで接続します。


$ psql -h redshift-cluster-private.xxxxxxxx.ap-northeast-1.redshift.amazonaws.com -p 5439 -U awsuser -d dev
Password for user awsuser:
dev=#

簡単な紹介でしたが以上となります。
private subnetで通信を完結できることから様々なユースケースに対応できるかと思います。
弊社の案件でもprivate subent内のRedshiftは多く早速利用しようと考えています。

弊社ではTableauやGCP/AWSなどのパブリッククラウドを使ったデータ分析基盤構築コンサルティングサービスやGoogleAnalytics/AdobeAnalyticsなどの各Martechツールの導入実装コンサルティングサービスを提供しております。
お問い合わせはこちらからどうぞ。

Amazon Redshift ビルド168まとめ前のページ

Sansan:メール署名取り込み機能を設定してみた次のページ

ピックアップ記事

  1. 最速で理解したい人のためのIT用語集

関連記事

  1. Amazon Web Services

    ELB (ALB・NLB・CLB) をサクッと学ぶ

    ELB(Elastic Load Balancing)とは3種類の…

  2. Amazon Web Services

    Pythonを用いたAmazon S3の署名付きURLの発行と、発行時の注意点

    こんにちは、エクスチュアの黒岩と申します。つい最近、AWSア…

  3. Amazon Web Services

    Amazon Redshift ビルド168まとめ

    この記事はAmazon Redshiftのアップデート情報からどのよう…

  4. Amazon Web Services

    パブリックサブネット vs プライベートサブネット

    パブリックサブネット と プライベートサブネットの違いパブリックサ…

  5. Amazon Web Services

    Direct Connect vs Site to Site VPN

    AWS Direct Connect と Site to Site V…

  6. Amazon Web Services

    Databricks Community Editionを使ってApache Sparkを無料で学ぶ…

    こんにちは、エクスチュアの權泳東(権泳東/コン・ヨンドン)です。…

カテゴリ
最近の記事
  1. Looker Studioで日付フィルターの開始日・終了日の…
  2. Streamlitでdbt-elementary風ダッシュボ…
  3. Adobe WebSDK FPIDでECIDの復元を検証
  4. dbt Projects on Snowflakeで作成した…
  5. Dataformでtype:’increment…
  1. Tableau

    Tableau:KPI達成状況を把握出来るグラフを作る
  2. Tableau

    Tableau-フィルタの連動
  3. Tableau

    Tableau Desktop 2020.1の新機能を全て解説してみた。
  4. Tableau

    上位N件セットを使って「その他」を効果的に表現する【Tableau】
  5. Creating a dbt-elementary-style dashboard with Streamlit

    dbt Projecs on Snowflake

    Streamlitでdbt-elementary風ダッシュボードを作成する
PAGE TOP