Amazon S3 功能
预期用途和限制
使用本服务需遵循 Amazon Web Services 客户协议。
Amazon S3 具备平面的未分层结构并有多种管理功能,帮助各种规模和行业的客户按照能够为其业务和团队带来最大价值的方式组织数据。所有对象存储在 S3 存储桶中,可以按称为“前缀”的共享名称来组织。对于每个对象,您可以附加最多 10 个称为 S3 对象标签的键值对,这些键值对在对象的整个生命周期中可以创建、更新和删除。要跟踪对象及其对应的标签和前缀,您可以使用 S3 清单报告,其中列出了 S3 存储桶中的已存储对象或具有特定前缀的已存储对象,及其相应的元数据和加密状态。S3 清单可以配置为每天或每周生成报告。
借助 S3 存储桶名称、前缀、对象标签和 S3 清单,您可以通过广泛的方式来分类和报告您的数据,然后配置其他 S3 功能以采取操作。 无论是存储成千上万还是数十亿个对象,S3 批量操作都可让您轻松管理 Amazon S3 中任意规模的数据。使用 S3 批量操作,只需一个 S3 API 请求或者在 S3 控制台中操作几步,您就可在存储桶之间复制对象,替换对象标签集,修改访问控制,以及从 S3 Glacier Flexible Retrieval 以及 S3 Glacier Deep Archive 存储类中恢复归档的对象。您还可以使用 S3 批量操作跨对象运行 AWS Lambda 函数,用于运行自定义的业务逻辑,例如处理数据或者转码图像文件。要开始使用,请选择源存储桶和筛选器,或者使用 S3 清单报告或提供自定义列表来指定目标对象列表,然后从预先填充的菜单中选择所需的操作。S3 分批操作请求完成后,您会收到通知以及有关全部更改的完成报告。通过观看视频教程了解有关 S3 批量操作的更多信息。
Amazon S3 还支持帮助维护数据的版本控制、防止意外删除以及复制数据到相同或不同 AWS 区域的功能。借助 S3 版本控制,您可以保存、检索和还原存储到 Amazon S3 中的某个对象的每个版本,这让您可以从意外的用户操作和应用程序故障中进行恢复。要防止意外删除,请在 S3 存储桶上启用多重身份验证(MFA)删除。如果您在启用了 MFA 删除的存储桶中尝试删除某个存储的对象,存储桶会要求提供两种形式的身份验证:您的 AWS 账户凭证以及有效序列号、空格和显示在已批准身份验证设备(例如,硬件密钥卡或 Universal 2nd Factor (U2F) 安全密钥)上的六位代码的组合。
利用 S3 复制,您可将对象(及其对应的元数据和对象标签)复制到相同或不同的 AWS 区域的一个或多个目标存储桶,以减少延迟、确保合规性、安全性、灾难恢复和其他使用案例。您可以将 S3 跨区域复制(CRR)配置为从源 S3 存储桶复制到不同 AWS 区域中的一个或多个目标存储桶。 S3 同区域复制(SRR)在同一 AWS 区域内的存储桶之间复制对象。虽然 CRR 和 SRR 等实时复制会在新的已上载对象写入存储桶时自动复制它们,但 S3 批量复制允许您复制现有对象。您可以利用 S3 批量复制来回填新创建的存储桶,重试原先无法复制的对象,在账户之间迁移数据,或者向数据湖添加新的存储桶。 Amazon S3 Replication Time Control(S3 RTC)通过提供 SLA 和对复制时间的可见性来帮助您满足数据复制的合规性要求。
若要跨 AWS 区域和账户访问 S3 存储桶中的复制数据集,请使用 Amazon S3 多区域接入点为您的应用程序和客户端创建一个全局端点,以供在任何位置使用。此全局端点允许您使用在单区域中采用的相同简单架构来构建多区域应用程序,并且可以在全球任意区域运行这些应用程序。在访问跨多个 AWS 区域和账户复制的数据集时,Amazon S3 多区域接入点可提高性能多达 60%。基于 AWS Global Accelerator,S3 多区域接入点会考虑网络拥塞和请求应用程序的位置等因素,通过 AWS 网络将您的请求动态路由到数据的最低延迟副本。使用 S3 多区域接入点失效转移控制,您可以跨 AWS 区域在复制的数据集之间进行失效转移,允许您在几分钟内将 S3 数据请求流量转移到其他 AWS 区域。
您还可以通过 S3 对象锁定实施一次写入多次读取(WORM)策略。此 S3 管理功能在客户定义的保留期内阻止删除对象版本,让您能够通过实施保留策略来进一步保护数据或满足合规性要求。您可将工作负载从现有 WORM 系统迁移到 Amazon S3,并在对象级别或存储桶级别配置 S3 对象锁定,防止在预定义的保留到期日期或法律保留日期之前删除对象版本。具有 S3 对象锁定的对象会保留 WORM 保护,即使它们移动到具有 S3 生命周期策略的不同存储类。要跟踪哪些对象具有 S3 对象锁定,您可以参阅包含对象 WORM 状态的 S3 清单报告。S3 对象锁定可以在两种模式之一中配置。部署在监管模式中时,具有特定 IAM 权限的 AWS 账户可以从对象上移除 S3 对象锁定。如果您需要更强的不变性以遵循规章,可以使用合规模式。在合规模式中,任何用户都不能移除保护,包括根账户。
在这些管理功能之外,使用 Simple Storage Service (Amazon S3) 功能和其他 AWS 服务来监视和控制您的 S3 资源。应用标签到 S3 存储桶,以便将成本分配到多个业务维度(例如成本中心、应用程序名称或拥有者),然后使用 AWS 成本分配报告来查看按存储桶标签聚合的使用情况和成本。您还可以使用 Amazon CloudWatch 来跟踪 AWS 资源的运行状况,并配置在估计费用达到用户定义的阈值时发送的账单提醒。使用 AWS CloudTrail 跟踪和报告存储桶级和对象级活动,并配置 S3 事件通知,以触发工作流和提示,或在 S3 资源发生特定更改时调用 AWS Lambda。S3 事件通知在媒体文件上载到 Amazon S3 时自动进行转码,在数据文件可用时进行处理,并与其他数据存储同步对象。 此外,您还可以验证传入和传出 Amazon S3 的数据的完整性,并且使用 GetObjectAttributes S3 API 或 S3 清单报告随时访问校验和信息。您可以从四种受支持的检验和算法(SHA-1、SHA-256、CRC32 或 CRC32C)中进行选择,以便根据您的应用程序需求对您的上传和下载请求进行数据完整性检查。
S3 Storage Lens 存储分析功能提供了对对象存储使用情况和活动趋势的组织范围可见性,并提出了可行的建议,以提高成本效益并应用数据保护最佳实践。S3 Storage Lens 是首个能够在组织中为数百到数千个账户提供对象存储使用量和活动单一视图的云存储分析解决方案,并通过深入分析以生成账户、存储桶甚至前缀级别的见解。利用超过 16 年帮助客户优化存储的经验,S3 Storage Lens 存储分析功能分析整个组织的指标以提供基于上下文的建议,从而找到降低存储成本的方法,并应用数据保护方面的最佳实践。
Amazon S3 存储类分析功能将分析存储访问模式,以帮助您决定何时将相应数据传输给正确的存储类。该 Amazon S3 功能可观察数据访问模式,从而帮助您确定何时将访问频率较低的存储转换为成本较低的存储类。您可以使用结果来帮助改善 S3 生命周期策略。您可以配置存储类分析以分析存储桶中的所有对象。或者,您可以配置筛选条件以将对象分组在一起,以便按常用前缀、对象标签或同时按前缀和标签进行分析。要了解更多信息,请访问存储分析和洞察页面。
借助 Amazon S3,您可以在多种专为特定用例和访问模式而构建的不同 S3 存储类中存储数据:S3 Intelligent-Tiering、S3 Standard、S3 Express One Zone、S3 Standard-Infrequent Access(S3 Standard-IA)、S3 One Zone-Infrequent Access(S3 One Zone-IA)、S3 Glacier Flexible Retrieval、S3 Glacier Flexible Retrieval、S3 Glacier Deep Archive 和 S3 Outposts。
每个 S3 存储类支持特定的数据访问级别,并具有对应的成本或地理位置。
对于访问模式不断变化、未知或不可预测的数据,例如数据湖、分析或新应用程序,请使用 S3 Intelligent-Tiering,它会自动优化您的存储成本。S3 Intelligent-Tiering 自动在三个低延迟访问层之间移动您的数据,这些访问层针对频繁、不频繁和罕见的访问进行了优化。当对象的子集随着时间的推移被归档时,您可以激活专为异步访问而设计的归档访问层。
对于更可预测的访问模式,您可以将任务关键型生产数据存储在 S3 Standard 中以便频繁访问,通过将最频繁访问的数据存储在 S3 Express One Zone 中来加速性能关键型应用程序,通过将不经常访问的数据存储在 S3 Standard-IA 或 S3 One Zone-IA 中来节省成本,并以极低的成本将数据存档在存档存储类(S3 Glacier Instant Retrieval、S3 Glacier Flexible Retrieval 和 S3 Glacier Deep Archive)中。 您可以使用 S3 存储类分析来监控对象的访问模式,用于发现应该移动到较低成本存储类的数据。然后,您可以使用此信息来配置进行数据传输的 S3 生命周期策略。S3 生命周期策略还可用于在对象的生命周期结束时让这些对象失效。
如果您具有现有 AWS 区域无法满足的数据驻留要求,您可以使用 S3 Outposts 存储类将您的 S3 数据使用 S3 on Outposts 存储在本地。
为了保护您在 Amazon S3 中的数据,默认情况下用户只有自己所创建 S3 资源的访问权限。您可以使用以下访问管理功能之一或者功能组合来向其他用户授予访问权限:AWS Identity and Access Management(IAM),用于创建用户并管理其各自的访问权限);访问控制列表(ACL),用于使授权用户可访问单个对象;存储桶策略,用于配置单个 S3 存储桶内所有对象的权限;S3 接入点,用于通过创建具有特定于每个应用程序或应用程序集的名称和权限的接入点来简化对共享数据集的数据访问的管理;S3 访问授权,用于通过根据最终用户的公司身份自动授予其 S3 访问权限来大规模管理数据权限;以及查询字符串身份验证,用于使用临时 URL 向其他人授予限时访问权限。Amazon S3 还支持审核日志,其中列出对您 S3 资源发出的请求,从而清楚地了解谁访问了哪些数据。
Amazon S3 提供了灵活的安全功能,用于阻止未经授权的用户访问数据。使用 VPC 端点从您的 Amazon Virtual Private Cloud(Amazon VPC)以及本地连接到 S3 资源。Amazon S3 会加密上传到任何存储桶的所有新数据(截至 2023 年 1 月 5 日)。Amazon S3 支持服务器端加密(具有四个密钥管理选项)和数据上传的客户端加密(有关使用 S3 进行数据加密的更多信息,请参阅《Amazon S3 用户指南》)。使用 S3 清单可以检查 S3 对象的加密状态(有关 S3 清单的更多信息,请参阅存储管理)。
S3 屏蔽公共访问权限是一组安全控制功能,可确保 S3 存储桶和对象不会受到公共访问。默认情况下,所有新存储桶的“屏蔽公共访问权限”均处于启用状态。只需在 Amazon S3 管理控制台中单击几次,即可对 AWS 账户内的所有存储桶或特定 S3 存储桶应用 S3 屏蔽公共访问权限设置。将设置应用到某个 AWS 账户之后,与该账户关联的任何现有或新的存储桶及对象将继承屏蔽公共访问权限的设置。S3 阻止公有访问设置会覆盖其他 S3 访问权限,使账户管理员能够轻松实施“无公有访问”策略,而不管如何添加对象、如何创建存储桶或者是否存在现有的访问权限。S3 阻止公有访问控制是可审核的,这带来更进一步的控制,并可使用 AWS Trusted Advisor 存储桶权限检查、AWS CloudTrail 日志和 Amazon CloudWatch 警报。 您应该为不希望公开访问的所有账户和存储桶启用阻止公共访问。
S3 对象所有权功能禁用了访问控制列表(ACL),将所有对象的所有权更改为存储桶拥有者,并简化了对存储在 S3 中的数据的访问管理。 当您配置 S3 对象所有权存储桶拥有者强制设置时,ACL 将不再影响您的存储桶及其中对象的权限。所有访问控制都将使用基于资源的策略、用户策略或这些策略的某种组合来定义。 在禁用 ACL 前,请检查存储桶和对象 ACL。要识别需要 ACL 授权的 Amazon S3 请求,您可以使用 Amazon S3 服务器访问日志或 AWS CloudTrail 中的 aclRequired 字段。
借助仅限于虚拟私有云(VPC)的 S3 接入点,您可以在您的私有网络内轻松为 S3 数据设置防火墙。此外,您可以使用 AWS 服务控制策略,要求组织中的任何新 S3 访问点仅支持 VPC 访问。
IAM Access Analyzer for S3 功能可帮助您在为 S3 存储桶和接入点设置、验证和优化策略时简化权限管理。Access Analyzer for S3 可监控您现有的存储桶访问策略,以验证它们是否仅提供对 S3 资源的必要访问权限。Access Analyzer for S3 会评估您的存储桶访问策略,以便您可以快速修复任何具有不必要访问权限的存储桶。在查看显示对存储桶的潜在共享访问权限的结果时,只需单击 S3 控制台,即可阻止对存储桶的公共访问。出于审核目的,您可将 S3 访问分析器的结果下载为 CSV 报告。 此外,S3 控制台可以在您编写 S3 策略时报告 IAM Access Analyzer 中的安全警告、错误和建议。该控制台将会自动运行 100 多项策略检查,以验证您的策略。这些检查可以为您节约时间,指导您解决错误,并帮助您应用安全最佳实践。
IAM 通过提供某用户或角色上次使用 S3 及执行相关操作的时间戳,让您可以更轻松地分析访问与降低权限,以便实施最低权限原则。使用此“上次访问”信息来分析 S3 访问,确定未被使用的权限,并且秘密地将其移除。要了解更多信息,请参阅使用上次访问的数据优化权限。
您可以使用 Amazon Macie 来发现和保护存储在 Amazon S3 中的敏感数据。Macie 可以自动收集完整的 S3 清单,并且持续地评估每个存储桶,以便在有任何可公开访问的存储桶、未加密的存储桶或与贵组织之外的 AWS 账户共享或复制的存储桶时发出提醒。然后,Macie 将机器学习和模式匹配技术应用于您选择的存储桶,以识别敏感数据,并向您发出警报,例如个人身份信息 (PII)。安全性结果生成后,它们将被推送到 Amazon CloudWatch Events 之外,这使您可以轻松与现有工作流程系统集成,并使用 AWS Step Functions 等服务触发自动修复,以执行操作,例如关闭公有存储桶或添加资源标签。
适用于 S3 的 AWS PrivateLink 在 Amazon S3 与本地之间提供私有连接。您可以在 VPC 中为 S3 预置接口 VPC 端点,以通过 AWS Direct Connect 或 AWS VPN 将本地应用程序直接与 S3 连接。为 S3 发送到接口 VPC 终端节点的请求会通过 Amazon 网络自动路由到 S3。您可以设置安全组并为接口 VPC 终端节点配置 VPC 终端节点策略,以进行其他访问控制。
通过访问 S3 访问管理和安全、S3 安全和数据保护电子书以及保护 Amazon S3 中的数据来了解更多信息。
借助 S3 Object Lambda,您可以将自己的代码添加到 S3 GET、HEAD 和 LIST 请求中,以便在数据返回到应用程序时修改和处理数据。您可以使用自定义代码来修改标准 S3 GET 请求返回的数据,以便实施筛选行、动态调整图像大小、隐去机密数据等操作。您还可以使用 S3 Object Lambda 来修改 S3 LIST 请求的输出,以创建存储桶中对象的自定义视图,并使用 S3 HEAD 请求修改对象元数据(如对象名称和大小)。在 AWS Lambda 函数的支持下,无需对应用程序进行任何更改,您的代码即可在 AWS 完全托管的基础设施上运行,不需要创建和存储数据的衍生副本,也不需要运行昂贵的代理。
S3 Object Lambda 使用 AWS Lambda 函数自动处理标准 S3 GET、HEAD 或 LIST 请求的输出。AWS Lambda 是一种无服务器计算服务,无需管理底层计算资源,即可运行客户定义的代码。只需在 AWS 管理控制台中单击几下,即可配置 Lambda 函数并将其附加到 S3 Object Lambda 访问点。此后,S3 将自动调用 Lambda 函数来处理通过 S3 Object Lambda 访问点检索到的任何数据,并将转换后的结果返回应用程序。您可以编写和执行自己的自定义 Lambda 函数,根据您的特定使用案例定制 S3 Object Lambda 的数据转换。
Amazon S3 提供补充服务,可以查询数据,无需复制并将数据加载到单独的分析平台或数据仓库。这意味着您可以直接对存储在 Amazon S3 中的数据运行数据分析。
Amazon S3 与 AWS 分析服务 Amazon Athena 和 Amazon Redshift Spectrum 兼容。 Amazon Athena 可以查询 Amazon S3 中的数据,而无需提取数据并加载到单独的服务或平台。它使用标准 SQL 表达式分析数据,在数秒内即可提供结果,通常用于即席数据发现。 Amazon Redshift Spectrum 也可直接对 Amazon S3 中的静态数据运行 SQL 查询,更适合较复杂的查询和较大的数据集(可达到 EB 级)。由于 Amazon Athena 和 Amazon Redshift 具有相同的数据目录和数据格式,您可以针对 Amazon S3 中的相同数据集使用它们。
阅读 文章,了解有关在 Amazon S3 中查询数据的更多信息。
AWS 提供数据传输服务组合,从而为任何数据迁移项目提供适当解决方案。连接水平是数据迁移的重大影响因素,AWS 提供可解决您的混合云存储、在线数据传输和离线数据传输需求的产品。
混合云存储:AWS Storage Gateway 是一种混合存储服务,让您可以将本地应用程序无缝连接并扩展到 AWS 存储。客户使用 Storage Gateway 将磁带库无缝替代为云存储,提供云存储支持的文件共享,或创建低延迟缓存来访问 AWS 中本地应用程序的数据。
在线数据传输:AWS DataSync 可以轻松高效地将数百 TB 大小的数百万份文件传输到 Amazon S3 中,速度最高比开源工具快 10 倍。DataSync 可自动处理或消除很多手动任务,包括脚本复制作业、计划和监控传输、验证数据和优化网络利用率。此外,您还可以使用 AWS DataSync 在 S3 on Outposts 上的存储桶与 AWS 区域中存储的存储桶之间复制对象。AWS Transfer Family 使用 SFTP、FTPS 和 FTP 提供与 Amazon S3 的完全托管、简单且无缝的文件传输。 Amazon S3 Transfer Acceleration 可在客户与您的 Amazon S3 存储桶之间实现快速的远距离文件传输。
离线数据传输/具有很少连接或没有连接:AWS Snowball 服务使用坚固的便携式存储和边缘计算设备进行数据收集、处理和迁移。客户可以运送物理 Snowball 设备来进行至 AWS 的离线数据迁移。
客户也可以与 AWS 合作伙伴网络(APN)中的第三方提供商合作部署混合存储架构、将 Amazon S3 集成到现有应用程序和工作流中,以及在 AWS 云之间往返传输数据。
要了解详细信息,请访问 AWS 云数据迁移服务、AWS Storage Gateway、AWS DataSync、AWS Transfer Family、Amazon S3 Transfer Acceleration 和 AWS Snowball。
AWS Data Exchange for Amazon S3 通过直接访问数据提供商的 Amazon S3 数据来加速获得洞察。AWS Data Exchange for Amazon S3 可帮助您轻松查找、订阅和使用第三方数据文件,以优化存储成本、简化数据许可管理等。它适用于希望通过 AWS 服务轻松使用第三方数据文件进行数据分析,而无需创建或管理数据副本的订阅者。对于希望提供对其 Amazon S3 存储桶中托管的数据的就地访问权限的数据提供商,它也很有帮助。
一旦数据订阅者有权使用 AWS Data Exchange for Amazon S3 数据集,他们就可以开始进行数据分析,而无需设置自己的 S3 桶、将数据文件复制到这些 S3 桶中或支付相关的存储费用。他们可以通过 AWS 服务(例如 Amazon Athena、Amazon SageMaker Feature Store 或 Amazon EMR)完成数据分析。订阅者可以访问数据提供者维护的相同 S3 对象,从而始终使用最新的可用数据,而无需完成额外的工程或操作工作。数据提供者可以轻松地在现有 S3 存储桶上设置 AWS Data Exchange for Amazon S3,以共享对整个 S3 存储桶或特定前缀和 S3 对象的直接访问权限。设置完成后,AWS Data Exchange 会自动管理订阅、授权、账单和付款。
Amazon S3 提供行业领先的云对象存储性能。Amazon S3 对并行请求的支持意味着您可以按照计算集群的系数扩展 S3 性能,而无需对应用程序进行任何自定义。性能按前缀扩展,因此您可以并行使用尽可能多的前缀,从而实现所需的吞吐量。前缀的数量没有限制。Amazon S3 性能每秒至少支持 3500 个添加数据请求,每秒至少支持 5500 个检索数据请求。每个 S3 前缀均支持这些请求速率,因此可以轻松实现显著的性能提升。
要实现此 S3 请求速率性能,您无需随机化对象前缀即可实现更快的性能。也就是说,您现在可以在 S3 对象命名中使用逻辑或顺序命名模式,而不会产生任何性能影响。有关 Amazon S3 性能优化的最新信息,请参阅 Amazon S3 性能指南和 Amazon S3 性能设计模式。
Amazon S3 自动为所有应用程序提供强大的写入后读取一致性,无需更改性能或可用性,无需牺牲应用程序的区域隔离性,并且无需任何额外费用。借助 S3 强大的一致性,无需对应用程序进行更改,从而简化了本地分析工作负载的迁移,并且无需提供强一致性的额外基础设施,进而降低了成本。
对 S3 存储的任何请求均高度一致。成功写入新对象或覆盖现有对象后,任何后续读取请求都会立即收到该对象的最新版本。S3 还为列表操作提供强大的一致性,因此在写入之后,可以立即在存储桶中执行对象列表,并反映所有更改。
使用本服务需遵循 Amazon Web Services 客户协议。