Nubbo 通过 IAM 访问密钥连接 Amazon S3。几分钟后,你的存储桶就会出现在一个文件浏览器中,支持直接上传、分享链接和相册,而无需公开任何内容。本指南按照 Nubbo 向导一步步说明两种方式:自动连接,或使用仅限一个存储桶的密钥。
你将获得什么
- 像使用网盘一样浏览存储桶:文件夹、视图、搜索、回收站、标签和收藏。
- 在浏览器和 Amazon S3 之间直接上传和下载文件。文件从不经过 Nubbo 的服务器。
- 分享文件和文件夹时可设置密码、到期时间和下载次数限制,还能把文件接收到你的存储桶并创建相册。
- 你的密钥使用 AES-256-GCM 加密保存,你可以随时断开存储桶的连接。
开始之前
你需要一个 Amazon S3 账户和一个 Nubbo 账户。你连接的每个存储桶都计入你的套餐限额:免费套餐允许 2 个,Personal 允许 5 个,Pro 不限。部分 AWS 区域默认处于禁用状态,必须先在账户中启用才能使用(例如米兰、苏黎世或开普敦)。如果你要在其中某个区域创建存储桶,请先启用它。无需关闭 Block Public Access:Nubbo 会让存储桶保持私有。
选择连接方式
Nubbo 向导提供两种方式。两者的结果相同:存储桶已连接,并可从浏览器上传。
| 自动 | 使用受限密钥 | |
|---|---|---|
| 密钥 | 可访问整个账户 | 仅限一个存储桶 |
| 存储桶 | Nubbo 使用你现有的一个,或新建一个 | 你需要先创建 |
| CORS | Nubbo 为你添加规则 | 你自行添加规则 |
| 何时选择 | 最快的方式 | 不想授予整个账户的访问权限时 |
自动连接
第 1 步:在 Amazon S3 中创建密钥
- 登录 AWS 控制台并打开 IAM。请使用 IAM 用户,切勿使用账户的根用户。
- 前往 用户 并点击 创建用户。为其命名,例如
nubbo,然后点击 下一步。 - 在 设置权限 中选择 直接附加策略,搜索并勾选 AmazonS3FullAccess,然后创建用户。
- 打开该用户,进入 安全凭证 选项卡,在 访问密钥 下点击 创建访问密钥。
- 用例选择在 AWS 外部运行的应用程序(如果没有列出,选择 其他),然后点击 下一步 和 创建访问密钥。
- 点击 下载 .csv 文件。这是 AWS 唯一一次让你看到私有访问密钥。
第 2 步:在 Nubbo 中连接存储桶
在 Nubbo 中打开 存储桶,点击 连接存储桶。选择 Amazon S3,然后点击 继续。

选择 自动,然后点击 继续。

在 你的密钥 这一步,点击 上传文件 并选择你下载的 CSV,或将其内容粘贴到文本框中。Nubbo 会读取访问密钥和私有密钥,你无需手动复制。确认 区域 是你的存储桶所在的区域。点击 检查密钥。Nubbo 会检查密钥是否可用,以及是否可访问整个账户。

选择你的一个存储桶并点击 使用此存储桶,或选择 新建,输入名称(如有要求,再选择区域),然后点击 创建并准备。Nubbo 会为存储桶添加一条 CORS 规则,只允许从应用上传和下载,并保留存储桶已有的规则。

查看三项检查结果,如有需要可修改 在 Nubbo 中的名称,然后点击 完成。存储桶会出现在 存储桶 页面中,你可以在文件浏览器中打开它。

