创建桶
功能说明
您可以通过使用create_bucket创建存储桶。
代码示例
def create_bucket(self):
resp = self.s3_client.create_bucket(
Bucket='<new-bucket-name>'
)
print(resp)
请求参数
参数 | 类型 | 说明 | 是否必要 |
---|---|---|---|
Bucket | String | 桶名称 | 是 |
返回结果
根据返回码判断是否创建成功,200表示成功。
获取桶列表
功能说明
您可以通过使用list_buckets获取桶列表。
代码示例
def list_buckets(self):
print('list_buckets')
response = self.s3_client.list_buckets()
for bucket in response['Buckets']:
print(bucket["Name"])
请求参数
无
返回结果
参数 | 类型 | 说明 |
---|---|---|
Buckets | Bucket数组 | 桶列表 |
判断桶是否存在
功能说明
您可以使用head_bucket接口判断桶是否存在。
代码示例
def head_bucket(self):
resp = self.s3_client.head_bucket(
Bucket='<your-bucket-name>'
)
print(resp)
请求参数
参数 | 类型 | 说明 | 是否必要 |
---|---|---|---|
Bucket | string | 桶名称 | 是 |
返回结果
根据返回码判断桶是否存在,200表示存在,404表示不存在
删除桶
功能说明
您可以使用delete_bucket删除存储桶。
代码示例
def delete_bucket(self):
resp = self.s3_client.delete_bucket(
Bucket='<your-bucket-name>'
)
print(resp)
请求参数
参数 | 类型 | 说明 | 是否必要 |
---|---|---|---|
Bucket | string | 桶名称 | 是 |
返回结果
根据返回码判断是否删除成功,204表示删除成功
设置桶访问权限
功能说明
媒体存储支持一组预先定义的授权,称为Canned ACL。每个Canned ACL都有一组预定义的被授权者和权限,下表列出了相关的预定义授权含义。
ACL | 权限 | 描述 |
---|---|---|
private | 私有读写 | 存储桶拥有者有读写权限,其他用户没有访问权限 |
public-read | 公共读私有写 | 存储桶拥有者有读写权限,其他用户只有该存储桶的读权限 |
public-read-write | 公共读写 | 所有用户都有该存储桶的读写权限 |
authenticated-read | 注册用户可读 | 存储桶拥有者有读写权限,注册用户具有该存储桶的读限 |
您可以通过put_bucket_acl接口设置一个存储桶的访问权限。用户在设置存储桶的ACL之前需要具备WRITE_ACP 权限。
代码示例
def put_bucket_acl(self):
resp = self.s3_client.put_bucket_acl(
Bucket='<your-bucket-name>',
ACL='private' # private | public-read | public-read-write | authenticated-read
)
print(resp)
请求参数
参数 | 类型 | 说明 | 是否必要 |
---|---|---|---|
Bucket | string | 桶名称 | 是 |
ACL | string | acl值 | 是 |
返回结果
根据返回码判断是否设置成功,200表示成功。
获取桶访问权限
功能说明
您可以通过get_bucket_acl接口获取存储桶的access control list(ACL)信息。存储桶的ACL可以在创建的时候设置并且通过API查看,用户需要具有READ_ACP(读取存储桶 ACL信息)权限才可以查询存储桶的ACL信息。
代码示例
def get_bucket_acl(self):
resp = self.s3_client.get_bucket_acl(
Bucket='<your-bucket-name>',
)
print(resp)
请求参数
参数 | 类型 | 说明 | 是否必要 |
---|---|---|---|
Bucket | string | 桶名称 | 是 |
返回结果
参数 | 类型 | 说明 |
---|---|---|
Owner | Owner | 所有者信息 |
Grants | Grants | 每种类型用户的详细权限信息 |
设置桶策略
功能说明
存储桶授权策略(bukcet policy)可以灵活地配置用户各种操作和访问资源的权限。访问控制列表(access control lists,ACL)只能对单一对象设置权限,而存储桶授权策略可以基于各种条件对一个桶内的全部或者一组对象配置权限。桶的拥有者拥有PutBucketPolicy操作的权限,如果桶已经被设置了policy,则新的policy会覆盖原有的policy。您可以通过put_bucket_policy接口设置桶策略,描述桶策略的信息以JSON格式的字符串形式通过Policy参数传入。policy的示例如下:
{
"Id": "<your-policy-id>",
"Version": "2012-10-17",
"Statement" : [{
"Sid": "<your-statement-id>",
"Principal": {
"AWS":["arn:aws:iam:::user/<your-user-name>"]
},
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:CreateBucket"
],
"Resource": [
"arn:aws:iam:::<your-bucket-name>/*"
],
"Condition": "<some-conditions>"
}]
}
元素 | 描述 | 是否必要 |
---|---|---|
Id | policy id,可选关键字 | 否 |
Version | policy 版本号,固定填2012-10-17 | 是 |
Statement的内容说明如下:
元素 | 描述 | 是否必要 |
---|---|---|
Sid | statement Id,可选关键字,描述statement的字符串 | 否 |
Principal | 可选关键字,被授权人,指定本条statement权限针对的Domain以及User,支持通配符“*”,表示所有用户(匿名用户)。当对Domain下所有用户授权时,Principal格式为arn:aws:iam:::user/*。当对某个User进行授权时,Principal格式为arn:aws:iam:::user/<your-user-name> | 可选,Principal与NotPrincipal选其一 |
NotPrincipal | 可选关键字,不被授权人,statement匹配除此之外的其他人。取值同Principal | 可选,NotPrincipal与Principal选其一 |
Action | 可选关键字,指定本条statement作用的操作,Action字段为媒体存储支持的所有操作集合,以字符串形式表示,不区分大小写。支持通配符“*”,表示该资源能进行的所有操作。例如:"Action":["s3:List*", "s3:Get*"] | 可选,Action与NotAction选其一 |
NotAction | 可选关键字,指定一组操作,statement匹配除该组操作之外的其他操作。 取值同Action | 可选,NotAction与Action选其一 |
Effect | 必选关键字,指定本条statement的权限是允许还是拒绝,Effect的值必须为Allow或者Deny | 必选 |
Resource | 可选关键字,指定statement起作用的一组资源,支持通配符“*”,表示所有资源 | 可选,Resource与NotResource选其一 |
NotResource | 可选关键字,指定一组资源,statement匹配除该组资源之外的其他资源。 取值同Resource | 可选,NotResource与Resource选其一 |
Condition | 可选关键字,本条statement生效的条件 | 可选 |
代码示例
def put_bucket_policy(self):
resp = self.s3_client.put_bucket_policy(
Bucket='<your-bucket-name>',
Policy='{"Version":"2012-10-17","Statement":[{"Sid":"123","Effect":"Allow",' +
'"Principal":{"AWS":"*"},"Action":["s3:PutObject","s3:GetObject"], ' +
'"Resource":["arn:aws:s3:::' + '<your-bucket-name>' + '/*"]}]}'
)
print(resp)
请求参数
参数 | 类型 | 说明 | 是否必要 |
---|---|---|---|
Bucket | string | 桶名称 | 是 |
Policy | string | 策略内容,json字符串 | 是 |
返回结果
根据返回码判断是否设置成功,200表示成功。
获取桶策略
功能说明
您可以通过get_bucket_policy接口获取指定存储桶的授权策略。如果您使用的身份不是该存储桶的拥有者,则调用身份必须对指定存储桶具有GetBucketPolicy权限,且属于该存储桶所有者的账户。如果您没有GetBucketPolicy权限,方法将返回403 Access Denied错误。如果您具有正确的权限,但您没有使用属于存储桶所有者账户的身份,则返回405 Method Not Allowed错误。
代码示例
def get_bucket_policy(self):
resp = self.s3_client.get_bucket_policy(
Bucket='<your-bucket-name>',
)
print(resp)
请求参数
参数 | 类型 | 说明 | 是否必要 |
---|---|---|---|
Bucket | string | 桶名称 | 是 |
返回结果
参数 | 类型 | 说明 |
---|---|---|
Policy | string | 策略内容,json字符串 |
删除桶策略
功能说明
您可以通过delete_bucket_policy接口删除指定存储桶的授权策略。如果您使用的身份不是该存储桶的拥有者,则调用身份必须对指定存储桶具有DeleteBucketPolicy权限,且属于该存储桶所有者的帐户。如果您没有DeleteBucketPolicy权限,方法将返回403 Access Denied错误。如果您具有正确的权限,但您没有使用属于存储桶所有者账户的身份,则返回405 Method Not Allowed错误。
代码示例
def delete_bucket_policy(self):
resp = self.s3_client.delete_bucket_policy(
Bucket='<your-bucket-name>',
)
print(resp)
请求参数
参数 | 类型 | 说明 | 是否必要 |
---|---|---|---|
Bucket | string | 桶名称 | 是 |
返回结果
根据返回码判断是否删除成功,200表示删除成功
设置桶生命周期配置
功能说明
生命周期管理可以通过设置规则实现自动清理过期的对象,优化存储空间。您可以使用put_bucket_lifecycle_configuration接口设置桶的生命周期配置,配置规则可以通过匹配对象key前缀、标签的方法设置当前版本或者历史版本对象的过期时间,对象过期后会被自动删除。
def put_bucket_lifecycle_configuration(self):
resp = self.s3_client.put_bucket_lifecycle_configuration(
Bucket='<your-bucket-name>',
LifecycleConfiguration={
'Rules': [
{
'ID': 'TestOnly',
'Expiration': {
'Days': 3650,
},
'Status': 'Enabled',
'Filter': {
'Prefix': 'documents/',
},
'Transitions': [
{
'Days': 365,
'StorageClass': 'GLACIER',
},
],
'AbortIncompleteMultipartUpload': {
'DaysAfterInitiation': 123
}
},
],
},
)
print(resp)
请求参数
参数 | 类型 | 说明 | 是否必要 |
---|---|---|---|
Bucket | string | 桶名称 | 是 |
LifecycleConfiguration | LifecycleConfiguration | 封装了生命周期规则的数组,最多包含1000条规则 | 是 |
关于生命周期规则Rule一些说明
参数 | 类型 | 说明 | 是否必要 |
---|---|---|---|
ID | string | 规则ID | 否 |
Status | string | 是否启用规则 (Enabled|Disabled) | 是 |
Expiration | Expiration | 文件过期时间 | 否 |
AbortIncompleteMultipartUpload | AbortIncompleteMultipartUpload | 未完成上传的分片过期时间 | 否 |
Transitions | Transition数组 | 文件转换到低频存储规则(距离修改时间) | 否 |
Filter | Filter | 应用范围,可以指定前缀或对象标签 | 否 |
关于Expiration的说明:
参数 | 类型 | 说明 |
---|---|---|
Days | int | 过期天数 |
关于AbortIncompleteMultipartUpload的说明:
参数 | 类型 | 说明 |
---|---|---|
DaysAfterInitiation | int | 过期天数 |
关于Transition的说明:
参数 | 类型 | 说明 |
---|---|---|
Days | int | 转换过期天数 |
StorageClass | StorageClass | 要转换的存储类型 |
关于Filter的说明:
参数 | 类型 | 说明 |
---|---|---|
Prefix | string | 需要过滤的前缀 |
返回结果
根据返回码判断是否设置成功,200表示成功。
获取桶生命周期配置
功能说明
您可以使用get_bucket_lifecycle_configuration接口获取桶的生命周期配置。
代码示例
def get_bucket_lifecycle_configuration(self):
resp = self.s3_client.get_bucket_lifecycle_configuration(
Bucket='<your-bucket-name>'
)
print(resp)
请求参数
参数 | 类型 | 说明 | 是否必要 |
---|---|---|---|
Bucket | string | 桶名称 | 是 |
返回结果
参数 | 类型 | 说明 |
---|---|---|
Rules | Rule数组 | 一个描述生命周期管理的规则数组,一条规则包含了规则ID、匹配的对象key前缀、匹配的对象标签信息、当前版本对象过期时间、历史版本对象过期时间和是否生效标识等信息 |
关于生命周期规则Rule一些说明
参数 | 类型 | 说明 |
---|---|---|
ID | string | 规则ID |
Status | string | 是否启用规则 (Enabled|Disabled) |
Expiration | Expiration | 文件过期时间 |
AbortIncompleteMultipartUpload | AbortIncompleteMultipartUpload | 未完成上传的分片过期时间 |
Transitions | Transition数组 | 文件转换到低频存储规则(距离修改时间) |
Filter | Filter | 应用范围,可以指定前缀或对象标签 |
关于Expiration的说明:
参数 | 类型 | 说明 |
---|---|---|
Days | int | 过期天数,默认-1,表示不过期 |
关于AbortIncompleteMultipartUpload的说明:
参数 | 类型 | 说明 |
---|---|---|
DaysAfterInitiation | int | 过期天数 |
关于Transition的说明:
参数 | 类型 | 说明 |
---|---|---|
Days | int | 转换过期天数 |
StorageClass | StorageClass | 要转换的存储类型 |
关于Filter的说明:
参数 | 类型 | 说明 |
---|---|---|
Prefix | string | 需要过滤的前缀 |
删除桶生命周期配置
功能说明
您可以使用delete_bucket_lifecycle接口删除桶的生命周期配置。
代码示例
def delete_bucket_lifecycle(self):
resp = self.s3_client.delete_bucket_lifecycle(
Bucket='<your-bucket-name>'
)
print(resp)
请求参数
参数 | 类型 | 说明 | 是否必要 |
---|---|---|---|
Bucket | string | 桶名称 | 是 |
返回结果
根据返回码判断是否设置成功,204表示成功。
设置桶跨域访问配置
功能说明
跨域资源共享 (CORS) 定义了在一个域中加载的客户端 Web 应用程序与另一个域中的资源交互的方式。利用 CORS 支持,您可以构建丰富的客户端 Web 应用程序,同时可以选择性地允许跨源访问您的资源。您可以通过put_bucket_cors接口设置桶的跨域访问配置。
代码示例
def put_bucket_cors(self):
resp = self.s3_client.put_bucket_cors(
Bucket='<your-bucket-name>',
CORSConfiguration={
'CORSRules': [{
'AllowedHeaders': ["*"],
'AllowedMethods': ["POST", "GET", "PUT", "DELETE", "HEAD"],
'AllowedOrigins': ["*"], # 可以使用http://domain:port
'ExposeHeaders': ["ETag"],
'MaxAgeSeconds': 3600,
}],
},
)
print(resp)
请求参数
参数 | 类型 | 说明 | 是否必要 |
---|---|---|---|
Bucket | string | 桶名称 | 是 |
CORSConfiguration | CORSRule数组 | 跨域访问规则 | 是 |
关于跨域访问配置CORSRule的一些说明
参数 | 说明 |
---|---|
AllowedMethods | 允许的请求方法 |
AllowedOrigins | 允许的请求源 |
AllowedHeaders | 允许的请求头 |
ExposeHeaders | 允许返回的Response Header |
MaxAgeSeconds | 跨域请求结果的缓存时间 |
返回结果
根据返回码判断是否设置成功,200表示成功。
获取桶跨域访问配置
功能说明
跨域资源共享 (CORS) 定义了在一个域中加载的客户端 Web 应用程序与另一个域中的资源交互的方式。利用 CORS 支持,您可以构建丰富的客户端 Web 应用程序,同时可以选择性地允许跨源访问您的资源。您可以通过get_bucket_cors接口获取桶跨域访问配置。
代码示例
def get_bucket_cors(self):
resp = self.s3_client.get_bucket_cors(
Bucket='<your-bucket-name>',
)
print(resp)
请求参数
参数 | 类型 | 说明 | 是否必要 |
---|---|---|---|
Bucket | string | 桶名称 | 是 |
返回结果
参数 | 类型 | 说明 |
---|---|---|
CORSRules | CORSRule数组 | 跨域访问规则 |
关于跨域访问配置CORSRules的一些说明
参数 | 说明 |
---|---|
AllowedMethods | 允许的请求方法 |
AllowedOrigins | 允许的请求源 |
AllowedHeaders | 允许的请求头 |
ExposeHeaders | 允许返回的Response Header |
MaxAgeSeconds | 跨域请求结果的缓存时间 |
删除桶跨域访问配置
功能说明
跨域资源共享 (CORS) 定义了在一个域中加载的客户端 Web 应用程序与另一个域中的资源交互的方式。利用 CORS 支持,您可以构建丰富的客户端 Web 应用程序,同时可以选择性地允许跨源访问您的资源。您可以通过delete_bucket_cors接口删除桶跨域访问配置。
代码示例
def delete_bucket_cors(self):
resp = self.s3_client.delete_bucket_cors(
Bucket='<your-bucket-name>',
)
print(resp)
请求参数
参数 | 类型 | 说明 | 是否必要 |
---|---|---|---|
Bucket | string | 桶名称 | 是 |
返回结果
根据返回码判断是否设置成功,204表示成功。
设置桶版本控制状态
功能说明
您可以通过put_bucket_versioning设置存储桶版本控制状态。存储桶的版本控制状态可以设置为以下的值:
Enabled:对存储桶中的所有对象启用版本控制,之后每个添加到存储桶中的对象都会被设置一个唯一的version ID。
Suspended:暂停存储桶的版本控制,之后每个添加到bucket中的对象的version ID会被设置为null。
代码示例
def put_bucket_versioning(self):
resp = self.s3_client.put_bucket_versioning(
Bucket='<your-bucket-name>',
VersioningConfiguration={
'Status': 'Enabled' #'Enabled'|'Suspended'
}, )
print(resp)
请求参数
参数 | 类型 | 说明 | 是否必要 |
---|---|---|---|
Bucket | string | 存储桶的名称 | 是 |
VersioningConfiguration | VersioningConfiguration | 封装了设置版本控制状态的参数 | 是 |
VersioningConfiguration说明
参数 | 类型 | 说明 |
---|---|---|
Status | Status | Enabled|Suspended,版本控制开关状态 |
返回结果
根据返回码判断是否设置成功,200表示成功。
获取桶版本控制状态
功能说明
您可以通过get_bucket_versioning获取存储桶的版本控制状态信息。只有存储桶的拥有者才能获取到版本控制信息。如果存储桶从来没有被设置过版本控制状态,那么该存储桶不含有任何版本控制的状态信息,执行get_bucket_versioning操作不能获取版本控制信息的有效值。
代码示例
def get_bucket_versioning(self):
resp = self.s3_client.get_bucket_versioning(
Bucket='<your-bucket-name>',
)
print(resp)
请求参数
参数 | 类型 | 说明 | 是否必要 |
---|---|---|---|
Bucket | string | 桶名称 | 是 |
返回结果
参数 | 类型 | 说明 |
---|---|---|
Status | Status | Enabled|Suspended,版本控制开关状态 |