Todos os produtos
Search
Central de documentação

Resource Orchestration Service:ALIYUN::OSS::Bucket

Última atualização: Jul 04, 2026

O recurso ALIYUN::OSS::Bucket cria um bucket do Object Storage Service (OSS).

Sintaxe

{
  "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
  }
}

Propriedades

Nome da propriedade

Tipo

Obrigatório

Atualização permitida

Descrição

Restrição

BucketName

String

Sim

Não

Nome do bucket.

O nome deve ter de 3 a 63 caracteres. Precisa começar e terminar com uma letra minúscula ou dígito. Pode conter apenas letras minúsculas, dígitos e hifens (-).

Nota

Este nome deve ser globalmente único. Use AutoCompleteInput em AssociationProperty para gerar automaticamente uma string aleatória. Como controlar o comprimento de uma string aleatória?

AccessControl

String

Não

Sim

Permissões de acesso ao bucket.

Valores válidos:

  • private (padrão): privado.

  • public-read: leitura pública.

  • public-read-write: leitura e gravação públicas.

CORSConfiguration

Map

Não

Sim

Configuração de compartilhamento de recursos de origem cruzada (CORS).

Para mais informações, consulte Propriedades de CORSConfiguration.

DeletionForce

Boolean

Não

Sim

Indica se os objetos no bucket devem ser excluídos à força.

Valores válidos:

  • true: excluir à força.

  • false (padrão): não excluir à força.

EnableOssHdfsService

Boolean

Não

Sim

Indica se o serviço OSS-HDFS deve ser ativado.

Valores válidos:

  • true: ativar o serviço OSS-HDFS.

    Nota

    Após ativar este serviço, não é possível desativá-lo.

  • false: não ativar o serviço OSS-HDFS.

BlockPublicAccess

Boolean

Não

Sim

Indica se o acesso público ao bucket deve ser bloqueado.

Valores válidos:

  • true: bloquear acesso público.

  • false (padrão): não bloquear acesso público.

LifecycleConfiguration

Map

Não

Sim

Configuração de ciclo de vida dos objetos no bucket.

Para mais informações, consulte Propriedades de LifecycleConfiguration.

LoggingConfiguration

Map

Não

Não

Configuração de armazenamento de logs.

Para mais informações, consulte Propriedades de LoggingConfiguration.

Policy

Map

Não

Sim

Política do bucket.

Exemplos comuns de políticas de bucket.

RedundancyType

String

Não

Não

Tipo de redundância de dados do bucket.

Valores válidos:

  • LRS (padrão): armazenamento localmente redundante. Os dados são armazenados com redundância em vários dispositivos na mesma zona, protegendo contra até duas falhas simultâneas de dispositivos.

  • ZRS: armazenamento redundante por zona. Os dados são armazenados com redundância em três zonas na mesma região, protegendo contra falhas no nível da zona.

RefererConfiguration

Map

Não

Sim

Configuração de proteção contra hotlink.

Para mais informações, consulte Propriedades de RefererConfiguration.

ResourceGroupId

String

Não

Não

ID do grupo de recursos.

Nenhuma

ServerSideEncryptionConfiguration

Map

Não

Sim

Configuração de criptografia no lado do servidor.

Para mais informações, consulte Propriedades de ServerSideEncryptionConfiguration.

StorageClass

String

Não

Não

Classe de armazenamento do bucket.

Valores válidos:

  • Standard (padrão): Standard.

  • IA: Acesso Infrequente.

  • Archive: Archive Storage.

Tags

Map

Não

Sim

Tags do bucket. Cada tag é um par chave-valor.

É possível configurar até 20 tags.

A chave deve ter de 1 a 64 caracteres. Não pode começar com http://, https:// ou Aliyun.

O valor deve ter de 0 a 128 caracteres e estar codificado em UTF-8.

VersioningConfiguration

Map

Não

Sim

Contêiner que armazena o status de versionamento.

Para mais informações, consulte Propriedades de VersioningConfiguration.

WebsiteConfigurationV2

Map

