当前位置: 首页 > 工具软件 > aws-sam-cli > 使用案例 >

AWS S3

董昕
2023-12-01

1 S3

S3(Simple Storage Service)是一个对象存储服务,类似于我们使用的网盘,可以用于存放任何文件。

2 S3类型

  • S3 Standard: 默认存储类型,当你上传文件时没有指定存储类型,那就会默认以该类型来存储,适用于需要快速和频繁访问的数据,能提供毫秒级访问速度

  • S3 Intelligent-Tiering: 为优化存储成本的存储类型,通过将不频繁访问的数据移动到成本更低的存储中来降低成本。分为频繁访问层,不频繁访问层和归档即时访问层。文件以S3 Intelligent-Tiering方式时,默认在频繁访问层,AWS通过监控文件的访问频率,超过30天未访问就会被移动到不频繁访问层,超过90天未访问则移动到归档即时访问层。不过有个限制,这个只能针对大于128k的文件,小于128k的文件会一直保存在频繁访问层,而且按对象收取监控和自动化费用,但是不需要检索费用。同样能提供毫秒级访问速度

  • S3 Standard-IA 和S3 One Zone-IA: IA即infrequent access,适用于不频繁访问的数据。不满128k的数据按照128k收费,且存放不满30天,也会按30天计算。Standard会在3个AZ存放数据,One Zone只有一个AZ,因此可用性会更差。访问速度也是毫秒级,但是检索数据需要收取费用,按G为单位收费。

  • S3 Glacier Instant Retrieval,适用于归档的但需要毫秒级访问的数据存储,访问频率通常是每季度1次,不满128k的数据按照128k收费,且存放不满90天,按90天计算。同时按G为单位收取数据检索费用。

  • S3 Glacier Flexible Retrieval,适用于归档的数据存储,访问频率通常是每年1次。该方式数据访问时间是分钟级别,如果采用加急方式,访问时间只需要1-5分钟。不满40k的数据按照40k收费,且存放不满90天,按90天计算。同时按G为单位收取数据检索费用,可以通过批量检索来降低费用,但是数据返回时间会增加至5-12小时

  • S3 Glacier Deep Archive,适用于归档的但需要毫秒级访问的数据存储,通常是每年小于1次,访问时间需要12小时,不满40k的数据按照40k收费,且存放不满180天,按180天计算。同时按G为单位收取数据检索费用,可以通过批量检索来降低费用,但是数据返回时间会增加至48小时

另外,对于 S3 Glacier Flexible Retrieval和S3 Glacier Deep Archive在访问前需要执行还原操作,可以指定还原保留时间。

3 S3访问管理

  • Bucket policy,存储桶策略,resource-based的IAM策略,用于指定哪些主体可以对这个S3资源做怎样的操作
  • S3 Access Points,S3 访问点,一个具有特定访问策略的网络端点,通过端点关联的策略来控制访问权限
  • Access control lists (ACLs), 访问控制列表用于向已授权的用户授予对某个存储桶和对象的读写权限

4 S3访问方式

  • 虚拟托管式,https://bucket-name.s3.region-code.amazonaws.com/key-name
  • 路径式,https://s3.region-code.amazonaws.com/bucket-name/key-name,不建议使用这种方式,AWS已经逐渐在弃用该方式
  • S3://方式,S3://bucket-name/key-name

5 通过CLI使用S3

首先配置aws的profile,设置accesskey相关信息,参考–《安装和配置awscli

  • 查看bucket里文件
    aws s3 --profile my-profile ls s3://mybucket

  • 拷贝文件到bucket里
    aws s3 --profile my-profile cp test.txt s3://mybucket/test.txt

  • 拷贝bucket里的文件到本地
    aws s3 --profile my-profile cp s3://mybucket/test.txt test.txt

  • 拷贝bucket里的文件到另一个bucket
    aws s3 --profile my-profile cp s3://mybucket/test.txt s3://mybucket2/test.txt

  • 删除bucket里某个文件
    aws s3 --profile my-profile rm s3://mybucket/test.txt

  • 同步本地目录到bucket(和cp类似)
    aws s3 --profile my-profile sync . s3://mybucket

6 挂载S3到本地

有时候为了方便使用,也可以把S3 bucket挂载到本地,但是需要安装相关工具,

使用yum安装s3fs命令,

yum install -y epel-release
yum install -y s3fs-fuse

然后准备access key文件,

echo $ACCESS_KEY_ID:$SECRET_ACCESS_KEY > /etc/passwd-s3fs
chmod 600 /etc/passwd-s3fs

然后就可以挂载到本地了,之后的使用就和其他NFS文件系统一样了。

[root@localhost s3fs]# s3fs mybucket /path/to/mountpoint -o passwd_file=/etc/passwd-s3fs
[root@localhost s3fs]# df -h
Filesystem                     Size  Used Avail Use% Mounted on
...
s3fs                            16E     0   16E   0% /home/s3fs/test

参考文档:

  1. https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html
  2. https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage-class-intro.html
  3. https://aws.amazon.com/s3/pricing/?nc1=h_ls
  4. https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-bucket-intro.html
  5. https://docs.aws.amazon.com/cli/latest/reference/s3/ls.html
  6. https://github.com/s3fs-fuse/s3fs-fuse
 类似资料:

相关阅读

相关文章

相关问答