Tous les produits
Search
Centre de documentation

Resource Orchestration Service:ALIYUN::FC::Function

Dernière mise à jour :Aug 12, 2026

ALIYUN::FC::Function crée une fonction dans Function Compute. Les fonctions appartiennent à un service et partagent ses attributs, tels que les configurations d'autorisation et de journalisation.

Syntaxe

{
  "Type": "ALIYUN::FC::Function",
  "Properties": {
    "Code": Map,
    "FunctionName": String,
    "ServiceName": String,
    "InstanceType": String,
    "MemorySize": Integer,
    "InstanceConcurrency": Integer,
    "EnvironmentVariables": Map,
    "Initializer": String,
    "Handler": String,
    "Timeout": Integer,
    "InitializationTimeout": Integer,
    "CustomContainerConfig": Map,
    "AsyncConfiguration": Map,
    "CAPort": Integer,
    "Runtime": String,
    "Description": String,
    "Cpu": Number,
    "CustomRuntimeConfig": Map,
    "GpuMemorySize": Integer,
    "InstanceSoftConcurrency": Integer,
    "DiskSize": Integer,
    "InstanceLifecycleConfig": Map,
    "CustomDNS": Map,
    "CustomHealthCheckConfig": Map
  }
}

Propriétés

Propriété

Type

Obligatoire

Modifiable

Description

Contrainte

Initializer

String

Non

Oui

Handler d'initialisation.

Le format varie selon le langage de programmation.

InitializationTimeout

Integer

Non

Oui

Délai d'expiration de l'exécution de l'initialisateur.

Valeurs valides : de 1 à 300.

Unité : secondes.

Valeur par défaut : 3.

Function Compute interrompt l'initialisateur lorsque le délai est atteint.

Code

Map

Non

Oui

Archive ZIP du code de la fonction.

Pour plus d'informations, consultez Propriétés de Code.

InstanceType

String

Non

Oui

Type d'instance de la fonction.

Valeurs valides :

  • e1 : instance élastique

  • c1 : instance performante

  • fc.gpu.tesla.1 : instance accélérée par GPU avec des GPU de la série Tesla

  • fc.gpu.ampere.1 : instance accélérée par GPU avec des GPU de la série Ampere

  • fc.gpu.ada.1 : instance accélérée par GPU avec des GPU de la série Ada

  • g1 : instance accélérée par GPU avec des GPU de la série Tesla

Valeur par défaut : e1.

Description

String

Non

Oui

Description de la fonction.

Aucune.

ServiceName

String

Oui

Non

Nom du service Function Compute.

De 1 à 128 caractères.

MemorySize

Integer

Non

Oui

Taille de la mémoire de la fonction.

Valeurs valides :

  • Si InstanceType a la valeur e1 : multiples de 64 compris entre 128 et 3072.

  • Si InstanceType a la valeur c1 : 4096, 8192, 16384 et 32768.

  • Si InstanceType a la valeur fc.gpu.tesla.1 : multiples de 64 compris entre 128 et X. X se calcule selon la formule suivante : X = mémoire GPU (Go) × 2048.

  • Si InstanceType a la valeur fc.gpu.ada.1 : 65536. 65536 Mo équivalent à 64 Go.

Unité : Mo.

Pour plus d'informations, consultez Types d'instances et modes d'utilisation.

InstanceConcurrency

Integer

Non

Oui

Valeur de concurrence de l'instance.

Valeurs valides : de 1 à 100.

EnvironmentVariables

Map

Non

Oui

Variables d'environnement de la fonction.

Aucune.

Handler

String

Oui

Oui

Handler de la fonction.

Exemple : définir Handler sur index.handler pour une fonction Python signifie que le fichier est index.py et que la fonction handler est handler. Le format varie selon le langage de programmation.

Timeout

Integer

Non

Oui

Délai d'expiration de l'exécution de la fonction.

Valeurs valides : de 1 à 600.

Valeur par défaut : 3.

Unité : secondes.

Function Compute interrompt l'exécution lorsque le délai est atteint.

Runtime

String

Oui

Oui

Environnement d'exécution de la fonction.