Não

Não

Configuração de site.

Para mais informações, consulte Propriedades de WebsiteConfigurationV2.

Sintaxe de CORSConfiguration

"CORSConfiguration": {
  "CORSRule": List,
  "ResponseVary": Boolean
}

Propriedades de CORSConfiguration

Nome da propriedade

Tipo

Obrigatório

Atualização permitida

Descrição

Restrição

CORSRule

List

Não

Sim

Regra CORS.

Para mais informações, consulte Propriedades de CORSRule.

ResponseVary

Boolean

Não

Sim

Especifica se o cabeçalho Vary: Origin deve ser retornado.

Valores válidos:

  • true: retornar o cabeçalho Vary: Origin independentemente de uma solicitação de origem cruzada ser enviada ou ter sucesso.

  • false (padrão): nunca retornar o cabeçalho Vary: Origin.

Nota

Não é possível configurar este campo isoladamente. Configure pelo menos uma regra CORS para que este campo tenha efeito.

Sintaxe de CORSRule

"CORSRule": [
  {
    "MaxAgeSeconds": Number,
    "AllowedMethod": List,
    "ExposeHeader": List,
    "AllowedOrigin": List,
    "AllowedHeader": List
  }
]

Propriedades de CORSRule

Nome da propriedade

Tipo

Obrigatório

Atualização permitida

Descrição

Restrição

AllowedHeader

List

Não

Sim

Cabeçalhos permitidos em solicitações de origem cruzada.

Valores válidos:

  • *

  • Cache-Control

  • Content-Language

  • Content-Type

  • Expires

  • Last-Modified

  • Pragma

AllowedMethod

List

Não

Sim

Métodos HTTP permitidos em solicitações de origem cruzada.

Valores válidos:

  • *

  • GET

  • PUT

  • POST

  • DELETE

  • HEAD

AllowedOrigin

List

Não

Sim

Origens permitidas em solicitações de origem cruzada.

Nenhuma

ExposeHeader

List

Não

Sim

Cabeçalhos de resposta acessíveis aos usuários a partir de aplicativos.

O asterisco (*) não é permitido.

MaxAgeSeconds

Number

Não

Sim

Tempo durante o qual os navegadores armazenam em cache os resultados de solicitações OPTIONS para recursos específicos.

Nenhuma

Sintaxe de LifecycleConfiguration

"LifecycleConfiguration": {
  "Rule": List
}

Propriedades de LifecycleConfiguration

Nome da propriedade

Tipo

Obrigatório

Atualização permitida

Descrição

Restrição

Rule

List

Sim

Não

Regra de ciclo de vida.

Para mais informações, consulte Propriedades de Rule.

Sintaxe de Rule

"Rule": [
  {
    "Status": String,
    "AbortMultipartUpload": Map,
    "Expiration": Map,
    "Prefix": String,
    "ID": String,
    "Filter": Map,
    "Transition": List
  }
]

Propriedades de Rule

Nome da propriedade

Tipo

Obrigatório

Atualização permitida

Descrição

Restrição

Prefix

String

Sim

Não

Prefixo ao qual a regra se aplica.

Apenas objetos cujos nomes correspondem ao prefixo são afetados pela regra.

AbortMultipartUpload

Map

Não

Não

Configurações de expiração para uploads multipart incompletos.

Para mais informações, consulte Propriedades de AbortMultipartUpload.

Expiration

Map

Não

Não

Configurações de expiração para objetos.

Para mais informações, consulte Propriedades de Expiration.

ID

String

Não

Não

ID exclusivo da regra.

O ID pode ter até 255 caracteres. Se você não especificar um ID ou deixá-lo vazio, o OSS gera um ID exclusivo automaticamente.

Status

String

Não

Sim

Ativa ou desativa a regra.

Valores válidos:

  • Enabled: ativar a regra.

  • Disabled: desativar a regra.

Filter

Map

Não

Não

Esta regra de exclusão suporta apenas uma condição.

Para mais informações, consulte Propriedades de Filter.

Transition

List

Não

