Amazon S3

Architecting on AWS 学习笔记系列文章导航页面


学习目标

  • Amazon S3
  • Amazon Glacier
  • S3 存储类

正文

Amazon S3
    Amazon S3是对象级别的存储,意味着如果你要更改一个文件的一部分,必须先做出更改,然后重新上传整个修改后的文件。
    Amazon S3中可以存储尽可能多的数据,规定单个对象大小不能大于5TB。但是,对所存储的数据总量没有任何限制。默认情况下,S3中的数据将自动进行冗余存储。
    可以通过基于Web的AWS管理控制台、API或者软件开发工具包以编程的方式访问S3。
    Amazon S3包括事件通知功能,允许你设置在发生特定事件(例如正在向特定存储桶上传或者删除对象)时自动发送通知。这些通知可以发送给你,也可以用于触发其他进程,例如AWS Lambda脚本。
    使用存储类分析,你可以分析存储访问模式并将正确的数据转换为正确的存储类。这个新的S3分析功能可以自动识别最佳生命周期策略,将不经常访问的存储转换为Amazon S3标准 - 低频率访问(S3标准-IA)。你可以配置存储类分析策略,以监视整个存储桶、前缀或对象标签。一旦观察到某个不常见的访问模式,你可以根据结果轻松创建新的生命周期期限策略。存储类分析还在AWS管理控制台中提供每天的存储使用情况可视化结果。你可以将这些信息导出到S3存储桶,以使用你选择的商业智能工具如Amazon QuickSight进行分析。

    /*
     * S3存储桶策略示例
     * 假设您拥有一个网站,其域名为 (www.example.com 或 example.com),并且带有指向存储在 S3 存储桶
     * 中的照片和视频的链接 examplebucket。默认情况下,所有 S3 资源都是私有的,因此只有创建资源的AWS
     * 账户才能访问它们。要允许从您的网站对这些对象进行读取访问,您可以添加一个存储桶策略允许
     * s3:GetObject 权限,并附带使用 aws:Referer 键的条件,即获取请求必须来自特定的网页。
     * 以下策略指定带有 StringLike 条件键的 aws:Referer 条件。
	 *
	 * 确保您使用的浏览器在请求中包含 http referer 标头。
     */
    {
	  "Version":"2012-10-17",
	  "Id":"http referer policy example",
	  "Statement":[
	    {
	      "Sid":"Allow get requests originating from www.example.com and example.com.",
	      "Effect":"Allow",
	      "Principal":"*",
	      "Action":"s3:GetObject",
	      "Resource":"arn:aws-cn:s3:::examplebucket/*",
	      "Condition":{
	        "StringLike":{"aws:Referer":["http://www.example.com/*","http://example.com/*"]}
	      }
	    }
	  ]
	}

    在S3存储桶中,你可以添加策略以允许其他的AWS账户或者用户访问其中存储的对象。存储桶策略可以补充,在某些情况下还可以替换标准的ACL访问策略。请注意单个存储桶策略的大小限制为20KB。

    除去上述的存储桶策略,借助于跨域资源共享CORS,你可以使用S3构建丰富的客户端Web应用程序,并有选择的允许跨源访问你的S3资源。
    要将你的存储桶配置为允许跨源请求,可以创建一个CORS配置。这是一个XML文档,其中包含某些规则,用以识别:
 a. 允许访问你的存储桶的源;
 b. 每个源支持的操作,即HTTP方法;
 c. 其他特定操作信息;

  • 版本控制
    启动了版本控制的存储桶可以恢复因为意外删除或者覆盖操作而丢失的数据。例如:
    a. 如果删除非永久移除对象,S3会插入一个删除标记,该标记将成为当前对象的版本,你始终可以恢复以前的版本。
    b. 如果覆盖对象,则会在存储桶中创建一个新的对象版本,同样的,你始终可以恢复到以前的版本。
  • 费用
    收费参照:每月的GB数,传出到其他区域或者Internet,HTTP请求
    具体费用因区域和执行的特定请求而异。一般来说,用户只需要为跨区域边界的传输支付费用,这意味着用户不必为传输到同一个区域内的EC2,或者Amazon CloudFront边缘站点付费。
  • 生命周期
    应该自动化Amazon S3中存储的数据的生命周期。使用生命周期策略,可以让数据在不同的Amazon S3存储类之间定期轮换。可以降低存储成本。
    可以通过两种方式设置生命周期:
    1.按照对象设置生命周期
    2.按照存储桶设置生命周期
  • 使用案例
    可以考虑使用S3的场景
     a. 需要一次写入,多次读取
     b. 峰谷不均匀的数据访问
     c. 大量用户和不同数量的内容
     d. 不断增长的数据集
    不适合使用S3的场景
     a. 数据块存储需求
     b. 经常更改数据
     c. 档案数据存储
  1. 存储和分发静态Web内容和媒体
    你可以使用S3来存储和分发静态Web内容和媒体,这些文件可以直接从S3交付,因为每个对象都拥有一个独一无二的URL。也可以将S3作为内容传输网络(如Amazon CloudFront)的源点。Amazon S3非常适合正在快速增长而且需要很强弹性的网站,这些网站可能包含大量的用户生成内容,如视频或者照片等
  2. 托管整个静态网站
    Amazon S3提供了低成本、高度可用且高度可扩展的解决方案,包括存储静态HTML文件、图像、视频以及JavaScript等格式的客户端脚本。
  3. 计算和大规模分析的数据存储
    Amazon S3的水平扩展特性及多事务并发特性,使得其可以支持大型复杂交易系统,如金融交易分析、点击流分析和媒体转码等的数据存储。
  4. 备份工具
    利用其持久性和可扩展性,S3也适合作为备份和存档工具。此外,你可以使用生命周期策略将长期数据移动到Amazon Glacier中。为了获得更多的持久性,你可以选择使用跨区域复制,自动将对象复制到其他区域的其他S3存储桶中。
  • 移动数据到 Amazon S3
    当你将文件上传到S3中时,文件会被存储为S3对象。该对象由文件数据和描述文件的元数据组成。存储桶可以容纳无限数量的对象。
    可以通过以下几种方式将数据迁移到Amazon S3:
    a. 使用控制台(文件大小上限78GB)、AWS命令行或者API传输;
    b. 软件开发工具包;
        AWS DataSync 可以实现本地存储到S3或者Amazon EFS之间自动迁移数据,其速度比开源工具快10倍,而且DataSync还可以自动处理许多会拖慢迁移速度的任务,包括运行自己的实例、处理加密、管理脚本、网络优化以及数据完整性验证;
        AWS Transfer for SFTP 一种完全托管、高度可用的安全文件传输协议服务,支持应用程序通过SFTP将文件直接传送到S3。
        AWS S3 Transfer Acceleration 利用Amazon CloudFront分布在全球的边缘站点,快速方便地将数据传输到S3存储桶。随后数据将通过优化的网络路径路由至S3。
        AWS Snowball PB 级别数据传输方案。
        AWS Snowmobile EB级别数据传输方案。
    在这里插入图片描述
    除此之外,S3支持分段上传。分段上传的优势在于:
    a. 提高吞吐量;
    b. 从网络问题快速恢复;
    c. 暂停和恢复对象上传;
    d. 可以在对象刚创建的时候就开始创建;
    e. 上传大型对象;
    在这里插入图片描述

