Todos los productos
Search
Centro de documentos

Resource Orchestration Service:ALIYUN::OSS::Bucket

Última actualización: Sep 04, 2026

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:

  • private (predeterminado): privado.

  • public-read: lectura pública.

  • public-read-write: lectura y escritura públicas.

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:

  • true: eliminación forzosa.

  • false (predeterminado): sin eliminación forzosa.

EnableOssHdfsService

Boolean

No

Sí

Indica si se debe habilitar el servicio OSS-HDFS.

Valores válidos:

  • true: habilita el servicio OSS-HDFS.

    Nota

    Una vez habilitado este servicio, no es posible deshabilitarlo.

  • false: no habilita el servicio OSS-HDFS.

BlockPublicAccess

Boolean

No

Sí

Indica si se debe bloquear el acceso público al bucket.

Valores válidos:

  • true: bloquea el acceso público.

  • false (predeterminado): no bloquea el acceso público.

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.

Common bucket policy examples.

RedundancyType

String

No

No

El tipo de redundancia de datos del bucket.

Valores válidos:

  • LRS (predeterminado): almacenamiento con redundancia local. Los datos se almacenan de forma redundante en varios dispositivos dentro de la misma zona, lo que protege contra hasta dos fallos simultáneos de dispositivos.

  • ZRS: almacenamiento con redundancia de zona. Los datos se almacenan de forma redundante en tres zonas de la misma región, lo que protege contra fallos a nivel de zona.

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:

  • Standard (predeterminado): Estándar.

  • IA: Acceso poco frecuente.

  • Archive: Almacenamiento de archivo.

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 http://, https:// ni Aliyun.

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 Vary: Origin.

Valores válidos:

  • true: devuelve el encabezado Vary: Origin independientemente de si se envía una solicitud de origen cruzado o si esta tiene éxito.

  • false (predeterminado): nunca devuelve el encabezado Vary: Origin.

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:

  • *

  • Cache-Control

  • Content-Language

  • Content-Type

  • Expires

  • Last-Modified

  • Pragma

AllowedMethod

List

No

Sí

Los métodos HTTP permitidos en las solicitudes de origen cruzado.

Valores válidos:

  • *

  • GET

  • PUT

  • POST

  • DELETE

  • HEAD

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:

  • Enabled: habilita la regla.

  • Disabled: deshabilita la regla.

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.
Ejemplo: 2002-10-11T00:00:00.000Z



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.

  • true: aplica la regla según la hora de último acceso.

  • false: no aplica la regla según la hora de último acceso. En su lugar, la aplica según otras condiciones, como la hora de creación o modificación.

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:

  • IA

  • Archive

  • ColdArchive

  • DeepColdArchive

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:

  • Si configura un prefijo en el nodo Rule, el prefijo en el nodo Not debe comenzar con el prefijo configurado en el nodo Rule. Por ejemplo, si el prefijo en el nodo Rule es dir, el prefijo en el nodo Not debe comenzar con dir, como dir1 o dir2.

  • Si no configura una etiqueta en el nodo Not, el prefijo en el nodo Not no puede ser idéntico al prefijo en el nodo Rule.

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: 2002-10-11T00:00:00.000Z.

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:

  • true: elimina automáticamente los marcadores de eliminación caducados. Si se establece en true, no se admiten las propiedades Days ni CreatedBeforeDate.

  • false: no elimina automáticamente los marcadores de eliminación caducados. Si se establece en false, debe especificar Days o CreatedBeforeDate.

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: 2002-10-11T00:00:00.000Z.

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:

  • 0 (predeterminado): Comprueba si existe abc/index.html (nombre del objeto más barra diagonal (/) más nombre de la página de índice). Si existe, devuelve un código de estado de redirección 302 y establece la URL en el encabezado Location como /abc/ (barra diagonal (/) más nombre del objeto más barra diagonal (/)). Si no existe, devuelve un error 404 y continúa verificando ErrorFile.

  • 1: Devuelve directamente un error 404 de tipo NoSuchKey. Luego continúa verificando ErrorFile.

  • 2: Comprueba si existe abc/index.html. Si existe, devuelve directamente el contenido del objeto. Si no existe, devuelve un error 404 y continúa verificando ErrorFile.

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:

  • true: redirige a la página principal predeterminada del subdirectorio.

  • false (predeterminado): no redirige a la página principal predeterminada del subdirectorio, sino a la del directorio raíz. Por ejemplo, si la página principal predeterminada es index.html, al acceder a bucket.oss-cn-hangzhou.aliyuncs.com/subdir/ con SupportSubDir en false, se le redirige a bucket.oss-cn-hangzhou.aliyuncs.com/index.html. Si establece SupportSubDir en true, se le redirige a bucket.oss-cn-hangzhou.aliyuncs.com/subdir/index.html.

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:

  • true (predeterminado): permitir.

  • false: no permitir.

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.

  • Si se establece en true, OSS continúa solicitando la dirección indicada en el encabezado Location. Este proceso admite hasta 10 redirecciones. Tras 10 intentos, la solicitud de retorno al origen basada en espejo falla y devuelve un error.

  • Si se establece en false, OSS devuelve directamente el código de estado 302 y transmite el encabezado Location al cliente. El cliente decide si continúa la redirección.

    Valor predeterminado: true.

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:

  • Mirror: retorno al origen basado en espejo.

  • External: redirección externa. OSS devuelve un código de estado 3xx para indicar al cliente que se redirija a otra dirección.

  • AliCDN: redirección de Alibaba Cloud CDN. Se usa principalmente con la red de entrega de contenido de Alibaba Cloud. A diferencia de External, OSS agrega un encabezado adicional. Alibaba Cloud CDN reconoce este encabezado, redirige a la dirección especificada, recupera los datos y los devuelve al usuario en lugar de enviarle una solicitud de redirección 3xx.

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:

  • KMS

  • AES256

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:

  • Enabled: habilitar el control de versiones

  • Suspended: suspender el control de versiones

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.

Crear ahora

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.

Crear ahora

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.

Crear ahora

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&regionId=${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&regionId=${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"
      ]
    }
  }
}

Plantillas públicas que contienen este recurso.