Não

Lista de tarefas de transição de redundância de armazenamento.

Para mais informações, consulte Propriedades de Transition.

Sintaxe de Transition

"Transition": [
    {
      "CreatedBeforeDate": String,
      "Days": Integer,
      "IsAccessTime": Boolean,
      "ReturnToStdWhenVisit": Boolean,
      "AllowSmallFile": Boolean,
      "StorageClass": String
    }
 ]

Propriedades de Transition

Nome da propriedade

Tipo

Obrigatório

Atualização permitida

Descrição

Restrição

CreatedBeforeDate

String

Não

Não

Especifique uma data. O OSS aplica a regra de ciclo de vida a objetos cuja última modificação ocorreu antes desta data.

A data deve seguir o formato ISO 8601 e corresponder à meia-noite (00:00:00) no horário UTC.
Exemplo: 2002-10-11T00:00:00.000Z

Days

Integer

Não

Não

Especifique quantos dias após a última atualização do objeto a regra de ciclo de vida entra em vigor.

Valores válidos: inteiros positivos, como 30, 90 e 180.

IsAccessTime

Boolean

Não

Não

Indica se a regra de ciclo de vida se baseia no último acesso ao objeto.

  • true: aplicar a regra com base no último acesso.

  • false: não aplicar a regra com base no último acesso. Em vez disso, aplique-a com base em outras condições, como hora de criação ou modificação.

ReturnToStdWhenVisit

Boolean

Não

Não

Indica se objetos fora do padrão devem reverter para a classe de armazenamento Standard ao serem acessados.

Esta opção só tem efeito quando IsAccessTime está definido como true.

AllowSmallFile

Boolean

Não

Não

Indica se a operação deve considerar o último acesso ao objeto.

Altere a classe de armazenamento para IA, Archive ou Cold Archive em objetos menores que 64 KB.

StorageClass

String

Não

Não

Classe de armazenamento para a qual o objeto será alterado.

Valores válidos:

  • IA

  • Archive

  • ColdArchive

  • DeepColdArchive

Sintaxe de Filter

"Filter":{
  "Not": Map
}

Propriedades de Filter

Nome da propriedade

Tipo

Obrigatório

Atualização permitida

Descrição

Restrição

Not

Map

Não

Não

Regra de exclusão.

Para mais informações, consulte Propriedades de Not.

Sintaxe de Not

"Not":{
  "Tag": List,
  "Prefix": String
}

Propriedades de Not

Nome da propriedade

Tipo

Obrigatório

Atualização permitida

Descrição

Restrição

Tag

List

Não

Não

Tag para a regra de exclusão.

Esta regra de exclusão se aplica a no máximo uma tag de objeto.

Prefix

String

Não

Não

Prefixo da regra.

As seguintes condições de prefixo de objeto se aplicam a esta regra de exclusão:

  • Se você configurar um prefixo no nó Rule, o prefixo no nó Not deve começar com o prefixo configurado no nó Rule. Por exemplo, se o prefixo no nó Rule for dir, o prefixo no nó Not deve começar com dir, como dir1 ou dir2.

  • Se você não configurar uma tag no nó Not, o prefixo no nó Not não pode ser idêntico ao prefixo no nó Rule.

O prefixo Not deve ser um subconjunto do prefixo Rule pai e não pode ser idêntico a ele, a menos que uma tag também esteja configurada.

Sintaxe de Expiration

"Expiration":{
  "Days": Number,
  "CreatedBeforeDate": String,
  "ExpiredObjectDeleteMarker": Boolean
}

Propriedades de expiração

Nome da propriedade

Tipo

Obrigatório

Atualização permitida

Descrição

Restrição

CreatedBeforeDate

String

Não

Não

Especifique uma data. O OSS aplica a regra aos objetos cuja última modificação ocorreu antes dessa data.

A data deve seguir o formato ISO 8601 e corresponder à meia-noite (00:00:00) no horário UTC. Exemplo: 2002-10-11T00:00:00.000Z.

Days

Number

Não

Não

