ALIYUN::OSS::Bucket類型用于創建OSS存儲空間。
語法
{
"Type": "ALIYUN::OSS::Bucket",
"Properties": {
"AccessControl": String,
"RefererConfiguration": Map,
"ServerSideEncryptionConfiguration": Map,
"CORSConfiguration": Map,
"Tags": Map,
"LoggingConfiguration": Map,
"LifecycleConfiguration": Map,
"StorageClass": String,
"DeletionForce": Boolean,
"Policy": Map,
"BucketName": String,
"RedundancyType": String,
"VersioningConfiguration": Map,
"ResourceGroupId": String,
"EnableOssHdfsService": Boolean,
"WebsiteConfigurationV2": Map
}
}
屬性
屬性名稱 | 類型 | 必須 | 允許更新 | 描述 | 約束 |
BucketName | String | 是 | 否 | 存儲空間名稱。 | 長度為3~63個字符。必須以小寫英文字母或數字開頭和結尾,可包含小寫英文字母、數字和短劃線(-)。 說明 此名稱要求全局唯一,可以通過使用AssociationProperty中的AutoCompleteInput自動生成隨機字符串。更多信息,請參見如何控制隨機字符串的長度?。 |
AccessControl | String | 否 | 是 | 訪問權限。 | 取值:
|
CORSConfiguration | Map | 否 | 否 | 跨域訪問配置。 | 更多信息,請參見CORSConfiguration屬性。 |
DeletionForce | Boolean | 否 | 是 | 是否強制刪除OSS中的文件。 | 取值:
|
EnableOssHdfsService | Boolean | 否 | 是 | 是否開啟OSS-HDFS服務。 | 取值:
|
LifecycleConfiguration | Map | 否 | 是 | 文件生命周期配置。 | 更多信息,請參見LifecycleConfiguration屬性。 |
LoggingConfiguration | Map | 否 | 否 | 日志存儲配置。 | 更多信息,請參見LoggingConfiguration屬性。 |
Policy | Map | 否 | 是 | 存儲空間策略。 | 更多信息,請參見Bucket Policy常見示例。 |
RedundancyType | String | 否 | 否 | Bucket的數據容災類型。 | 取值:
|
RefererConfiguration | Map | 否 | 是 | 防盜鏈配置。 | 更多信息,請參見RefererConfiguration屬性。 |
ResourceGroupId | String | 否 | 否 | 資源組ID。 | 無 |
ServerSideEncryptionConfiguration | Map | 否 | 是 | 服務端加密規則配置。 | 更多信息,請參見ServerSideEncryptionConfiguration屬性。 |
StorageClass | String | 否 | 否 | 存儲空間類型。 | 取值:
|
Tags | Map | 否 | 是 | 存儲空間標簽。Key-Value形式的鍵值對。 | 最多設置20個標簽。 Key長度為1~64個字符,不能以 Value長度為0~128個字符,必須為UTF-8編碼。 |
VersioningConfiguration | Map | 否 | 是 | 保存版本控制狀態的容器。 | 更多信息,請參見VersioningConfiguration屬性。 |
WebsiteConfigurationV2 | Map | 否 | 否 | 網站配置。 | 更多信息,請參見WebsiteConfigurationV2屬性。 |
CORSConfiguration語法
"CORSConfiguration": {
"CORSRule": List,
"ResponseVary": Boolean
}
CORSConfiguration屬性
屬性名稱 | 類型 | 必須 | 允許更新 | 描述 | 約束 |
CORSRule | List | 否 | 否 | 跨域訪問規則。 | 更多信息,請參見CORSRule屬性。 |
ResponseVary | Boolean | 否 | 否 | 是否返回 | 其取值范圍如下:
說明 注意:此字段不能單獨配置;必須至少配置一條跨域規則才能生效。 |
CORSRule語法
"CORSRule": [
{
"MaxAgeSeconds": Number,
"AllowedMethod": List,
"ExposeHeader": List,
"AllowedOrigin": List,
"AllowedHeader": List
}
]
CORSRule屬性
屬性名稱 | 類型 | 必須 | 允許更新 | 描述 | 約束 |
AllowedHeader | List | 否 | 否 | 允許的跨域請求Header。 | 取值:
|
AllowedMethod | List | 否 | 否 | 允許的跨域請求的方法。 | 取值:
|
AllowedOrigin | List | 否 | 否 | 允許的跨域請求的來源。 | 無 |
ExposeHeader | List | 否 | 否 | 允許用戶從應用程序中訪問的響應頭。 | 不允許使用星號(*)。 |
MaxAgeSeconds | Number | 否 | 否 | 瀏覽器對特定資源的OPTIONS請求返回結果的緩存時間。 | 無 |
LifecycleConfiguration語法
"LifecycleConfiguration": {
"Rule": List
}
LifecycleConfiguration屬性
屬性名稱 | 類型 | 必須 | 允許更新 | 描述 | 約束 |
Rule | List | 是 | 否 | 生命周期規則。 | 更多信息,請參見Rule屬性。 |
Rule語法
"Rule": [
{
"Status": String,
"AbortMultipartUpload": Map,
"Expiration": Map,
"Prefix": String,
"ID": String,
"Filter": Map
}
]
Rule屬性
屬性名稱 | 類型 | 必須 | 允許更新 | 描述 | 約束 |
Prefix | String | 是 | 否 | 規則所適用的前綴。 | 只有匹配前綴的對象才可能被該規則所影響。 |
AbortMultipartUpload | Map | 否 | 否 | 未完成分片上傳的過期屬性。 | 更多信息,請參見AbortMultipartUpload屬性。 |
Expiration | Map | 否 | 否 | 對象規則的過期屬性。 | 更多信息,請參見Expiration屬性。 |
ID | String | 否 | 否 | 規則的唯一ID。 | 最長為255字符。當沒有指定ID或者ID為空時,OSS會自動生成一個唯一值。 |
Status | String | 否 | 是 | 啟用或停用規則。 | 取值:
|
Filter | Map | 否 | 否 | 這條排除規則最多只有一個條件規則。 | 更多信息,請參見Filter屬性。 |
Filter語法
"Filter":{
"Not": Map
}
Filter屬性
屬性名稱 | 類型 | 必須 | 允許更新 | 描述 | 約束 |
Not | Map | 否 | 否 | 排除規則 | 更多信息,請參見Not屬性。 |
Not語法
"Not":{
"Tag": List,
"Prefix": String
}
Not屬性
屬性名稱 | 類型 | 必須 | 允許更新 | 描述 | 約束 |
Tag | List | 否 | 否 | 排除規則的標簽。 | 這條排除規則最多適用于一個對象標簽。 |
Prefix | String | 否 | 否 | 規則前綴。 | 此排除規則所適用的對象前綴條件如下:
簡而言之,這條規則說明了在設置排除規則時,如果上級規則定義了一個前綴,那么下屬的非規則內的前綴必須是上級前綴的子集或具體化,且不能完全相同(除非使用了標簽配置)。這樣設計是為了實現更細致和靈活的文件或對象篩選邏輯,特別是在云存儲、數據備份或內容過濾等場景中。 |
Expiration語法
"Expiration":{
"Days": Number,
"CreatedBeforeDate": String,
"ExpiredObjectDeleteMarker": Boolean
}
Expiration屬性
屬性名稱 | 類型 | 必須 | 允許更新 | 描述 | 約束 |
CreatedBeforeDate | String | 否 | 否 | 指定一個日期,OSS會對最后更新日期早于該日期的數據執行規則。 | 日期必須服從ISO8601的格式,且要求是UTC的零點。例如: |
Days | Number | 否 | 否 | 對象最后修改后,規則將在多少天后生效。 | 以文件最后修改時間為起點開始計算,超過設定天數時即執行規則,則將對象刪除。如果設置時間為30天,則最后修改日期為2016年01月01日的對象會在2016年01月31日被后端程序刪除。 |
ExpiredObjectDeleteMarker | Boolean | 否 | 否 | 指定是否應自動刪除過期的刪除標簽。 | 有效值如下:
|
AbortMultipartUpload語法
"AbortMultipartUpload": {
"CreatedBeforeDate": String,
"Days": Number
}
AbortMultipartUpload屬性
屬性名稱 | 類型 | 必須 | 允許更新 | 描述 | 約束 |
CreatedBeforeDate | String | 否 | 否 | 規則在何時之前生效。 | 日期為ISO8601的格式,并且值為UTC的零點。例如: |
Days | Number | 否 | 否 | 對象最后修改后,規則會在多少天后生效。 | 以文件最后修改時間為起點開始計算,超過設定天數時即執行規則,則將對象刪除。如果設置時間為30天,則最后修改日期為2016年01月01日的對象會在2016年01月31日被后端程序刪除。 |
LoggingConfiguration語法
"LoggingConfiguration": {
"TargetBucket": String,
"TargetPrefix": String
}
LoggingConfiguration屬性
屬性名稱 | 類型 | 必須 | 允許更新 | 描述 | 約束 |
TargetBucket | String | 否 | 否 | 存放訪問日志的存儲空間。 | 無 |
TargetPrefix | String | 否 | 否 | 最終被保存的訪問日志文件前綴。 | 無 |
WebsiteConfigurationV2語法
"WebsiteConfiguration":{
"RoutingRules": List,
"IndexDocument": Map,
"ErrorDocument": Map
}
WebsiteConfigurationV2屬性
屬性名稱 | 類型 | 必須 | 允許更新 | 描述 | 約束 |
ErrorDocument | Map | 否 | 否 | 托管的靜態錯誤頁。 | 無 |
IndexDocument | Map | 否 | 否 | 托管的靜態首頁。 | 無 |
RoutingRules | List | 否 | 否 | 路由規則列表。 | 最大長度20。 |
IndexDocument語法
"IndexDocument":{
"Suffix": String,
"Type": String,
"SupportSubDir": String
}
IndexDocument屬性
屬性名稱 | 類型 | 必須 | 允許更新 | 描述 | 約束 |
Suffix | String | 是 | 否 | 默認首頁。 | 設置默認首頁后,如果您訪問以正斜杠(/)結尾的對象,OSS將返回到此默認首頁。 |
Type | String | 否 | 否 | 當設置默認首頁后,嘗試訪問以非正斜杠(/)結尾且不存在的對象時的行為如下。 | 此規則僅在SupportSubDir設置為true時生效,并且在RoutingRule之后、ErrorFile之前生效。假設默認首頁文件為index.html,當訪問的文件路徑為bucket.oss-cn-hangzhou.aliyuncs.com/abc,且對象ABC不存在時,針對Type不同值的行為如下:
|
SupportSubDir | String | 否 | 否 | 當訪問一個子目錄時,是否跳轉到該子目錄的默認主頁。 | 可選范圍如下:
|
RoutingRules語法
"RoutingRules":[{
"Redirect": Map,
"Condition": Map,
"RuleNumber": Integer
}]
RoutingRules屬性
屬性名稱 | 類型 | 必須 | 允許更新 | 描述 | 約束 |
Redirect | Map | 是 | 否 | 指定當此規則被匹配時要執行的操作。 | 更多信息,請參見Redirect屬性。 |
Condition | Map | 是 | 否 | 匹配條件。 | 此規則僅在滿足指定的所有項目時執行。只有當此容器下的每個節點的所有條件都得到滿足時,才視為匹配成功。更多信息,請參見Condition屬性。 |
RuleNumber | Integer | 是 | 否 | 匹配并執行RoutingRule的序列號,OSS將根據此序列號順序匹配規則。 | 如果匹配成功,則執行此規則并且不再執行后續規則。 |
Condition語法
"Condition":{
"KeyPrefixEquals": String,
"HttpErrorCodeReturnedEquals": String,
"IncludeHeaders": List,
"KeySuffixEquals": String
}
Condition屬性
屬性名稱 | 類型 | 必須 | 允許更新 | 描述 | 約束 |
KeyPrefixEquals | String | 否 | 否 | 要匹配的對象名稱的前綴。 | 無。 |
HttpErrorCodeReturnedEquals | String | 否 | 否 | 當訪問指定的對象時,為了符合此規則,必須返回此狀態。 | 當跳轉規則鏡像回源類型時,此字段必須為404。 |
IncludeHeaders | List | 否 | 否 | 此規則僅當請求中包含指定的頭部且其值為指定的值時才會匹配。 | 最多可設置10個這樣的條件。更多信息,請參見IncludeHeaders屬性。 |
KeySuffixEquals | String | 否 | 否 | 要匹配的對象名稱的前綴。 | 無。 |
IncludeHeaders語法
"IncludeHeaders": [
{
"Equals": String,
"Key": String
}
]
IncludeHeaders屬性
屬性名稱 | 類型 | 必須 | 允許更新 | 描述 | 約束 |
Equals | String | 否 | 否 | 頭部的值。 | 無 |
Key | String | 是 | 否 | 頭標的名稱。 | 無 |
RefererConfiguration語法
"RefererConfiguration":{
"AllowEmptyReferer": String,
"RefererList": List
}
RefererConfiguration屬性
屬性名稱 | 類型 | 必須 | 允許更新 | 描述 | 約束 |
AllowEmptyReferer | Boolean | 否 | 否 | 是否允許referer字段為空的請求訪問。 | 取值:
|
RefererList | List | 否 | 否 | 允許referer字段的白名單。 | 無 |
Redirect語法
"Redirect":{
"MirrorFollowRedirect": Boolean,
"MirrorURL": String,
"PassQueryString": Boolean,
"MirrorPassQueryString": Boolean,
"ReplaceKeyWith": String,
"Protocol": String,
"HttpRedirectCode": String,
"ReplaceKeyPrefixWith": String,
"RedirectType": String,
"MirrorHeaders": Map,
"MirrorCheckMd5": Boolean,
"EnableReplacePrefix": Boolean,
"HostName": String
}
Redirect屬性
屬性名稱 | 類型 | 必須 | 允許更新 | 描述 | 約束 |
MirrorFollowRedirect | Boolean | 否 | 否 | 當鏡像回源后得到的結果是3xx狀態碼時,是否繼續跳轉到指定的Location以獲取數據。 | 此設置僅在RedirectType設置為Mirror時生效。例如,當我們鏡像請求回到源站時,源站返回了一個帶有Location信息的302狀態碼。
|
MirrorURL | String | 否 | 否 | 鏡像回源站地址。 | 此設置僅在RedirectType配置為Mirror時生效。起源網址必須以http://或https://開頭,并以正斜杠(/)結尾,OSS會在此基礎上拼接上對象名稱來構成返回的URL。例如,若要訪問的對象名為myobject,當您將其設置為http://example.com/時,回源URL將會是http://example.com/myobject;如果設置為http://example.com/dir1/,則回源URL將會是http://example.com/dir1/myobject。 |
PassQueryString | Boolean | 否 | 否 | 當執行跳轉或回源鏡像時,是否攜帶請求參數。 | 即用戶以請求參數a=b&c=d的形式訪問OSS,并設置PassQueryString為true時,若規則類型為302跳轉,則此請求參數會附加在跳轉的Location頭部中,例如Location:example.com?a=b&c=d;若規則類型為鏡像回源,則此請求參數也會被攜帶在發起的回源請求中。有效值:true、false(默認)。 |
MirrorPassQueryString | Boolean | 否 | 否 | 與PassQueryString相同,但優先于PassQueryString。此設置僅在RedirectType設置為Mirror時有效。 | 默認值:false。 |
ReplaceKeyWith | String | 否 | 否 | 使用Redirect規則時,對象名稱將被ReplaceKeyWith指定的值替換,這使得您可以設置變量。 | 目前支持的變量是{key},它代表請求中的對象名稱。假設要訪問名為test的對象,如果將ReplaceKeyWith設置為prefix/key,它代表請求中的對象名稱。假設要訪問名為test的對象,如果將ReplaceKeyWith設置為prefix/{key}。那么,后綴將指向http://example.com/prefix/test.suffix的Location頭部。 這意味著,當客戶端請求原始對象(例如,test)時,服務器會通過Redirect規則將其重定向到一個新位置,該位置的路徑由ReplaceKeyWith定義的模式動態生成。在這個例子中,新路徑會在“prefix/”后面加上原始對象名(即test),最終重定向的URL變為"http://example.com/prefix/test.suffix"。這里的".suffix"是您提到的后綴部分,按照您的描述它似乎是固定不變的,而"${key}"則成功地被對象名“test”替換。 |
Protocol | String | 否 | 否 | 當執行跳轉時的協議規范。 | 該規則僅在RedirectType設置為External或AliCDN的情況下適用。假如您希望訪問的文件是“test”,并且想要將其重定向至“example.com”,同時指定協議為https,那么在HTTP響應中的Location頭部應設置為"https://example.com/test"??蛇x的協議值有:http, https。 |
HttpRedirectCode | String | 否 | 否 | 當進行跳轉時返回的狀態碼。 | 僅當RedirectType設置為External或AliCDN時適用。默認值為302??蛇x值:301、302、307。 |
ReplaceKeyPrefixWith | String | 否 | 否 | 該值將替代重定向中對象名稱的前綴。如果前綴為空,則此字符串將在對象名稱之前插入。 | 說明 注意:僅允許使用ReplaceKeyWith或ReplaceKeyPrefixWith節點。假設要訪問的對象為ABC/test.TXT,如果設置了KeyPrefixEquals為ABC/,并且ReplaceKeyPrefixWith為def/,那么定位(Location)將指向http://example.com/def/test.txt。 |
RedirectType | String | 是 | 否 | 指定跳轉的類型。 | 可選范圍如下:
|
MirrorHeaders | Map | 否 | 否 | 指定回傳到源端時被鏡像的頭部。 | 此設置僅在RedirectType被設置為Mirror時生效。更多信息,請參見MirrorHeaders屬性。 |
MirrorCheckMd5 | Boolean | 否 | 否 | 是否回源檢查MD5。 | 此配置僅在RedirectType設置為Mirror時生效。當MirrorCheckMd5設置為true時,如果源站返回的響應中包含Content-Md5頭信息,OSS會檢查拉取的數據MD5是否與該頭信息匹配,如果不匹配,則不會將數據保存到OSS上。默認值:false。 |
EnableReplacePrefix | Boolean | 否 | 否 | 如果將此字段設置為true,對象的前綴將被ReplaceKeyPrefixWith指定的值替換。如果未指定此字段或為空,則意味著對象的前綴將被截斷。 | 注意:當ReplaceKeyWith字段不為空時,此字段不能設置為true。默認值:false。 |
HostName | String | 否 | 否 | 跳轉的域名。 | 該域名應遵循域名規范。如果要訪問的文件名為test,并且協議設置為https,主機名設置為example.com,則Location頭部應為https://example.com/test。 |
MirrorHeaders語法
"MirrorHeaders":{
"Remove": List,
"PassAll": Boolean,
"Sets": List,
"Pass": List
}
MirrorHeaders屬性
屬性名稱 | 類型 | 必須 | 允許更新 | 描述 | 約束 |
Remove | List | 否 | 否 | 禁用指定頭部向源的透傳。 | 這僅在將RedirectType設置為Mirror時有效。每個頭部的長度最多為1,024字節,并且字符集包括0-9、a-z、A-Z和破折號(-)。此字段最多可以指定10個。 |
PassAll | Boolean | 否 | 否 | 是否將除以下頭部之外的其他頭部傳遞給源。 | 這僅在將RedirectType設置為Mirror時有效。需要排除的頭部包括:- content-length, authorization2, authorization, range, date以及其他的通用頭部- 以oss-/x-oss-/x-drs-開頭的特定頭部 默認值為:false 這意味著,默認情況下,這些特定的頭部不會被傳遞到鏡像源。如果需要修改此行為,可以將此設置調整為true,以允許這些頭部信息通過。 |
Sets | List | 否 | 否 | 設置一個頭部到源服務器,當請求被回傳給源服務器時,該頭部會被設置,無論指定的頭部是否包含在請求中。 | 此功能僅在將RedirectType設置為Mirror時生效。此容器最多可以為10組頭信息進行這樣的設置。更多信息,請參見Sets屬性。 |
Pass | List | 否 | 否 | 將指定的頭部信息傳遞給源。 | 此操作僅在將RedirectType設置為鏡像(Mirror)時有效。每個頭部的最大長度為1,024字節,并且只能包含字符集0-9、a-z、A-Z和破折號(-)。此字段最多可以指定10個頭部信息。 |
Sets語法
"Sets": [
{
"Value": String,
"Key": String
}
]
Sets屬性
屬性名稱 | 類型 | 必須 | 允許更新 | 描述 | 約束 |
Value | String | 是 | 否 | 將標頭的值設置為最大1024字節,不包括\r\n。 | 此設置僅在RedirectType被設置為鏡像(Mirror)時有效。 |
Key | String | 是 | 否 | 將頭部鍵設置為最大1024字節,使用的字符集與Pass相同。 | 此設置僅在RedirectType被設置為Mirror時有效。 |
ErrorDocument語法
"ErrorDocument":{
"Key": String,
"HttpStatus": String
}
ErrorDocument屬性
屬性名稱 | 類型 | 必須 | 允許更新 | 描述 | 約束 |
Key | String | 是 | 否 | 默認錯誤頁面。 | 當指定了一個錯誤頁面時,如果訪問的對象不存在,將返回這個錯誤頁面。 |
HttpStatus | String | 否 | 否 | 錯誤頁面的HTTP狀態代碼。 | 有效值:200、404(默認)。 |
ServerSideEncryptionConfiguration語法
"ServerSideEncryptionConfiguration":{
"KMSMasterKeyID": String,
"SSEAlgorithm": String
}
ServerSideEncryptionConfiguration屬性
屬性名稱 | 類型 | 必須 | 允許更新 | 描述 | 約束 |
SSEAlgorithm | String | 是 | 否 | 服務端默認加密方式。 | 取值:
|
KMSMasterKeyID | String | 否 | 否 | 密鑰ID。 | 只有當SSEAlgorithm值為KMS,且使用指定的密鑰加密時,才需指定密鑰ID。 |
VersioningConfiguration語法
"VersioningConfiguration":{
"Status": String
}
VersioningConfiguration屬性
屬性名稱 | 類型 | 必須 | 允許更新 | 描述 | 約束 |
Status | String | 是 | 否 | 版本控制狀態。 | 取值:
|
返回值
Fn::GetAtt
Name:存儲空間名稱,全局唯一。
DomainName:通過公網訪問存儲空間的域名。
InternalDomainName:通過內網訪問存儲空間的域名。
示例
YAML
格式
ROSTemplateFormatVersion: '2015-09-01'
Description: Creates a simple oss bucket
Parameters:
BucketName:
AssociationProperty: AutoCompleteInput
AssociationPropertyMetadata:
Length: 5
Prefix: simple-oss-bucket
CharacterClasses:
- Class: lowercase
min: 1
Type: String
Label:
en: Bucket Name
Outputs:
BucketDomainName:
Value:
Fn::GetAtt:
- MyBucket
- DomainName
Resources:
MyBucket:
Type: ALIYUN::OSS::Bucket
Properties:
AccessControl: private
BucketName:
Ref: BucketName
Metadata: {}
JSON
格式
{
"ROSTemplateFormatVersion": "2015-09-01",
"Description": "Creates a simple oss bucket",
"Parameters": {
"BucketName": {
"Type": "String",
"Label": {
"en": "Bucket Name"
},
"AssociationProperty": "AutoCompleteInput",
"AssociationPropertyMetadata": {
"Length": 5 ,
"Prefix": "simple-oss-bucket",
"CharacterClasses": [
{
"Class": "lowercase",
"min": 1
}
]
}
}
},
"Metadata": {
},
"Resources": {
"MyBucket": {
"Type": "ALIYUN::OSS::Bucket",
"Properties": {
"AccessControl": "private",
"BucketName": {
"Ref": "BucketName"
}
}
}
},
"Outputs": {
"BucketDomainName": {
"Value": {
"Fn::GetAtt": [
"MyBucket",
"DomainName"
]
}
}
}
}