Valeurs valides : nodejs6, nodejs8, nodejs10, nodejs12, python3, java8, custom et custom-container. Pour plus d'informations, consultez Environnements d'exécution pris en charge par Function Compute.

FunctionName

String

Oui

Non

Nom de la fonction.

De 1 à 128 caractères. Les lettres, chiffres, traits de soulignement (_) et tirets (-) sont autorisés. Doit commencer par une lettre ou un trait de soulignement (_).

CustomContainerConfig

Map

Non

Oui

Configuration de l'environnement d'exécution Custom Container. S'applique lorsque Runtime a la valeur custom-container, permettant l'invocation de la fonction avec une image de conteneur personnalisée.

Pour plus d'informations, consultez Propriétés de CustomContainerConfig.

CAPort

Integer

Non

Oui

Port d'écoute du serveur HTTP personnalisé.

Valeur par défaut : 9000.

Remarque

S'applique lorsque Runtime a la valeur custom ou custom-container.

AsyncConfiguration

Map

Non

Oui

Configuration de l'invocation asynchrone.

Pour plus d'informations, consultez Propriétés d'AsyncConfiguration.

Cpu

Number

Non

Oui

Nombre de vCPU de la fonction.

Aucune.

CustomRuntimeConfig

Map

Non

Oui

Configuration de l'environnement d'exécution personnalisé.

Aucune.

GpuMemorySize

Integer

Non

Oui

Taille de la mémoire GPU de la fonction.

Multiples de 1024. Unité : Mo.

InstanceSoftConcurrency

Integer

Non

Oui

Seuil de concurrence souple pour une mise à l'échelle progressive des instances.

Lorsque la concurrence des instances dépasse cette valeur souple, une mise à l'échelle ascendante se déclenche. Définissez une valeur appropriée pour préchauffer les instances dont le démarrage est long.

La valeur de InstanceSoftConcurrency doit être inférieure ou égale à celle de InstanceConcurrency.

DiskSize

Integer

Non

Oui

Taille du disque de la fonction.

Unité : Mo.

Valeurs valides : 512 et 10240.

InstanceLifecycleConfig

Map

Non

Oui

Configuration du cycle de vie de l'instance.

Pour plus d'informations, consultez Propriétés d'InstanceLifecycleConfig.

CustomDNS

Map

Non

Oui

Configuration DNS personnalisée.

Pour plus d'informations, consultez Propriétés de CustomDNS.

CustomHealthCheckConfig

Map

Non

Oui

Configuration de la vérification d'état pour les environnements d'exécution custom et custom-container.

Pour plus d'informations, consultez Propriétés de CustomHealthCheckConfig.

Syntaxe de Code

"Code": {
  "OssBucketName": String,
  "OssObjectName": String,
  "ZipFile": String,
  "SourceCode": String
}

Propriétés de Code

Propriété

Type

Obligatoire

Modifiable

Description

Contrainte

OssBucketName

String

Non

Oui

Bucket OSS contenant l'archive ZIP du code de la fonction.

Aucune.

OssObjectName

String

Non

Oui

Nom de l'objet de l'archive ZIP dans OSS.

Aucune.

ZipFile

String

Non

Oui

Contenu encodé en Base64 de l'archive ZIP.

Aucune.

SourceCode

String

Non

Oui

Code source de la fonction.

Jusqu'à 4 096 caractères. Prend en charge Node.js, PHP et Python.

ROS écrit cette valeur dans un fichier encodé en UTF-8 nommé index.

Ordre de priorité (du plus élevé au plus bas) : ZipFile, SourceCode, OssBucketName, OssObjectName.

Syntaxe de CustomContainerConfig

"CustomContainerConfig": {
  "Command": String,
  "Args": String,
  "Image": String,
  "AccelerationType": String,
  "InstanceId": String,
  "WebServerMode": Boolean
}

Propriétés de CustomContainerConfig

Propriété

Type

Obligatoire

Modifiable

Description

Contrainte

Command

String

Non

Oui

Commande de démarrage du conteneur.

Exemple : ["/code/myserver"].

Args

String

Non

Oui

Paramètres de démarrage du conteneur.

Exemple : ["-arg1", "value1"].

Image

String

Oui

Oui

URL de l'image du conteneur.

