創建桶
功能說明
您可以通過使用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': ["*"], # 可以使用//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,版本控制開關狀態 |