跳到内容

云存储10大服务对比:上传限制、价格和功能|S3/GCS/Azure/R2

分类:云·对比
本文目前仅提供日文版本。我们正在进行翻译工作。

选择云存储服务时,关键比较点包括单个上传限制、多部分上传支持、免费层、价格和出站(传输)成本。虽然AWS S3是事实上的行业标准,但根据成本、边缘交付和特定用途,有更合适的选择。本文比较了10大主要服务的规格,并提供了按用途的建议。

主要云存储100GB月费对比 $0.6 B2 $0.68 Wasabi $1.5 R2 $1.84 Azure $2 GCS $2.3 S3 $5 DO 100GB月费 (USD) ※流出费另计 截至2026年4月
图1: 7家主流云存储100GB月费对比

单一上传限制、分块上传限制和免费额度对比表

服务 单一对象限制 分段上传限制 免费套餐 月度预计成本(100GB)
AWS S3 5 GB 5 TB 5GB·2,000 请求/月(12 个月) $2.30〜
Google Cloud Storage 5 TB(单个对象) 5 TB 5GB(Standard、美国东部) $2.00〜
Azure Blob Storage 块:4.75TB、页面:8TB 195GB/块 × 50,000块 12个月5GB(LRS) $1.84〜
Cloudflare R2 5 GB 5 TB 10GB/月·100万操作/月(永久) $1.50(出站流量免费)
Backblaze B2 5 GB 10 TB 10GB(永久) $0.60〜
DigitalOcean Spaces 5 GB 5 TB 250GB + 1TB转移/月($5~) $5(包含至250GB)
Wasabi 1 TB 1 TB 无 (仅限试用) $0.68(出站流量免费)
MinIO 5 TB(实现依赖) 5 TB 自托管(无限制) 仅基础设施成本
Firebase Storage 事实上无限制(使用 GCS) GCS 兼容 5GB(Spark 计划) $0.026/GB〜
Supabase Storage 50MB(Free)/ 50GB(Pro) Pro 及以上版本支持 1GB(免费计划) $0.021/GB(Pro)

※定价为 2026 年 4 月的估计值。价格因地区、存储类和使用量而异。大多数出站(数据传输)成本不包括在上表中。

各服务的特点和选择方法

AWS S3

云存储事实上的标准。许多服务实现了S3兼容API,库和工具的生态系统最为成熟。多部分上传可以用 <code>aws-sdk</code> 自动化,最小块大小5MB、最多10,000个部分,可上传最大5TB的对象。与CloudFront集成可轻松实现边缘交付。但是出站成本较高(从$0.09/GB起),对于有大量数据传输的服务来说成本是一个挑战。

Google Cloud Storage(GCS)

单一对象限制为5TB,非常适合需要将大文件作为单一对象进行管理的使用场景。其优势在于与BigQuery、Vertex AI等GCP服务的无缝集成,是构建数据分析管道的首选。传输成本相比S3往往略低。

Azure Blob Storage

与 Microsoft 生态系统(Office 365、Active Directory、Azure Functions 等)的兼容性很高,拥有丰富的企业级身份认证和合规性功能。块 Blob 支持最大 4.75TB 的对象,页 Blob(用于虚拟磁盘)支持最大 8TB。可通过热层、冷层和归档层进行成本优化。

Cloudflare R2

主要特点是出站成本免费。由于采用 S3 兼容 API,可以几乎原样使用现有的 S3 客户端。与 Workers(边缘计算)的集成强大,支持在边缘直接操作存储的架构。提供永久免费的 10GB/月,非常适合个人开发和小规模服务的起点。

Backblaze B2

提供业界最低级别的定价 ($0.006/GB/月),非常适合注重成本的备份和媒体归档用例。与 Cloudflare 的 "Bandwidth Alliance" 结合,B2 到 Cloudflare 的出口免费,这种组合很受欢迎。它提供 S3 兼容 API,易于迁移。

DigitalOcean Spaces

以月 $5 起的固定费率计划为特色,包括 250GB 存储空间和 1TB 传输带宽。其优势是对小规模服务易于预算预测。CDN 作为标准配置,设置简单。在与 DigitalOcean Droplets(虚拟机)相同的区域使用时,转移成本免费。

Wasabi

S3 兼容,出站免费(从 Wasabi 直接下载),存储费用低廉($0.0068/GB/月)。但要注意最低保留期规则:90 天内删除的数据也会产生 90 天的费用。适合备份和长期冷数据存储。

MinIO

开源S3兼容对象存储,可在本地部署或私有云中自我托管。与Kubernetes具有高度兼容性,并提供官方Helm图表。用于不希望将数据转移到云端的受管制行业,以及本地部署环境中的开发和测试用途。