Exemple : registry-vpc.cn-hangzhou.aliyuncs.com/fc-demo/helloworld:v1beta1.

AccelerationType

String

Non

Oui

Indique s'il faut activer l'accélération d'image.

Valeurs valides :

  • Default : active l'accélération d'image.

  • None (par défaut) : désactive l'accélération d'image.

InstanceId

String

Non

Oui

ID de l'instance Container Registry Enterprise Edition.

Obligatoire lors de l'utilisation d'une instance Container Registry Enterprise Edition. L'adresse IP résolue par défaut doit être une adresse IP VPC où réside Container Registry.

Remarque

Vous ne pouvez pas utiliser Alibaba Cloud DNS PrivateZone pour définir la résolution de nom de domaine.

WebServerMode

Boolean

Non

Oui

Indique s'il faut utiliser le mode serveur web pour les images de conteneur.

Valeurs valides :

  • true (par défaut) : exécute un serveur web dans le conteneur pour écouter les ports et traiter les requêtes.

  • false : n'utilise pas le mode serveur web. Le conteneur doit se terminer activement après l'exécution avec le code de sortie 0.

Syntaxe d'AsyncConfiguration

"AsyncConfiguration": {
  "Destination": Map
  "MaxAsyncRetryAttempts": Integer,
  "MaxAsyncEventAgeInSeconds": Integer,
  "StatefulInvocation": Boolean
}

Propriétés d'AsyncConfiguration

Propriété

Type

Obligatoire

Modifiable

Description

Contrainte

Destination

Map

Non

Non

Destination de l'invocation asynchrone.

Pour plus d'informations, consultez Propriétés de Destination.

MaxAsyncRetryAttempts

Integer

Non

Oui

Nombre maximal de tentatives.

Aucune.

MaxAsyncEventAgeInSeconds

Integer

Non

Oui

Durée de validité maximale du message.

Aucune.

StatefulInvocation

Boolean

Non

Oui

Indique s'il faut activer les invocations asynchrones avec état.

Valeurs valides :

  • true

  • false (par défaut)

Pour plus d'informations, consultez Vue d'ensemble.

Syntaxe de Destination

"Destination": {
  "OnSuccess": String,
  "OnFailure": String
}

Propriétés de Destination

Propriété

Type

Obligatoire

Modifiable

Description

Contrainte

OnSuccess

String

Non

Oui

Destination invoquée lors de l'exécution réussie de la fonction.

Aucune.

OnFailure

String

Non

Oui

Destination invoquée lors de l'échec de l'exécution de la fonction dû à une erreur système ou à une erreur de fonction intégrée.

Aucune.

Syntaxe d'InstanceLifecycleConfig

"InstanceLifecycleConfig":{
  "PreFreeze": Map,
  "PreStop": Map
}

Propriétés d'InstanceLifecycleConfig

Propriété

Type

Obligatoire

Modifiable

Description

Contrainte

PreFreeze

Map

Non

Oui

Configuration du hook PreFreeze.

Pour plus d'informations, consultez Propriétés de PreFreeze.

PreStop

Map

Non

Oui

Configuration du hook PreStop.

Pour plus d'informations, consultez Propriétés de PreStop.

Syntaxe de PreStop

"PreStop":{
  "Handler": String,
  "Timeout": Integer
}

Propriétés de PreStop

Propriété

Type

Obligatoire

Modifiable

Description

Contrainte

Handler

String

Non

Oui

Handler de la fonction.

Pour plus d'informations, consultez Informations de base.

Timeout

Integer

Non

Oui

Délai d'expiration de l'exécution.

Unité : secondes.

Syntaxe de PreFreeze

"PreFreeze":{
  "Handler": String,
  "Timeout": Integer
}

Propriétés de PreFreeze

Propriété

Type

Obligatoire

Modifiable

Description

Contrainte

Handler

String

Non

Oui

Handler de la fonction.

Pour plus d'informations, consultez Informations de base.

Timeout

Integer

Non

Oui

Délai d'expiration de l'exécution.

Unité : secondes.

Syntaxe de CustomHealthCheckConfig

