Tous les produits
Search
Centre de documentation

Resource Orchestration Service:ALIYUN::OSS::Bucket

Dernière mise à jour :Aug 10, 2026

La ressource ALIYUN::OSS::Bucket permet de créer un compartiment (bucket) Object Storage Service (OSS).

Syntaxe

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

Propriétés

Nom de la propriété

Type

Obligatoire

Mise à jour autorisée

Description

Contrainte

BucketName

String

Oui

Non

Nom du compartiment.

Le nom doit comporter entre 3 et 63 caractères. Il doit commencer et se terminer par une lettre minuscule ou un chiffre. Il ne peut contenir que des lettres minuscules, des chiffres et des traits d'union (-).

Remarque

Ce nom doit être unique à l'échelle mondiale. Utilisez AutoCompleteInput dans AssociationProperty pour générer automatiquement une chaîne aléatoire. Comment contrôler la longueur d'une chaîne aléatoire ?

AccessControl

String

Non

Oui

Autorisations d'accès au compartiment.

Valeurs possibles :

  • private (par défaut) : privé.

  • public-read : lecture publique.

  • public-read-write : lecture et écriture publiques.

CORSConfiguration

Map

Non

Oui

Configuration CORS (Cross-Origin Resource Sharing).

Pour plus d'informations, consultez la section Propriétés CORSConfiguration.

DeletionForce

Boolean

Non

Oui

Indique s'il faut forcer la suppression des objets contenus dans le compartiment.

Valeurs possibles :

  • true : suppression forcée.

  • false (par défaut) : pas de suppression forcée.

EnableOssHdfsService

Boolean

Non

Oui

Indique s'il faut activer le service OSS-HDFS.

Valeurs possibles :

  • true : active le service OSS-HDFS.

    Remarque

    Une fois ce service activé, vous ne pouvez plus le désactiver.

  • false : n'active pas le service OSS-HDFS.

BlockPublicAccess

Boolean

Non

Oui

Indique s'il faut bloquer l'accès public au compartiment.

Valeurs possibles :

  • true : bloque l'accès public.

  • false (par défaut) : n'empêche pas l'accès public.

LifecycleConfiguration

Map

Non

Oui

Configuration du cycle de vie des objets stockés dans le compartiment.

Pour plus d'informations, consultez la section Propriétés LifecycleConfiguration.

LoggingConfiguration

Map

Non

Non

Configuration du stockage des journaux.

Pour plus d'informations, consultez la section Propriétés LoggingConfiguration.

Policy

Map

Non

Oui

Stratégie du compartiment.

Exemples courants de stratégies de compartiment.

RedundancyType

String

Non

Non

Type de redondance des données pour le compartiment.

Valeurs possibles :

  • LRS (par défaut) : Locally Redundant Storage. Les données sont stockées de manière redondante sur plusieurs appareils au sein d'une même zone, protégeant ainsi contre deux pannes simultanées d'appareils au maximum.

  • ZRS : Zone-Redundant Storage. Les données sont stockées de manière redondante dans trois zones d'une même région, offrant une protection contre les pannes au niveau de la zone.

RefererConfiguration

Map

Non

Oui

Configuration de la protection contre le hotlinking.

Pour plus d'informations, consultez la section Propriétés RefererConfiguration.

ResourceGroupId

String

Non

Non

ID du groupe de ressources.

Aucune

ServerSideEncryptionConfiguration

Map

Non

Oui

Configuration du chiffrement côté serveur.

Pour plus d'informations, consultez la section Propriétés ServerSideEncryptionConfiguration.

StorageClass

String

Non

Non

Classe de stockage du compartiment.

Valeurs possibles :

  • Standard (par défaut) : Standard.

  • IA : Infrequent Access.

  • Archive : Archive Storage.

Tags

Map

Non

Oui

Étiquettes du compartiment. Chaque étiquette est une paire clé-valeur.

Vous pouvez configurer jusqu'à 20 étiquettes.

La clé doit comporter entre 1 et 64 caractères. Elle ne peut pas commencer par http://, https:// ou Aliyun.

