aws

《AWS 云计算实战》笔记(六)——对象存储

2019-01-09  本文已影响40人  独木舟的木

对象存储—— S3 和 Glacier

AWS 对象存储服务 描述
AWS S3 AWS 提供的对象存储服务
AWS Glacier 备份和归档的存储服务

对象存储

对象存储可以帮助用户存储图片、视频、文档和可执行文件。

Amazon S3

Amazon S3 将数据作为对象存储在被称为 “存储桶” 的资源中。您可以在一个存储桶中尽可能多地存储对象,并写入、读取和删除您的存储桶中的对象。对象大小最多可为 5 TB。

示例:备份用户的数据

使用 AWS CLI 命令行工具上传数据。并从 S3 下载数据。

1⃣️ 为数据创建一个 S3 存储桶。

# 格式
$ aws s3 mb s3://com.domain-$YourName

$ aws s3 mb s3://com.arlingbc-andy
make_bucket: com.arlingbc-andy

2⃣️ 从本地的目录上传数据到 S3 存储桶。

# 格式
# sync:比较 $Path 目录和 S3 存储桶里的 /backup 目录 ,只上传新的或者修改过的文件
# $Path:为目录路径
$ aws s3 sync $Path s3://com.domain-$YourName/backup

$ aws s3 sync /Users/huqilin/Desktop/image s3://com.arlingbc-andy/backup
upload: image/sunset.jpeg to s3://com.arlingbc-andy/backup/sunset.jpeg

3⃣️ 测试数据恢复。

# 格式
$ aws s3 cp --recursive s3://com.domain-$YourName/backup $Path

$ aws s3 cp --recursive s3://com.arlingbc-andy/backup /Users/huqilin/Desktop/image 

4⃣️ 为存储桶激活版本保护(启用版本控制)。

默认情况下,S3 存储桶禁用了版本保护功能(同名文件会被覆盖)。

$ aws s3api put-bucket-versioning --bucket com.arlingbc-andy --versioning-configuration Status=Enabled

5⃣️ 获取所有对象和版本

$ aws s3api list-object-versions --bucket com.arlingbc-andy

6⃣️ 资源清理。

$ aws s3 rb --force s3://com.arlingbc-andy
delete: s3://com.arlingbc-andy/backup/sunset.jpeg
remove_bucket failed: s3://com.arlingbc-andy An error occurred (BucketNotEmpty) when calling the DeleteBucket operation: The bucket you tried to delete is not empty. You must delete all versions in the bucket.

移除存储桶造成 BucketNotEmpty 报错
如果激活了存储桶的版本功能,删除存储桶时将报错 BucketNotEmpty。这种情况下请使用管理控制台来删除存储桶。

归档对象以优化成本

Amazon S3 Glacier 是一款安全、持久且成本极低的云存储服务,适用于数据存档和长期备份。它能够提供 99.999999999% 的持久性以及全面的安全与合规功能,可以帮助满足最严格的监管要求。Amazon S3 Glacier 提供就地查询功能,允许您针对静态存档数据直接运行强大的分析。客户能以每月每 GB 低至 0.004 USD 的价格存储数据,与本地解决方案相比,显著降低了成本。为了保持成本低廉,同时满足各种数据检索需求,Amazon S3 Glacier 提供三种访问存档的选项,各自的检索时间从数分钟到数小时不等。

在 Glacier 中存储数据的成本大概是 S3 中的 1/3。

S3 Glacier
每 GB 容量成本 0.03 美元 0.01 美元
数据访问速度 立即可以访问 在提交请求 3~5h 后
持久性 设计为年度 99.999999999% 的数据持久性 设计为年度 99.999999999% 的数据持久性

示例:创建 S3 存储桶配合 Glacier 使用

集成 S3 和 Glacier 以降低存储数据的成本。

可以为存储桶添加多条生命周期规则。

生命周期规则:在给定的日期之后归档或者删除对象,它还可以帮助把 S3 的对象归档到 Glacier。

添加生命周期转换规则,「创建制定天数后转换到 Amazon Glacier」。

AWS S3 Glacier 数据检索策略

预置容量可确保加急检索所检索的容量在您需要时即可使用。每单位容量可确保每 5 分钟内至少可执行 3 次加急检索,并提供高达 150MB/s 的检索吞吐量。

如果您需要满足特定的加急检索速率要求,则可以预置检索容量。如果没有预置容量,则只有在发出请求时有容量可用的情况下,才会接受加急检索请求。

示例:使用程序的方式存储对象

S3 可以通过 HTTPS 和 API 来访问。也就是说,用户可以集成 S3 (SDK)到应用程序里,用程序调用 API 来提交请求到 S3。

在应用程序中集成 S3 有助于实现无状态的服务器架构

...

示例:使用 S3 来实现静态网站托管

1⃣️ 创建一个新的 S3 存储桶;

aws s3 mb s3://static.arlingbc.com

2⃣️ 上传文件(helloworld.html)到 S3;

aws s3 cp /Users/huqilin/Desktop/helloworld.html s3://static.arlingbc.com/helloworld.html
upload: ./helloworld.html to s3://static.arlingbc.com/helloworld.html

3⃣️ 添加存储桶策略到存储桶;

配置存储桶策略,以允许所有人查看和下载该存储桶里的文档。

存储桶策略生成器

bucketpolicy.json

{
  "Id": "Policy1547005345057",
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Stmt1547005342595",
      "Action": [
        "s3:GetObject"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::static.arlingbc.com/*",
      "Principal": "*"
    }
  ]
}

上传存储策略:

aws s3api put-bucket-policy --bucket static.arlingbc.com --policy file:///Users/huqilin/Desktop/bucketpolicy.json

4⃣️ 激活和配置 S3 服务静态网站;

aws s3 website s3://static.arlingbc.com --index-document helloworld.html

配置完成,访问路径为:$BucketName.s3-website-$Region.amazonaws.com

即:https://s3.us-east-2.amazonaws.com/static.arlingbc.com/helloworld.html

5⃣️ 使用别名(CNAME)关联一个自定义的域名到 S3 的存储桶;

为自己的域名添加一个 CNAME 别名记录,让记录指向 S3 存储桶的端点。

CNAME 别名记录只在满足下面条件的时候生效。

  • 存储桶名必须和 CNAME 别名记录一样。要创建一个 CNAME 给 static.yourdomain.com,存储桶名也必须是 static.yourdomain.com。
  • CNAME 别名记录不适用于主域名。可以给子域名创建别名记录的资源。如 static 或者 www 这样前缀的域名。如果想关联主域名到S3存储桶,需要使用AWS提供的 Route53 的 DNS 服务。

6⃣️ 清理资源

aws s3 rb --force s3://static.arlingbc.com

对象存储的内部机制

确保数据一致性

选择合适的键

挑战:如何合理地设置主键来实现 S3 的 I/O 性能的最大化?

上一篇 下一篇

猜你喜欢

热点阅读