Especifique quantos dias após a última modificação do objeto a regra entra em vigor.

O OSS calcula o número de dias a partir da última modificação do objeto. Quando o número especificado de dias é atingido, o OSS exclui o objeto. Por exemplo, se você definir o número de dias como 30, o OSS excluirá um objeto modificado pela última vez em 1º de janeiro de 2016 no dia 31 de janeiro de 2016.

ExpiredObjectDeleteMarker

Boolean

Não

Não

Especifique se os marcadores de exclusão expirados devem ser removidos automaticamente.

Valores válidos:

  • true: remove automaticamente os marcadores de exclusão expirados. Quando definido como true, Days e CreatedBeforeDate não são suportados.

  • false: não remove automaticamente os marcadores de exclusão expirados. Quando definido como false, é necessário especificar Days ou CreatedBeforeDate.

Sintaxe de AbortMultipartUpload

"AbortMultipartUpload": {
  "CreatedBeforeDate": String,
  "Days": Number
}

Propriedades de AbortMultipartUpload

Nome da propriedade

Tipo

Obrigatório

Atualização permitida

Descrição

Restrição

CreatedBeforeDate

String

Não

Não

Especifique a data anterior à qual a regra entra em vigor.

A data deve seguir o formato ISO 8601 e corresponder à meia-noite (00:00:00) no horário UTC. Exemplo: 2002-10-11T00:00:00.000Z.

Days

Number

Não

Não

Especifique quantos dias após a última modificação do objeto a regra entra em vigor.

O OSS calcula o número de dias a partir da última modificação do objeto. Quando o número especificado de dias é atingido, o OSS exclui o objeto. Por exemplo, se você definir o número de dias como 30, o OSS excluirá um objeto modificado pela última vez em 1º de janeiro de 2016 no dia 31 de janeiro de 2016.

Sintaxe de LoggingConfiguration

"LoggingConfiguration": {
  "TargetBucket": String,
  "TargetPrefix": String
}

Propriedades de LoggingConfiguration

Nome da propriedade

Tipo

Obrigatório

Atualização permitida

Descrição

Restrição

TargetBucket

String

Não

Não

Bucket onde os logs de acesso são armazenados.

Nenhuma

TargetPrefix

String

Não

Não

Prefixo para os arquivos de log de acesso salvos.

Nenhuma

Sintaxe de WebsiteConfigurationV2

"WebsiteConfiguration":{
  "RoutingRules": List,
  "IndexDocument": Map,
  "ErrorDocument": Map
}

Propriedades de WebsiteConfigurationV2

Nome da propriedade

Tipo

Obrigatório

Atualização permitida

Descrição

Restrição

ErrorDocument

Map

Não

Não

Página de erro estática hospedada no bucket.

Nenhuma

IndexDocument

Map

Não

Não

Página inicial estática hospedada no bucket.

Nenhuma

RoutingRules

List

Não

Não

Lista de regras de roteamento.

Comprimento máximo: 20.

Sintaxe de IndexDocument

"IndexDocument":{
  "Suffix": String,
  "Type": String,
  "SupportSubDir": String
}

Propriedades de IndexDocument

Nome da propriedade

Tipo

Obrigatório

Atualização permitida

Descrição

Restrição

Suffix

String

Sim

Não

Página de índice padrão.

Após configurar a página de índice padrão, ao acessar um objeto que termina com barra (/), o OSS retorna essa página de índice.

Type

String

Não

Não

Define o comportamento ao tentar acessar um objeto inexistente que não termina com barra (/) após a configuração da página de índice padrão.

