一、S3 简单理解
S3 全名是 Simple Storage Service,简便的存储服务。amazon (S3) 是一个公开的服务,Web 应用程序开发人员可以使用它存储数字资产,包括图片、视频、音乐和文档。S3 提供一个 RESTful API 以编程方式实现与该服务的交互。可以通过 Amazon S3 随时在 Web 上的任何位置存储和检索的任意大小的数据。
理论上,S3 是一个全球存储区域网络 (SAN),它表现为一个超大的硬盘,您可以在其中存储和检索数字资产。但是,从技术上讲,Amazon 的架构有一些不同。您通过 S3 存储和检索的资产被称为对象。对象存储在存储桶(bucket)中。您可以用硬盘进行类比:对象就像是文件,存储桶就像是文件夹(或目录)。与硬盘一样,对象和存储段也可以通过统一资源标识符(Uniform Resource Identifier,URI)查找。
Amazon S3将数据作为对象存储在存储区中。一个对象由一个文件和可选的描述该文件的任何元数据组成。在S3里面实质上是没有目录和文件夹的概念,即目录概念实质只是对象的前缀,并不存在实体。
二、相关概念介绍
存储桶(bucket)
数据都是存储在AWS 的存储桶中,可以把桶理解为磁盘分区,不过它是由一个桶名(字符串)唯一标识,即你不能创建别人已经创建过的桶。
对象
(1)对象键在存储桶中唯一标识对象。(Key)
(2)对象元数据是一组名称值对。可以在上传对象元数据时对其进行设置。上传对象后,将无法修改对象元数据。
修改对象元数据的唯一方式是创建对象的副本并设置元数据。对象元数据又分为系统元数据和用户自定义元数据。
(3) 数据
S3存储类型
STANDRARD:最常用的数据类型
STANDRARD_IA:检索收费,不适用于经常访问的数据
ONEZONE_IA:无法灵活的应对可用会丢失的情况
GLACIER:不用于实时访问,必须先还原对象,然后再访问
RRS:无
三、S3的使用
使用SDK的访问服务,python 是安装 boto3 这个库操作 S3, 需要配置S3 的Access Key、Secret Key、Region Name。
代码语言:javascript复制
s3 = boto3.client(
service_name='s3',
aws_access_key_id=S3_ACCESS_KEY_ID,
aws_secret_access_key=S3_ACCESS_KEY_SECRET,region_name=region_name
)
prefix = "prefix"
all_obj = s3.list_objects_v2(Bucket=bucket_name, Prefix=prefix)
file_count = all_obj["KeyCount"]
print("file_count=====", file_count)
# print("all_obj====", all_obj)
for file in all_obj["Contents"]:
print("file=====", file)
上面的例子是展示出某个 bucket 下面的所有文件,一次请求最多请求 1000 个。