选项
首页首页 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 表;若未采用 S3 表,则支持通用存储桶上的标准 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 表作为目标,同时在尚未采用 S3 表的通用存储桶上支持标准 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 以及目录迁移则不需要。

如何验证数据导入?

需运行全部三项检查且不得遗漏任何一项:源数据与目标数据的行数一致、关键列的空值检查通过,以及对 3-5 行样本数据进行抽查。

哪些数据源不在范围之内?

Salesforce、ServiceNow、SAP、MongoDB 和 Kafka 等 SaaS 及流式处理平台不在支持范围内;此外,Glue 连接配置、空表创建、查询执行以及目录审计也不在支持范围内,这些操作由其他技能处理。

所有文件

26 个文件references/error-handling.md 12.3 KB查看references/iceberg-catalog-config-and-usage.md 7.9 KB查看references/jdbc-schema-discovery.md12.7KB 查看 references/schema-evolution.md 9.3KB 查看 SKILL.md 10.8KB 查看 references/bigquery-ingest.md 3.7KB 查看 references/ctas-patterns.md 3.0KB 查看 references/glue-etl-migration.md4.5KB 查看引用/incremental-loading.md 13.1KB 查看引用/data-quality-validation.md 12.1KB 查看引用/glue-job-config.md 9.4KB 查看引用/jdbc-performance.md10.3KB 查看引用/migration-validation.md2.7KB 查看引用/type-transformations.md7.8KB 查看引用/athena-loading.md2.8KB 查看引用/dynamodb-ingest.md7.2KB 查看引用/glue-job-scripts.md 9.6KB 查看引用/s3-files.md 5.7KB 查看引用/upload-options.md 1.0KB 查看引用/catalog-migration.md 6.9KB 查看引用/format-specific-loading.md12.8KB 查看引用/jdbc-ingest.md 5.7KB 查看引用/local-upload.md 4.5KB 查看引用/snowflake-ingest.md3.6KBViewreferences/migration-troubleshooting.md2.6KBViewreferences/testing-and-scheduling.md13.6 KBView
在 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