mcpField
C
connecting-to-data-source

connecting-to-data-source

github.com/awsデータ・データベース3.3k6.9k 回インストール1 日前に更新
リポジトリ

connecting-to-data-source について

connecting-to-data-sourceは、外部データソースを再利用可能なAWS Glue接続として登録するスキルです。データソースの検出、認証情報とネットワークの設定、接続テストを案内します。作成するのは接続であり、データパイプラインではありません。

主な機能

  1. 01JDBC、Redshift、Snowflake、BigQueryの登録
  2. 02既存接続と候補ソースの検出
  3. 03認証情報とネットワーク設定の案内
  4. 04接続性とエンジン上での動作確認
  5. 05ネットワーク、認証情報、ドライバーの問題診断

活用シーン

  1. 01後続のデータレイク取り込みに向けたソース準備
  2. 02データベースやウェアハウスのAWS Glue接続
  3. 03既存Glue接続の検証
  4. 04接続テスト失敗の調査

MCP 対応

利用可能な場合、コマンド実行にはAWS MCPサーバーのツールを使用します。検証、サンドボックス実行、監査ログに対応し、MCPが使えない場合はAWS CLIを使用します。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/aws/agent-toolkit-for-aws --skill connecting-to-data-source

インストール後、Claude Code で/connecting-to-data-sourceを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
bigquery-setup.md
credential-security.md
discovery.md
jdbc-setup.md
network-setup.md
snowflake-setup.md
troubleshooting.md

詳細

データソースへの接続

AWS Glue に外部データソースを登録し、後続のスキル(ingesting-into-data-lake)でデータを取り込めるようにします。Glue 接続には、1 つのソースのネットワーク設定、ドライバー、認証情報の参照先が保存されます。ソースごとに一度作成し、複数のジョブで再利用します。

基本方針

接続は名前付きパイプであり、パイプラインではありません。 このスキルでは、テスト済みの再利用可能な Glue 接続を作成します。データの移動は行いません。

よくあるタスク

接続時は、必ず AWS MCP サーバーツールを使用してコマンドを実行してください。これらのツールには、検証、サンドボックス化された実行、監査ログの機能があります。MCP が利用できない場合に限り、AWS CLI に切り替えてください。実行前に各手順を必ず説明してください。

ワークフロー

1. 依存関係とコンテキストを確認する
  • AWS MCP ツールまたは AWS CLI が利用可能か必ず確認し、利用できない場合はユーザーに伝えてください
  • 対象の AWS リージョンを必ず確認し、aws sts get-caller-identity で認証情報を検証してください
2. ソースを分類する

ユーザーに接続したいソースの種類を尋ねるか、手がかりから推測してください。

ユーザーの発言…ソースの種類接続タイプ参照先
「Oracle」、「SQL Server」、「Postgres」、「MySQL」、「RDS <engine>」JDBC データベースJDBCjdbc-setup.md
「Redshift」、「自分のクラスター」、「AWS 上の自分のデータウェアハウス」RedshiftJDBCjdbc-setup.md(Redshift セクション)
「Snowflake」SnowflakeSNOWFLAKEsnowflake-setup.md
「BigQuery」、「Google アナリティクスのデータウェアハウス」BigQueryBIGQUERYbigquery-setup.md

ユーザーが DynamoDB またはローカルファイルを指定した場合は、そこで停止して、DynamoDB は接続なしで Glue から直接読み取れること、ローカルファイルは ingesting-into-data-lake スキルのローカルアップロードワークフローを使用することを伝えてください。

3. ユーザーから接続の手がかりを集める

ユーザーが提供できる手がかりを必ず尋ねてください。推測してはいけません。

すべてのソースで確認する項目:

  • 希望する接続名(小文字、ハイフン区切り:oracle-prod-sales、snowflake-analytics)
  • 既存の Secrets Manager シークレットを使用するか、新規作成するか
  • ソースが Glue VPC から到達可能か(同一、ピアリング接続、VPN、Direct Connect)

JDBC: ホスト名/エンドポイント、ポート、データベース、RDS/Aurora/セルフマネージドの別、IAM DB 認証の有効化状況(Aurora/RDS MySQL/Postgres)、SSL の要否。

Snowflake: アカウント識別子、ウェアハウス、ロール、デフォルトデータベース、認証方式(パスワード、キーペア、OAuth)。

BigQuery: GCP プロジェクト ID、ロケーション、サービスアカウント JSON のプロビジョニング状況。

4. 既存の接続と候補ソースを確認する

作成前に、既存のリソースを確認してください。

既存の Glue 接続:

aws glue get-connections --filter ConnectionType=<TYPE> --region <REGION>

適切な接続が見つかった場合は、ユーザーに確認してからステップ 7 に進んでください。

アカウント内の候補ソース(JDBC/Redshift のみ):

  • RDS:aws rds describe-db-instances
  • Aurora:aws rds describe-db-clusters
  • Redshift:aws redshift describe-clusters

候補をユーザーに提示し、選んでもらってください。discovery.md を参照してください。

5. 認証情報を登録する