La valeur doit comporter entre 0 et 128 caractères et être encodée en UTF-8.

VersioningConfiguration

Map

Non

Oui

Conteneur qui stocke l'état du versioning.

Pour plus d'informations, consultez la section Propriétés VersioningConfiguration.

WebsiteConfigurationV2

Map

Non

Non

Configuration du site web statique.

Pour plus d'informations, consultez la section Propriétés WebsiteConfigurationV2.

Syntaxe CORSConfiguration

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

Propriétés CORSConfiguration

Nom de la propriété

Type

Obligatoire

Mise à jour autorisée

Description

Contrainte

CORSRule

List

Non

Oui

Règle CORS.

Pour plus d'informations, consultez la section Propriétés CORSRule.

ResponseVary

Boolean

Non

Oui

Spécifie s'il faut retourner l'en-tête Vary: Origin.

Valeurs possibles :

  • true : retourne l'en-tête Vary: Origin, indépendamment de l'envoi ou de la réussite d'une requête cross-origin.

  • false (par défaut) : ne retourne jamais l'en-tête Vary: Origin.

Remarque

Vous ne pouvez pas configurer ce champ seul. Vous devez configurer au moins une règle CORS pour que ce champ prenne effet.

Syntaxe CORSRule

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

Propriétés CORSRule

Nom de la propriété

Type

Obligatoire

Mise à jour autorisée

Description

Contrainte

AllowedHeader

List

Non

Oui

En-têtes autorisés dans les requêtes cross-origin.

Valeurs possibles :

  • *

  • Cache-Control

  • Content-Language

  • Content-Type

  • Expires

  • Last-Modified

  • Pragma

AllowedMethod

List

Non

Oui

Méthodes HTTP autorisées dans les requêtes cross-origin.

Valeurs possibles :

  • *

  • GET

  • PUT

  • POST

  • DELETE

  • HEAD

AllowedOrigin

List

Non

Oui

Origines autorisées dans les requêtes cross-origin.

Aucune

ExposeHeader

List

Non

Oui

En-têtes de réponse accessibles par les utilisateurs depuis les applications.

L'astérisque (*) n'est pas autorisé.

MaxAgeSeconds

Number

Non

Oui

Durée pendant laquelle les navigateurs mettent en cache les résultats des requêtes OPTIONS pour des ressources spécifiques.

Aucune

Syntaxe LifecycleConfiguration

"LifecycleConfiguration": {
  "Rule": List
}

Propriétés LifecycleConfiguration

Nom de la propriété

Type

Obligatoire

Mise à jour autorisée

Description

Contrainte

Rule

List

Oui

Non

Règle de cycle de vie.

Pour plus d'informations, consultez la section Propriétés Rule.

Syntaxe Rule

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

Propriétés Rule

Nom de la propriété

Type

Obligatoire

Mise à jour autorisée

Description

Contrainte

Prefix

String

Oui

Non

Préfixe auquel la règle s'applique.

Seuls les objets dont les noms correspondent au préfixe sont affectés par la règle.

AbortMultipartUpload

Map

Non

Non

Paramètres d'expiration pour les téléchargements multipart incomplets.

Pour plus d'informations, consultez la section Propriétés AbortMultipartUpload.

Expiration

Map

Non

Non

Paramètres d'expiration des objets.

Pour plus d'informations, consultez la section Propriétés Expiration.

ID

String

Non

Non

Identifiant unique de la règle.

L'identifiant peut comporter jusqu'à 255 caractères. Si vous ne spécifiez pas d'identifiant ou si vous le laissez vide, OSS en génère un automatiquement.

Status

String

Non

Oui

Active ou désactive la règle.

Valeurs possibles :

  • Enabled : active la règle.

  • Disabled : désactive la règle.

Filter

Map

Non

Non

Cette règle d'exclusion prend en charge une seule condition.

Pour plus d'informations, consultez la section Propriétés Filter.

Transition

List

Non

Non

Liste des tâches de transition de classe de stockage.

Pour plus d'informations, consultez la section Propriétés Transition.