Esta regra só entra em vigor quando SupportSubDir está definido como true, aplicando-se após RoutingRule, mas antes de ErrorFile. Suponha que a página de índice padrão seja index.html. Ao acessar bucket.oss-cn-hangzhou.aliyuncs.com/abc e o objeto abc não existir, o comportamento para diferentes valores de Type será:

  • 0 (padrão): Verifica se abc/index.html existe (nome do objeto + barra + nome da página de índice). Se existir, retorna um código de status de redirecionamento 302 e define a URL no cabeçalho Location como /abc/ (barra + nome do objeto + barra). Caso contrário, retorna um erro 404 e continua verificando ErrorFile.

  • 1: Retorna diretamente um erro 404 do tipo NoSuchKey e continua verificando ErrorFile.

  • 2: Verifica se abc/index.html existe. Se existir, retorna o conteúdo do objeto diretamente. Se não existir, retorna um erro 404 e continua verificando ErrorFile.

SupportSubDir

String

Não

Não

Define se deve haver redirecionamento para a página inicial padrão de um subdiretório ao acessá-lo.

Valores válidos:

  • true: redireciona para a página inicial padrão do subdiretório.

  • false (padrão): não redireciona para a página inicial padrão do subdiretório; em vez disso, redireciona para a página inicial do diretório raiz. Por exemplo, supondo que a página inicial seja index.html: se você acessar bucket.oss-cn-hangzhou.aliyuncs.com/subdir/ com SupportSubDir definido como false, será redirecionado para bucket.oss-cn-hangzhou.aliyuncs.com/index.html. Se SupportSubDir for true, o redirecionamento será para bucket.oss-cn-hangzhou.aliyuncs.com/subdir/index.html.

Sintaxe de RoutingRules

"RoutingRules":[{
  "Redirect": Map,
  "Condition": Map,
  "RuleNumber": Integer
}]

Propriedades de RoutingRules

Nome da propriedade

Tipo

Obrigatório

Atualização permitida

Descrição

Restrição

Redirect

Map

Sim

Não

Ação a ser executada quando a regra corresponder.

Para mais informações, consulte Propriedades de Redirect.

Condition

Map

Sim

Não

Condição de correspondência.

Esta regra só entra em vigor quando todas as condições especificadas forem atendidas. A correspondência só é bem-sucedida se todas as condições neste contêiner forem satisfeitas. Para mais informações, consulte Propriedades de Condition.

RuleNumber

Integer

Sim

Não

Número sequencial da regra de roteamento para correspondência e execução. O OSS avalia as regras seguindo esta ordem numérica.

Se houver correspondência, o OSS executa esta regra e interrompe a avaliação das regras subsequentes.

Sintaxe de Condition

"Condition":{
  "KeyPrefixEquals": String,
  "HttpErrorCodeReturnedEquals": String,
  "IncludeHeaders": List,
  "KeySuffixEquals": String
}

Propriedades de Condition

Nome da propriedade

Tipo

Obrigatório

Atualização permitida

Descrição

Restrição

KeyPrefixEquals

String

Não

Não

Prefixo do nome do objeto a ser correspondido.

Nenhuma.

HttpErrorCodeReturnedEquals

String

Não

Não

Código de status HTTP que deve ser retornado ao acessar o objeto especificado para que a regra corresponda.

Este campo deve ser 404 quando a regra de redirecionamento utiliza back-to-origin baseado em espelhamento.

IncludeHeaders

List

Não

Não

A regra corresponde apenas quando a solicitação contém o cabeçalho especificado e seu valor coincide com o valor definido.

É possível configurar até 10 condições desse tipo. Para mais informações, consulte Propriedades de IncludeHeaders.

KeySuffixEquals

String

Não

Não

Sufixo do nome do objeto a ser correspondido.

Nenhuma.

Sintaxe de IncludeHeaders

"IncludeHeaders": [
  {
    "Equals": String,
    "Key": String
  }
]

Propriedades de IncludeHeaders

Nome da propriedade

Tipo

Obrigatório

Atualização permitida

Descrição

Restrição

Equals

String

Não

Não

Valor do cabeçalho.

Nenhuma

Key

String

Sim

Não

Nome do cabeçalho.

Nenhuma

Sintaxe de RefererConfiguration

"RefererConfiguration":{
  "AllowEmptyReferer": String,
  "RefererList": List
}

Propriedades de RefererConfiguration

Nome da propriedade

Tipo

Obrigatório

Atualização permitida

Descrição

