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ツールの導入実装コンサルティングサービスを提供しております。
お問い合わせはこちらからどうぞ。

ピックアップ記事

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

関連記事

  1. Amazon Web Services

    【初心者向け】AWSを学ぶ前に確認したい用語

    【初心者向け】AWSを学ぶ前に確認したい用語クラウド「インター…

  2. Adobe Analytics

    Adobe Analytics: DWHレポートをAWSのS3バケットに配信する

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

  3. Amazon Web Services

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

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

  4. Amazon Web Services

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

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

  5. Amazon Web Services

    IAM (Identity and Access Management) を理解する

    IAMとは「ユーザーに対してAWSのアクセスを制御する仕組み」のこ…

  6. Amazon Web Services

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

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

最近の記事

  1. Snowflakeや最新データ基盤が広義のマーケティングにも…
  2. 回帰分析はかく語りき Part3 ロジスティック回帰
  3. GCSへのSnowflake Open Catalogによる…
  4. VPC Service Controlsで「NO_MATCH…
  5. モダンデータスタックなワークフローオーケストレーションツール…
  1. Web解析

    Safari ITP2.xの次なる標的は?
  2. ObservePoint

    ObservePoint:タグ管理の救世主!サイト監査ツールのご紹介
  3. Snowflake

    Snowflake Summit2023 振り返り
  4. Tableau

    Tableauで小笠原諸島等を東京都から除外する方法
  5. Adobe Analytics

    AdobeAnalytics Datafeed: BigQueryのSIGN関数…
PAGE TOP