ALIYUN::OSS::Bucket crea un bucket de Object Storage Service (OSS).
Sintaxis
{
"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,
"BlockPublicAccess": Boolean
}
}
Propiedades
Nombre de la propiedad | Tipo | Obligatorio | Actualización permitida | Descripción | Restricción |
BucketName | String | Sí | No | El nombre del bucket. | El nombre debe tener entre 3 y 63 caracteres de longitud. Debe comenzar y terminar con una letra minúscula o un dígito. Solo puede contener letras minúsculas, dígitos y guiones (-). Nota Este nombre debe ser único a nivel global. Utilice AutoCompleteInput en AssociationProperty para generar automáticamente una cadena aleatoria. How do I control the length of a random string? |
AccessControl | String | No | Sí | Los permisos de acceso del bucket. | Valores válidos:
|
CORSConfiguration | Map | No | Sí | La configuración de uso compartido de recursos de origen cruzado (CORS). | Para obtener más información, consulte CORSConfiguration properties. |
DeletionForce | Boolean | No | Sí | Indica si se deben eliminar forzosamente los objetos del bucket. | Valores válidos:
|
EnableOssHdfsService | Boolean | No | Sí | Indica si se debe habilitar el servicio OSS-HDFS. | Valores válidos:
|
BlockPublicAccess | Boolean | No | Sí | Indica si se debe bloquear el acceso público al bucket. | Valores válidos:
|
LifecycleConfiguration | Map | No | Sí | La configuración del ciclo de vida de los objetos en el bucket. | Para obtener más información, consulte LifecycleConfiguration properties. |
LoggingConfiguration | Map | No | No | La configuración de almacenamiento de registros. | Para obtener más información, consulte LoggingConfiguration properties. |
Policy | Map | No | Sí | La directiva del bucket. | |
RedundancyType | String | No | No | El tipo de redundancia de datos del bucket. | Valores válidos:
|
RefererConfiguration | Map | No | Sí | La configuración de protección contra hotlinking. | Para obtener más información, consulte RefererConfiguration properties. |
ResourceGroupId | String | No | No | El ID del resource group. | Ninguna |
ServerSideEncryptionConfiguration | Map | No | Sí | La configuración de cifrado del lado del servidor. | Para obtener más información, consulte ServerSideEncryptionConfiguration properties. |
StorageClass | String | No | No | La clase de almacenamiento del bucket. | Valores válidos:
|
Tags | Map | No | Sí | Las etiquetas del bucket. Cada etiqueta es un par clave-valor. | Se pueden configurar hasta 20 etiquetas. La clave debe tener entre 1 y 64 caracteres de longitud. No puede comenzar con El valor debe tener entre 0 y 128 caracteres de longitud y estar codificado en UTF-8. |
VersioningConfiguration | Map | No | Sí | Un contenedor que almacena el estado del control de versiones. | Para obtener más información, consulte VersioningConfiguration properties. |
WebsiteConfigurationV2 | Map | No | No | La configuración del sitio web. | Para obtener más información, consulte WebsiteConfigurationV2 properties. |
Sintaxis de CORSConfiguration
"CORSConfiguration": {
"CORSRule": List,
"ResponseVary": Boolean
}
Propiedades de CORSConfiguration
Nombre de la propiedad | Tipo | Obligatorio | Actualización permitida | Descripción | Restricción |
CORSRule | List | No | Sí | La regla de CORS. | Para obtener más información, consulte CORSRule properties. |
ResponseVary | Boolean | No | Sí | Especifica si se debe devolver el encabezado | Valores válidos:
Nota No es posible configurar este campo por sí solo. Debe configurar como mínimo una regla de CORS para que este campo surta efecto. |
Sintaxis de CORSRule
"CORSRule": [
{
"MaxAgeSeconds": Number,
"AllowedMethod": List,
"ExposeHeader": List,
"AllowedOrigin": List,
"AllowedHeader": List
}
]
Propiedades de CORSRule
Nombre de la propiedad | Tipo | Obligatorio | Actualización permitida | Descripción | Restricción |
AllowedHeader | List | No | Sí | Los encabezados permitidos en las solicitudes de origen cruzado. | Valores válidos:
|
AllowedMethod | List | No | Sí | Los métodos HTTP permitidos en las solicitudes de origen cruzado. | Valores válidos:
|
AllowedOrigin | List | No | Sí | Los orígenes permitidos en las solicitudes de origen cruzado. | Ninguna |
ExposeHeader | List | No | Sí | Los encabezados de respuesta a los que los usuarios pueden acceder desde las aplicaciones. | No se permite el asterisco (*). |
MaxAgeSeconds | Number | No | Sí | El tiempo durante el cual los navegadores almacenan en caché los resultados de las solicitudes OPTIONS para recursos específicos. | Ninguna |
Sintaxis de LifecycleConfiguration
"LifecycleConfiguration": {
"Rule": List
}
Propiedades de LifecycleConfiguration
|
Nombre de la propiedad |
Tipo |
Obligatorio |
Actualización permitida |
Descripción |
Restricción |
|
Rule |
List |
Sí |
No |
La regla de ciclo de vida. |
Para obtener más información, consulte Rule properties. |
Sintaxis de Rule
"Rule": [
{
"Status": String,
"AbortMultipartUpload": Map,
"Expiration": Map,
"Prefix": String,
"ID": String,
"Filter": Map,
"Transition": List
}
]
Propiedades de Rule
Nombre de la propiedad | Tipo | Obligatorio | Actualización permitida | Descripción | Restricción |
Prefix | String | Sí | No | El prefijo al que se aplica la regla. | Solo los objetos cuyos nombres coinciden con el prefijo se ven afectados por la regla. |
AbortMultipartUpload | Map | No | No | La configuración de caducidad para cargas multiparte incompletas. | Para obtener más información, consulte AbortMultipartUpload properties. |
Expiration | Map | No | No | La configuración de caducidad de los objetos. | Para obtener más información, consulte Expiration properties. |
ID | String | No | No | El ID único de la regla. | El ID puede tener hasta 255 caracteres de longitud. Si no especifica un ID o lo deja vacío, OSS genera automáticamente un ID único. |
Status | String | No | Sí | Habilita o deshabilita la regla. | Valores válidos:
|
Filter | Map | No | No | Esta regla de exclusión admite solo una condición. | Para obtener más información, consulte Filter properties. |
Transition | List | No | No | La lista de tareas de transición de redundancia de almacenamiento. | Para obtener más información, consulte Transition properties. |
Sintaxis de Transition
"Transition": [
{
"CreatedBeforeDate": String,
"Days": Integer,
"IsAccessTime": Boolean,
"ReturnToStdWhenVisit": Boolean,
"AllowSmallFile": Boolean,
"StorageClass": String
}
]
Propiedades de Transition
Nombre de la propiedad | Tipo | Obligatorio | Actualización permitida | Descripción | Restricción |
CreatedBeforeDate | String | No | No | Especifique una fecha. OSS aplica la regla de ciclo de vida a los objetos cuya última modificación sea anterior a dicha fecha. | La fecha debe seguir el formato ISO 8601 y corresponder a la medianoche (00:00:00) en hora UTC. |
Days | Integer | No | No | Especifique cuántos días después de la última actualización del objeto debe entrar en vigor la regla de ciclo de vida. | Valores válidos: enteros positivos, como 30, 90 y 180. |
IsAccessTime | Boolean | No | No | Indica si la regla de ciclo de vida se aplica según la hora de último acceso del objeto. |
|
ReturnToStdWhenVisit | Boolean | No | No | Indica si los objetos no estándar deben revertirse a la clase de almacenamiento Estándar al acceder a ellos. | Esta opción solo surte efecto cuando IsAccessTime se establece en true. |
AllowSmallFile | Boolean | No | No | Indica si la operación se basa en la hora de último acceso del objeto. | Cambia la clase de almacenamiento a IA, Archive o Cold Archive para objetos menores de 64 KB. |
StorageClass | String | No | No | La clase de almacenamiento a la que se cambia el objeto. | Valores válidos:
|
Sintaxis de Filter
"Filter":{
"Not": Map
}
Propiedades de Filter
|
Nombre de la propiedad |
Tipo |
Obligatorio |
Actualización permitida |
Descripción |
Restricción |
|
Not |
Map |
No |
No |
La regla de exclusión. |
Para obtener más información, consulte Not properties. |
Sintaxis de Not
"Not":{
"Tag": List,
"Prefix": String
}
Propiedades de Not
Nombre de la propiedad | Tipo | Obligatorio | Actualización permitida | Descripción | Restricción |
Tag | List | No | No | La etiqueta para la regla de exclusión. | Esta regla de exclusión se aplica como máximo a una etiqueta de objeto. |
Prefix | String | No | No | El prefijo para la regla. | Las siguientes condiciones de prefijo de objeto se aplican a esta regla de exclusión:
El prefijo Not debe ser un subconjunto del prefijo Rule principal y no puede ser idéntico a este, a menos que también se configure una etiqueta. |
Sintaxis de Expiration
"Expiration":{
"Days": Number,
"CreatedBeforeDate": String,
"ExpiredObjectDeleteMarker": Boolean
}
Propiedades de expiración
Nombre de la propiedad | Tipo | Obligatorio | Actualización permitida | Descripción | Restricción |
CreatedBeforeDate | String | No | No | Especifique una fecha. OSS aplica la regla a los objetos cuya última modificación ocurrió antes de esta fecha. | La fecha debe seguir el formato ISO 8601 y corresponder a la medianoche (00:00:00) en hora UTC. Ejemplo: |
Days | Number | No | No | Especifique cuántos días deben transcurrir después de la última modificación del objeto para que la regla surta efecto. | OSS calcula el número de días a partir de la última modificación del objeto. Una vez transcurrido el plazo especificado, OSS elimina el objeto. Por ejemplo, si establece el valor en 30 días, OSS eliminará un objeto modificado por última vez el 1 de enero de 2016 el día 31 de enero de 2016. |
ExpiredObjectDeleteMarker | Boolean | No | No | Especifique si se deben eliminar automáticamente los marcadores de eliminación caducados. | Valores válidos:
|
Sintaxis de AbortMultipartUpload
"AbortMultipartUpload": {
"CreatedBeforeDate": String,
"Days": Number
}
Propiedades de AbortMultipartUpload
|
Nombre de la propiedad |
Tipo |
Obligatorio |
Actualización permitida |
Descripción |
Restricción |
|
CreatedBeforeDate |
String |
No |
No |
Especifique la fecha anterior a la cual surte efecto la regla. |
La fecha debe seguir el formato ISO 8601 y corresponder a la medianoche (00:00:00) en hora UTC. Ejemplo: |
|
Days |
Number |
No |
No |
Especifique cuántos días deben transcurrir después de la última modificación del objeto para que la regla surta efecto. |
OSS calcula el número de días a partir de la última modificación del objeto. Una vez transcurrido el plazo especificado, OSS elimina el objeto. Por ejemplo, si establece el valor en 30 días, OSS eliminará un objeto modificado por última vez el 1 de enero de 2016 el día 31 de enero de 2016. |
Sintaxis de LoggingConfiguration
"LoggingConfiguration": {
"TargetBucket": String,
"TargetPrefix": String
}
Propiedades de LoggingConfiguration
|
Nombre de la propiedad |
Tipo |
Obligatorio |
Actualización permitida |
Descripción |
Restricción |
|
TargetBucket |
String |
No |
No |
Bucket donde se almacenan los registros de acceso. |
Ninguna |
|
TargetPrefix |
String |
No |
No |
Prefijo para los archivos de registro de acceso guardados. |
Ninguna |
Sintaxis de WebsiteConfigurationV2
"WebsiteConfiguration":{
"RoutingRules": List,
"IndexDocument": Map,
"ErrorDocument": Map
}
Propiedades de WebsiteConfigurationV2
|
Nombre de la propiedad |
Tipo |
Obligatorio |
Actualización permitida |
Descripción |
Restricción |
|
ErrorDocument |
Map |
No |
No |
Página de error estática alojada en el bucket. |
Ninguna |
|
IndexDocument |
Map |
No |
No |
Página principal estática alojada en el bucket. |
Ninguna |
|
RoutingRules |
List |
No |
No |
Lista de reglas de enrutamiento. |
Longitud máxima: 20. |
Sintaxis de IndexDocument
"IndexDocument":{
"Suffix": String,
"Type": String,
"SupportSubDir": String
}
Propiedades de IndexDocument
Nombre de la propiedad | Tipo | Obligatorio | Actualización permitida | Descripción | Restricción |
Suffix | String | Sí | No | Página de índice predeterminada. | Tras configurar la página de índice predeterminada, si accede a un objeto cuyo nombre termina con barra diagonal (/), OSS devuelve dicha página. |
Type | String | No | No | Especifique el comportamiento cuando intenta acceder a un objeto inexistente que no termina con barra diagonal (/) después de configurar la página de índice predeterminada. | Esta regla solo surte efecto cuando SupportSubDir se establece en true; se aplica después de RoutingRule pero antes de ErrorFile. Suponga que la página de índice predeterminada es index.html. Al acceder a bucket.oss-cn-hangzhou.aliyuncs.com/abc y no existir el objeto abc, el comportamiento varía según el valor de Type:
|
SupportSubDir | String | No | No | Especifique si se debe redirigir a la página principal predeterminada de un subdirectorio al acceder a dicho subdirectorio. | Valores válidos:
|
Sintaxis de RoutingRules
"RoutingRules":[{
"Redirect": Map,
"Condition": Map,
"RuleNumber": Integer
}]
Propiedades de RoutingRules
|
Nombre de la propiedad |
Tipo |
Obligatorio |
Actualización permitida |
Descripción |
Restricción |
|
Redirect |
Map |
Sí |
No |
Especifique la acción a ejecutar cuando coincida la regla. |
Para obtener más información, consulte Redirect properties. |
|
Condition |
Map |
Sí |
No |
Condición de coincidencia. |
Esta regla solo surte efecto cuando se cumplen todas las condiciones especificadas. La coincidencia es correcta únicamente si se satisfacen todas las condiciones de este contenedor. Para obtener más información, consulte Condition properties. |
|
RuleNumber |
Integer |
Sí |
No |
Número de secuencia de la regla de enrutamiento para coincidir y ejecutar. OSS evalúa las reglas según este orden numérico. |
Si la coincidencia es correcta, OSS ejecuta esta regla y detiene la evaluación de las reglas subsiguientes. |
Sintaxis de Condition
"Condition":{
"KeyPrefixEquals": String,
"HttpErrorCodeReturnedEquals": String,
"IncludeHeaders": List,
"KeySuffixEquals": String
}
Propiedades de Condition
|
Nombre de la propiedad |
Tipo |
Obligatorio |
Actualización permitida |
Descripción |
Restricción |
|
KeyPrefixEquals |
String |
No |
No |
Prefijo del nombre de objeto que debe coincidir. |
Ninguna. |
|
HttpErrorCodeReturnedEquals |
String |
No |
No |
Código de estado HTTP que debe devolverse al acceder al objeto especificado para que la regla coincida. |
Este campo debe ser 404 cuando la regla de redirección utiliza retorno al origen basado en espejo. |
|
IncludeHeaders |
List |
No |
No |
La regla coincide solo cuando la solicitud contiene el encabezado especificado y su valor concuerda con el indicado. |
Puede configurar hasta 10 condiciones de este tipo. Para obtener más información, consulte IncludeHeaders properties. |
|
KeySuffixEquals |
String |
No |
No |
Sufijo del nombre de objeto que debe coincidir. |
Ninguna. |
Sintaxis de IncludeHeaders
"IncludeHeaders": [
{
"Equals": String,
"Key": String
}
]
Propiedades de IncludeHeaders
|
Nombre de la propiedad |
Tipo |
Obligatorio |
Actualización permitida |
Descripción |
Restricción |
|
Equals |
String |
No |
No |
Valor del encabezado. |
Ninguna |
|
Key |
String |
Sí |
No |
Nombre del encabezado. |
Ninguna |
Sintaxis de RefererConfiguration
"RefererConfiguration":{
"AllowEmptyReferer": String,
"RefererList": List
}
Propiedades de RefererConfiguration
Nombre de la propiedad | Tipo | Obligatorio | Actualización permitida | Descripción | Restricción |
AllowEmptyReferer | Boolean | No | No | Especifique si se permiten solicitudes con un encabezado Referer vacío para acceder al bucket. | Valores válidos:
|
RefererList | List | No | No | Lista de permitidos de encabezados Referer. | Ninguna |
Sintaxis de 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
}
Propiedades de Redirect
Nombre de la propiedad | Tipo | Obligatorio | Actualización permitida | Descripción | Restricción |
MirrorFollowRedirect | Boolean | No | No | Especifique si se debe continuar la redirección hacia la Location especificada para recuperar datos cuando el resultado de una solicitud de retorno al origen basada en espejo devuelve un código de estado 3xx. | Esta configuración solo surte efecto cuando RedirectType se establece en Mirror. Por ejemplo, al reflejar una solicitud al servidor de origen, este puede devolver un código de estado 302 con un encabezado Location.
|
MirrorURL | String | No | No | URL del servidor de origen para el retorno al origen basado en espejo. | Esta configuración solo surte efecto cuando RedirectType se establece en Mirror. La URL de origen debe comenzar con http:// o https:// y terminar con una barra diagonal (/). OSS anexa el nombre del objeto a esta URL para formar la dirección final. Por ejemplo, si el nombre del objeto es myobject y establece este parámetro en http://example.com/, la URL de retorno al origen será http://example.com/myobject. Si lo establece en http://example.com/dir1/, la URL resultante será http://example.com/dir1/myobject. |
PassQueryString | Boolean | No | No | Especifique si se deben incluir los parámetros de consulta al realizar una redirección o un retorno al origen basado en espejo. | Por ejemplo, si un usuario accede a OSS con los parámetros de consulta a=b&c=d y PassQueryString está en true, dichos parámetros se anexan al encabezado Location en una redirección 302, quedando como Location: example.com?a=b&c=d. Si el tipo de regla es retorno al origen basado en espejo, los parámetros también se incluyen en la solicitud al origen. Valores válidos: true, false (predeterminado). |
MirrorPassQueryString | Boolean | No | No | Funciona igual que PassQueryString, pero tiene prioridad sobre ella. Esta configuración solo surte efecto cuando RedirectType se establece en Mirror. | Valor predeterminado: false. |
ReplaceKeyWith | String | No | No | Al usar una regla Redirect, el nombre del objeto se sustituye por el valor especificado en ReplaceKeyWith. Esto permite el uso de variables. | La única variable admitida es {key}, que representa el nombre del objeto en la solicitud. Por ejemplo, si desea acceder a un objeto llamado test y establece ReplaceKeyWith en prefix/{key}, el encabezado Location apuntará a http://example.com/prefix/test.suffix. Esto significa que, cuando un cliente solicita el objeto original (por ejemplo, test), el servidor redirige la solicitud a una nueva ubicación. La ruta de dicha ubicación se genera dinámicamente según el patrón definido en ReplaceKeyWith. En este ejemplo, la nueva ruta agrega "prefix/" antes del nombre original del objeto (test), lo que resulta en la URL de redirección final "http://example.com/prefix/test.suffix". La parte ".suffix" es fija, mientras que "${key}" se reemplaza correctamente por el nombre del objeto "test". |
Protocol | String | No | No | Protocolo utilizado para la redirección. | Esta regla aplica solo cuando RedirectType se establece en External o AliCDN. Por ejemplo, si desea acceder a un archivo llamado test y redirigirlo a example.com mediante HTTPS, el encabezado Location en la respuesta HTTP debe establecerse en "https://example.com/test". Valores válidos: http, https. |
HttpRedirectCode | String | No | No | Código de estado HTTP devuelto durante la redirección. | Aplica solo cuando RedirectType se establece en External o AliCDN. Valor predeterminado: 302. Valores válidos: 301, 302, 307. |
ReplaceKeyPrefixWith | String | No | No | Valor que reemplaza el prefijo del nombre de objeto en la redirección. Si el prefijo está vacío, esta cadena se inserta antes del nombre del objeto. | Nota Solo puede utilizar la propiedad ReplaceKeyWith o ReplaceKeyPrefixWith. Por ejemplo, si el nombre del objeto es ABC/test.TXT, KeyPrefixEquals se establece en ABC/ y ReplaceKeyPrefixWith en def/, el encabezado Location apuntará a http://example.com/def/test.txt. |
RedirectType | String | Sí | No | Tipo de redirección. | Valores válidos:
|
MirrorHeaders | Map | No | No | Encabezados que se reflejan hacia el servidor de origen. | Esta configuración solo surte efecto cuando RedirectType se establece en Mirror. Para obtener más información, consulte MirrorHeaders properties. |
MirrorCheckMd5 | Boolean | No | No | Especifique si se debe verificar el hash MD5 de los datos recuperados del servidor de origen. | Esta configuración solo surte efecto cuando RedirectType se establece en Mirror. Cuando MirrorCheckMd5 es true, si el servidor de origen devuelve un encabezado Content-MD5 en la respuesta, OSS verifica si el hash MD5 de los datos recuperados coincide con dicho encabezado. Si no coinciden, OSS no guarda los datos. Valor predeterminado: false. |
EnableReplacePrefix | Boolean | No | No | Si se establece en true, el prefijo del nombre del objeto se reemplaza por el valor especificado en ReplaceKeyPrefixWith. Si este campo no se especifica o está vacío, se trunca el prefijo del nombre del objeto. | Nota: Este campo no puede establecerse en true cuando ReplaceKeyWith no está vacío. Valor predeterminado: false. |
HostName | String | No | No | Nombre de dominio para la redirección. | El nombre de dominio debe seguir las convenciones estándar. Por ejemplo, si el nombre del archivo es test, el protocolo es https y el nombre de host es example.com, el encabezado Location será https://example.com/test. |
Sintaxis de MirrorHeaders
"MirrorHeaders":{
"Remove": List,
"PassAll": Boolean,
"Sets": List,
"Pass": List
}
Propiedades de MirrorHeaders
Nombre de la propiedad | Tipo | Obligatorio | Actualización permitida | Descripción | Restricción |
Remove | List | No | No | Impide que los encabezados especificados se transmitan al servidor de origen. | Aplica solo cuando RedirectType se establece en Mirror. Cada encabezado puede tener una longitud máxima de 1,024 bytes y contener únicamente los caracteres 0-9, a-z, A-Z y guiones (-). Puede especificar hasta 10 encabezados. |
PassAll | Boolean | No | No | Especifique si se deben transmitir todos los encabezados al servidor de origen, excepto los listados a continuación. | Aplica solo cuando RedirectType se establece en Mirror. Los encabezados excluidos son los siguientes: - content-length, authorization2, authorization, range, date y otros encabezados generales - encabezados que comienzan con oss-, x-oss- o x-drs- Valor predeterminado: false Esto significa que, por defecto, estos encabezados específicos se transmiten al origen espejo. Para cambiar este comportamiento y evitar su transmisión, establezca este valor en true. |
Sets | List | No | No | Establece un encabezado para el servidor de origen. Dicho encabezado se configura al enviar la solicitud al origen, independientemente de si ya estaba incluido en la petición original. | Esta función aplica solo cuando RedirectType se establece en Mirror. Puede configurar hasta 10 conjuntos de encabezados. Para obtener más información, consulte Sets properties. |
Pass | List | No | No | Transmite los encabezados especificados al servidor de origen. | Aplica solo cuando RedirectType se establece en Mirror. Cada encabezado puede tener una longitud máxima de 1,024 bytes y contener únicamente los caracteres 0-9, a-z, A-Z y guiones (-). Puede especificar hasta 10 encabezados. |
Sintaxis de Sets
"Sets": [
{
"Value": String,
"Key": String
}
]
Propiedades de Sets
|
Nombre de la propiedad |
Tipo |
Obligatorio |
Actualización permitida |
Descripción |
Restricción |
|
Value |
String |
Sí |
No |
Establezca el valor del encabezado con un máximo de 1,024 bytes, excluyendo \r\n. |
Esta configuración aplica solo cuando RedirectType se establece en Mirror. |
|
Key |
String |
Sí |
No |
Establezca la clave del encabezado con un máximo de 1,024 bytes. El conjunto de caracteres es el mismo que para Pass. |
Esta configuración aplica solo cuando RedirectType se establece en Mirror. |
Sintaxis de ErrorDocument
"ErrorDocument":{
"Key": String,
"HttpStatus": String
}
Propiedades de ErrorDocument
|
Nombre de la propiedad |
Tipo |
Obligatorio |
Actualización permitida |
Descripción |
Restricción |
|
Key |
String |
Sí |
No |
Página de error predeterminada. |
Si especifica una página de error, OSS la devuelve cuando el objeto solicitado no existe. |
|
HttpStatus |
String |
No |
No |
Código de estado HTTP para la página de error. |
Valores válidos: 200, 404 (predeterminado). |
Sintaxis de ServerSideEncryptionConfiguration
"ServerSideEncryptionConfiguration":{
"KMSMasterKeyID": String,
"SSEAlgorithm": String
}
Propiedades de ServerSideEncryptionConfiguration
Nombre de la propiedad | Tipo | Obligatorio | Actualización permitida | Descripción | Restricción |
SSEAlgorithm | String | Sí | No | Método de cifrado del lado del servidor predeterminado. | Valores válidos:
|
KMSMasterKeyID | String | No | No | ID de la clave. | Es obligatorio solo cuando SSEAlgorithm se establece en KMS y se utiliza una clave específica para el cifrado. |
Sintaxis de VersioningConfiguration
"VersioningConfiguration":{
"Status": String
}
Propiedades de VersioningConfiguration
Nombre de la propiedad | Tipo | Obligatorio | Actualización permitida | Descripción | Restricción |
Status | String | Sí | No | Estado del control de versiones. | Valores válidos:
|
Valores de retorno
Fn::GetAtt
Name: Nombre del bucket. Debe ser único a nivel global.
DomainName: Nombre de dominio utilizado para acceder al bucket a través de la red pública.
InternalDomainName: Nombre de dominio utilizado para acceder al bucket a través de la red interna.
Arn: Nombre de recurso de Alibaba Cloud (ARN).
Ejemplos
Escenario 1: Crear un bucket de OSS.
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: {}
{
"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"
]
}
}
}
}Escenario 2: Crear un bucket de OSS, habilitar la aceleración de CDN, configurar la resolución de nombres de dominio y optimizar las estrategias de distribución de archivos para admitir el acceso global y reglas de caché personalizadas.
ROSTemplateFormatVersion: '2015-09-01'
Description:
zh-cn: Create an OSS bucket and enable CDN acceleration, configure domain name resolution, and optimize file distribution strategies to support global access and custom caching rules.
en: Create an OSS bucket and enable CDN acceleration, configure domain name resolution, and optimize file distribution strategies to support global access and custom caching rules.
Parameters:
Scope:
Type: String
Label:
zh-cn: Acceleration area
en: Acceleration area
Description:
zh-cn: Select the acceleration area. If the acceleration region is Chinese mainland only or Global, the service domain name must have an ICP filing.
en: Select the acceleration area. When the acceleration region is only in mainland China and the world, the service domain name must be filed.
Default: domestic
AllowedValues:
- domestic
- overseas
- global
DomainName:
Type: String
Label:
zh-cn: Accelerated domain name
en: Accelerated domain name
Description:
zh-cn: An accelerated domain name is a domain name that is added to CDN to accelerate access to the origin server. Enter a domain name under your account.
en: Accelerated domain name refers to the domain name of the access CDN used to accelerate the source site. Please fill in the domain name under your account.
BucketName:
Type: String
Label:
en: Bucket Name
zh-cn: Bucket Name
Description:
en: The name must be 3 to 63 bytes in length, The name must start and end with a lowercase letter or digit. The name can contain only lowercase letters, digits, and hyphens (-).;<b>note: <font color='blue'>A bucket name must be globally unique within OSS. Bucket names cannot be changed after the bucket is created.</font>
zh-cn: The name must be 3 to 63 characters in length. It must start and end with a lowercase letter or digit. It can contain only lowercase letters, digits, and hyphens (-).<b>Note:<font color='blue'>The bucket name must be globally unique. You cannot create a bucket with an existing name.</font>
AssociationProperty: AutoCompleteInput
AssociationPropertyMetadata:
Length: 6
Prefix: image-example-
CharacterClasses:
- Class: lowercase
min: 1
Resources:
OssBucket:
Type: ALIYUN::OSS::Bucket
DependsOn: AutoEnableOSS
Properties:
BucketName:
Ref: BucketName
DeletionForce: true
AutoEnableCDN:
Type: ALIYUN::ROS::AutoEnableService
Properties:
ServiceName: CDN
AutoEnableOSS:
Type: ALIYUN::ROS::AutoEnableService
Properties:
ServiceName: OSS
Domain:
Type: ALIYUN::CDN::Domain
Properties:
Sources:
Fn::Sub:
- '[{"content":"${content}", "type":"oss", "priority":"20", "port":80, "weight":"10"}]'
- content:
Fn::GetAtt:
- OssBucket
- DomainName
CdnType: web
Scope:
Ref: Scope
DomainName:
Ref: DomainName
DependsOn: AutoEnableCDN
DomainRecord:
Type: ALIYUN::DNS::DomainRecord
Properties:
Type: CNAME
RR:
Fn::Select:
- 0
- Fn::Split:
- .
- Ref: DomainName
Value:
Fn::GetAtt:
- Domain
- Cname
DomainName:
Fn::Join:
- .
- Fn::Select:
- '1:'
- Fn::Split:
- .
- Ref: DomainName
DependsOn: Domain
DomainConfig:
Type: ALIYUN::CDN::DomainConfig
Properties:
FunctionList:
- FunctionArgs:
- ArgName: file_type
ArgValue: jpg,png,jpeg
- ArgName: weight
ArgValue: '99'
- ArgName: ttl
ArgValue: '7776000'
FunctionName: filetype_based_ttl_set
- FunctionArgs:
- ArgName: private_oss_auth
ArgValue: 'on'
- ArgName: perm_private_oss_tbl
ArgValue: ''
FunctionName: l2_oss_key
- FunctionArgs:
- ArgName: filetype
ArgValue: jpeg
- ArgName: webp
ArgValue: 'off'
- ArgName: orient
ArgValue: 'off'
- ArgName: slim
ArgValue: '90'
- ArgName: enable
ArgValue: 'on'
FunctionName: image_transform
DomainNames:
Ref: Domain
DependsOn: DomainRecord
Outputs:
Cname:
Description: CNAME
Value:
Fn::GetAtt:
- Domain
- Cname
DomainName:
Description: DomainName
Value:
Ref: Domain
Metadata:
ALIYUN::ROS::Interface:
ParameterGroups:
- Parameters:
- Scope
- DomainName
- BucketName
{
"ROSTemplateFormatVersion": "2015-09-01",
"Description": {
"zh-cn": "Create an OSS bucket and enable CDN acceleration, configure domain name resolution, and optimize file distribution strategies to support global access and custom caching rules.",
"en": "Create an OSS bucket and enable CDN acceleration, configure domain name resolution, and optimize file distribution strategies to support global access and custom caching rules."
},
"Parameters": {
"Scope": {
"Type": "String",
"Label": {
"zh-cn": "Acceleration area",
"en": "Acceleration area"
},
"Description": {
"zh-cn": "Select the acceleration area. If the acceleration region is Chinese mainland only or Global, the service domain name must have an ICP filing.",
"en": "Select the acceleration area. When the acceleration region is only in mainland China and the world, the service domain name must be filed."
},
"Default": "domestic",
"AllowedValues": [
"domestic",
"overseas",
"global"
]
},
"DomainName": {
"Type": "String",
"Label": {
"zh-cn": "Accelerated domain name",
"en": "Accelerated domain name"
},
"Description": {
"zh-cn": "An accelerated domain name is a domain name that is added to CDN to accelerate access to the origin server. Enter a domain name under your account.",
"en": "Accelerated domain name refers to the domain name of the access CDN used to accelerate the source site. Please fill in the domain name under your account."
}
},
"BucketName": {
"Type": "String",
"Label": {
"en": "Bucket Name",
"zh-cn": "Bucket Name"
},
"Description": {
"en": "The name must be 3 to 63 bytes in length. The name must start and end with a lowercase letter or digit. The name can contain only lowercase letters, digits, and hyphens (-).;<b>note: <font color='blue'>A bucket name must be globally unique within OSS. Bucket names cannot be changed after the bucket is created.</font>",
"zh-cn": "The name must be 3 to 63 characters in length. It must start and end with a lowercase letter or digit. It can contain only lowercase letters, digits, and hyphens (-).<b>Note:<font color='blue'>The bucket name must be globally unique. You cannot create a bucket with an existing name.</font>"
},
"AssociationProperty": "AutoCompleteInput",
"AssociationPropertyMetadata": {
"Length": 6,
"Prefix": "image-example-",
"CharacterClasses": [
{
"Class": "lowercase",
"min": 1
}
]
}
}
},
"Resources": {
"OssBucket": {
"Type": "ALIYUN::OSS::Bucket",
"DependsOn": "AutoEnableOSS",
"Properties": {
"BucketName": {
"Ref": "BucketName"
},
"DeletionForce": true
}
},
"AutoEnableCDN": {
"Type": "ALIYUN::ROS::AutoEnableService",
"Properties": {
"ServiceName": "CDN"
}
},
"AutoEnableOSS": {
"Type": "ALIYUN::ROS::AutoEnableService",
"Properties": {
"ServiceName": "OSS"
}
},
"Domain": {
"Type": "ALIYUN::CDN::Domain",
"Properties": {
"Sources": {
"Fn::Sub": [
"[{\"content\":\"${content}\", \"type\":\"oss\", \"priority\":\"20\", \"port\":80, \"weight\":\"10\"}]",
{
"content": {
"Fn::GetAtt": [
"OssBucket",
"DomainName"
]
}
}
]
},
"CdnType": "web",
"Scope": {
"Ref": "Scope"
},
"DomainName": {
"Ref": "DomainName"
}
},
"DependsOn": "AutoEnableCDN"
},
"DomainRecord": {
"Type": "ALIYUN::DNS::DomainRecord",
"Properties": {
"Type": "CNAME",
"RR": {
"Fn::Select": [
0,
{
"Fn::Split": [
".",
{
"Ref": "DomainName"
}
]
}
]
},
"Value": {
"Fn::GetAtt": [
"Domain",
"Cname"
]
},
"DomainName": {
"Fn::Join": [
".",
{
"Fn::Select": [
"1:",
{
"Fn::Split": [
".",
{
"Ref": "DomainName"
}
]
}
]
}
]
}
},
"DependsOn": "Domain"
},
"DomainConfig": {
"Type": "ALIYUN::CDN::DomainConfig",
"Properties": {
"FunctionList": [
{
"FunctionArgs": [
{
"ArgName": "file_type",
"ArgValue": "jpg,png,jpeg"
},
{
"ArgName": "weight",
"ArgValue": "99"
},
{
"ArgName": "ttl",
"ArgValue": "7776000"
}
],
"FunctionName": "filetype_based_ttl_set"
},
{
"FunctionArgs": [
{
"ArgName": "private_oss_auth",
"ArgValue": "on"
},
{
"ArgName": "perm_private_oss_tbl",
"ArgValue": ""
}
],
"FunctionName": "l2_oss_key"
},
{
"FunctionArgs": [
{
"ArgName": "filetype",
"ArgValue": "jpeg"
},
{
"ArgName": "webp",
"ArgValue": "off"
},
{
"ArgName": "orient",
"ArgValue": "off"
},
{
"ArgName": "slim",
"ArgValue": "90"
},
{
"ArgName": "enable",
"ArgValue": "on"
}
],
"FunctionName": "image_transform"
}
],
"DomainNames": {
"Ref": "Domain"
}
},
"DependsOn": "DomainRecord"
}
},
"Outputs": {
"Cname": {
"Description": "CNAME",
"Value": {
"Fn::GetAtt": [
"Domain",
"Cname"
]
}
},
"DomainName": {
"Description": "DomainName",
"Value": {
"Ref": "Domain"
}
}
},
"Metadata": {
"ALIYUN::ROS::Interface": {
"ParameterGroups": [
{
"Parameters": [
"Scope",
"DomainName",
"BucketName"
]
}
]
}
}
}Escenario 3: Crear una instancia de ECS y un bucket de OSS, instalar una aplicación e implementar servicios de conversión de texto a imagen y mejora de retratos.
ROSTemplateFormatVersion: '2015-09-01'
Mappings: {}
Parameters:
DashScopeApiKey:
NoEcho: true
Label:
zh-cn: DashScope API-KEY
en: DashScope API-KEY
Type: String
Description:
zh-cn: Activate DashScope and obtain an API key. For more information, see <a href="https://www.alibabacloud.com/help/zh/dashscope/developer-reference/activate-dashscope-and-create-an-api-key" target="_blank">Activate DashScope and create an API key</a>.
en: 'Activate DashScope and obtain the API-KEY. Please refer to: <a href="https://www.alibabacloud.com/help/zh/dashscope/developer-reference/activate-dashscope-and-create-an-api-key" target="_blank">Activate DashScope and create API-KEY</a>.'
AssociationProperty: ALIYUN::DashScope::ApiKey
CommonName:
Default: wanxiang
Type: String
InstancePassword:
Description:
zh-cn: The logon password for the server. It must be 8 to 30 characters in length and contain at least three of the following character types: uppercase letters, lowercase letters, digits, and special characters ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/
en: Server login password, Length 8-30, must contain three(Capital letters, lowercase letters, numbers, ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/ Special symbol in)
Default: Null
Type: String
Label:
zh-cn: Instance Password
en: Instance Password
NoEcho: true
AssociationProperty: ALIYUN::ECS::Instance::Password
ConstraintDescription:
zh-cn: The password must be 8 to 30 characters in length and contain at least three of the following character types: uppercase letters, lowercase letters, digits, and special characters ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/
en: Length 8-30, must contain three(Capital letters, lowercase letters, numbers, ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/ Special symbol in)
ZoneId:
AssociationPropertyMetadata:
AutoSelectFirst: true
Default: Null
Required: true
Label:
zh-cn: Availability Zone
en: Availability Zone
AssociationProperty: ALIYUN::ECS::Instance::ZoneId
Type: String
BucketName:
AssociationPropertyMetadata:
Length: 5
Prefix: drawing-with-tongyi-wanxiang-
CharacterClasses:
- Class: lowercase
min: 1
Description:
zh-cn: The name must be 3 to 63 characters in length. It cannot start or end with a hyphen (-). It can contain lowercase letters, digits, and hyphens (-).Note: <font color='blue'><b>The bucket name must be globally unique. You cannot create a bucket with an existing name.</font>
en: '3 to 63 characters, not beginning and ending with a hyphen (-), can contain lowercase letters, Numbers and hyphens (-);Note: <font color=''blue''><b>need whole network uniqueness, already existing can not be created.</font>'
MinLength: 3
Label:
zh-cn: Bucket Name
en: Bucket Name
AllowedPattern: ^[a-z0-9]+[a-z0-9\-]*[a-z0-9]+$
Type: String
MaxLength: 63
AssociationProperty: AutoCompleteInput
ConstraintDescription:
zh-cn: The name must be 3 to 63 characters in length. It cannot start or end with a hyphen (-). It can contain lowercase letters, digits, and hyphens (-).
en: 3 to 63 characters, not beginning and ending with a hyphen (-), can contain lowercase letters, Numbers and hyphens (-)
InstanceType:
AssociationPropertyMetadata:
SystemDiskCategory: cloud_essd
InstanceChargeType: PostPaid
ZoneId: ${ZoneId}
Default: Null
Required: true
Label:
zh-cn: Instance Type
en: Instance Type
AssociationProperty: ALIYUN::ECS::Instance::InstanceType
Type: String
Outputs:
EcsLoginAddress:
Description:
zh-cn: The logon address for the ECS instance.
en: Ecs login address.
Value:
Fn::Sub: https://ecs-workbench.alibabacloud.com/?from=EcsConsole&instanceType=ecs®ionId=${ALIYUN::Region}&instanceId=${EcsInstance}
ExperienceAddress:
Description:
zh-cn: The experience address.
en: Experience address.
Value:
Fn::Sub:
- http://${PublicIp}/wanx-demo
- PublicIp:
Fn::Select:
- 0
- Fn::GetAtt:
- EcsInstance
- PublicIps
Description:
zh-cn: Create a Virtual Private Cloud (VPC), an Elastic Compute Service (ECS) instance, and an Object Storage Service (OSS) bucket. Configure security groups and Resource Access Management (RAM) permissions. Install Java and an application to implement text-to-image and portrait enhancement services.
en: Create a Virtual Private Cloud (VPC), Elastic Compute Service (ECS) instances, Object Storage Service (OSS) buckets, configure Security Groups and Resource Access Management (RAM) permissions, install Java and applications, and implement text drawing and portrait beautification services.
Conditions: {}
Resources:
CustomPolicy:
Type: ALIYUN::RAM::ManagedPolicy
Properties:
PolicyName:
Fn::Sub: create_by_solution-${ALIYUN::StackId}
PolicyDocument:
Version: '1'
Statement:
- Action:
- oss:GetObject
- oss:PutObject
Resource:
- Fn::Sub: acs:oss:oss-${ALIYUN::Region}:${ALIYUN::TenantId}:${BucketName}/*
Effect: Allow
InstallApp:
Type: ALIYUN::ECS::RunCommand
Properties:
CommandContent:
Fn::Sub: |-
#!/bin/bash
cat << EOF >> ~/.bash_profile
export DASHSCOPE_API_KEY=${DashScopeApiKey}
export OSS_ACCESS_KEY_ID=${AccessKey.AccessKeyId}
export OSS_ACCESS_KEY_SECRET=${AccessKey.AccessKeySecret}
export WANX_DEMO_OSS_BUCKET=${BucketName}
export WANX_DEMO_OSS_ENDPOINT=https://oss-${ALIYUN::Region}.aliyuncs.com
EOF
source ~/.bash_profile
wget https://help-static-aliyun-doc.aliyuncs.com/demos/wanx-demo-0.0.1-SNAPSHOT.jar
nohup java -jar wanx-demo-0.0.1-SNAPSHOT.jar > wanx-demo.log 2>&1 &
Type: RunShellScript
Sync: true
InstanceIds:
- Ref: EcsInstance
Timeout: 3600
DependsOn:
- ModuleInstallJava.Install
AccessKey:
Type: ALIYUN::RAM::AccessKey
Properties:
UserName:
Ref: User
Bucket:
Type: ALIYUN::OSS::Bucket
Properties:
BucketName:
Ref: BucketName
DeletionForce: true
SecurityGroup:
Type: ALIYUN::ECS::SecurityGroup
Properties:
SecurityGroupIngress:
- PortRange: 80/80
SourceCidrIp: 0.0.0.0/0
IpProtocol: tcp
VpcId:
Ref: Vpc
SecurityGroupName:
Fn::Sub: ${CommonName}-sg
ModuleInstallJava.Install:
Type: ALIYUN::OOS::Execution
Properties:
SafetyCheck: Skip
Parameters:
action: install
packageName: ACS-Extension-java-1853370294850618
regionId:
Ref: ALIYUN::Region
targets:
ResourceIds:
- Ref: EcsInstance
RegionId:
Ref: ALIYUN::Region
Type: ResourceIds
parameters: Null
TemplateName: ACS-ECS-BulkyConfigureOOSPackageWithTemporaryURL
Metadata:
ALIYUN::ROS::Module:
LogicalIdHierarchy: ModuleInstallJava
TypeHierarchy: MODULE::ACS::OOS::Extension
User:
Type: ALIYUN::RAM::User
Properties:
UserName:
Fn::Sub: create_by_solution-${ALIYUN::StackId}
PolicyAttachments:
Custom:
- Ref: CustomPolicy
Vpc:
Type: ALIYUN::ECS::VPC
Properties:
VpcName:
Fn::Sub: ${CommonName}-vpc
CidrBlock: 192.168.0.0/16
VSwitch:
Type: ALIYUN::ECS::VSwitch
Properties:
VSwitchName:
Fn::Sub: ${CommonName}-vsw
VpcId:
Ref: Vpc
CidrBlock: 192.168.0.0/24
ZoneId:
Ref: ZoneId
EcsInstance:
Type: ALIYUN::ECS::InstanceGroup
Properties:
SystemDiskCategory: cloud_essd
VpcId:
Ref: Vpc
SecurityGroupId:
Ref: SecurityGroup
ImageId: aliyun_3_9_x64_20G_alibase_
InternetMaxBandwidthOut: 5
VSwitchId:
Ref: VSwitch
Password:
Ref: InstancePassword
InstanceName:
Fn::Sub: ${CommonName}-ecs
InstanceType:
Ref: InstanceType
ZoneId:
Ref: ZoneId
MaxAmount: 1
Metadata:
ALIYUN::ROS::Interface:
ParameterGroups:
- Parameters:
- DashScopeApiKey
- BucketName
- ZoneId
- InstanceType
- InstancePassword
Hidden:
- CommonName
{
"ROSTemplateFormatVersion": "2015-09-01",
"Mappings": {},
"Parameters": {
"DashScopeApiKey": {
"NoEcho": true,
"Label": {
"zh-cn": "DashScope API-KEY",
"en": "DashScope API-KEY"
},
"Type": "String",
"Description": {
"zh-cn": "Activate DashScope and obtain an API key. For more information, see <a href=\"https://www.alibabacloud.com/help/zh/dashscope/developer-reference/activate-dashscope-and-create-an-api-key\" target=\"_blank\">Activate DashScope and create an API key</a>.",
"en": "Activate DashScope and obtain the API-KEY. Please refer to: <a href=\"https://www.alibabacloud.com/help/zh/dashscope/developer-reference/activate-dashscope-and-create-an-api-key\" target=\"_blank\">Activate DashScope and create API-KEY</a>."
},
"AssociationProperty": "ALIYUN::DashScope::ApiKey"
},
"CommonName": {
"Default": "wanxiang",
"Type": "String"
},
"InstancePassword": {
"Description": {
"zh-cn": "The logon password for the server. It must be 8 to 30 characters in length and contain at least three of the following character types: uppercase letters, lowercase letters, digits, and special characters ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/",
"en": "Server login password, Length 8-30, must contain three(Capital letters, lowercase letters, numbers, ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/ Special symbol in)"
},
"Default": null,
"Type": "String",
"Label": {
"zh-cn": "Instance Password",
"en": "Instance Password"
},
"NoEcho": true,
"AssociationProperty": "ALIYUN::ECS::Instance::Password",
"ConstraintDescription": {
"zh-cn": "The password must be 8 to 30 characters in length and contain at least three of the following character types: uppercase letters, lowercase letters, digits, and special characters ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/",
"en": "Length 8-30, must contain three(Capital letters, lowercase letters, numbers, ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/ Special symbol in)"
}
},
"ZoneId": {
"AssociationPropertyMetadata": {
"AutoSelectFirst": true
},
"Default": null,
"Required": true,
"Label": {
"zh-cn": "Availability Zone",
"en": "Availability Zone"
},
"AssociationProperty": "ALIYUN::ECS::Instance::ZoneId",
"Type": "String"
},
"BucketName": {
"AssociationPropertyMetadata": {
"Length": 5,
"Prefix": "drawing-with-tongyi-wanxiang-",
"CharacterClasses": [
{
"Class": "lowercase",
"min": 1
}
]
},
"Description": {
"zh-cn": "The name must be 3 to 63 characters in length. It cannot start or end with a hyphen (-). It can contain lowercase letters, digits, and hyphens (-).Note: <font color='blue'><b>The bucket name must be globally unique. You cannot create a bucket with an existing name.</font>",
"en": "3 to 63 characters, not beginning and ending with a hyphen (-), can contain lowercase letters, Numbers and hyphens (-);Note: <font color='blue'><b>need whole network uniqueness, already existing can not be created.</font>"
},
"MinLength": 3,
"Label": {
"zh-cn": "Bucket Name",
"en": "Bucket Name"
},
"AllowedPattern": "^[a-z0-9]+[a-z0-9\\-]*[a-z0-9]+$",
"Type": "String",
"MaxLength": 63,
"AssociationProperty": "AutoCompleteInput",
"ConstraintDescription": {
"zh-cn": "The name must be 3 to 63 characters in length. It cannot start or end with a hyphen (-). It can contain lowercase letters, digits, and hyphens (-).",
"en": "3 to 63 characters, not beginning and ending with a hyphen (-), can contain lowercase letters, Numbers and hyphens (-)"
}
},
"InstanceType": {
"AssociationPropertyMetadata": {
"SystemDiskCategory": "cloud_essd",
"InstanceChargeType": "PostPaid",
"ZoneId": "${ZoneId}"
},
"Default": null,
"Required": true,
"Label": {
"zh-cn": "Instance Type",
"en": "Instance Type"
},
"AssociationProperty": "ALIYUN::ECS::Instance::InstanceType",
"Type": "String"
}
},
"Outputs": {
"EcsLoginAddress": {
"Description": {
"zh-cn": "The logon address for the ECS instance.",
"en": "Ecs login address."
},
"Value": {
"Fn::Sub": "https://ecs-workbench.alibabacloud.com/?from=EcsConsole&instanceType=ecs®ionId=${ALIYUN::Region}&instanceId=${EcsInstance}"
}
},
"ExperienceAddress": {
"Description": {
"zh-cn": "The experience address.",
"en": "Experience address."
},
"Value": {
"Fn::Sub": [
"http://${PublicIp}/wanx-demo",
{
"PublicIp": {
"Fn::Select": [
0,
{
"Fn::GetAtt": [
"EcsInstance",
"PublicIps"
]
}
]
}
}
]
}
}
},
"Description": {
"zh-cn": "Create a Virtual Private Cloud (VPC), an Elastic Compute Service (ECS) instance, and an Object Storage Service (OSS) bucket. Configure security groups and Resource Access Management (RAM) permissions. Install Java and an application to implement text-to-image and portrait enhancement services.",
"en": "Create a Virtual Private Cloud (VPC), Elastic Compute Service (ECS) instances, Object Storage Service (OSS) buckets, configure Security Groups and Resource Access Management (RAM) permissions, install Java and applications, and implement text drawing and portrait beautification services."
},
"Conditions": {},
"Resources": {
"CustomPolicy": {
"Type": "ALIYUN::RAM::ManagedPolicy",
"Properties": {
"PolicyName": {
"Fn::Sub": "create_by_solution-${ALIYUN::StackId}"
},
"PolicyDocument": {
"Version": "1",
"Statement": [
{
"Action": [
"oss:GetObject",
"oss:PutObject"
],
"Resource": [
{
"Fn::Sub": "acs:oss:oss-${ALIYUN::Region}:${ALIYUN::TenantId}:${BucketName}/*"
}
],
"Effect": "Allow"
}
]
}
}
},
"InstallApp": {
"Type": "ALIYUN::ECS::RunCommand",
"Properties": {
"CommandContent": {
"Fn::Sub": "#!/bin/bash\n\ncat << EOF >> ~/.bash_profile\nexport DASHSCOPE_API_KEY=${DashScopeApiKey}\nexport OSS_ACCESS_KEY_ID=${AccessKey.AccessKeyId}\nexport OSS_ACCESS_KEY_SECRET=${AccessKey.AccessKeySecret}\nexport WANX_DEMO_OSS_BUCKET=${BucketName}\nexport WANX_DEMO_OSS_ENDPOINT=https://oss-${ALIYUN::Region}.aliyuncs.com\nEOF\n\nsource ~/.bash_profile \nwget https://help-static-aliyun-doc.aliyuncs.com/demos/wanx-demo-0.0.1-SNAPSHOT.jar\nnohup java -jar wanx-demo-0.0.1-SNAPSHOT.jar > wanx-demo.log 2>&1 &"
},
"Type": "RunShellScript",
"Sync": true,
"InstanceIds": [
{
"Ref": "EcsInstance"
}
],
"Timeout": 3600
},
"DependsOn": [
"ModuleInstallJava.Install"
]
},
"AccessKey": {
"Type": "ALIYUN::RAM::AccessKey",
"Properties": {
"UserName": {
"Ref": "User"
}
}
},
"Bucket": {
"Type": "ALIYUN::OSS::Bucket",
"Properties": {
"BucketName": {
"Ref": "BucketName"
},
"DeletionForce": true
}
},
"SecurityGroup": {
"Type": "ALIYUN::ECS::SecurityGroup",
"Properties": {
"SecurityGroupIngress": [
{
"PortRange": "80/80",
"SourceCidrIp": "0.0.0.0/0",
"IpProtocol": "tcp"
}
],
"VpcId": {
"Ref": "Vpc"
},
"SecurityGroupName": {
"Fn::Sub": "${CommonName}-sg"
}
}
},
"ModuleInstallJava.Install": {
"Type": "ALIYUN::OOS::Execution",
"Properties": {
"SafetyCheck": "Skip",
"Parameters": {
"action": "install",
"packageName": "ACS-Extension-java-1853370294850618",
"regionId": {
"Ref": "ALIYUN::Region"
},
"targets": {
"ResourceIds": [
{
"Ref": "EcsInstance"
}
],
"RegionId": {
"Ref": "ALIYUN::Region"
},
"Type": "ResourceIds"
},
"parameters": null
},
"TemplateName": "ACS-ECS-BulkyConfigureOOSPackageWithTemporaryURL"
},
"Metadata": {
"ALIYUN::ROS::Module": {
"LogicalIdHierarchy": "ModuleInstallJava",
"TypeHierarchy": "MODULE::ACS::OOS::Extension"
}
}
},
"User": {
"Type": "ALIYUN::RAM::User",
"Properties": {
"UserName": {
"Fn::Sub": "create_by_solution-${ALIYUN::StackId}"
},
"PolicyAttachments": {
"Custom": [
{
"Ref": "CustomPolicy"
}
]
}
}
},
"Vpc": {
"Type": "ALIYUN::ECS::VPC",
"Properties": {
"VpcName": {
"Fn::Sub": "${CommonName}-vpc"
},
"CidrBlock": "192.168.0.0/16"
}
},
"VSwitch": {
"Type": "ALIYUN::ECS::VSwitch",
"Properties": {
"VSwitchName": {
"Fn::Sub": "${CommonName}-vsw"
},
"VpcId": {
"Ref": "Vpc"
},
"CidrBlock": "192.168.0.0/24",
"ZoneId": {
"Ref": "ZoneId"
}
}
},
"EcsInstance": {
"Type": "ALIYUN::ECS::InstanceGroup",
"Properties": {
"SystemDiskCategory": "cloud_essd",
"VpcId": {
"Ref": "Vpc"
},
"SecurityGroupId": {
"Ref": "SecurityGroup"
},
"ImageId": "aliyun_3_9_x64_20G_alibase_",
"InternetMaxBandwidthOut": 5,
"VSwitchId": {
"Ref": "VSwitch"
},
"Password": {
"Ref": "InstancePassword"
},
"InstanceName": {
"Fn::Sub": "${CommonName}-ecs"
},
"InstanceType": {
"Ref": "InstanceType"
},
"ZoneId": {
"Ref": "ZoneId"
},
"MaxAmount": 1
}
}
},
"Metadata": {
"ALIYUN::ROS::Interface": {
"ParameterGroups": [
{
"Parameters": [
"DashScopeApiKey",
"BucketName",
"ZoneId",
"InstanceType",
"InstancePassword"
]
}
],
"Hidden": [
"CommonName"
]
}
}
}