3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

AWS Glue DataBrew で Redshift に接続する際の注意点

Posted at

はじめに

AWS Glue DataBrew は AWS が提供するデータプレパレーションサービスです。S3 上のデータレイク や Redshift などの JDBC 接続可能なデータベース、Snowflake 等様々なデータソースと接続可能で、250 種類以上の組み込み処理を使用してデータのクリーニングや正規化を行うことができます。

プライベートサブネット上の Redshift クラスターをデータソースとして接続する際に発生しがちなエラーやその対応について記載します。Data Brew そのものの説明や操作方法については触れません。

想定する構成

以下のようにプライベートサブネットに配置された Reshift クラスターに接続する場合の構成を前提としています。

image.png

プロジェクトのロードに失敗する場合のトラブルシューティング

セキュリティグループの自己参照設定

DataBrew の接続は AWS Glue の接続と同一です。VPC 内のリソースに接続するには、接続設定により払い出された ENI にアタッチされているセキュリティグループに自己参照ルールが設定されている必要があります。設定を行っていない場合は以下のようなメッセージが発生し、DataBrew が VPC への接続に失敗します。

image.png

Failed to connect to VPC. At least one security group must open all ingress ports. To limit traffic, 
the source security group in your inbound rule can be restricted to the same security group.
(Service: AWSGlueDataBrewJobExecutor; Status Code: 400; Error Code: InvalidInputException; Request ID: 85ec5757-efee-490d-a928-xxxxxxxxxxxx)

自己参照ルールとは以下のように送信元に自身のセキュリティグループが設定されているルールのことを指します。全ての TCP ポートに対する自己参照のインバウンドルールが含まれている必要があります。

image.png
画像は以下のドキュメントより引用

Glue エンドポイントへの接続経路

Glue のエンドポイント (glue.<region>.amazonaws.com) と通信する必要があるため、Redshift クラスターが配置されているプライベートサブネットには Glue のインターフェースエンドポイントまたは NAT Gateway が配置されている必要があります。(冒頭の想定する構成を参照) Glue エンドポイントへの経路が存在しない場合は以下のようなエラーが発生します。

image.png

{"error":"Failure reading from input location AwsGlueDataBrew-xxxxxxxxxxxx, 
public.users: Unable to reach AWS Glue to get connection AwsGlueDataBrew-xxxxxxxxxxxx.
Exception: Connect timeout on endpoint URL: \"https://glue.ap-northeast-1.amazonaws.com/\""}

接続のセキュリティグループを変更したい

Glue コンソールで JDBC 接続を作成する場合と異なり、DataBrew のコンソールから Redshift への接続を作成する場合はセキュリティグループを指定する項目がありません。

image.png

作成後の接続情報を確認すると自動でセキュリティグループが割り当てられていますが、選択した Redshift クラスターのセキュリティグループが割り当てられているようです。

image.png

一方で Redshift にアタッチしているセキュリティグループに自己参照ルールを追加するのではなく、以下のように設定した Glue 用のセキュリティグループを適用したいケースもあるかと思います。

  • Glue 用セキュリティグループ (glue-sg) には自己参照ルールを設定
Type Protocol Port range Source
All TCP TCP All sg-xxxxxxxxxxxxxxxxx / glue-sg
  • Redshift 用セキュリティグループ (redshift-sg) には Glue 用セキュリティグループからの接続許可を設定
Type Protocol Port range Source
Redshift TCP 5439 xxx.xxx.xxx.xxx/24
All TCP TCP All sg-xxxxxxxxxxxxxxxxx / glue-sg

この場合は DataBrew ではなく Glue のコンソールから接続を編集することでセキュリティグループを変更できます。DataBrew で接続を作成したとしても、Glue の接続として管理されているということですね。接続の削除も Glue コンソールから実施する必要があります。

image.png

以上です。
参考になれば幸いです。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?