SuperAPI AI 工具集

s3-explore

数据与分析

查看项目

更新于 10-15 15:38

技能介绍

s3-explore 是一个基于 DuckDB 的技能,用于探索和查询远程对象存储上的数据。它支持 AWS S3、Cloudflare R2、GCS、MinIO 以及任何兼容 S3 的存储。当用户提到 s3://、r2://、gs:// 或 gcs:// URL,或要求查看、列出、描述、查询远程存储中的数据时使用。

用途 该技能帮助用户使用 DuckDB 探索远程对象存储中的数据。它适用于需要查看、列出、描述或查询存储在 S3 兼容存储上的数据集的场景。

主要能力

  • 检测存储提供商并设置相应的凭据。
  • 列出目录或存储桶的内容,包括文件名、大小和最后修改时间。
  • 预览特定文件或 glob 模式的数据,包括描述模式、统计行数和显示样本数据。
  • 对于 Parquet 文件,从元数据获取行数和大小,无需下载数据。
  • 执行分析性 SQL 查询,DuckDB 会将谓词下推到 S3 上的 Parquet 文件,因此即使对于大型远程数据集,过滤也很高效。

使用方式 该技能通过命令行调用 DuckDB 来执行操作。基本流程如下:

  1. 根据 URL 或用户上下文检测提供商并设置凭据。对于 AWS S3,使用 CREATE SECRET (TYPE S3, PROVIDER credential_chain);;对于 Cloudflare R2,使用 CREATE SECRET (TYPE R2, PROVIDER credential_chain);;对于 GCS,使用 CREATE SECRET (TYPE GCS, PROVIDER credential_chain);;对于 MinIO 或自定义端点,使用 CREATE SECRET (TYPE S3, KEY_ID '...', SECRET '...', ENDPOINT '...', USE_SSL true);。对于公共存储桶(如 Overture Maps、AWS 开放数据),无需密钥,跳过此步骤。始终前置 LOAD httpfs;。
  2. 确定 URL 指向的内容。如果 URL 看起来像目录或存储桶(没有文件扩展名,或以 / 结尾),列出其内容及大小。如果 URL 指向特定文件或 glob 模式(有文件扩展名或包含 *),预览它。对于 Parquet 文件,从元数据获取行数和大小。
  3. 使用列表、模式或样本数据回答用户的问题。如果用户提出分析性问题,编写并运行适当的 SQL 查询。

适用场景

  • 用户提供 s3://、r2://、gs:// 或 gcs:// URL,并希望了解其中有什么数据。
  • 用户想要列出存储桶或目录中的文件。
  • 用户想要预览远程文件的内容或模式。
  • 用户想要查询远程 Parquet 文件或数据集。
  • 用户想要对远程对象存储上的数据执行分析性查询。

限制

  • 需要安装 DuckDB。如果出现 duckdb: command not found,应委托给 /duckdb-skills:install-duckdb。
  • 访问被拒绝(403)时,建议用户检查凭据:aws configure、环境变量或提供显式的 key/secret。
  • 存储桶未找到(404)时,检查 URL 和区域。
  • 大型列表超时时,建议缩小 glob 模式或添加前缀。
  • 在列出目录内容时,只选择 filename、size、last_modified,绝不选择 content,以避免下载实际文件。
  • 对于 R2,如果用户提供账户 ID,端点为 <account_id>.r2.cloudflarestorage.com。r2://bucket/path 这样的 URL 应重写为 s3://bucket/path 并使用 R2 密钥。
  • 该技能的具体收费、价格、平台支持等细节暂未提供。