平文のパスワードより AWS Secrets Manager を使用するよう、必ず推奨してください。対応している場合は、IAM データベース認証(Aurora/RDS MySQL および PostgreSQL、Redshift)を優先してください。credential-security.md を参照してください。

  • 新しい Secrets Manager シークレットを作成する前に、必ずユーザーの確認を得てください
  • 認証情報を平文でチャットやログに書き込んではいけません
  • IAM DB 認証では、シークレットは不要です
6. Glue 接続を作成する

接続プロパティについては、ソースごとのリファレンスに従ってください。

aws glue create-connection --connection-input '<JSON>' --region <REGION>

プライベートソースには PhysicalConnectionRequirements(SubnetId、SecurityGroupIdList、AvailabilityZone)が必要です。network-setup.md を参照してください。

7. 接続をテストする

引き渡し前に、必ずテストしてください。テストは 2 段階で行います。まず簡易的な API チェックを行い、その後エンジンレベルで検証します。

フェーズ A:Glue の TestConnection(ネットワークと認証情報の正常性チェック)
aws glue test-connection --connection-name <NAME> --region <REGION>

これにより、Glue がソースに接続でき、認証できることを検証します。ユーザーが使用する予定のクエリエンジンで、接続がエンドツーエンドで機能することを証明するものではありません。

フェーズ B:エンジンレベルの検証

TestConnection が成功したら、最小限のクエリを実行して、ユーザーが使用する予定のエンジンで接続が機能することを検証します。

  • Glue ETL(デフォルト): 接続経由で 1 行を読み取るスモークテスト用の Glue ジョブを実行します。troubleshooting.md を参照してください。
  • Athena: ユーザーがフェデレーテッドコネクタを使って Athena 経由でクエリを実行する予定の場合は、Athena 接続経由で SELECT 1 を実行し、Lambda ベースのコネクタがソースに接続できることを確認します。
  • Glue Crawler: ユーザーがソースをクロールする予定の場合は、単一のテーブルでテストクロールを実行します。

フェーズ B では、TestConnection で検出できない問題を検出します。ジョブ実行時のドライバー互換性、カタログ設定、Spark レベルのシリアライズ、エンジン固有の認証フローなどです(例:Snowflake の SNOWFLAKE タイプは ETL では機能しますが、JDBC クローラー経由では機能しません)。

両方のフェーズが成功したら、接続名を ingesting-into-data-lake で使用できる状態であることをユーザーに伝えます。どちらかのフェーズで失敗した場合は、ステップ 8 に進みます。

8. トラブルシューティング(テストが失敗した場合のみ)

ネットワーク、認証情報、ドライバーの順に原因を診断します。troubleshooting.md を参照してください。

制約:

  • 認証情報を原因とする前に、VPC ルーティング、セキュリティグループ、S3 VPC エンドポイントを必ず確認する必要があります
  • Glue ロールが Secrets Manager のシークレットを読み取れることを必ず確認する必要があります
  • ユーザーの確認なしに認証情報をローテーションしてはなりません

引数の振り分け

  • 引数なし:ステップ 1~7 を対話形式で進めます
  • ソースタイプのキーワード(例:snowflake、oracle):タイプを事前入力した状態でステップ 2 に進みます
  • 既存の接続名:ステップ 7(テスト)に進み、失敗した場合はステップ 8 に進みます
  • ホスト名または RDS エンドポイント:候補を事前入力した状態でステップ 4 に進みます

注意事項

  • Glue の SNOWFLAKE 接続タイプは、Snowflake 用に設定された JDBC とは異なります。Spark ETL ジョブでは必ず SNOWFLAKE を使用してください。JDBC は使用しないでください。
  • 接続名は変更できません。慎重に選択してください。
  • PhysicalConnectionRequirements.AvailabilityZone はサブネットの AZ と一致している必要があります。一致しない場合、接続は作成時ではなくジョブ実行時に失敗します。
  • IAM データベース認証トークンの有効期限は 15 分です。Glue ジョブは接続のたびに新しいトークンを生成します。キャッシュしないでください。
  • プライベートソースへの接続で使用する VPC には、S3 VPC ゲートウェイエンドポイントが必ず存在する必要があります。存在しない場合、Glue ジョブはスクリプトを読み取ったり、結果を S3 に書き込んだりできません。

トラブルシューティング

エラー考えられる原因対処方法
Connect timed outVPC ルーティング、SG ルール、または NAT ゲートウェイの不足troubleshooting.md を参照してください
Access denied for user / ORA-01017認証情報の誤り、Secrets Manager へのアクセス不足、または IAM DB 認証の設定ミスtroubleshooting.md を参照してください
No suitable driver foundカスタムドライバー JAR が設定されていない、またはクラス名が誤っているtroubleshooting.md を参照してください
SSL handshake failedGlue とソース間で JDBC_ENFORCE_SSL の設定が一致していないtroubleshooting.md を参照してください
UnableToFindVpcEndpointS3 VPC エンドポイントが存在しない接続の VPC に S3 ゲートウェイエンドポイントを作成してください

参考資料

コメント