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"。可選的協議值有:http, https。 |
HttpRedirectCode | String | 否 | 否 | 當進行跳轉時返回的狀態代碼。 | 僅當RedirectType設定為External或AliCDN時適用。預設值為302。可選值: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"
]
}
}
}
}