Syntaxe Transition

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

Propriétés Transition

Nom de la propriété

Type

Obligatoire

Mise à jour autorisée

Description

Contrainte

CreatedBeforeDate

String

Non

Non

Spécifiez une date. OSS applique la règle de cycle de vie aux objets dont l'heure de dernière modification est antérieure à cette date.

La date doit respecter le format ISO 8601 et correspondre à minuit (00:00:00) en temps UTC.
Exemple : 2002-10-11T00:00:00.000Z



Days

Integer

Non

Non

Spécifiez le nombre de jours après la dernière mise à jour de l'objet avant que la règle de cycle de vie ne prenne effet.

Valeurs possibles : entiers positifs, tels que 30, 90 et 180.

IsAccessTime

Boolean

Non

Non

Indique si la règle de cycle de vie s'applique en fonction de la dernière heure d'accès à l'objet.

  • true : applique la règle en fonction de la dernière heure d'accès.

  • false : n'applique pas la règle en fonction de la dernière heure d'accès. À la place, elle s'applique selon d'autres conditions, telles que l'heure de création ou de modification.

ReturnToStdWhenVisit

Boolean

Non

Non

Indique s'il faut reconvertir les objets non standard vers la classe de stockage Standard lors de l'accès.

Cette option prend effet uniquement lorsque IsAccessTime est défini sur true.

AllowSmallFile

Boolean

Non

Non

Indique si l'opération se base sur la dernière heure d'accès à l'objet.

Modifie la classe de stockage en IA, Archive ou Cold Archive pour les objets de moins de 64 Ko.

StorageClass

String

Non

Non

Classe de stockage vers laquelle l'objet est converti.

Valeurs possibles :

  • IA

  • Archive

  • ColdArchive

  • DeepColdArchive

Syntaxe Filter

"Filter":{
  "Not": Map
}

Propriétés Filter

Nom de la propriété

Type

Obligatoire

Mise à jour autorisée

Description

Contrainte

Not

Map

Non

Non

Règle d'exclusion.

Pour plus d'informations, consultez la section Propriétés Not.

Syntaxe Not

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

Propriétés Not

Nom de la propriété

Type

Obligatoire

Mise à jour autorisée

Description

Contrainte

Tag

List

Non

Non

Étiquette pour la règle d'exclusion.

Cette règle d'exclusion s'applique à au plus une étiquette d'objet.

Prefix

String

Non

Non

Préfixe pour la règle.

Les conditions de préfixe d'objet suivantes s'appliquent à cette règle d'exclusion :

  • Si vous configurez un préfixe dans le nœud Rule, le préfixe dans le nœud Not doit commencer par le préfixe configuré dans le nœud Rule. Par exemple, si le préfixe dans le nœud Rule est dir, le préfixe dans le nœud Not doit commencer par dir, comme dir1 ou dir2.

  • Si vous ne configurez pas d'étiquette dans le nœud Not, le préfixe dans le nœud Not ne peut pas être identique au préfixe dans le nœud Rule.

Le préfixe Not doit être un sous-ensemble du préfixe Rule parent et ne peut pas lui être identique, sauf si une étiquette est également configurée.

Syntaxe Expiration

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

Propriétés Expiration

Nom de la propriété

Type

Obligatoire

Mise à jour autorisée

Description

Contrainte

CreatedBeforeDate

String

Non

Non

Spécifiez une date. OSS applique la règle aux objets dont l'heure de dernière modification est antérieure à cette date.

La date doit respecter le format ISO 8601 et correspondre à minuit (00:00:00) en temps UTC. Exemple : 2002-10-11T00:00:00.000Z.

Days

Number

Non

Non

Spécifiez le nombre de jours après la dernière modification de l'objet avant que la règle ne prenne effet.

OSS calcule le nombre de jours à partir de l'heure de dernière modification de l'objet. Une fois le nombre de jours spécifié écoulé, OSS supprime l'objet. Par exemple, si vous définissez le nombre de jours sur 30, OSS supprimera un objet dont la date de dernière modification est le 1er janvier 2016 le 31 janvier 2016.

