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

    セキュリティグループ vs ネットワークACL

    セキュリティグループ と ネットワークACL の違いセキュリティグ…

  2. Adobe Analytics

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

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

  3. Amazon Web Services

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

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

  4. Amazon Web Services

    Amazon Redshift ビルド168まとめ

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

  5. Amazon Web Services

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

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

  6. Amazon Web Services

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

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

最近の記事

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

    Adobe Analytics:ワークスペースでコンボグラフを作ってみる
  2. Segment

    Segmentでデータ管理を一元化する
  3. Google BigQuery

    Tableau×BigQueryをコスパ良く使う方法
  4. Tableau

    Tableauのモデリング関数を理解する
  5. IT用語集

    エンタープライズサーチ(Enterprise Search)って何?
PAGE TOP