Les fonctions Custom Container dépendent des ressources que Function Compute réserve en votre nom, notamment des images mises en cache depuis Alibaba Cloud Container Registry (ACR) afin de réduire la latence au démarrage à froid. La mise en cache des images s'effectuant de manière asynchrone en arrière-plan, une fonction peut ne pas être prête à traiter les invocations immédiatement après sa création ou sa mise à jour. Les états de fonction vous indiquent précisément quand une fonction est prête à être invoquée.
États de fonction
Function Compute attribue à chaque fonction Custom Container l'un des états suivants.
| État | Invocable | Description |
|---|---|---|
| Pending | Non | État initial après la création d'une fonction. Function Compute réserve les ressources et met l'image en cache. L'état passe à Active lorsque l'image est prête. |
| Active | Oui | La réservation des ressources est terminée. La fonction traite les invocations normalement. |
| Failed | Non | Une erreur s'est produite lors de la préparation des ressources ou de l'accès à l'image. Consultez la section État Failed pour connaître les étapes de récupération. |
| Inactive | Non | La fonction est restée inactive suffisamment longtemps pour que Function Compute libère ses ressources mises en cache. Redéployez ou déclenchez la fonction pour la faire revenir à l'état Pending. Si la préparation des ressources réussit, la fonction revient à l'état Active ; sinon, elle reste Inactive. |
État Failed
Une fonction passe à l'état Failed dans deux situations :
Échec de la préparation des ressources lors de la création ou de la mise à jour : la fonction ne peut pas être invoquée car un problème est survenu lors de la préparation des ressources.
L'image d'origine n'est plus accessible : Function Compute met les images en cache pour accélérer les démarrages à froid, mais l'image d'origine dans ACR doit rester accessible pendant les invocations. Si l'image est supprimée ou si le tag est écrasé avec un digest différent, la fonction passe à l'état Failed. Mettez à jour la fonction avec des informations d'image valides et redéployez-la.
Function Compute enregistre à la fois le tag et le digest de la version de l'image que vous sélectionnez lors de la création ou de la mise à jour d'une fonction. Si ce digest est ultérieurement écrasé dans ACR, l'invocation de la fonction échoue. Assurez-vous que les tags d'image ne sont pas écrasés après le déploiement. En cas d'écrasement, redéployez la fonction en utilisant les informations d'image les plus récentes.
États de mise à jour
Pendant qu'une mise à jour de fonction est en cours, le champ LastUpdateStatus suit la mise à jour séparément de l'état principal de la fonction.
**LastUpdateStatus** |
Description | Routage des invocations |
|---|---|---|
InProgress |
Function Compute prépare les ressources pour la mise à jour. | Dirigées vers le code avant mise à jour |
Successful |
La mise à jour est terminée. | Dirigées vers le code mis à jour |
Failed |
La préparation des ressources pour la mise à jour a échoué. | Dirigées vers le code avant mise à jour |
Vérifier l'état avant l'invocation
Appelez l'opération GetFunction pour obtenir l'état et le digest de l'image d'une fonction. Si vous utilisez un SDK ou Serverless Devs pour créer ou mettre à jour une fonction Custom Container, appelez l'opération GetFunction afin de vérifier l'état de la fonction avant de l'invoquer.
Fonctions nouvellement créées : confirmez que l'état est
Active. Les fonctions dans d'autres états ne peuvent pas être invoquées.Fonctions mises à jour : confirmez que
LastUpdateStatusestSuccessful.
Diagrammes d'état
La sortie suivante montre le résultat de s3 info pour une fonction nouvellement créée à l'état Pending (Function Compute réserve les ressources et met l'image en cache).
s3 info
Steps for [info] of [hello-world-app]
====================
✔ [hello_world] completed (3.68s)
Result for [info] of [hello-world-app]
====================
hello_world:
region: us-east-1
codeChecksum:
codeSize: 0
cpu: 0.5
createdTime: 2023-10-27T06:56:00Z
customContainerConfig:
image: registry.us-east-1.aliyuncs.com/fxxx2/flask_xxx_ask_v001
resolvedImageUri: registry.us-east-1.aliyuncs.com/fc-dxxx_ask@shaxxx9e19867xxx23c4xxx78ffxxx4116cd9xxx9cde7370b43dd889
description: hello world by serverless devs
diskSize: 512
functionArn: acs:fc:us-east-1:143*********149:functions/start-python-xxx:3
functionId: b24c69ed-0xxx-xxx-5ff3f51c4190
functionName: start-pxxx_xilixxx_est3
handler: handler
instanceConcurrency: 1
internetAccess: true
lastModifiedTime: 2023-10-27T06:56:00Z
memorySize: 512
role:
runtime: custom-container
state: Pending
stateReason: The function is being created.
stateReasonCode: Creating
timeout: 60
A complete log of this run can be found in: /home/admin/.s/logs/1027145606
La sortie suivante montre le résultat de s3 info pour une fonction en cours de mise à jour (LastUpdateStatus : InProgress).
admin ~/workspace/xxx/demo-3 s3 info
Steps for [ixxx-app]
========================
✔ [hello_world] completed (4.97s)
Result for [info] of [hello-world-app]
========================
hello_world:
region: us-east-1
codeChecksum:
codeSize: 0
cpu: 0.5
createdTime: 2023-10-27T05:45:30Z
customContainerConfig:
image: registry.us-east-1.aliyuncs.comxxx k:f k_vxxx
resolvedImageUri: registry.us-east-1.aliyuncs.com/fcxxx k@sha256:f65d0acd5xxx ab9cd923f3afxxx b9exxx 2cdxxx 99d51bbae2fe0ba
description: hello world by serverless devs
diskSize: 512
functionArn: acs:fc:us-east-1:143**********149:functions/start-pxxx xilxxx
functionId: 82597d19xxx f-9581fe2429d7
functionName: start-pythonxxx t1
handler: handler
instanceConcurrency: 1
internetAccess: true
lastModifiedTime: 2023-10-27T06:52:03Z
lastUpdateStatus: InProgress
memorySize: 512
role:
runtime: custom-container
state: Active
timeout: 60
A complete log of this run can be found in: /home/admin/.s/logs/xxx5200
La sortie suivante montre le résultat de s3 info après une mise à jour réussie. Lorsque lastUpdateStatus est Successful et que state est Active, la mise à jour de la fonction est terminée et la fonction est à l'état actif.
admin ~/wc xxx mo-3 s3 info
Steps for [info] of [hello-world-app]
====================
✔ [hello_world] completed (1.32s)
Result for [info] of [hello-world-app]
====================
hello_world:
region: us-east-1
codeChecksum:
codeSize: 0
cpu: 0.5
createdTime: 2023-10-27T05:45:30Z
customContainerConfig:
image: registry.us-east-1.aliyuncs.com,xxx/flask:flask_v001
resolvedImageUri: registry.us-east-1.aliyuncs.com,xxx/mo2/flask@sha256:9614366c50xxx4bcxxxxxxxxxxxxxxxx/cae95c74f44
description: hello world by serverless dexxx
diskSize: 512
functionArn: acs:fc:us-east-1:xxx:49:functions/start-pyxxxxxxxx
functionId: 82597d19-2bc0-41c3-92f1-xxx429d7
functionName: start-pyxxx-n-xxxxxx1
handler: handler
instanceConcurrency: 1
internetAccess: true
lastModifiedTime: 2023-10-27T05:56:10Z
lastUpdateStatus: Successful
logConfig:
enableInstanceMetrics: true
enableRequestMetrics: true
logBeginRule: DefaultRegex
logstore: function-log
project: aliyun-fc xxx0908f0a5f
memorySize: 512
role:
runtime: custom-container
state: Active
timeout: 60
A complete log of this run can be found in: /home/admin/.s/logs/xxx