Amazon Glacier

  • Amazon Glacier是一种数据存储服务,旨在实现安全性、持久性及极低的陈本;
  • 旨在为对象实现11个9的持久性存储;
  • 支持对传输中的数据和静态数据进行SSL/TSL加密;
  • 文件库锁定功能通过可锁定的政策来执行合规性;
  • 极低成本的设计,非常适合长期存档(归档);

如果低廉的存储成本对你来说至关重要,而你又很少检索数据,并且可以接受数小时的检索延迟,那么Glacier是一个绝佳的存储选择,其存储对象的基本单位是档案。但是如果你的应用程序需要快速或者频繁的访问数据,则请考虑使用S3。检索Glacier中的存储的数据需要几小时的时间,因此其非常适合用于存档数据。
在这里插入图片描述
Glacier相关的费用主要在于数据检索方式:
在这里插入图片描述

  • 加速检索 时间1到5分钟
  • 标准检索 时间3到5小时
  • 批量检索 时间5到12小时

S3 存储类
在这里插入图片描述

Amazon S3智能分层通过在访问模式发生变化时自动在两个存储访问层之间移动对象来优化存储成本。
S3 Glacier 深度存档将会成为对用户而言成本最低的可用存储层,同时仍然保留其持久性和长期数据保留能力。此类存储非常适合希望将很少或从不需要访问的数据制作成持久存档副本的客户。而且,采用此类存储类的客户无需再使用本地磁带库。且可以在12小时以内完成检索。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot可以使用Amazon S3进行对象存储。要在Spring Boot中使用Amazon S3,你需要进行以下步骤: 1. 添加Amazon S3的依赖:在你的项目的pom.xml文件中添加Amazon S3的依赖项。你可以在Maven仓库中找到相应的依赖项,然后将其添加到你的pom.xml文件中。 2. 定义一个抽象类:创建一个抽象类来定义与Amazon S3交互的方法。该抽象类可以包含上传文件、授权、删除文件等方法。 3. 实现具体的类:继承抽象类并实现其中的方法。在实现类中,你可以使用AWS SDK for Java来与Amazon S3进行交互。可以使用SDK提供的方法来上传文件、获取授权、删除文件等操作。 4. 在Spring Boot中使用Amazon S3:将实现类引入到你的Spring Boot应用程序中,并使用注解或配置来将其配置为Amazon S3的客户端。你可以在需要使用Amazon S3的地方使用该客户端来执行相应的操作。 总结起来,使用Spring Boot和Amazon S3进行对象存储的步骤是: 1. 添加Amazon S3的依赖。 2. 定义抽象类来定义与Amazon S3交互的方法。 3. 实现具体的类并使用AWS SDK for Java来与Amazon S3进行交互。 4. 在Spring Boot中使用该实现类来执行相应的操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [SpringBoot整合亚马逊S3](https://blog.csdn.net/u010953816/article/details/123354144)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值