核心定义

Amazon S3 (Simple Storage Service) 是亚马逊 AWS 提供的一种对象存储服务。它被设计用来在互联网上存储和检索任意数量的数据,从任何地方,在任何时间。

您可以把它想象成一个无限大的、极其可靠的、可以通过互联网访问的云端硬盘。但它与传统硬盘(块存储)或文件共享(文件存储)有本质区别。


核心概念与工作原理

要理解 S3,需要掌握以下几个关键概念:

  1. 对象存储 (Object Storage)

    • S3 不是像您电脑C盘那样的块存储(管理扇区),也不是像公司网络驱动器那样的文件存储(管理文件和文件夹 hierarchy)。

    • 它是对象存储。您存储的每个单元都是一个“对象”。

    • 每个对象包含三部分:

      1. 数据本身(例如:一张图片、一个视频、一个数据库备份文件)。

      2. 元数据 (Metadata): 描述数据的键值对(例如:创建日期、内容类型、作者等)。

      3. 全局唯一的键 (Key): 对象的名称,用于检索它(例如:projects/my-vacation/hawaii/beach-photo.jpg)。

    • 所有对象都存储在称为存储桶 (Bucket) 的容器中。

  2. 存储桶 (Bucket)

    • 存储桶就像是对象的一个顶层文件夹或命名容器

    • 桶名称必须在所有 AWS 账户和所有区域中全局唯一,因为它是 S3 访问 URL 的一部分(例如:https://my-unique-bucket-name.s3.amazonaws.com/photo.jpg)。

    • 您可以在桶中创建类似文件夹的逻辑结构(例如:logs/2023/10/),但对 S3 来说,这仅仅是键名的一部分。

  3. 高耐久性和高可用性

    • S3 被设计为 99.999999999% (11个9) 的耐久性。这意味着您存入100亿个对象,预期平均每1万年只会丢失1个对象。它通过在不同设施的不同设备上自动冗余存储您的数据来实现这一点。

    • 它同样提供 99.99% 的可用性,确保您需要时就能访问到数据。

  4. 安全性

    • S3 提供多层次的安全控制:

      • 身份和访问管理 (IAM): 控制哪个 AWS 用户或角色可以访问您的桶和对象。

      • 存储桶策略 (Bucket Policies): 基于JSON的规则,用于授予或拒绝其他账户、用户甚至匿名用户对桶的访问权限。

      • 访问控制列表 (ACLs): 更细粒度的传统权限控制(现在更推荐使用 IAM 和存储桶策略)。

      • 加密: 支持在传输中(SSL/TLS)和静态(服务器端和客户端)对数据进行加密。


S3 与传统存储的对比

特性Amazon S3 (对象存储)传统文件存储 (如NAS)块存储 (如硬盘、EBS)
存储单元对象 (数据 + 元数据 + 键)文件和目录 (扇区)
访问方式RESTful HTTP API (通过Web、CLI、SDK)文件系统协议 (NFS, SMB)操作系统磁盘协议 (SCSI)
结构扁平化的命名空间,通过键模拟目录严格的层级树状结构无结构,需要格式化为文件系统
最佳用途存储大量静态数据:备份、归档、媒体库、数据湖共享文件、主目录、内容存储库数据库、操作系统启动卷、需要低延迟读写的应用

主要特点和优势

  • 无限扩展: 您可以在 S3 中存储任意多的数据,无需预先规划容量。

  • 高耐用性和可用性: 数据丢失的风险极低,服务中断时间极短。

  • 安全: 提供企业级的安全和合规能力。

  • 成本效益: 按实际使用量付费(“按需付费”)。没有前期硬件成本,也没有长期承诺。

  • 灵活的存储类别: S3 提供不同成本和访问性能的存储层级,以满足不同需求:

    • S3 Standard: 通用,高性能,频繁访问的数据。

    • S3 Intelligent-Tiering: 自动在频繁访问和不频繁访问层之间移动数据以优化成本。

    • S3 Standard-IA: 不频繁访问但需要快速检索的数据。

    • S3 One Zone-IA: 不频繁访问且可容忍单个可用区丢失的数据(成本更低)。

    • S3 Glacier: 长期归档,检索时间从分钟到小时不等。

    • S3 Glacier Deep Archive: 最低成本,用于数字保留,检索时间可达12小时。

  • 与 AWS 服务无缝集成: S3 是 AWS 生态系统的核心。它可以与 Lambda(无计算函数)、Redshift(数据仓库)、Snowflake(数据分析平台)、Athena(交互式查询)等数十种服务直接集成,构建强大的应用程序。


典型用途

S3 的用途几乎无穷无尽,常见场景包括:

  1. 数据湖和数据分析: 作为中央存储库,存放所有原始数据,供 Redshift, EMR, Athena 等分析工具处理。

  2. 备份和归档: 替代磁带库,用于备份关键业务数据和长期合规性归档(使用 Glacier 层级)。

  3. 静态网站托管: 可以直接在 S3 上托管整个静态网站(HTML, CSS, JS, 图片)。

  4. 应用程序资产存储: 存储用户生成的图片、视频、文档,以及应用程序所需的静态资源。

  5. 软件交付: 存储可供用户下载的软件、安装程序和更新包。

  6. 灾难恢复: 将整个数据中心的快照和镜像存储在 S3 中,以备恢复之用。

  7. 日志存储: 集中存储来自各种应用程序、服务器和网络设备的日志文件。

总结

Amazon S3 是云计算的基石之一。 它不仅仅是一个简单的存储服务,而是一个高度可扩展、安全、耐用且成本效益极高的对象存储平台。它的 RESTful API 设计使其成为现代应用程序和无服务器架构的理想数据存储后端。无论是初创公司还是财富500强企业,S3 都是他们存放海量数据的首选。

Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