Ultralytics YOLO27: 加入候补名单。
Get Started

Amazon S3 集成#

Amazon S3 集成可将你的 S3 存储桶连接到 Ultralytics Platform。图像会保留在你的存储桶中;Platform 会就地索引图像,让你无需上传副本即可浏览、标注并训练 YOLO 模型。

Pro 功能

Amazon S3 数据集需要专业版或企业版方案。免费工作区可以看到此集成,并会在连接时收到升级提示。即使订阅结束,现有 Amazon S3 数据集仍可完全访问;只有新建连接和导入才需要专业版方案。

创建只读 IAM 用户#

Platform 只会读取你的存储内容,绝不会写入、修改或删除对象。请使用仅具有列出和读取权限的专用 IAM 用户,绝不要使用根凭据:

  1. 在 AWS 控制台中,前往 IAM > Users,创建一个没有控制台访问权限的用户。

  2. 附加一项策略,仅授予你要连接的存储桶的列出和读取权限:

    {
        "Version": "2012-10-17",
        "Statement": [
            { "Effect": "Allow", "Action": "s3:ListAllMyBuckets", "Resource": "*" },
            {
                "Effect": "Allow",
                "Action": ["s3:ListBucket", "s3:GetObject"],
                "Resource": ["arn:aws:s3:::my-bucket", "arn:aws:s3:::my-bucket/*"]
            }
        ]
    }

    s3:ListAllMyBuckets 是可选项;它可以让 Platform 发现你的存储桶,这样你就不必手动输入名称。

  3. 打开用户的 Security credentials 选项卡,创建一个 access key,然后复制访问密钥 ID 和秘密访问密钥。

仅限长期 IAM 用户密钥

Platform 会拒绝临时 AWS 凭据。AWS STS 颁发的密钥(包括任何以 ASIA 开头的密钥、角色 会话凭据以及 IAM Identity Center 密钥)会在数据集仍处于连接状态时过期,因此必须使用专用 IAM 用户的长期访问密钥。

连接到 Platform#

  1. 前往 Settings > Integrations,然后从集成列表中选择 Amazon S3。
  2. 输入访问密钥 ID、秘密访问密钥和存储桶区域(例如 us-east-1)。
  3. 点击 Find available buckets,然后选择要连接的存储桶。如果策略不允许发现存储桶,请手动输入 已知的存储桶名称。
  4. 点击 Connect。Platform 会先验证能否列出并读取每个选定的存储桶,然后才会保存任何内容。

Ultralytics Platform Amazon S3 集成设置

你需要拥有工作区管理员或所有者角色,才能连接云存储。你 每次最多可以添加 50 个存储桶;系统最多会列出密钥可访问的 300 个存储桶。

之后重新连接同一个 IAM 用户时,可以向现有集成添加新存储桶。只有在替换凭据仍能读取所有已连接存储桶时,系统才会替换已保存的凭据。如果无法读取任何存储桶,错误信息会指出该存储桶,包括之前通过同一个 IAM 用户连接的存储桶。

每个连接仅限一个区域

一个连接只能读取你所填区域中的存储桶。如果你的存储桶分布在多个区域,请为每个区域分别建立连接。

凭据安全

凭据在静态存储时使用 AES-256-GCM 加密,绝不会返回到浏览器,也绝不会暴露给训练工作负载。如需撤销访问权限,请在 AWS IAM 中停用访问密钥。

从 S3 存储桶创建数据集#

  1. 点击 New Dataset,然后打开 Cloud 选项卡。
  2. 选择已连接的存储桶,然后浏览到包含数据的文件夹。
  3. 确认文件夹,调整数据集名称,然后创建数据集。

Platform 会列出该文件夹一次,并为找到的内容创建索引:

  • 图像 — .jpg、.jpeg、.png、.webp 和 .avif 对象会被编入索引,图像尺寸通过有界 请求读取。Platform 不会持久保存源图像的第二份副本。
  • 标签 — YOLO .txt 旁路文件会被解析为 Platform 标注,并按照标准的 images/ → labels/ 目录结构进行匹配,也可以作为同一文件夹中的同级文件匹配。
  • 元数据 — YAML 文件会提供类别名称和姿态关键点形状,与压缩包上传的处理方式完全相同。如果文件夹中有多个文件,则优先使用 data.yaml 和 data.yml。
  • 任务 — 系统会根据一组标签文件判断任务,因此即使你在对话框中选择了其他任务,也能根据标签形状识别分割、姿态和 OBB 文件夹。
  • 数据集划分 — 对象键中的 train、val 和 test 文件夹名称会自动分配数据集划分。

