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 :
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 :
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 : |
|
Args |
String |
Non |
Oui |
Paramètres de démarrage du conteneur. |
Exemple : |
|
Image |
String |
Oui |
Oui |
URL de l'image du conteneur. |
Exemple : |
|
AccelerationType |
String |
Non |
Oui |
Indique s'il faut activer l'accélération d'image. |
Valeurs valides :
|
|
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 :
|
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 :
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 :
|
|
Command |
List |
Non |
Oui |
Commande de démarrage. |
Exemple :
|
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 |
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.