Firebase Storage

内部使用GCS,可以轻松实现使用Firebase SDK从移动/Web应用的直接上传。其优势是与Firebase Authentication集成的细粒度访问控制(Security Rules)。但是,在Spark(免费)计划中,单个文件的大小限制可能会被设置得相对较低。

Supabase Storage

Supabase 是基于 PostgreSQL 的 BaaS(后端即服务)的存储功能。其独特优势是与 Supabase Auth 的基于 RLS(行级安全)的访问控制。免费计划的文件大小限制为 50MB,所以大文件需要 Pro 或更高版本的计划(50GB/文件)。

按用途推荐

用途 第一选择 原因
小规模 SaaS 的起点 Cloudflare R2 免费出口、永久免费套餐、S3 兼容
大容量媒体存档 Backblaze B2 + Cloudflare 最低价存储 + 免费出口组合
边缘交付、全球部署 Cloudflare R2 / AWS S3 + CloudFront CDN 集成和低延迟交付
成本优先 Wasabi / Backblaze B2 业界最低级别的存储定价
企业合规性 AWS S3 / Azure Blob 丰富的身份验证、加密和审计功能
移动应用直接上传 Firebase Storage / Supabase Storage 易于 SDK 和身份验证集成
本地部署和私有云 MinIO S3 兼容、自托管和开源选项
与 GCP 服务的集成 Google Cloud Storage 与 BigQuery 和 Vertex AI 的无缝集成

什么是分段上传

分块上传是一种将大文件分成较小部分并并行上传的机制。对于 S3 上超过 100MB 的文件建议使用,对于超过 5GB 的文件为必需。主要优势如下。

  • 并行上传提高吞吐量
  • 网络中断时仅可重新传输失败的部分(可恢复)
  • 绕过单一请求的5GB限制,可传输最多5TB
// AWS SDK v3 でのマルチパートアップロード例
import { S3Client, CreateMultipartUploadCommand,
         UploadPartCommand, CompleteMultipartUploadCommand } from '@aws-sdk/client-s3';

const s3 = new S3Client({ region: 'ap-northeast-1' });

async function multipartUpload(bucket, key, file) {
    // アップロードの開始
    const { UploadId } = await s3.send(new CreateMultipartUploadCommand({
        Bucket: bucket, Key: key,
    }));

    const chunkSize = 10 * 1024 * 1024; // 10MB
    const parts = [];

    for (let i = 0; i * chunkSize < file.size; i++) {
        const chunk = file.slice(i * chunkSize, (i + 1) * chunkSize);
        const { ETag } = await s3.send(new UploadPartCommand({
            Bucket: bucket, Key: key,
            UploadId, PartNumber: i + 1,
            Body: chunk,
        }));
        parts.push({ ETag, PartNumber: i + 1 });
    }

    // パーツの結合(完了)
    await s3.send(new CompleteMultipartUploadCommand({
        Bucket: bucket, Key: key,
        UploadId, MultipartUpload: { Parts: parts },
    }));
}

本文中可用的测试文件(免费)

  • → <a href="/ja/files/threshold/" class="text-primary-600 dark:text-primary-400 hover:underline">边界值测试文件列表</a> — 测试各云存储服务上限附近的上传
  • → <a href="/ja/files/images/png/" class="text-primary-600 dark:text-primary-400 hover:underline">PNG 测试图像列表</a> — 使用各种尺寸的图像验证存储行为

相关文章

  • → <a href="/ja/blog/s3-upload-limit/" class="text-primary-600 dark:text-primary-400 hover:underline">AWS S3・CloudFront 文件上传限制总结</a>
  • → <a href="/ja/blog/how-to-test-upload-limit/" class="text-primary-600 dark:text-primary-400 hover:underline">如何正确测试文件上传限制</a>
  • → <a href="/ja/blog/mb-vs-mib-file-size/" class="text-primary-600 dark:text-primary-400 hover:underline">MB 和 MiB 的区别|文件大小单位的正确理解</a>

常见问题

个人开发中最具成本效益的云存储是什么?

Cloudflare R2以其慷慨的免费套餐(每月10GB免费存储、无出站流量费用)提供了极高的性价比。

S3 和 GCS 的主要区别是什么?

S3 需要指定区域,而 GCS 默认支持多区域。定价大致相同,但 GCS 的特点是具有 Nearline 等多层存储类别。

哪些服务提供免费的出口(数据传输)费用?

Cloudflare R2 的出站流量费用完全免费。Backblaze B2 也有带宽联盟,通过 Cloudflare 访问时可免费使用。