mcpField
C
connecting-to-data-source

connecting-to-data-source

github.com/aws数据与数据库3.3k6.9k 次安装今天更新
代码仓库

关于 connecting-to-data-source

connecting-to-data-source 是一项技能,可将外部数据源注册为可复用的 AWS Glue 连接。它引导用户发现数据源、配置凭据与网络并测试连接;它创建的是连接,而非数据管道。

主要功能

  1. 01注册 JDBC、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 连接会存储某个数据源的网络配置、驱动程序和凭证引用。每个数据源只需创建一次,可在多个作业中重复使用。

理念

连接是一个命名管道,而不是数据管道。 此技能会创建一个经过测试、可重复使用的 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 或本地文件,请停止并告知他们:Glue 无需连接即可直接读取 DynamoDB;本地文件应使用 ingesting-into-data-lake 技能的本地上传工作流。

3. 向用户收集连接提示

必须询问用户能够提供的提示——不要猜测。

所有数据源都需要:

  • 所需的连接名称(小写,使用连字符:oracle-prod-sales、snowflake-analytics)
  • 现有的 Secrets Manager 密钥,或是否创建一个
  • 数据源是否可从 Glue VPC 访问(同一 VPC、对等连接、VPN、Direct Connect)

JDBC: 主机名/端点、端口、数据库、是否为 RDS/Aurora/自托管、是否启用了 IAM 数据库身份验证(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 数据库身份验证时,无需密钥
6. 创建 Glue 连接

请根据数据源类型的参考文档设置连接属性:

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

私有数据源需要 PhysicalConnectionRequirements(SubnetId、SecurityGroupIdList、AvailabilityZone)。请参阅 network-setup.md。

7. 测试连接

交接前必须进行测试。测试分两个阶段:先进行快速 API 检查,再进行引擎级验证。

阶段 A:Glue TestConnection(网络和凭证检查)
aws glue test-connection --connection-name <NAME> --region <REGION>

此步骤用于验证 Glue 能否访问数据源并完成身份验证。它并不能证明连接能够通过用户计划使用的查询引擎端到端正常工作。

阶段 B:引擎级验证

TestConnection 通过后,请通过运行最小查询,验证连接能否与用户计划使用的引擎正常工作:

  • Glue ETL(默认): 运行一个冒烟测试 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 必须与子网的可用区相同,否则连接会在作业运行时失败,而不是在创建时失败。
  • IAM 数据库身份验证令牌会在 15 分钟后过期。Glue 作业会在每次连接时生成新令牌;不要缓存令牌。
  • 用于连接私有数据源的 VPC 中必须存在 S3 VPC 网关端点。没有该端点,Glue 作业将无法读取脚本或将结果写入 S3。

故障排查

错误可能原因修复方法
Connect timed out缺少 VPC 路由、安全组规则或 NAT 网关请参阅 troubleshooting.md
Access denied for user / ORA-01017凭证错误、缺少 Secrets Manager 访问权限,或 IAM 数据库身份验证配置错误请参阅 troubleshooting.md
No suitable driver found未设置自定义驱动程序 JAR,或类名错误请参阅 troubleshooting.md
SSL handshake failedGlue 与数据源之间的 JDBC_ENFORCE_SSL 不匹配请参阅 troubleshooting.md
UnableToFindVpcEndpoint缺少 S3 VPC 端点在该连接所在的 VPC 中创建 S3 网关端点

参考资料

评论

支持 Markdown