ExpiredObjectDeleteMarker

Boolean

Non

Non

Spécifie s'il faut supprimer automatiquement les marqueurs de suppression expirés.

Valeurs possibles :

  • true : supprime automatiquement les marqueurs de suppression expirés. Lorsque cette valeur est définie sur true, les paramètres Days et CreatedBeforeDate ne sont pas pris en charge.

  • false : ne supprime pas automatiquement les marqueurs de suppression expirés. Lorsque cette valeur est définie sur false, vous devez spécifier soit Days, soit CreatedBeforeDate.

Syntaxe AbortMultipartUpload

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

Propriétés AbortMultipartUpload

Nom de la propriété

Type

Obligatoire

Mise à jour autorisée

Description

Contrainte

CreatedBeforeDate

String

Non

Non

Spécifiez la date avant laquelle la règle prend effet.

La date doit respecter le format ISO 8601 et correspondre à minuit (00:00:00) en temps UTC. Exemple : 2002-10-11T00:00:00.000Z.

Days

Number

Non

Non

Spécifiez le nombre de jours après la dernière modification de l'objet avant que la règle ne prenne effet.

OSS calcule le nombre de jours à partir de l'heure de dernière modification de l'objet. Une fois le nombre de jours spécifié écoulé, OSS supprime l'objet. Par exemple, si vous définissez le nombre de jours sur 30, OSS supprimera un objet dont la date de dernière modification est le 1er janvier 2016 le 31 janvier 2016.

Syntaxe LoggingConfiguration

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

Propriétés LoggingConfiguration

Nom de la propriété

Type

Obligatoire

Mise à jour autorisée

Description

Contrainte

TargetBucket

String

Non

Non

Compartiment où sont stockés les journaux d'accès.

Aucune

TargetPrefix

String

Non

Non

Préfixe pour les fichiers de journaux d'accès enregistrés.

Aucune

Syntaxe WebsiteConfigurationV2

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

Propriétés WebsiteConfigurationV2

Nom de la propriété

Type

Obligatoire

Mise à jour autorisée

Description

Contrainte

ErrorDocument

Map

Non

Non

Page d'erreur statique hébergée sur le compartiment.

Aucune

IndexDocument

Map

Non

Non

Page d'accueil statique hébergée sur le compartiment.

Aucune

RoutingRules

List

Non

Non

Liste des règles de routage.

Longueur maximale : 20.

Syntaxe IndexDocument

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

Propriétés IndexDocument

Nom de la propriété

Type

Obligatoire

Mise à jour autorisée

Description

Contrainte

Suffix

String

Oui

Non

Page d'index par défaut.

Après avoir configuré la page d'index par défaut, si vous accédez à un objet dont le nom se termine par une barre oblique (/), OSS renvoie cette page d'index par défaut.

Type

String

Non

Non

Spécifiez le comportement lorsque vous essayez d'accéder à un objet qui n'existe pas et dont le nom ne se termine pas par une barre oblique (/) après avoir configuré la page d'index par défaut.