"CustomHealthCheckConfig":{
  "SuccessThreshold": Integer,
  "InitialDelaySeconds": Integer,
  "PeriodSeconds": Integer,
  "HttpGetUrl": String,
  "TimeoutSeconds": Integer,
  "FailureThreshold": Integer
}

Propriétés de CustomHealthCheckConfig

Propriété

Type

Obligatoire

Modifiable

Description

Contrainte

SuccessThreshold

Integer

Non

Oui

Nombre de vérifications d'état réussies consécutives requises pour déclarer un conteneur sain.

Valeurs valides : de 1 à 120.

Valeur par défaut : 1.

InitialDelaySeconds

Integer

Non

Oui

Délai avant la première vérification d'état après le démarrage du conteneur.

Valeurs valides : de 0 à 120.

Valeur par défaut : 0.

PeriodSeconds

Integer

Non

Oui

Intervalle de vérification d'état.

Valeurs valides : de 1 à 120.

Valeur par défaut : 3.

HttpGetUrl

String

Non

Oui

URL de vérification d'état personnalisée du conteneur.

L'URL peut contenir jusqu'à 2 048 caractères.

TimeoutSeconds

Integer

Non

Oui

Délai d'expiration d'une vérification d'état.

Valeurs valides : de 1 à 3.

Valeur par défaut : 1.

FailureThreshold

Integer

Non

Oui

Nombre de vérifications d'état échouées consécutives requises pour déclarer un conteneur non sain.

Valeurs valides : de 1 à 120.

Valeur par défaut : 3.

Syntaxe de CustomRuntimeConfig

"CustomRuntimeConfig":{
  "Args": List,
  "Command": List,
}

Propriétés de CustomRuntimeConfig

Propriété

Type

Obligatoire

Modifiable

Description

Contrainte

Args

List

Non

Oui

Paramètres de la commande de démarrage.

Exemple :

["-arg1", "value1"]

Command

List

Non

Oui

Commande de démarrage.

Exemple :

["/code/myserver"]

Syntaxe de CustomDNS

"CustomDNS":{
  "NameServers": List,
  "DnsOptions": List,
  "Searches": List
}

Propriétés de CustomDNS

Propriété

Type

Obligatoire

Modifiable

Description

Contrainte

NameServers

List

Non

Oui

Adresses IP des serveurs DNS.

Aucune.

DnsOptions

List

Non

Oui

Éléments de configuration du fichier resolv.conf.

Aucune.

Searches

List

Non

Oui

Domaines de recherche DNS.

Aucune.

Syntaxe de DnsOptions

"DnsOptions":{
  "Value": String,
  "Name": String,
}

Propriétés de DnsOptions

Propriété

Type

Obligatoire

Modifiable

Description

Contrainte

Value

String

Non

Oui

Valeur de l'élément de configuration.

Exemple : 2.

Name

String

Oui

Oui

Nom de l'élément de configuration.

Exemple : ndots.

Valeurs de retour

Fn::GetAtt

  • FunctionId : ID unique de la fonction généré par le système.

  • ServiceName : nom du service dans Function Compute.

  • ARN : Alibaba Cloud Resource Name (ARN) de la fonction.

  • FunctionName : nom de la fonction.

  • ServiceId : ID du service Function Compute.

Exemples

ROSTemplateFormatVersion: '2015-09-01'
Parameters:
  ServiceName:
    Type: String
    Default: test-service
  FunctionName:
    Type: String
    Default: test-function
  Timeout:
    Type: Number
    Default: 60
  X:
    Type: Number
  Y:
    Type: Number