Restrição

AllowEmptyReferer

Boolean

Não

Não

Define se solicitações com cabeçalho Referer vazio podem acessar o bucket.

Valores válidos:

  • true (padrão): permite.

  • false: não permite.

RefererList

List

Não

Não

Lista de permissões de cabeçalhos Referer.

Nenhuma

Sintaxe 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
}

Propriedades de Redirect

Nome da propriedade

Tipo

Obrigatório

Atualização permitida

Descrição

Restrição

MirrorFollowRedirect

Boolean

Não

Não

Define se o redirecionamento para o Location especificado deve continuar para buscar dados quando uma solicitação de back-to-origin baseada em espelhamento retornar um código de status 3xx.

Esta configuração só tem efeito quando RedirectType está definido como Mirror. Por exemplo, ao espelhar uma solicitação para o servidor de origem e este retornar um código 302 com um cabeçalho Location:

  • Se definido como true, o OSS continua solicitando o endereço indicado no cabeçalho Location, permitindo até 10 redirecionamentos. Após 10 tentativas, a solicitação de back-to-origin falha e retorna um erro.

  • Se definido como false, o OSS retorna o código 302 diretamente e repassa o cabeçalho Location ao cliente, que decide se continua o redirecionamento.

    Valor padrão: true.

MirrorURL

String

Não

Não

URL do servidor de origem para back-to-origin baseado em espelhamento.

Esta configuração só tem efeito quando RedirectType está definido como Mirror. A URL de origem deve começar com http:// ou https:// e terminar com barra (/). O OSS anexa o nome do objeto a essa URL para formar a URL final. Por exemplo, se o nome do objeto for myobject e este parâmetro for http://example.com/, a URL de back-to-origin será http://example.com/myobject. Se for http://example.com/dir1/, a URL será http://example.com/dir1/myobject.

PassQueryString

Boolean

Não

Não

Define se os parâmetros de consulta devem ser incluídos durante um redirecionamento ou back-to-origin baseado em espelhamento.

Por exemplo, se um usuário acessar o OSS com os parâmetros de consulta a=b&c=d e PassQueryString estiver definido como true, esses parâmetros serão anexados ao cabeçalho Location em um redirecionamento 302, resultando em Location: example.com?a=b&c=d. Se o tipo de regra for back-to-origin baseado em espelhamento, os parâmetros também serão incluídos na solicitação de origem. Valores válidos: true, false (padrão).

MirrorPassQueryString

Boolean

Não

Não

Funciona como PassQueryString, mas tem precedência sobre ele. Esta configuração só tem efeito quando RedirectType está definido como Mirror.

Valor padrão: false.

ReplaceKeyWith

String

Não

Não

Ao usar uma regra Redirect, o nome do objeto é substituído pelo valor especificado em ReplaceKeyWith, permitindo o uso de variáveis.

A única variável suportada é {key}, que representa o nome do objeto na solicitação. Por exemplo, para acessar um objeto chamado test com ReplaceKeyWith definido como prefix/{key}, o cabeçalho Location apontará para http://example.com/prefix/test.suffix.

Isso significa que, quando um cliente solicita o objeto original (por exemplo, test), o servidor redireciona a solicitação para um novo local. O caminho desse novo local é gerado dinamicamente com base no padrão definido por ReplaceKeyWith. Neste exemplo, o novo caminho adiciona "prefix/" antes do nome original do objeto (test), resultando na URL final de redirecionamento "http://example.com/prefix/test.suffix". A parte ".suffix" é fixa, enquanto "${key}" é substituído com sucesso pelo nome do objeto "test".

Protocol

String

Não

Não

Protocolo usado para o redirecionamento.

Esta regra aplica-se apenas quando RedirectType está definido como External ou AliCDN. Por exemplo, para acessar um arquivo chamado test e redirecioná-lo para example.com usando HTTPS, o cabeçalho Location na resposta HTTP deve ser definido como "https://example.com/test". Valores válidos: http, https.

HttpRedirectCode

String

Não

Não

