mcpField
I
ingesting-into-data-lake

ingesting-into-data-lake

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

ingesting-into-data-lake について

対応する複数のソースから、クエリ可能な AWS データレイクテーブルへデータを取り込むスキルです。ソース別の Glue ワークフロー、形式の選択、検証、定期処理のスケジュールを案内します。

主な機能

  1. 01ファイルや複数のデータソースから取り込み
  2. 02S3 Tables または Iceberg の選択
  3. 03ソース別の Glue 取り込み手順
  4. 04件数、NULL、サンプル行の検証
  5. 05定期パイプラインのスケジュール設定

活用シーン

  1. 01ローカルまたは S3 のファイルをデータレイクへ取り込み
  2. 02JDBC、Snowflake、BigQuery からデータを取り込み
  3. 03DynamoDB データをデータレイクへエクスポート
  4. 04既存の Glue カタログテーブルを移行

MCP 対応

AWS MCP server tools が利用可能な場合は、コマンド実行に必ず使用します。利用できない場合は AWS CLI に切り替えます。

インストール

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

$npx skills add https://github.com/aws/agent-toolkit-for-aws --skill ingesting-into-data-lake

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

同梱ファイル

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

references/
athena-loading.md
bigquery-ingest.md
catalog-migration.md
ctas-patterns.md
data-quality-validation.md
dynamodb-ingest.md
error-handling.md
format-specific-loading.md
glue-etl-migration.md
glue-job-config.md
glue-job-scripts.md
iceberg-catalog-config-and-usage.md
incremental-loading.md
jdbc-ingest.md
jdbc-performance.md
jdbc-schema-discovery.md
local-upload.md
migration-troubleshooting.md
migration-validation.md
s3-files.md
schema-evolution.md
snowflake-ingest.md
testing-and-scheduling.md
type-transformations.md
upload-options.md

詳細

データレイクへの取り込み

ソースからデータをデータレイク内のクエリ可能なテーブルに移動します。このスキルでは、ソース接続が必要な場合、すでに作成されていることを前提とします。Glue 接続のセットアップやトラブルシューティングについては、connecting-to-data-source に委任してください。

基本方針

環境から別の指示がない限り、S3 Tables をデフォルトとして使用してください。 S3 Tables は、新しいデータレイクの作業で推奨されるターゲットです。ユーザーのカタログインベントリで S3 Tables がまだ採用されていないことが確認できた場合は、方針の変更を無理に求めるのではなく、既存の汎用バケット上の標準的な Iceberg を推奨してください。

よくあるタスク

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

ワークフロー

1. 依存関係とコンテキストを確認する
  • AWS MCP ツールまたは AWS CLI が利用可能か必ず確認し、利用できない場合はユーザーに伝えてください
  • ターゲットの AWS リージョンを必ず確認し、aws sts get-caller-identity を実行して認証情報を検証してください
  • SageMaker Unified Studio のプロジェクトロールでは、ターゲットテーブルと接続がプロジェクトのスコープ内にある場合があります。querying-data-lake の呼び出し元 ARN の検出パターンを参照してください。
2. ソースを分類する
ユーザーの発言...ソースタイプ参照先
「ファイルをアップロードしたい」「ローカル CSV」「S3 に移動」ローカルファイルlocal-upload.md
「S3 から読み込む」「s3:// から CSV/JSON/Parquet をインポート」S3 ファイルs3-files.md
「Oracle/Postgres/MySQL/SQL Server/Redshift/RDS/Aurora からインポート」JDBCjdbc-ingest.md
「Snowflake から取得」「Snowflake テーブルを S3 に移動」Snowflakesnowflake-ingest.md
「BigQuery からインポート」「GCP の分析データを S3 に移動」BigQuerybigquery-ingest.md
「DynamoDB をエクスポート」「DynamoDB をデータレイクに移動」DynamoDBdynamodb-ingest.md
「Glue テーブルを移行」「Hive を Iceberg に変換」カタログ移行catalog-migration.md

ユーザーが Salesforce、ServiceNow、SAP、MongoDB、Kafka、またはその他の SaaS/ストリーミングソースを指定した場合は、今回はサポート対象外のため対応できない旨を伝えてください。

ソーステーブルが曖昧な名前や業務上の名前で指定されている場合(「注文テーブルを移行したい」「営業データウェアハウスから取得したい」など)は、先に finding-data-lake-assets に委任して特定してください。

3. 接続の有無を確認する(該当する場合)

JDBC、Snowflake、BigQuery のソースでは、Glue 接続が必要です。次のコマンドで確認してください。

aws glue get-connection --name <CONNECTION_NAME> --region <REGION>

接続が存在しない場合は作業を中断し、接続を作成してテストするため connecting-to-data-source に委任してください。接続が検証されるまで、取り込みを進めないでください。

ローカルファイル、S3 ファイル、DynamoDB、カタログ移行では Glue 接続は不要です。

4. ターゲットを確認する