如果 Nubbo 无法用你的密钥添加 CORS 规则,向导会带你进入 CORS 步骤。此时请按照 添加 CORS 规则 操作。
使用受限密钥连接
第 1 步:在 Amazon S3 中准备存储桶和密钥
- 在控制台顶部栏选择区域,打开 S3,在 通用存储桶 下点击 创建存储桶。为其命名(3 到 63 个字符:小写字母、数字、点和连字符),并在开启 Block Public Access 的情况下创建。
- 在 IAM 中创建一个没有任何权限的用户(用户、创建用户)。
- 打开该用户,进入 权限 选项卡,依次点击 添加权限、创建内联策略。切换到 JSON 编辑器,粘贴以下策略,将
YOUR-BUCKET替换为你的存储桶名称,然后为其命名并保存。 - 与自动连接时一样,在 安全凭证 下点击 创建访问密钥 创建密钥,并下载 CSV。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["s3:ListBucket", "s3:GetBucketLocation"],
"Resource": "arn:aws:s3:::YOUR-BUCKET"
},
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject",
"s3:DeleteObject",
"s3:AbortMultipartUpload",
"s3:ListMultipartUploadParts"
],
"Resource": "arn:aws:s3:::YOUR-BUCKET/*"
}
]
}
第 2 步:在 Nubbo 中连接存储桶
- 在 存储桶 页面中点击 连接存储桶,选择 Amazon S3,然后选择 使用受限密钥。
- 上传密钥 CSV 或粘贴其内容,并选择存储桶所在的区域。点击 检查密钥。
- 输入准确的存储桶名称,然后点击 检查访问权限。
- 向导会进入 CORS 步骤,并显示你需要添加的规则。
添加 CORS 规则
CORS 规则让浏览器可以在 https://nubbo.app 上从你的存储桶上传和下载文件。它与向导在 CORS 步骤中显示的规则相同。
- 在 S3 控制台中打开存储桶,进入 权限 选项卡。
- 向下滚动到 跨源资源共享(CORS),点击 编辑。
- 粘贴规则,然后点击 保存更改。
[
{
"AllowedHeaders": ["*"],
"AllowedMethods": ["GET", "PUT", "POST", "DELETE", "HEAD"],
"AllowedOrigins": ["https://nubbo.app"],
"ExposeHeaders": ["ETag"],
"MaxAgeSeconds": 3600
}
]

保存后,回到 Nubbo 并点击 已添加,检查。部分服务商需要约一分钟才能应用。如果你的密钥有权修改 CORS,尝试帮我配置 会替你完成。
如果出现问题
| Nubbo 中的提示 | 怎么办 |
|---|---|
| “凭据无效。请检查访问密钥和私有访问密钥。” | 重新复制两个密钥,开头和结尾不要有空格。 |
| “此密钥似乎仅限一个存储桶。你可以继续使用受限方式,或创建一个拥有完全访问权限的密钥。” | 点击继续使用受限密钥,或创建一个可访问整个账户的密钥,然后点击换一个密钥。 |
| “未找到存储桶。请核对名称和区域。” | 核对准确的存储桶名称,并确认所选区域就是存储桶所在的区域。 |
| “你的密钥没有创建存储桶的权限。” | 使用拥有完全访问权限的密钥,或在控制台中创建存储桶后点击我已在控制台中创建。 |
| “该名称在此服务商处已被使用;请换一个。” | 存储桶名称在整个服务商范围内唯一:请换一个。 |
| “你的密钥没有配置它的权限。” | 按上文所述手动添加 CORS 规则。 |
| “仍未生效。请检查规则后再试一次;部分服务商需要约一分钟才能应用。” | 确认来源正好是 https://nubbo.app,末尾没有斜杠,等待一分钟后再检查。 |
| “此存储桶已在使用中。” | 该存储桶已在 Nubbo 中连接,可能在你的账户中,也可能在其他账户中。 |
| “存储桶位于不同的区域。请核对配置的区域。” | 在你的密钥这一步,选择存储桶所在的区域。 |
| “我们没有在该文件中找到密钥,请手动粘贴。” | 上传你创建密钥时下载的 CSV,或原样粘贴其内容。 |
费用
Amazon S3 对存储、请求和出站数据传输收费。我们在 Amazon S3 价格 中用示例进行了说明。
常见问题
使用 Nubbo 需要把 S3 存储桶设为公开吗?
不需要。Nubbo 会让存储桶保持私有,Block Public Access 可以一直开启。上传和下载使用会过期的预签名 URL。
AWS 密钥需要哪些权限?
自动方式需要 AmazonS3FullAccess 策略。使用受限密钥时,一条只授予你的存储桶访问权限的内联策略就够了:列出、读取、写入和删除对象。
可以使用 AWS 根用户的密钥吗?
这不是个好主意,AWS 也不建议这样做。请专门为 Nubbo 创建一个 IAM 用户,以后可以停用它的密钥而不影响其他任何东西。
为什么 Nubbo 没有填写 AWS 密钥的字段?
因为 AWS 以 CSV 文件的形式给你密钥。Nubbo 会直接读取它:你上传文件或粘贴其内容,永远无需手动复制私有密钥。
可以连接多个 S3 存储桶吗?
可以。每个存储桶都计入你的套餐限额:免费套餐允许 2 个,Personal 允许 5 个,Pro 不限,而且它们可以来自不同的 AWS 账户。
来源
价格和限制来自以下官方页面。服务商可能会调整,请在做决定前核实。