Código de status HTTP retornado durante o redirecionamento.

Aplica-se apenas quando RedirectType está definido como External ou AliCDN. Valor padrão: 302. Valores válidos: 301, 302, 307.

ReplaceKeyPrefixWith

String

Não

Não

Valor que substitui o prefixo do nome do objeto no redirecionamento. Se o prefixo estiver vazio, esta string é inserida antes do nome do objeto.

Nota

Use apenas a propriedade ReplaceKeyWith ou ReplaceKeyPrefixWith. Por exemplo, se o nome do objeto for ABC/test.TXT, KeyPrefixEquals for ABC/ e ReplaceKeyPrefixWith for def/, o cabeçalho Location apontará para http://example.com/def/test.txt.

RedirectType

String

Sim

Não

Tipo de redirecionamento.

Valores válidos:

  • Mirror: back-to-origin baseado em espelhamento.

  • External: redirecionamento externo. O OSS retorna um código de status 3xx instruindo o cliente a redirecionar para outro endereço.

  • AliCDN: redirecionamento via Alibaba Cloud CDN. Usado principalmente com a rede de entrega de conteúdo da Alibaba Cloud. Diferente do External, o OSS adiciona um cabeçalho extra que o Alibaba Cloud CDN reconhece para redirecionar internamente, buscar os dados e retorná-los ao usuário, sem enviar um código 3xx diretamente.

MirrorHeaders

Map

Não

Não

Cabeçalhos a serem espelhados para o servidor de origem.

Esta configuração só tem efeito quando RedirectType está definido como Mirror. Para mais informações, consulte Propriedades de MirrorHeaders.

MirrorCheckMd5

Boolean

Não

Não

Define se o hash MD5 dos dados recuperados do servidor de origem deve ser verificado.

Esta configuração só tem efeito quando RedirectType está definido como Mirror. Quando MirrorCheckMd5 é true e o servidor de origem retorna um cabeçalho Content-MD5 na resposta, o OSS verifica se o hash MD5 dos dados recuperados corresponde ao cabeçalho. Se não coincidirem, o OSS não salva os dados. Valor padrão: false.

EnableReplacePrefix

Boolean

Não

Não

Se definido como true, o prefixo do nome do objeto é substituído pelo valor especificado em ReplaceKeyPrefixWith. Se este campo não for especificado ou estiver vazio, o prefixo do nome do objeto é truncado.

Nota: Este campo não pode ser definido como true quando ReplaceKeyWith não estiver vazio. Valor padrão: false.

HostName

String

Não

Não

Nome de domínio para redirecionamento.

O nome de domínio deve seguir as convenções padrão. Por exemplo, se o nome do arquivo for test, o protocolo for https e o nome do host for example.com, o cabeçalho Location será https://example.com/test.

Sintaxe de MirrorHeaders

"MirrorHeaders":{
  "Remove": List,
  "PassAll": Boolean,
  "Sets": List,
  "Pass": List
}

Propriedades de MirrorHeaders

Nome da propriedade

Tipo

Obrigatório

Atualização permitida

Descrição

Restrição

Remove

List

Não

Não

Impede a passagem de cabeçalhos específicos para o servidor de origem.

Aplica-se apenas quando RedirectType está definido como Mirror. Cada cabeçalho pode ter até 1.024 bytes e conter apenas os caracteres 0-9, a-z, A-Z e hifens (-). É possível especificar até 10 cabeçalhos.

PassAll

Boolean

Não

Não

Define se todos os cabeçalhos, exceto os listados abaixo, devem ser passados ao servidor de origem.

Aplica-se apenas quando RedirectType está definido como Mirror. Os cabeçalhos excluídos incluem: content-length, authorization2, authorization, range, date e outros cabeçalhos gerais, além de cabeçalhos que começam com oss-, x-oss- ou x-drs-.

Valor padrão: false

Isso significa que, por padrão, esses cabeçalhos específicos são passados para a origem. Para alterar esse comportamento e impedir a passagem desses cabeçalhos, defina este valor como true.

Sets

List

