指南

Amazon S3 文件管理器:将其连接到 Nubbo

如何将 Amazon S3 存储桶连接到 Nubbo:所需的 IAM 密钥、向导的每一步、CORS 规则,以及出现问题时该怎么办。

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 使用你现有的一个,或新建一个你需要先创建
CORSNubbo 为你添加规则你自行添加规则
何时选择最快的方式不想授予整个账户的访问权限时

自动连接

第 1 步:在 Amazon S3 中创建密钥

  1. 登录 AWS 控制台并打开 IAM。请使用 IAM 用户,切勿使用账户的根用户。
  2. 前往 用户 并点击 创建用户。为其命名,例如 nubbo,然后点击 下一步。
  3. 在 设置权限 中选择 直接附加策略,搜索并勾选 AmazonS3FullAccess,然后创建用户。
  4. 打开该用户,进入 安全凭证 选项卡,在 访问密钥 下点击 创建访问密钥。
  5. 用例选择在 AWS 外部运行的应用程序(如果没有列出,选择 其他),然后点击 下一步 和 创建访问密钥。
  6. 点击 下载 .csv 文件。这是 AWS 唯一一次让你看到私有访问密钥。

第 2 步:在 Nubbo 中连接存储桶

  1. 在 Nubbo 中打开 存储桶,点击 连接存储桶。选择 Amazon S3,然后点击 继续。

    Nubbo 向导的服务商步骤,已选择 Amazon S3 Nubbo 向导的服务商步骤,已选择 Amazon S3
  2. 选择 自动,然后点击 继续。

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

    Amazon S3 的你的密钥步骤,包含快速指南和密钥字段 Amazon S3 的你的密钥步骤,包含快速指南和密钥字段
  4. 选择你的一个存储桶并点击 使用此存储桶,或选择 新建,输入名称(如有要求,再选择区域),然后点击 创建并准备。Nubbo 会为存储桶添加一条 CORS 规则,只允许从应用上传和下载,并保留存储桶已有的规则。

    你的存储桶步骤,包含存储桶列表和新建选项 你的存储桶步骤,包含存储桶列表和新建选项
  5. 查看三项检查结果,如有需要可修改 在 Nubbo 中的名称,然后点击 完成。存储桶会出现在 存储桶 页面中,你可以在文件浏览器中打开它。

    完成步骤,包含连接、存储桶和 CORS 的检查结果 完成步骤,包含连接、存储桶和 CORS 的检查结果

如果 Nubbo 无法用你的密钥添加 CORS 规则,向导会带你进入 CORS 步骤。此时请按照 添加 CORS 规则 操作。

使用受限密钥连接

第 1 步:在 Amazon S3 中准备存储桶和密钥

  1. 在控制台顶部栏选择区域,打开 S3,在 通用存储桶 下点击 创建存储桶。为其命名(3 到 63 个字符:小写字母、数字、点和连字符),并在开启 Block Public Access 的情况下创建。
  2. 在 IAM 中创建一个没有任何权限的用户(用户、创建用户)。
  3. 打开该用户,进入 权限 选项卡,依次点击 添加权限、创建内联策略。切换到 JSON 编辑器,粘贴以下策略,将 YOUR-BUCKET 替换为你的存储桶名称,然后为其命名并保存。
  4. 与自动连接时一样,在 安全凭证 下点击 创建访问密钥 创建密钥,并下载 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 中连接存储桶

  1. 在 存储桶 页面中点击 连接存储桶,选择 Amazon S3,然后选择 使用受限密钥。
  2. 上传密钥 CSV 或粘贴其内容,并选择存储桶所在的区域。点击 检查密钥。
  3. 输入准确的存储桶名称,然后点击 检查访问权限。
  4. 向导会进入 CORS 步骤,并显示你需要添加的规则。

添加 CORS 规则

CORS 规则让浏览器可以在 https://nubbo.app 上从你的存储桶上传和下载文件。它与向导在 CORS 步骤中显示的规则相同。

  1. 在 S3 控制台中打开存储桶,进入 权限 选项卡。
  2. 向下滚动到 跨源资源共享(CORS),点击 编辑。
  3. 粘贴规则,然后点击 保存更改。
[
  {
    "AllowedHeaders": ["*"],
    "AllowedMethods": ["GET", "PUT", "POST", "DELETE", "HEAD"],
    "AllowedOrigins": ["https://nubbo.app"],
    "ExposeHeaders": ["ETag"],
    "MaxAgeSeconds": 3600
  }
]
CORS 步骤,显示要添加到存储桶的规则 CORS 步骤,显示要添加到存储桶的规则

保存后,回到 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 账户。

来源

价格和限制来自以下官方页面。服务商可能会调整,请在做决定前核实。