Resources:
  Service:
    Type: ALIYUN::FC::Service
    Properties:
      ServiceName:
        Ref: ServiceName
  Function:
    Type: ALIYUN::FC::Function
    Properties:
      ServiceName:
        Fn::GetAtt: [Service, ServiceName]
      FunctionName: 
        Ref: FunctionName
      Handler: index.handler
      Runtime: python3.10
      Code:
        SourceCode: |
          import time
          import json
          import requests
          import logging
          def handler(event, context):
              logger = logging.getLogger()
              event = json.loads(event)
              logger.info('receive request: %s', event)
              res_props = event['ResourceProperties']
              result = dict(
                  RequestId=event['RequestId'],
                  LogicalResourceId=event['LogicalResourceId'],
                  StackId=event['StackId'],
                  Status='SUCCESS',
                  PhysicalResourceId='dummy'
              )
              if event['RequestType'] != 'Delete':
                  result['Data'] = dict(Z=res_props['X'] + res_props['Y'])
              headers = {
                  'Content-type': 'application/json',
                  'Accept': 'application/json',
                  'Date': time.strftime('%a, %d %b %Y %X GMT', time.gmtime())
              }
            
              resp = requests.post(event['ResponseURL'], json=result, headers=headers)
              resp_content = resp.json()
              logger.info('response: %s', resp_content)

  SimpleTest:
    Type: Custom::Add
    Properties:
      ServiceToken:
        Fn::GetAtt: [Function, ARN]
      Parameters:
        X:
          Ref: X
        Y:
          Ref: Y
      Timeout:
        Ref: Timeout
Outputs:
  Result:
    Value:
      Fn::GetAtt: [SimpleTest, Z]
{
  "ROSTemplateFormatVersion": "2015-09-01",
  "Parameters": {
    "ServiceName": {
      "Type": "String",
      "Default": "test-service"
    },
    "FunctionName": {
      "Type": "String",
      "Default": "test-function"
    },
    "Timeout": {
      "Type": "Number",
      "Default": 60
    },
    "X": {
      "Type": "Number"
    },
    "Y": {
      "Type": "Number"
    }
  },
  "Resources": {
    "Service": {
      "Type": "ALIYUN::FC::Service",
      "Properties": {
        "ServiceName": {
          "Ref": "ServiceName"
        }
      }
    },
    "Function": {
      "Type": "ALIYUN::FC::Function",
      "Properties": {
        "ServiceName": {
          "Fn::GetAtt": [
            "Service",
            "ServiceName"
          ]
        },
        "FunctionName": {
          "Ref": "FunctionName"
        },
        "Handler": "index.handler",
        "Runtime": "python3.10",
        "Code": {
          "SourceCode": "import time\nimport json\nimport requests\nimport logging\ndef handler(event, context):\n    logger = logging.getLogger()\n    event = json.loads(event)\n    logger.info('receive request: %s', event)\n    res_props = event['ResourceProperties']\n    result = dict(\n        RequestId=event['RequestId'],\n        LogicalResourceId=event['LogicalResourceId'],\n        StackId=event['StackId'],\n        Status='SUCCESS',\n        PhysicalResourceId='dummy'\n    )\n    if event['RequestType'] != 'Delete':\n        result['Data'] = dict(Z=res_props['X'] + res_props['Y'])\n    headers = {\n        'Content-type': 'application/json',\n        'Accept': 'application/json',\n        'Date': time.strftime('%a, %d %b %Y %X GMT', time.gmtime())\n    }\n  \n    resp = requests.post(event['ResponseURL'], json=result, headers=headers)\n    resp_content = resp.json()\n    logger.info('response: %s', resp_content)\n"
        }
      }
    },
    "SimpleTest": {
      "Type": "Custom::Add",
      "Properties": {
        "ServiceToken": {
          "Fn::GetAtt": [
            "Function",
            "ARN"
          ]
        },
        "Parameters": {
          "X": {
            "Ref": "X"
          },
          "Y": {
            "Ref": "Y"
          }
        },
        "Timeout": {
          "Ref": "Timeout"
        }
      }
    }
  },
  "Outputs": {
    "Result": {
      "Value": {
        "Fn::GetAtt": [
          "SimpleTest",
          "Z"
        ]
      }
    }
  }
}

Pour consulter d'autres exemples, visitez function-invoker.yml. Ces exemples utilisent les types de ressources suivants :

  • ALIYUN::FC::Service : crée un service dans Function Compute.

  • ALIYUN::FC::Function : crée une fonction.

  • ALIYUN::FC::FunctionInvoker : invoque une fonction.

  • ALIYUN::FC::Trigger : déclenche une fonction.

  • ALIYUN::FC::Version : publie une version de service.

  • ALIYUN::FC::Alias : crée un alias.

  • ALIYUN::FC::ProvisionConfig : crée une instance provisionnée.