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:
|
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:
|
EnableOssHdfsService | Boolean | Não | Sim | Indica se o serviço OSS-HDFS deve ser ativado. | Valores válidos:
|
BlockPublicAccess | Boolean | Não | Sim | Indica se o acesso público ao bucket deve ser bloqueado. | Valores válidos:
|
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. | |
RedundancyType | String | Não | Não | Tipo de redundância de dados do bucket. | Valores válidos:
|
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:
|
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 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 | Valores válidos:
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:
|
AllowedMethod | List | Não | Sim | Métodos HTTP permitidos em solicitações de origem cruzada. | Valores válidos:
|
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:
|
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. |
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. |
|
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:
|
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:
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: |
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:
|
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: |
|
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á:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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.
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.
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.
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®ionId=${ALIYUN::Region}&instanceId=${EcsInstance}
ExperienceAddress:
Description:
zh-cn: The experience address.
en: Experience address.
Value:
Fn::Sub:
- http://${PublicIp}/wanx-demo
- PublicIp:
Fn::Select:
- 0
- Fn::GetAtt:
- EcsInstance
- PublicIps
Description:
zh-cn: Create a Virtual Private Cloud (VPC), an Elastic Compute Service (ECS) instance, and an Object Storage Service (OSS) bucket. Configure security groups and Resource Access Management (RAM) permissions. Install Java and an application to implement text-to-image and portrait enhancement services.
en: Create a Virtual Private Cloud (VPC), Elastic Compute Service (ECS) instances, Object Storage Service (OSS) buckets, configure Security Groups and Resource Access Management (RAM) permissions, install Java and applications, and implement text drawing and portrait beautification services.
Conditions: {}
Resources:
CustomPolicy:
Type: ALIYUN::RAM::ManagedPolicy
Properties:
PolicyName:
Fn::Sub: create_by_solution-${ALIYUN::StackId}
PolicyDocument:
Version: '1'
Statement:
- Action:
- oss:GetObject
- oss:PutObject
Resource:
- Fn::Sub: acs:oss:oss-${ALIYUN::Region}:${ALIYUN::TenantId}:${BucketName}/*
Effect: Allow
InstallApp:
Type: ALIYUN::ECS::RunCommand
Properties:
CommandContent:
Fn::Sub: |-
#!/bin/bash
cat << EOF >> ~/.bash_profile
export DASHSCOPE_API_KEY=${DashScopeApiKey}
export OSS_ACCESS_KEY_ID=${AccessKey.AccessKeyId}
export OSS_ACCESS_KEY_SECRET=${AccessKey.AccessKeySecret}
export WANX_DEMO_OSS_BUCKET=${BucketName}
export WANX_DEMO_OSS_ENDPOINT=https://oss-${ALIYUN::Region}.aliyuncs.com
EOF
source ~/.bash_profile
wget https://help-static-aliyun-doc.aliyuncs.com/demos/wanx-demo-0.0.1-SNAPSHOT.jar
nohup java -jar wanx-demo-0.0.1-SNAPSHOT.jar > wanx-demo.log 2>&1 &
Type: RunShellScript
Sync: true
InstanceIds:
- Ref: EcsInstance
Timeout: 3600
DependsOn:
- ModuleInstallJava.Install
AccessKey:
Type: ALIYUN::RAM::AccessKey
Properties:
UserName:
Ref: User
Bucket:
Type: ALIYUN::OSS::Bucket
Properties:
BucketName:
Ref: BucketName
DeletionForce: true
SecurityGroup:
Type: ALIYUN::ECS::SecurityGroup
Properties:
SecurityGroupIngress:
- PortRange: 80/80
SourceCidrIp: 0.0.0.0/0
IpProtocol: tcp
VpcId:
Ref: Vpc
SecurityGroupName:
Fn::Sub: ${CommonName}-sg
ModuleInstallJava.Install:
Type: ALIYUN::OOS::Execution
Properties:
SafetyCheck: Skip
Parameters:
action: install
packageName: ACS-Extension-java-1853370294850618
regionId:
Ref: ALIYUN::Region
targets:
ResourceIds:
- Ref: EcsInstance
RegionId:
Ref: ALIYUN::Region
Type: ResourceIds
parameters: Null
TemplateName: ACS-ECS-BulkyConfigureOOSPackageWithTemporaryURL
Metadata:
ALIYUN::ROS::Module:
LogicalIdHierarchy: ModuleInstallJava
TypeHierarchy: MODULE::ACS::OOS::Extension
User:
Type: ALIYUN::RAM::User
Properties:
UserName:
Fn::Sub: create_by_solution-${ALIYUN::StackId}
PolicyAttachments:
Custom:
- Ref: CustomPolicy
Vpc:
Type: ALIYUN::ECS::VPC
Properties:
VpcName:
Fn::Sub: ${CommonName}-vpc
CidrBlock: 192.168.0.0/16
VSwitch:
Type: ALIYUN::ECS::VSwitch
Properties:
VSwitchName:
Fn::Sub: ${CommonName}-vsw
VpcId:
Ref: Vpc
CidrBlock: 192.168.0.0/24
ZoneId:
Ref: ZoneId
EcsInstance:
Type: ALIYUN::ECS::InstanceGroup
Properties:
SystemDiskCategory: cloud_essd
VpcId:
Ref: Vpc
SecurityGroupId:
Ref: SecurityGroup
ImageId: aliyun_3_9_x64_20G_alibase_
InternetMaxBandwidthOut: 5
VSwitchId:
Ref: VSwitch
Password:
Ref: InstancePassword
InstanceName:
Fn::Sub: ${CommonName}-ecs
InstanceType:
Ref: InstanceType
ZoneId:
Ref: ZoneId
MaxAmount: 1
Metadata:
ALIYUN::ROS::Interface:
ParameterGroups:
- Parameters:
- DashScopeApiKey
- BucketName
- ZoneId
- InstanceType
- InstancePassword
Hidden:
- CommonName
{
"ROSTemplateFormatVersion": "2015-09-01",
"Mappings": {},
"Parameters": {
"DashScopeApiKey": {
"NoEcho": true,
"Label": {
"zh-cn": "DashScope API-KEY",
"en": "DashScope API-KEY"
},
"Type": "String",
"Description": {
"zh-cn": "Activate DashScope and obtain an API key. For more information, see <a href=\"https://www.alibabacloud.com/help/zh/dashscope/developer-reference/activate-dashscope-and-create-an-api-key\" target=\"_blank\">Activate DashScope and create an API key</a>.",
"en": "Activate DashScope and obtain the API-KEY. Please refer to: <a href=\"https://www.alibabacloud.com/help/zh/dashscope/developer-reference/activate-dashscope-and-create-an-api-key\" target=\"_blank\">Activate DashScope and create API-KEY</a>."
},
"AssociationProperty": "ALIYUN::DashScope::ApiKey"
},
"CommonName": {
"Default": "wanxiang",
"Type": "String"
},
"InstancePassword": {
"Description": {
"zh-cn": "The logon password for the server. It must be 8 to 30 characters in length and contain at least three of the following character types: uppercase letters, lowercase letters, digits, and special characters ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/",
"en": "Server login password, Length 8-30, must contain three(Capital letters, lowercase letters, numbers, ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/ Special symbol in)"
},
"Default": null,
"Type": "String",
"Label": {
"zh-cn": "Instance Password",
"en": "Instance Password"
},
"NoEcho": true,
"AssociationProperty": "ALIYUN::ECS::Instance::Password",
"ConstraintDescription": {
"zh-cn": "The password must be 8 to 30 characters in length and contain at least three of the following character types: uppercase letters, lowercase letters, digits, and special characters ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/",
"en": "Length 8-30, must contain three(Capital letters, lowercase letters, numbers, ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/ Special symbol in)"
}
},
"ZoneId": {
"AssociationPropertyMetadata": {
"AutoSelectFirst": true
},
"Default": null,
"Required": true,
"Label": {
"zh-cn": "Availability Zone",
"en": "Availability Zone"
},
"AssociationProperty": "ALIYUN::ECS::Instance::ZoneId",
"Type": "String"
},
"BucketName": {
"AssociationPropertyMetadata": {
"Length": 5,
"Prefix": "drawing-with-tongyi-wanxiang-",
"CharacterClasses": [
{
"Class": "lowercase",
"min": 1
}
]
},
"Description": {
"zh-cn": "The name must be 3 to 63 characters in length. It cannot start or end with a hyphen (-). It can contain lowercase letters, digits, and hyphens (-).Note: <font color='blue'><b>The bucket name must be globally unique. You cannot create a bucket with an existing name.</font>",
"en": "3 to 63 characters, not beginning and ending with a hyphen (-), can contain lowercase letters, Numbers and hyphens (-);Note: <font color='blue'><b>need whole network uniqueness, already existing can not be created.</font>"
},
"MinLength": 3,
"Label": {
"zh-cn": "Bucket Name",
"en": "Bucket Name"
},
"AllowedPattern": "^[a-z0-9]+[a-z0-9\\-]*[a-z0-9]+$",
"Type": "String",
"MaxLength": 63,
"AssociationProperty": "AutoCompleteInput",
"ConstraintDescription": {
"zh-cn": "The name must be 3 to 63 characters in length. It cannot start or end with a hyphen (-). It can contain lowercase letters, digits, and hyphens (-).",
"en": "3 to 63 characters, not beginning and ending with a hyphen (-), can contain lowercase letters, Numbers and hyphens (-)"
}
},
"InstanceType": {
"AssociationPropertyMetadata": {
"SystemDiskCategory": "cloud_essd",
"InstanceChargeType": "PostPaid",
"ZoneId": "${ZoneId}"
},
"Default": null,
"Required": true,
"Label": {
"zh-cn": "Instance Type",
"en": "Instance Type"
},
"AssociationProperty": "ALIYUN::ECS::Instance::InstanceType",
"Type": "String"
}
},
"Outputs": {
"EcsLoginAddress": {
"Description": {
"zh-cn": "The logon address for the ECS instance.",
"en": "Ecs login address."
},
"Value": {
"Fn::Sub": "https://ecs-workbench.aliyun.com/?from=EcsConsole&instanceType=ecs®ionId=${ALIYUN::Region}&instanceId=${EcsInstance}"
}
},
"ExperienceAddress": {
"Description": {
"zh-cn": "The experience address.",
"en": "Experience address."
},
"Value": {
"Fn::Sub": [
"http://${PublicIp}/wanx-demo",
{
"PublicIp": {
"Fn::Select": [
0,
{
"Fn::GetAtt": [
"EcsInstance",
"PublicIps"
]
}
]
}
}
]
}
}
},
"Description": {
"zh-cn": "Create a Virtual Private Cloud (VPC), an Elastic Compute Service (ECS) instance, and an Object Storage Service (OSS) bucket. Configure security groups and Resource Access Management (RAM) permissions. Install Java and an application to implement text-to-image and portrait enhancement services.",
"en": "Create a Virtual Private Cloud (VPC), Elastic Compute Service (ECS) instances, Object Storage Service (OSS) buckets, configure Security Groups and Resource Access Management (RAM) permissions, install Java and applications, and implement text drawing and portrait beautification services."
},
"Conditions": {},
"Resources": {
"CustomPolicy": {
"Type": "ALIYUN::RAM::ManagedPolicy",
"Properties": {
"PolicyName": {
"Fn::Sub": "create_by_solution-${ALIYUN::StackId}"
},
"PolicyDocument": {
"Version": "1",
"Statement": [
{
"Action": [
"oss:GetObject",
"oss:PutObject"
],
"Resource": [
{
"Fn::Sub": "acs:oss:oss-${ALIYUN::Region}:${ALIYUN::TenantId}:${BucketName}/*"
}
],
"Effect": "Allow"
}
]
}
}
},
"InstallApp": {
"Type": "ALIYUN::ECS::RunCommand",
"Properties": {
"CommandContent": {
"Fn::Sub": "#!/bin/bash\n\ncat << EOF >> ~/.bash_profile\nexport DASHSCOPE_API_KEY=${DashScopeApiKey}\nexport OSS_ACCESS_KEY_ID=${AccessKey.AccessKeyId}\nexport OSS_ACCESS_KEY_SECRET=${AccessKey.AccessKeySecret}\nexport WANX_DEMO_OSS_BUCKET=${BucketName}\nexport WANX_DEMO_OSS_ENDPOINT=https://oss-${ALIYUN::Region}.aliyuncs.com\nEOF\n\nsource ~/.bash_profile \nwget https://help-static-aliyun-doc.aliyuncs.com/demos/wanx-demo-0.0.1-SNAPSHOT.jar\nnohup java -jar wanx-demo-0.0.1-SNAPSHOT.jar > wanx-demo.log 2>&1 &"
},
"Type": "RunShellScript",
"Sync": true,
"InstanceIds": [
{
"Ref": "EcsInstance"
}
],
"Timeout": 3600
},
"DependsOn": [
"ModuleInstallJava.Install"
]
},
"AccessKey": {
"Type": "ALIYUN::RAM::AccessKey",
"Properties": {
"UserName": {
"Ref": "User"
}
}
},
"Bucket": {
"Type": "ALIYUN::OSS::Bucket",
"Properties": {
"BucketName": {
"Ref": "BucketName"
},
"DeletionForce": true
}
},
"SecurityGroup": {
"Type": "ALIYUN::ECS::SecurityGroup",
"Properties": {
"SecurityGroupIngress": [
{
"PortRange": "80/80",
"SourceCidrIp": "0.0.0.0/0",
"IpProtocol": "tcp"
}
],
"VpcId": {
"Ref": "Vpc"
},
"SecurityGroupName": {
"Fn::Sub": "${CommonName}-sg"
}
}
},
"ModuleInstallJava.Install": {
"Type": "ALIYUN::OOS::Execution",
"Properties": {
"SafetyCheck": "Skip",
"Parameters": {
"action": "install",
"packageName": "ACS-Extension-java-1853370294850618",
"regionId": {
"Ref": "ALIYUN::Region"
},
"targets": {
"ResourceIds": [
{
"Ref": "EcsInstance"
}
],
"RegionId": {
"Ref": "ALIYUN::Region"
},
"Type": "ResourceIds"
},
"parameters": null
},
"TemplateName": "ACS-ECS-BulkyConfigureOOSPackageWithTemporaryURL"
},
"Metadata": {
"ALIYUN::ROS::Module": {
"LogicalIdHierarchy": "ModuleInstallJava",
"TypeHierarchy": "MODULE::ACS::OOS::Extension"
}
}
},
"User": {
"Type": "ALIYUN::RAM::User",
"Properties": {
"UserName": {
"Fn::Sub": "create_by_solution-${ALIYUN::StackId}"
},
"PolicyAttachments": {
"Custom": [
{
"Ref": "CustomPolicy"
}
]
}
}
},
"Vpc": {
"Type": "ALIYUN::ECS::VPC",
"Properties": {
"VpcName": {
"Fn::Sub": "${CommonName}-vpc"
},
"CidrBlock": "192.168.0.0/16"
}
},
"VSwitch": {
"Type": "ALIYUN::ECS::VSwitch",
"Properties": {
"VSwitchName": {
"Fn::Sub": "${CommonName}-vsw"
},
"VpcId": {
"Ref": "Vpc"
},
"CidrBlock": "192.168.0.0/24",
"ZoneId": {
"Ref": "ZoneId"
}
}
},
"EcsInstance": {
"Type": "ALIYUN::ECS::InstanceGroup",
"Properties": {
"SystemDiskCategory": "cloud_essd",
"VpcId": {
"Ref": "Vpc"
},
"SecurityGroupId": {
"Ref": "SecurityGroup"
},
"ImageId": "aliyun_3_9_x64_20G_alibase_",
"InternetMaxBandwidthOut": 5,
"VSwitchId": {
"Ref": "VSwitch"
},
"Password": {
"Ref": "InstancePassword"
},
"InstanceName": {
"Fn::Sub": "${CommonName}-ecs"
},
"InstanceType": {
"Ref": "InstanceType"
},
"ZoneId": {
"Ref": "ZoneId"
},
"MaxAmount": 1
}
}
},
"Metadata": {
"ALIYUN::ROS::Interface": {
"ParameterGroups": [
{
"Parameters": [
"DashScopeApiKey",
"BucketName",
"ZoneId",
"InstanceType",
"InstancePassword"
]
}
],
"Hidden": [
"CommonName"
]
}
}
}