テーブルを作成または書き込む前に、必ずユーザーに確認するか、カタログの内容をもとに提案してください。

  • データベース/名前空間:特定のターゲットデータベースは存在しますか?それとも新規作成しますか?
  • テーブル:既存のテーブル(追加/マージ)ですか、新規テーブル(creating-data-lake-table に委任)ですか?
  • 形式:S3 Tables(デフォルト)、標準の Iceberg、または生の Parquet ですか?

インベントリに応じたデフォルト設定:

すでに exploring-data-catalog を実行している場合、またはすぐに確認できる場合は、既存の内容を利用してください。

  • アカウントに s3tablescatalog フェデレーテッドカタログとアクティブなテーブルバケットがある場合:S3 Tables を推奨します
  • アカウントに Iceberg テーブルを含む汎用バケットがあり、S3 Tables の使用実績がない場合:既存のバケットで標準の Iceberg を推奨します
  • アカウントが Iceberg メタデータなしで S3 上の Parquet/ORC を使用している場合:今すぐ Iceberg を採用するか(推奨)、生ファイルを使い続けるかを確認します

S3 Tables をまだ採用していないお客様に、S3 Tables を強制しないでください。iceberg-catalog-config-and-usage.md を参照してください。

このステップからの委任先:

  • ターゲットテーブルが存在しない場合 → creating-data-lake-table
  • ターゲットデータベース名が曖昧な用語で指定されている場合 → finding-data-lake-assets
  • ユーザーが既存の内容を把握していない場合 → exploring-data-catalog
5. ソースのワークフローを実行する

ソース固有のリファレンスを読み、そのフェーズに従ってください。それぞれにジョブテンプレート、注意点、トラブルシューティングがまとめられています。

  • ローカル/S3/JDBC/Snowflake/BigQuery/DynamoDB/カタログの移行:ソースごとにリファレンスがあります

Glue 5.1 以降の共通ジョブ設定と PySpark テンプレートは、glue-job-config.md および glue-job-scripts.md にまとめられています。

6. 検証する

次の 3 項目すべてを実行してください。省略しないでください。

  1. 行数が想定どおりであること(ソースとターゲットを比較)
  2. 重要な列に対する NULL チェック
  3. 3~5 件のサンプル行を抜き取り確認

data-quality-validation.md を参照してください。

7. スケジュールを設定する(定期実行の場合)

定期実行するパイプラインでは、cron スケジュールを指定した Glue トリガーを作成します。testing-and-scheduling.md を参照してください。単一ステップのシンプルなパイプラインには Glue トリガーを使用し、分岐を含む複数ステップのパイプラインには MWAA を使用します。

引数の振り分け

  • S3 パスのみ:一度限りのロードと推定し、S3 ファイルを使ってステップ 2 から開始します
  • 接続名:指定された接続を使ってステップ 3 から開始します
  • テーブル名:ステップ 4 から開始し、ソースかターゲットかを確認します
  • --target フラグ:ステップ 4 のターゲット形式を事前入力します
  • 引数なし:対話形式で順に進めます

注意点

  • S3 Tables には Glue 5.1 以降と --datalake-formats iceberg ジョブ引数が必要です
  • すべての spark.sql.catalog.* 設定は、必ず --conf ジョブ引数に指定し、spark.conf.set() には指定しないでください。そうしないと Glue 5.x で AnalysisException: Cannot modify the value of a static config が発生します。正しいカタログ設定については、iceberg-catalog-config-and-usage.md を参照してください。
  • S3 Tables のカタログ設定では warehouse パラメーターが必須です。指定しないと、Spark で「Cannot derive default warehouse location」というエラーが発生します。
  • S3 Tables のテーブル名と列名は、すべて小文字にする必要があります
  • overwritePartitions() が置き換えるのは DataFrame に含まれるパーティションのみです。削除を含む全件更新には createOrReplace() を使用してください
  • 標準の Iceberg ターゲットには LOCATION 句が必須です。S3 Tables では指定してはいけません
  • DynamoDB には Glue 接続は不要です。作成しようとしないでください
  • 取り込み中の接続エラーは connecting-to-data-source に委任してください。このスキル内でネットワークや認証情報をデバッグしないでください
  • SageMaker Unified Studio プロジェクトのターゲットテーブルについては、Glue ジョブの実行前に、プロジェクトロールがターゲット名前空間への書き込みアクセス権を持っていることを確認してください

トラブルシューティング

エラー考えられる原因対処方法
S3 でアクセス拒否IAM 権限が不足していますGlue ロールに s3:GetObject、s3:PutObject があることを確認します
S3 Tables でアクセス拒否s3tables:* 権限が不足していますS3 Tables のインラインポリシーを Glue ロールに追加します
CTAS のタイムアウトデータセットが Athena で処理するには大きすぎますGlue ETL に切り替えるか、WHERE フィルターを使ってバッチ処理します
JDBC 接続のタイムアウト/認証エラー接続レベルの問題ですconnecting-to-data-source に委任します
スループット超過(DynamoDB)読み取り率が高すぎますread.percent を下げるか、ネイティブエクスポートを使用します

一覧については、error-handling.md を参照してください。

リファレンス

データソース別
横断的な項目
移行関連
JDBC 関連

コメント