connecting-to-data-source について
connecting-to-data-sourceは、外部データソースを再利用可能なAWS Glue接続として登録するスキルです。データソースの検出、認証情報とネットワークの設定、接続テストを案内します。作成するのは接続であり、データパイプラインではありません。
主な機能
- 01JDBC、Redshift、Snowflake、BigQueryの登録
- 02既存接続と候補ソースの検出
- 03認証情報とネットワーク設定の案内
- 04接続性とエンジン上での動作確認
- 05ネットワーク、認証情報、ドライバーの問題診断
活用シーン
- 01後続のデータレイク取り込みに向けたソース準備
- 02データベースやウェアハウスのAWS Glue接続
- 03既存Glue接続の検証
- 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.mdcredential-security.mddiscovery.mdjdbc-setup.mdnetwork-setup.mdsnowflake-setup.mdtroubleshooting.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 データベース | JDBC | jdbc-setup.md |
| 「Redshift」、「自分のクラスター」、「AWS 上の自分のデータウェアハウス」 | Redshift | JDBC | jdbc-setup.md(Redshift セクション) |
| 「Snowflake」 | Snowflake | SNOWFLAKE | snowflake-setup.md |
| 「BigQuery」、「Google アナリティクスのデータウェアハウス」 | BigQuery | BIGQUERY | bigquery-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 out | VPC ルーティング、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 failed | Glue とソース間で JDBC_ENFORCE_SSL の設定が一致していない | troubleshooting.md を参照してください |
UnableToFindVpcEndpoint | S3 VPC エンドポイントが存在しない | 接続の VPC に S3 ゲートウェイエンドポイントを作成してください |
参考資料
- jdbc-setup.md -- Oracle、SQL Server、PostgreSQL、MySQL、RDS、Redshift
- snowflake-setup.md -- Glue の
SNOWFLAKEタイプ、認証モード - bigquery-setup.md -- Glue の
BIGQUERYタイプ、GCP サービスアカウント - discovery.md -- 既存の接続と候補となるデータソースの確認
- credential-security.md -- Secrets Manager と IAM DB 認証
- network-setup.md -- VPC、サブネット、セキュリティグループ、エンドポイント
- troubleshooting.md -- 接続エラーと診断フロー