Não

Não

Define um cabeçalho para o servidor de origem. Este cabeçalho é aplicado quando a solicitação é enviada à origem, independentemente de já estar presente na solicitação original.

Este recurso aplica-se apenas quando RedirectType está definido como Mirror. É possível configurar até 10 conjuntos de cabeçalhos. Para mais informações, consulte Propriedades de Sets.

Pass

List

Não

Não

Permite a passagem de cabeçalhos específicos para o servidor de origem.

Aplica-se apenas quando RedirectType está definido como Mirror. Cada cabeçalho pode ter até 1.024 bytes e conter apenas os caracteres 0-9, a-z, A-Z e hifens (-). É possível especificar até 10 cabeçalhos.

Sintaxe de Sets

"Sets": [
  {
    "Value": String,
    "Key": String
  }
]

Propriedades de Sets

Nome da propriedade

Tipo

Obrigatório

Atualização permitida

Descrição

Restrição

Value

String

Sim

Não

Define o valor do cabeçalho com no máximo 1.024 bytes, excluindo \r\n.

Esta configuração aplica-se apenas quando RedirectType está definido como Mirror.

Key

String

Sim

Não

Define a chave do cabeçalho com no máximo 1.024 bytes. O conjunto de caracteres é o mesmo de Pass.

Esta configuração aplica-se apenas quando RedirectType está definido como Mirror.

Sintaxe de ErrorDocument

"ErrorDocument":{
  "Key": String,
  "HttpStatus": String
}

Propriedades de ErrorDocument

Nome da propriedade

Tipo

Obrigatório

Atualização permitida

Descrição

Restrição

Key

String

Sim

Não

Página de erro padrão.

Se você especificar uma página de erro, o OSS a retornará quando o objeto solicitado não existir.

HttpStatus

String

Não

Não

Código de status HTTP para a página de erro.

Valores válidos: 200, 404 (padrão).

Sintaxe de ServerSideEncryptionConfiguration

"ServerSideEncryptionConfiguration":{
  "KMSMasterKeyID": String,
  "SSEAlgorithm": String
}

Propriedades de ServerSideEncryptionConfiguration

Nome da propriedade

Tipo

Obrigatório

Atualização permitida

Descrição

Restrição

SSEAlgorithm

String

Sim

Não

Método padrão de criptografia no lado do servidor.

Valores válidos:

  • KMS

  • AES256

KMSMasterKeyID

String

Não

Não

ID da chave.

Necessário apenas quando SSEAlgorithm está definido como KMS e você utiliza uma chave específica para criptografia.

Sintaxe de VersioningConfiguration

"VersioningConfiguration":{
  "Status": String
}

Propriedades de VersioningConfiguration

Nome da propriedade

Tipo

Obrigatório

Atualização permitida

Descrição

Restrição

Status

String

Sim

Não

Status do versionamento.

Valores válidos:

  • Enabled: ativa o versionamento

  • Suspended: suspende o versionamento

Valores de retorno

Fn::GetAtt

  • Name: Nome do bucket. O nome deve ser globalmente único.

  • DomainName: Nome de domínio usado para acessar o bucket pela rede pública.

  • InternalDomainName: Nome de domínio usado para acessar o bucket pela rede interna.

  • Arn: ARN (Alibaba Cloud Resource Name).

Exemplos

Cenário 1: Criar um bucket do OSS.

Criar agora

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"
        ]
      }
    }
  }
}

Cenário 2: Criar um bucket do OSS, ativar a aceleração de CDN, configurar a resolução de nomes de domínio e otimizar estratégias de distribuição de arquivos para oferecer suporte ao acesso global e a regras de cache personalizadas.

Criar agora

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"
          ]
        }
      ]
    }
  }
}

Cenário 3: Criar uma instância ECS e um bucket do OSS, instalar um aplicativo e implementar serviços de conversão de texto em imagem e aprimoramento de retratos.

Criar agora

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.aliyun.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.aliyun.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"
      ]
    }
  }
}

Modelos públicos que contêm este recurso.