選項
首頁首頁 Skill 雲端基礎設施 ingesting-into-data-lake

ingesting-into-data-lake

aws/agent-toolkit-for-aws aws/agent-toolkit-for-aws

將資料從 S3 檔案、本地端上傳、JDBC 資料庫(Oracle、SQL Server、PostgreSQL、MySQL、RDS、Aurora)、Amazon Redshift、Snowflake、BigQuery、DynamoDB 或現有的 Glue 目錄資料表(遷移)匯入 AWS 資料湖。 預設目標為 S3 Tables;若未採用 S3 Tables,則支援通用儲存桶上的標準 Iceberg。可處理一次性載入、定期管線及資料遷移。觸發條件包括:匯入資料、載入資料、資料攝取、同步資料庫、遷移資料表、將資料移至 AWS、設定

...展開全部
0
更新時間 2026-09-27

關於「ingesting-into-data-lake」

這是一項工作流程技能,可將資料從各種來源(包括本地檔案上傳、S3 檔案、JDBC 資料庫(Oracle、SQL Server、PostgreSQL、MySQL、RDS、 Aurora)、Amazon Redshift、Snowflake、BigQuery、DynamoDB,以及用於遷移的現有 Glue 目錄資料表。 此技能可處理一次性載入、定期執行之管線以及資料遷移,預設以 S3 Tables 作為目標,同時在尚未採用 S3 Tables 的通用儲存桶上支援標準 Iceberg — 相關指引明確表示,不會強迫尚未採用該功能的客戶變更其運作模式。 連線時,指令會透過 AWS MCP 伺服器工具執行(用於驗證、沙盒執行及稽核記錄),若無法連線則回退至 AWS CLI,且每個步驟在執行前都會進行說明。 此工作流程會透過 `aws sts get-caller-identity` 驗證依賴項與憑證,對來源進行分類,並確認 JDBC、Snowflake 及 BigQuery 來源是否存在 Glue 連線(將連線設定與疑難排解委派給獨立的「連線至資料來源」技能), 釐清目標資料庫、資料表及格式,執行針對特定來源的參考程序,並透過三項強制性檢查進行驗證:來源與目標之間的列數是否匹配、關鍵欄位的空值檢查,以及對三至五筆樣本列的抽查。 週期性管線透過 Glue 觸發器依照 cron 排程執行,並使用 MWAA 進行多步驟分支。該技能文件中列出了眾多注意事項: S3 Tables 需使用 Glue 5.1 或更高版本,並採用 Iceberg 數據湖格式;目錄配置必須置於 --conf 工作參數中;必須指定 warehouse 參數;表名與欄位名必須為小寫;標準 Iceberg 目標需包含 LOCATION 子句,而 S3 Tables 則無此要求;此外,DynamoDB 無需透過 Glue 建立連線。 Salesforce、ServiceNow、SAP、MongoDB 和 Kafka 等 SaaS 及串流資料來源不在此範疇內;查詢執行與目錄稽核亦不在此範圍,相關功能將由其他技能處理。

常見問題

預設目標格式為何?

S3 Tables 是預設且推薦的目標。若帳戶尚未採用 S3 Tables,此技能會建議改用現有的通用儲存桶中的標準 Iceberg。

它可從哪些來源進行資料匯入?

本地檔案、S3 檔案、JDBC 資料庫(Oracle、SQL Server、PostgreSQL、MySQL、RDS、Aurora)、Redshift、Snowflake、BigQuery、DynamoDB,以及用於遷移的現有 Glue 目錄資料表。

哪些來源需要 Glue 連線?

JDBC、Snowflake 和 BigQuery 需要 Glue 連線,可透過 `aws glue get-connection` 指令進行驗證。本機檔案、S3 檔案、DynamoDB 以及目錄遷移則不需要。

如何驗證資料匯入?

必須執行全部三項檢查且不得遺漏任何一項:來源與目標的列數必須一致、關鍵欄位的 null 檢查必須通過,並對 3 至 5 筆樣本列進行抽查。

哪些來源不在範圍內?

SaaS 及串流平台(例如 Salesforce、ServiceNow、SAP、MongoDB 和 Kafka)均不被接受;此外,Glue 連線設定、空資料表建立、查詢執行以及目錄稽核等操作亦不在範圍內,這些由其他技能負責處理。

所有檔案

26 個檔案references/error-handling.md12.3 KB 檢視references/iceberg-catalog-config-and-usage.md7.9 KB 檢視references/jdbc-schema-discovery.md12.7 KB 檢視 references/schema-evolution.md 9.3 KB 檢視 SKILL.md 10.8 KB 檢視 references/bigquery-ingest.md 3.7 KB 檢視 references/ctas-patterns.md 3.0 KB 檢視 references/glue-etl-migration.md 4.5 KB 檢視 參考資料/incremental-loading.md 13.1 KB 檢視 參考資料/data-quality-validation.md 12.1 KB 檢視 參考資料/glue-job-config.md 9.4 KB 檢視 參考資料/jdbc-performance.md10.3 KB 檢視參考資料/migration-validation.md2.7 KB 檢視參考資料/type-transformations.md7.8 KB 檢視參考資料/athena-loading.md2.8 KB 檢視參考資料/dynamodb-ingest.md7.2 KB 檢視參考資料/glue-job-scripts.md 9.6 KB 檢視參考資料/s3-files.md 5.7 KB 檢視參考資料/upload-options.md 1.0 KB 檢視參考資料/catalog-migration.md 6.9 KB 檢視參考資料/format-specific-loading.md12.8 KB 檢視參考資料/jdbc-ingest.md5.7 KB 檢視參考資料/local-upload.md4.5 KB 檢視參考資料/snowflake-ingest.md3.6 KB 檢視參考資料/遷移疑難排解.md2.6 KB 檢視參考資料/測試與排程.md13.6 KB 檢視
在 GitHub 上查看

Move data from a source into a queryable table in the data lake. This skill assumes the source connection (if one is needed) already exists. For Glue connection setup or troubleshooting, delegate to connecting-to-data-source.

Philosophy

Default to S3 Tables unless the environment says otherwise. S3 Tables is the recommended target for new data lake work. If the user's catalog inventory shows they haven't adopted S3 Tables, recommend standard Iceberg on their existing general-purpose bucket instead of forcing them to change posture.

Common Tasks

You MUST execute commands using AWS MCP server tools when connected -- they provide validation, sandboxed execution, and audit logging. Fall back to AWS CLI only if MCP is unavailable. You MUST explain each step before executing.

Workflow

1. Verify Dependencies and Context

  • You MUST check whether AWS MCP tools or AWS CLI are available and inform the user if missing
  • You MUST confirm target AWS region and verify credentials with aws sts get-caller-identity
  • For SageMaker Unified Studio project roles, note that target tables and connections may be scoped to the project. See the caller ARN detection pattern in querying-data-lake.

2. Classify the Source

User says...Source typeReference
"upload my file", "local CSV", "move to S3"Local filelocal-upload.md
"load from S3", "import CSV/JSON/Parquet from s3://"S3 filess3-files.md
"import from Oracle/Postgres/MySQL/SQL Server/Redshift/RDS/Aurora"JDBCjdbc-ingest.md
"pull from Snowflake", "Snowflake table to S3"Snowflakesnowflake-ingest.md
"import from BigQuery", "GCP analytics to S3"BigQuerybigquery-ingest.md
"export DynamoDB", "DynamoDB to data lake"DynamoDBdynamodb-ingest.md
"migrate Glue table", "convert Hive to Iceberg"Catalog migrationcatalog-migration.md

If the user names Salesforce, ServiceNow, SAP, MongoDB, Kafka, or another SaaS/streaming source, decline -- these are not supported in this release.

If the source table is referenced by a fuzzy or business name ("migrate our orders table", "pull from the sales warehouse"), delegate to finding-data-lake-assets to resolve before proceeding.

3. Confirm Connection Exists (if applicable)

For JDBC, Snowflake, and BigQuery sources, a Glue connection is required. Check:

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

If the connection does not exist, stop and delegate to connecting-to-data-source to create and test it. Do not proceed with ingest until the connection is verified.

Local files, S3 files, DynamoDB, and catalog migration do not need a Glue connection.

4. Clarify the Target

You MUST ask the user (or suggest based on catalog inventory) before creating or writing to any table:

  • Database/namespace: Does a specific target database exist? Or should one be created?
  • Table: Existing table (append/merge) or new table (delegate to creating-data-lake-table)?
  • Format: S3 Tables (default), standard Iceberg, or raw Parquet?

Inventory-aware defaults:

If you have already run exploring-data-catalog or can quickly check, use what exists:

  • Account has an s3tablescatalog federated catalog and active table buckets: recommend S3 Tables
  • Account has general-purpose buckets with Iceberg tables and no S3 Tables usage: recommend standard Iceberg on their existing bucket
  • Account uses Parquet/ORC on S3 without Iceberg metadata: ask whether to adopt Iceberg now (recommend yes) or continue with raw files

Do not force S3 Tables on customers who haven't adopted it. See iceberg-catalog-config-and-usage.md.

Delegations from this step:

  • Target table doesn't exist -> creating-data-lake-table
  • Target database named by fuzzy term -> finding-data-lake-assets
  • User doesn't know what exists -> exploring-data-catalog

5. Execute Source Workflow

Read the source-specific reference and follow its phases. Each is self-contained with job templates, gotchas, and troubleshooting:

  • Local / S3 / JDBC / Snowflake / BigQuery / DynamoDB / catalog migration -- one reference per source

Common Glue 5.1 or higher job configuration and PySpark templates are shared in glue-job-config.md and glue-job-scripts.md.

6. Validate

Run all three, do not skip:

  1. Row count matches expected (source vs target)
  2. Null check on critical columns
  3. Spot-check 3-5 sample rows

See data-quality-validation.md.

7. Schedule (if recurring)

For recurring pipelines, create a Glue Trigger with a cron schedule. See testing-and-scheduling.md. Simple single-step pipelines use Glue Triggers; multi-step with branching uses MWAA.

Argument Routing

  • S3 path only: Infer one-time load, start Step 2 with S3 files
  • Connection name: Start Step 3 with the named connection
  • Table name: Start Step 4, ask whether this is source or target
  • --target flag: Pre-fill the target format in Step 4
  • No args: Walk through interactively

Gotchas

  • S3 Tables requires Glue 5.1 or higher and --datalake-formats iceberg job argument
  • All spark.sql.catalog.* config MUST go in --conf job arguments, never in spark.conf.set(). Glue 5.x throws AnalysisException: Cannot modify the value of a static config otherwise. See iceberg-catalog-config-and-usage.md for correct catalog configs.
  • The warehouse parameter is required in S3 Tables catalog config. Without it Spark fails with "Cannot derive default warehouse location".
  • Table and column names in S3 Tables MUST be all lowercase
  • overwritePartitions() only replaces partitions present in the DataFrame -- for full refresh with deletes, use createOrReplace()
  • Standard Iceberg targets MUST include a LOCATION clause; S3 Tables MUST NOT
  • DynamoDB does not need a Glue connection -- do not attempt to create one
  • Connection failures during ingest delegate back to connecting-to-data-source; do not debug network/credentials in this skill
  • For target tables in SageMaker Unified Studio projects, ensure the project role has write access to the target namespace before the Glue job runs

Troubleshooting

ErrorLikely causeAction
Access Denied on S3Missing IAM permissionsCheck Glue role has s3:GetObject, s3:PutObject
Access Denied on S3 TablesMissing s3tables:* permissionsAdd S3 Tables inline policy to Glue role
CTAS timeoutDataset too large for AthenaSwitch to Glue ETL or batch with WHERE filters
JDBC connection timeout/auth failureConnection-level issueDelegate to connecting-to-data-source
Throughput exceeded (DynamoDB)Read percent too highLower read.percent or use native export

See error-handling.md for the full catalog.

References

Source-specific

  • local-upload.md -- Local files
  • s3-files.md -- S3 files (CSV, JSON, Parquet, Avro, ORC)
  • jdbc-ingest.md -- Oracle, SQL Server, PostgreSQL, MySQL, RDS, Aurora, Redshift
  • snowflake-ingest.md -- Snowflake
  • bigquery-ingest.md -- BigQuery
  • dynamodb-ingest.md -- DynamoDB (export and Glue direct read)
  • catalog-migration.md -- Existing Glue catalog tables (Hive, self-managed Iceberg)

Cross-cutting

  • iceberg-catalog-config-and-usage.md -- S3 Tables, standard Iceberg, raw files: catalog config, engine access patterns
  • glue-job-config.md -- Job sizing, monitoring, retry
  • glue-job-scripts.md -- PySpark templates (append, upsert, custom SQL, full refresh)
  • incremental-loading.md -- Watermark strategies
  • testing-and-scheduling.md -- Glue Triggers, MWAA
  • data-quality-validation.md -- Row counts, null checks, Glue Data Quality
  • schema-evolution.md -- ALTER TABLE ADD COLUMNS, nested JSON
  • type-transformations.md -- Type conflict resolution
  • format-specific-loading.md -- CSV/JSON/Parquet/Avro/ORC specifics
  • athena-loading.md -- Athena INSERT INTO as simple-load fallback
  • error-handling.md -- Ingest errors (connection errors delegate to connecting-to-data-source)
  • upload-options.md -- aws s3 cp vs sync, multipart

Migration-specific

  • ctas-patterns.md -- Athena CTAS syntax and partition transforms
  • glue-etl-migration.md -- Large-table migration via Glue 5.1 or higher PySpark
  • migration-validation.md -- Full validation checklist
  • migration-troubleshooting.md -- CTAS failures, visibility, partitions

JDBC-specific

  • jdbc-schema-discovery.md -- Crawler, direct inspection, custom SQL
  • jdbc-performance.md -- Parallel reads, partitioning

安裝 ingesting-into-data-lake

請下載並將技能檔案解壓縮至您的 .claude/skills/ 目錄中。

下載 ZIP

複製儲存庫並將技能檔案複製到您的專案中。

git clone https://github.com/aws/agent-toolkit-for-aws/blob/main/skills/specialized-skills/analytics-skills/ingesting-into-data-lake/SKILL.md # Copy SKILL.md to your .claude/skills/ directory

複製 複製
快速設定: 將技能資料夾複製到 .claude/skills/,Claude 會自動偵測並使用該技能

相關技能

Cloudflare Manager
更新時間 2026-06-29
pinecone
更新時間 2026-06-29
sentry-architecture-variants
更新時間 2026-06-29
azure-setup-guide
更新時間 2026-06-29
OR