Amazon S3 集成
Amazon S3集成可将你的 S3 存储桶连接到 Ultralytics Platform。图像会保留在你的存储桶中——Platform 会直接为图像建立索引,因此你无需上传副本,即可浏览、标注图像并训练 YOLO 模型。开启 AI 功能后,Platform 还可使用这些图像进行智能标注、自动标注、相似图像搜索和云端训练。
Amazon S3 数据集需要专业版或企业版方案。免费工作区可以看到此集成,并会在连接时收到升级提示。即使订阅结束,现有 Amazon S3 数据集仍可完全访问;只有新建连接和导入才需要专业版方案。
创建 IAM 用户#
读取权限涵盖所有操作,只有图像生成例外,因为图像生成也会创建对象。Platform 永远不会修改或删除你的对象。请使用专用的 IAM 用户——切勿使用 root 凭据:
-
在 AWS 控制台中,前往 IAM > Users,创建一个没有控制台访问权限的用户。
-
附加一条策略,为你要连接的存储桶授予列出和读取权限:
{ "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 发现你的存储桶,这样你就不必手动输入名称。若要使用图像生成,还需允许
s3:PutObject:{ "Effect": "Allow", "Action": "s3:PutObject", "Resource": [ "arn:aws:s3:::my-bucket/generated/*", "arn:aws:s3:::my-bucket/*/generated/*", "arn:aws:s3:::my-bucket/.ultralytics-write-check" ] }S3 没有仅创建权限,因此此设置会将写入范围限制在
generated/文件夹,以及 Platform 用于测试写入权限的.ultralytics-write-check密钥(该测试请求始终会被拒绝,因此不会存储任何内容)。Platform 自身的写入操作绝不会覆盖内容。 -
打开用户的 Security credentials 选项卡,创建一个 access key,然后复制访问密钥 ID 和秘密访问密钥。
Platform 会拒绝临时 AWS 凭据。AWS STS 颁发的密钥(包括任何以 ASIA 开头的密钥、角色 会话凭据以及 IAM Identity Center 密钥)会在数据集仍处于连接状态时过期,因此必须使用专用 IAM 用户的长期访问密钥。
连接到 Platform#
- 前往 Settings > Integrations,然后从集成列表中选择 Amazon S3。
- 输入访问密钥 ID、秘密访问密钥和存储桶区域(例如
us-east-1)。 - 点击 Find available buckets,然后选择要连接的存储桶。如果策略不允许发现存储桶,请手动输入 已知的存储桶名称。
- 点击 连接。Platform 会在保存任何内容之前验证其是否可以列出和读取每个选定的存储桶,并通过 S3 始终会拒绝的请求检查密钥是否也能写入存储桶,因此不会存储任何内容。

每个已连接的凭据都有一个 AI 功能开关。更改 IAM 策略后,请使用同一 IAM 用户重新连接,以重新检查写入权限。
你需要拥有工作区管理员或所有者角色,才能连接云存储。你 每次最多可以添加 50 个存储桶;系统最多会列出密钥可访问的 300 个存储桶。
之后重新连接同一个 IAM 用户时,可以向现有集成添加新存储桶。只有在替换凭据仍能读取所有已连接存储桶时,系统才会替换已保存的凭据。如果无法读取任何存储桶,错误信息会指出该存储桶,包括之前通过同一个 IAM 用户连接的存储桶。
一个连接只能读取你所填区域中的存储桶。如果你的存储桶分布在多个区域,请为每个区域分别建立连接。
凭据在静态存储时使用 AES-256-GCM 加密,绝不会返回到浏览器,也绝不会暴露给训练工作负载。如需撤销访问权限,请在 AWS IAM 中停用访问密钥。
AI 功能#
每个已连接的凭据都在 Settings > Integrations 中有一个默认开启的 AI 功能开关。开启期间,Ultralytics GPU 和 AI 模型提供商可能会将该凭据中的图像用于:
AI 模型服务商仅会参与图像生成(Google Gemini 会根据源图像规划提示词)和付费标注模型的处理(这些模型使用你工作区自己的服务商密钥运行)。Platform 不会保存你的图像副本:各项功能会按需读取图像,云端训练会在训练运行期间使用临时副本,而相似图像搜索会为每张图像保存一个嵌入,图像从 Platform 中移除时,该嵌入也会删除。
关闭开关后,图像不会发送到 Ultralytics GPU 或 AI 模型提供商。关闭开关会停止新的 AI 任务;已经运行的任务会完成。使用该凭据的数据集随后会显示 AI 功能已关闭,并提供返回这些设置的链接;每项不可用功能也会说明原因。手动标注、共享和本地训练仍可正常使用;你已创建的标签、模型和搜索结果都会保留。
你需要拥有工作区管理员或所有者角色才能更改此开关。你也可以使用 REST API进行设置,并使用 GET /api/integrations/buckets 返回的集成 ID:
curl -X PATCH \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"processing": false}' \
https://platform.ultralytics.com/api/integrations/buckets/INTEGRATION_ID图像生成#
只要 AI 功能已开启,且 IAM 用户有权写入存储桶,生成相似图像就可用于 Amazon S3 数据集。你添加的图像会写入数据集文件夹中的 generated/ 文件夹,然后像其他已建立索引的图像一样添加到数据集中。Platform 只会在那里创建新对象,绝不会覆盖或删除现有对象。如果操作提示需要写入权限,请按需授予权限,然后在 Settings > Integrations 中使用同一 IAM 用户重新连接。
从 S3 存储桶创建数据集#
- 点击 New Dataset,然后打开 Cloud 选项卡。
- 选择已连接的存储桶,然后浏览到包含数据的文件夹。
- 确认文件夹,调整数据集名称,然后创建数据集。
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 会采取默认拒绝策略。请添加新对象,而不要覆盖现有对象。
导入失败#
如果导入失败(例如文件夹为空、路径拼写错误或权限被撤销),数据集页面会显示错误。编辑者可以点击 重试导入,使用已存储的存储桶和文件夹重新开始导入;也可以创建一个指向正确路径的新数据集。
重试时会重新列出文件夹,而不是从中断处继续:首次尝试后新增的对象会被纳入,不再存在的对象则会从数据集中移除。
训练#
开启 AI 功能后,你可以通过常规训练流程进行托管训练。训练会在运行期间使用 Platform 自己保存的已固定图像副本,你的 AWS 凭据绝不会暴露给训练工作负载。关闭 AI 功能后,训练对话框会说明云端训练不可用的原因,并提供本地训练选项。
断开连接#
断开连接会删除已存储的凭据,但不会触及 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_IDfrom 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 持有图像副本的功能:克隆数据集、不可变的版本快照、人脸模糊处理,以及从其他数据集粘贴图像。智能标注、自动标注、相似图像搜索、聚类、云端训练和图像生成均需要开启 AI 功能。
删除 S3 数据集或其中的单张图像,只会移除 Platform 对这些对象的引用,不会触及你的对象。
另请参阅 Google Cloud Storage 和 Azure Blob Storage 集成。
常见问题#
数据集在创建时只会索引一次。只有创建新数据集或重试失败的导入,才能纳入新对象;每张已索引图像都会固定到其版本,因此覆盖对象会导致 Platform 对相应图像采取默认拒绝策略。请添加新对象,而不要替换现有对象。
仅用于图像生成,且必须同时满足 IAM 用户拥有
s3:PutObject权限和 AI 功能已开启这两个条件。Platform 会在数据集文件夹中的generated/下创建新对象,绝不会覆盖或删除现有对象。在 Settings > Integrations 中断开集成即可删除已存储的凭据,也可以在 AWS IAM 中停用或删除访问密钥。这两种操作都不会影响存储桶中的数据。若要在不断开连接的情况下阻止图像发送到 Ultralytics GPU,请关闭 AI 功能。
评论
提出问题、分享结果,或帮助其他人。