此数据集之后的使用方式与其他数据集相同:浏览并标注,将其设为公开或私有,与团队共享,并通过托管训练进行训练。原始文件会按需流式传输,已编入索引的图像不会占用 Platform 的存储配额。

限制

单次导入最多可索引 500,000 个对象,标签文件或 YAML 文件大小最多为 1 MB。较大的存储桶应拆分到多个数据集中。

保持已索引对象不可变

每张已索引图像都会固定到其 S3 对象 ETag;如果对象在此期间发生变化,Platform 会采取默认拒绝策略。请添加新对象,而不要覆盖现有对象。

导入失败#

如果导入失败(例如文件夹为空、路径拼写错误或权限被撤销),数据集页面会显示错误。编辑者可以点击 重试导入,使用已存储的存储桶和文件夹重新开始导入;也可以创建一个指向正确路径的新数据集。

重试时会重新列出文件夹,而不是从中断处继续:首次尝试后新增的对象会被纳入,不再存在的对象则会从数据集中移除。

训练#

托管训练可通过常规训练流程进行。训练期间会使用 Platform 自己保存的已固定图像副本,你的 AWS 凭据绝不会暴露给训练工作负载。

断开连接#

断开连接会删除已存储的凭据,但不会触及 AWS 中的任何内容。基于这些存储桶构建的数据集会保留在你的工作区中,其中的类别、标签和标注也会保留;但在重新连接同一个 IAM 用户之前,无法加载、预览或训练其中的图像。断开连接期间,你仍可重命名数据集、编辑标签或删除数据集。

如需断开连接,请前往 Settings > Integrations,选择 Amazon S3,点击凭据旁边的 Disconnect,然后确认。之后打开相关数据集时,会显示 Amazon S3 Disconnected,并提供返回这些设置的链接;重新连接后,数据集会自动恢复。

你也可以使用 REST API 断开连接,并使用 GET /api/integrations/buckets 返回的集成 ID:

curl -X DELETE \
  -H "Authorization: Bearer YOUR_API_KEY" \
  https://platform.ultralytics.com/api/integrations/buckets/INTEGRATION_ID
from ultralytics_platform import Platform

client = Platform()  # reads ULTRALYTICS_API_KEY
integrations = client.storage_integrations.list()
client.storage_integrations.delete("INTEGRATION_ID")

如果要直接在源端撤销访问权限,请在 AWS IAM 中停用或删除访问密钥。

当前限制#

S3 数据集目前不支持需要 Platform 自己保存图像副本的功能:自动标注、聚类分析、数据集克隆,以及不可变的版本快照。

删除 S3 数据集或其中的单张图像,只会移除 Platform 对这些对象的引用,不会触及你的对象。

另请参阅 Google Cloud Storage 和 Azure Blob Storage 集成。

常见问题#

  • 不会。Platform 只会列出存储桶一次,并索引找到的图像尺寸和标签。浏览和标注时会按需流式传输原始图像;托管训练则只会在训练期间使用 Platform 自己保存的已固定图像副本。已索引图像不计入你的存储配额。

  • 数据集在创建时只会索引一次。只有创建新数据集或重试失败的导入,才能纳入新对象;每张已索引图像都会固定到其版本,因此覆盖对象会导致 Platform 对相应图像采取默认拒绝策略。请添加新对象,而不要替换现有对象。

  • 已连接的数据集不支持需要 Platform 自己保存图像副本的功能:自动标注、聚类分析、数据集克隆,以及不可变的版本快照。手动标注、共享和训练均可正常使用。

  • 在 Settings > Integrations 中断开集成以删除已存储的凭据,或者在 AWS IAM 中停用或删除访问密钥。这两种操作都不会触及存储桶中的数据。

评论