YOLO Vision 2026:

Amazon S3 集成#

Amazon S3 集成将你的 S3 存储桶连接到 Ultralytics Platform。你的图片仍保留在你的存储桶中——Platform 会就地对其进行索引,因此你可以直接浏览、标注和训练 YOLO 模型,而无需上传副本。

Pro 功能

Amazon S3 数据集需要 Pro or Enterprise plan。免费工作区会看到该集成,并在连接时提示升级。如果订阅结束,现有的 Amazon S3 数据集仍可完全访问——只有新连接和导入才需要 Pro。

创建只读 IAM 用户#

Platform 始终只读取你的存储——它绝不会写入、修改或删除你的对象。请使用仅具有列出和读取权限的专用 IAM user——切勿使用根凭据:

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

  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. 打开用户的 安全凭证 选项卡,创建一个 访问密钥,并复制访问密钥 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 Integration Settings

你需要工作区管理员或所有者 role 来连接云存储。一个连接最多支持 50 个存储桶,发现功能会列出密钥能够访问的最多 300 个存储桶。

稍后重新连接同一个 IAM 用户会将新存储桶添加到现有集成中。只有当替换后的凭证仍然可以读取你已经连接的所有存储桶时,才会替换已保存的凭证。

每个连接对应一个区域

一个连接会读取你所输入区域内的存储桶。如果你的存储桶位于多个区域,请为每个区域建立一个连接。

凭据安全性

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

从 S3 存储桶创建数据集#

  1. 点击新建数据集并打开云端标签页。
  2. 选择一个已连接的存储桶并浏览到包含你数据的文件夹。
  3. 确认文件夹,调整数据集名称,然后创建数据集。

Platform 会列出文件夹一次并索引其发现的内容:

  • Images.jpg.jpeg.png.webp.avif 对象通过有界请求读取尺寸进行索引。Platform 不会保留源图片的第二份副本。
  • Labels — YOLO .txt 附属文件会被解析为 Platform 标注,通过标准的 images/labels/ 布局进行匹配,或者作为同一文件夹下的同级文件匹配。
  • 元数据 — YAML 文件提供类别名称和姿态关键点形状,这与存档上传完全一样。当文件夹中包含多个文件时,优先使用 data.yamldata.yml
  • 任务 — 标签文件的样本决定了任务类型,因此分割、姿态和 OBB 文件夹是根据其标签形状识别的,而不是根据你在对话框中选择的任务识别的。
  • Splits——对象键中的 trainvaltest 文件夹名称会自动分配拆分。

该数据集随后表现得与其他数据集一样:你可以浏览并标注它、将其设为公开或私有、与团队共享,并通过托管训练在其上进行训练。原始内容按需流式传输,且索引后的图片不会消耗你的 Platform存储配额

限制

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

保持索引对象不可变

每个索引图像都会绑定到其 S3 对象 ETag,如果对象在其下方发生更改,Platform 将会停止运行。请添加新对象,而不是覆盖现有对象。

导入失败#

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

重试操作会重新列出文件夹而不是恢复传输:自第一次尝试以来添加的对象会被收录,而不再存在的对象将从数据集中移除。

训练#

托管训练通过正常的训练流程运行。训练过程在整个运行期间使用 Platform 自身的已固定镜像副本,你的 AWS 凭证绝不会暴露给训练工作负载。

断开连接#

断开连接会删除存储的凭证,而不会触及 AWS 中的任何内容。从这些存储桶构建的数据集及其类别、标签和标注会保留在你的工作区中,但在重新连接相同的 IAM 用户之前,无法加载、预览或使用这些镜像进行训练。

使用带有 GET /api/integrations/buckets 返回的集成 ID 的 REST API

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 拥有图片副本的功能:自动标注、clustering analysis、数据集克隆以及不可变的 version snapshots

删除基于 S3 的数据集或其中的单个图像仅会移除 Platform 的引用——你的对象绝不会被触及。

另请参阅 Google Cloud StorageAzure Blob Storage 集成。

评论