Cette règle prend effet uniquement lorsque SupportSubDir est défini sur true, et s'applique après RoutingRule mais avant ErrorFile. Supposons que la page d'index par défaut soit index.html. Lorsque vous accédez à bucket.oss-cn-hangzhou.aliyuncs.com/abc et que l'objet abc n'existe pas, le comportement pour différentes valeurs de Type est le suivant :

  • 0 (par défaut) : vérifie si abc/index.html existe (nom de l'objet plus une barre oblique (/) plus le nom de la page d'index). S'il existe, renvoie un code d'état de redirection 302 et définit l'URL dans l'en-tête Location sur /abc/ (une barre oblique (/) plus le nom de l'objet plus une barre oblique (/)). S'il n'existe pas, renvoie une erreur 404 et continue à vérifier ErrorFile.

  • 1 : renvoie directement une erreur 404. Le type d'erreur est NoSuchKey. Ensuite, continue à vérifier ErrorFile.

  • 2 : vérifie si abc/index.html existe. S'il existe, renvoie directement le contenu de l'objet. S'il n'existe pas, renvoie une erreur 404 et continue à vérifier ErrorFile.

SupportSubDir

String

Non

Non

Spécifie s'il faut rediriger vers la page d'accueil par défaut d'un sous-répertoire lorsque vous accédez au sous-répertoire.

Valeurs possibles :

  • true : redirige vers la page d'accueil par défaut du sous-répertoire.

  • false (par défaut) : ne redirige pas vers la page d'accueil par défaut du sous-répertoire. À la place, redirige vers la page d'accueil par défaut du répertoire racine. Par exemple, supposons que la page d'accueil par défaut soit index.html. Si vous accédez à bucket.oss-cn-hangzhou.aliyuncs.com/subdir/ et que SupportSubDir est défini sur false, vous êtes redirigé vers bucket.oss-cn-hangzhou.aliyuncs.com/index.html. Si vous définissez SupportSubDir sur true, vous êtes redirigé vers bucket.oss-cn-hangzhou.aliyuncs.com/subdir/index.html.

Syntaxe RoutingRules

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

Propriétés RoutingRules

Nom de la propriété

Type

Obligatoire

Mise à jour autorisée

Description

Contrainte

Redirect

Map

Oui

Non

Spécifiez l'action à effectuer lorsque la règle correspond.

Pour plus d'informations, consultez la section Propriétés Redirect.

Condition

Map

Oui

Non

Condition de correspondance.

Cette règle prend effet uniquement lorsque toutes les conditions spécifiées sont remplies. Une correspondance est réussie uniquement lorsque toutes les conditions de ce conteneur sont satisfaites. Pour plus d'informations, consultez la section Propriétés Condition.

RuleNumber

Integer

Oui

Non

Numéro de séquence de la règle de routage à faire correspondre et exécuter. OSS fait correspondre les règles dans l'ordre de ce numéro de séquence.

Si une correspondance est réussie, OSS exécute cette règle et arrête l'exécution des règles suivantes.

Syntaxe Condition

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

Propriétés Condition

Nom de la propriété

Type

Obligatoire

Mise à jour autorisée

Description

Contrainte

KeyPrefixEquals

String

Non

Non

Préfixe du nom de l'objet à faire correspondre.

Aucune.

HttpErrorCodeReturnedEquals

String

Non

Non

Code d'état HTTP qui doit être renvoyé lors de l'accès à l'objet spécifié pour que la règle corresponde.

Ce champ doit être 404 lorsque la règle de redirection utilise la méthode de retour à l'origine par miroir.

IncludeHeaders

List

Non

Non

La règle correspond uniquement lorsque la requête contient l'en-tête spécifié et que sa valeur correspond à la valeur spécifiée.

Vous pouvez configurer jusqu'à 10 conditions de ce type. Pour plus d'informations, consultez la section Propriétés IncludeHeaders.

KeySuffixEquals

String

Non

Non

Suffixe du nom de l'objet à faire correspondre.

Aucune.

Syntaxe IncludeHeaders

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

Propriétés IncludeHeaders

Nom de la propriété

Type

Obligatoire

Mise à jour autorisée

Description

Contrainte

Equals

String

Non

Non

Valeur de l'en-tête.

Aucune

Key

String

Oui

Non

Nom de l'en-tête.

Aucune

Syntaxe RefererConfiguration

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

Propriétés RefererConfiguration

Nom de la propriété

Type

Obligatoire

Mise à jour autorisée

Description

Contrainte

AllowEmptyReferer

Boolean

Non

Non

Spécifie s'il faut autoriser les requêtes avec un en-tête Referer vide à accéder au compartiment.

Valeurs possibles :

  • true (par défaut) : autoriser.

  • false : ne pas autoriser.

RefererList

List

Non

Non

Liste blanche des en-têtes Referer.

Aucune

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

Propriétés Redirect

Nom de la propriété

Type

Obligatoire

Mise à jour autorisée

Description

Contrainte

MirrorFollowRedirect

Boolean

Non

Non

Spécifie s'il faut continuer la redirection vers l'emplacement spécifié pour récupérer les données lorsque le résultat d'une requête de retour à l'origine par miroir renvoie un code d'état 3xx.

Ce paramètre prend effet uniquement lorsque RedirectType est défini sur Mirror. Par exemple, lorsque vous effectuez un retour à l'origine par miroir vers le serveur d'origine, ce dernier renvoie un code d'état 302 avec un en-tête Location.

  • Si la valeur est true, OSS continue de demander l'adresse spécifiée dans l'en-tête Location. Ce processus permet jusqu'à 10 redirections. Après 10 redirections, la requête de retour à l'origine par miroir échoue et renvoie une erreur.

  • Si la valeur est false, OSS renvoie directement le code d'état 302 et transmet l'en-tête Location au client. Le client décide s'il faut continuer la redirection.

    Valeur par défaut : true.

MirrorURL

String

Non

Non

URL du serveur d'origine pour le retour à l'origine par miroir.

Ce paramètre prend effet uniquement lorsque RedirectType est défini sur Mirror. L'URL d'origine doit commencer par http:// ou https:// et se terminer par une barre oblique (/). OSS ajoute le nom de l'objet à cette URL pour former l'URL finale. Par exemple, si le nom de l'objet est myobject et que vous définissez ce paramètre sur http://example.com/, l'URL de retour à l'origine est http://example.com/myobject. Si vous définissez ce paramètre sur http://example.com/dir1/, l'URL de retour à l'origine est http://example.com/dir1/myobject.

PassQueryString

Boolean

Non

Non

Spécifie s'il faut inclure les paramètres de requête lors de l'exécution d'une redirection ou d'un retour à l'origine par miroir.

Par exemple, si un utilisateur accède à OSS avec les paramètres de requête a=b&c=d et que PassQueryString est défini sur true, les paramètres de requête sont ajoutés à l'en-tête Location pour une redirection 302, comme Location: example.com?a=b&c=d. Si le type de règle est le retour à l'origine par miroir, les paramètres de requête sont également inclus dans la requête de retour à l'origine. Valeurs possibles : true, false (par défaut).

MirrorPassQueryString

Boolean

Non

Non

Identique à PassQueryString, mais prend priorité sur PassQueryString. Ce paramètre prend effet uniquement lorsque RedirectType est défini sur Mirror.

Valeur par défaut : false.

ReplaceKeyWith

String

Non

Non

Lorsque vous utilisez une règle de redirection, le nom de l'objet est remplacé par la valeur spécifiée par ReplaceKeyWith. Cela vous permet d'utiliser des variables.

La seule variable prise en charge est {key}, qui représente le nom de l'objet dans la requête. Par exemple, si vous souhaitez accéder à un objet nommé test et définir ReplaceKeyWith sur prefix/{key}, l'en-tête Location pointe vers http://example.com/prefix/test.suffix.

Cela signifie que lorsqu'un client demande l'objet original (par exemple, test), le serveur redirige la requête vers un nouvel emplacement. Le chemin du nouvel emplacement est généré dynamiquement en fonction du modèle défini par ReplaceKeyWith. Dans cet exemple, le nouveau chemin ajoute « prefix/ » avant le nom de l'objet original (test), ce qui donne l'URL de redirection finale « http://example.com/prefix/test.suffix ». La partie « .suffix » est fixe, tandis que « ${key} » est remplacée avec succès par le nom de l'objet « test ».

Protocol

String

Non

Non

Protocole utilisé pour la redirection.

Cette règle s'applique uniquement lorsque RedirectType est défini sur External ou AliCDN. Par exemple, si vous souhaitez accéder à un fichier nommé test et le rediriger vers example.com en utilisant HTTPS, l'en-tête Location dans la réponse HTTP doit être défini sur « https://example.com/test ». Valeurs possibles : http, https.

HttpRedirectCode

String

Non

Non

Code d'état HTTP renvoyé lors de la redirection.

S'applique uniquement lorsque RedirectType est défini sur External ou AliCDN. Valeur par défaut : 302. Valeurs possibles : 301, 302, 307.

ReplaceKeyPrefixWith

String

Non

Non

Valeur qui remplace le préfixe du nom de l'objet dans la redirection. Si le préfixe est vide, cette chaîne est insérée avant le nom de l'objet.

Remarque

Vous ne pouvez utiliser que la propriété ReplaceKeyWith ou ReplaceKeyPrefixWith. Par exemple, si le nom de l'objet est ABC/test.TXT, KeyPrefixEquals est défini sur ABC/ et ReplaceKeyPrefixWith est défini sur def/, l'en-tête Location pointe vers http://example.com/def/test.txt.

RedirectType

String

Oui

Non

Type de redirection.

Valeurs possibles :

  • Mirror : retour à l'origine par miroir.

  • External : redirection externe. OSS renvoie un code d'état 3xx pour indiquer au client de rediriger vers une autre adresse.

  • AliCDN : redirection via Alibaba Cloud CDN. Utilisé principalement avec le réseau de diffusion de contenu d'Alibaba Cloud. Contrairement à External, OSS ajoute un en-tête supplémentaire. Alibaba Cloud CDN reconnaît cet en-tête et redirige vers l'adresse spécifiée, récupère les données et les renvoie à l'utilisateur au lieu de renvoyer une requête de redirection 3xx à l'utilisateur.

MirrorHeaders

Map

Non

Non

En-têtes à transmettre en miroir au serveur d'origine.

Ce paramètre prend effet uniquement lorsque RedirectType est défini sur Mirror. Pour plus d'informations, consultez la section Propriétés MirrorHeaders.

MirrorCheckMd5

Boolean

Non

Non

Spécifie s'il faut vérifier le hachage MD5 des données récupérées depuis le serveur d'origine.

Ce paramètre prend effet uniquement lorsque RedirectType est défini sur Mirror. Lorsque MirrorCheckMd5 est défini sur true, si le serveur d'origine renvoie un en-tête Content-MD5 dans la réponse, OSS vérifie si le hachage MD5 des données récupérées correspond à l'en-tête. S'ils ne correspondent pas, OSS n'enregistre pas les données dans OSS. Valeur par défaut : false.

EnableReplacePrefix

Boolean

Non

Non

Si la valeur est true, le préfixe du nom de l'objet est remplacé par la valeur spécifiée par ReplaceKeyPrefixWith. Si ce champ n'est pas spécifié ou est vide, le préfixe du nom de l'objet est tronqué.

Remarque : ce champ ne peut pas être défini sur true lorsque ReplaceKeyWith n'est pas vide. Valeur par défaut : false.

HostName

String

Non

Non

Nom de domaine pour la redirection.

Le nom de domaine doit respecter les conventions relatives aux noms de domaine. Par exemple, si le nom du fichier est test, le protocole est défini sur https et le nom d'hôte est défini sur example.com, l'en-tête Location est https://example.com/test.

Syntaxe MirrorHeaders

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

Propriétés MirrorHeaders

Nom de la propriété

Type

Obligatoire

Mise à jour autorisée

Description

Contrainte

Remove

List

Non

Non

Désactive la transmission des en-têtes spécifiés au serveur d'origine.

S'applique uniquement lorsque RedirectType est défini sur Mirror. Chaque en-tête peut avoir une longueur maximale de 1 024 octets et ne peut contenir que les caractères 0-9, a-z, A-Z et le trait d'union (-). Vous pouvez spécifier jusqu'à 10 en-têtes.

PassAll

Boolean

Non

Non

Spécifie s'il faut transmettre tous les en-têtes, à l'exception de ceux énumérés ci-dessous, au serveur d'origine.

S'applique uniquement lorsque RedirectType est défini sur Mirror. Les en-têtes à exclure comprennent les suivants : - content-length, authorization2, authorization, range, date et autres en-têtes généraux - en-têtes commençant par oss-, x-oss- ou x-drs-

Valeur par défaut : false

Cela signifie que ces en-têtes spécifiques sont transmis à la source miroir par défaut. Pour modifier ce comportement, définissez cette valeur sur true pour empêcher la transmission de ces en-têtes.

Sets

List

Non

Non

Définit un en-tête pour le serveur d'origine. Cet en-tête est défini lorsque la requête est envoyée au serveur d'origine, que l'en-tête spécifié soit inclus ou non dans la requête.

Cette fonctionnalité s'applique uniquement lorsque RedirectType est défini sur Mirror. Vous pouvez configurer jusqu'à 10 ensembles d'en-têtes. Pour plus d'informations, consultez la section Propriétés Sets.

Pass

List

Non

Non

Transmet les en-têtes spécifiés au serveur d'origine.

S'applique uniquement lorsque RedirectType est défini sur Mirror. Chaque en-tête peut avoir une longueur maximale de 1 024 octets et ne peut contenir que les caractères 0-9, a-z, A-Z et le trait d'union (-). Vous pouvez spécifier jusqu'à 10 en-têtes.

Syntaxe Sets

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

Propriétés Sets

Nom de la propriété

Type

Obligatoire

Mise à jour autorisée

Description

Contrainte

Value

String

Oui

Non

Définit la valeur de l'en-tête sur un maximum de 1 024 octets, en excluant \r\n.

Ce paramètre s'applique uniquement lorsque RedirectType est défini sur Mirror.

Key

String

Oui

Non

Définit la clé de l'en-tête sur un maximum de 1 024 octets. Le jeu de caractères est identique à celui de Pass.

Ce paramètre s'applique uniquement lorsque RedirectType est défini sur Mirror.

Syntaxe ErrorDocument

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

Propriétés ErrorDocument

Nom de la propriété

Type

Obligatoire

Mise à jour autorisée

Description

Contrainte

Key

String

Oui

Non

Page d'erreur par défaut.

Si vous spécifiez une page d'erreur, OSS renvoie cette page d'erreur lorsque l'objet demandé n'existe pas.

HttpStatus

String

Non

Non

Code d'état HTTP pour la page d'erreur.

Valeurs possibles : 200, 404 (par défaut).

Syntaxe ServerSideEncryptionConfiguration

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

Propriétés ServerSideEncryptionConfiguration

Nom de la propriété

Type

Obligatoire

Mise à jour autorisée

Description

Contrainte

SSEAlgorithm

String

Oui

Non

Méthode de chiffrement côté serveur par défaut.

Valeurs possibles :

  • KMS

  • AES256

KMSMasterKeyID

String

Non

Non

ID de la clé.

Requis uniquement lorsque SSEAlgorithm est défini sur KMS et que vous utilisez une clé spécifique pour le chiffrement.

Syntaxe VersioningConfiguration

"VersioningConfiguration":{
  "Status": String
}

Propriétés VersioningConfiguration

Nom de la propriété

Type

Obligatoire

Mise à jour autorisée

Description

Contrainte

Status

String

Oui

Non

État du versioning.

Valeurs possibles :

  • Enabled : active le versioning

  • Suspended : suspend le versioning

Valeurs de retour

Fn::GetAtt

  • Name : nom du compartiment. Le nom doit être unique à l'échelle mondiale.

  • DomainName : nom de domaine utilisé pour accéder au compartiment via le réseau public.

  • InternalDomainName : nom de domaine utilisé pour accéder au compartiment via le réseau interne.

  • Arn : Alibaba Cloud Resource Name (ARN).

Exemples

Scénario 1 : Créer un compartiment OSS.

Créer maintenant

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

Scénario 2 : Créer un compartiment OSS, activer l'accélération CDN, configurer la résolution de nom de domaine et optimiser les stratégies de distribution de fichiers pour prendre en charge l'accès global et des règles de mise en cache personnalisées.

Créer maintenant

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

Scénario 3 : Créer une instance ECS et un compartiment OSS, installer une application et mettre en œuvre des services de conversion texte-image et d'amélioration de portrait.

Créer maintenant

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

Modèles publics contenant cette ressource.