Funções de Custom Container dependem de recursos que o Function Compute reserva em seu nome, incluindo imagens em cache do Alibaba Cloud Container Registry (ACR) para reduzir a latência de cold start. Como o cache da imagem ocorre de forma assíncrona em segundo plano, a função pode não estar pronta para processar invocações imediatamente após a criação ou atualização. Os estados da função indicam exatamente quando ela está pronta para invocação.
Estados da função
O Function Compute atribui um dos seguintes estados a cada função de Custom Container.
|
Estado |
Invocável |
Descrição |
|
Pending |
Não |
Estado inicial após a criação da função. O Function Compute reserva recursos e armazena a imagem em cache. A transição para Active ocorre quando a imagem fica pronta. |
|
Active |
Sim |
Reserva de recursos concluída. A função processa invocações normalmente. |
|
Failed |
Não |
Erro durante o preparo dos recursos ou acesso à imagem. Consulte Estado Failed para ver as etapas de recuperação. |
|
Inactive |
Não |
A função permaneceu ociosa por tempo suficiente para o Function Compute liberar os recursos em cache. Reimplante ou acione a função para retorná-la ao estado Pending. Se o preparo dos recursos for bem-sucedido, a função volta para Active; caso contrário, permanece Inactive. |
Estado Failed
Uma função entra no estado Failed em duas situações:
Falha no preparo de recursos durante a criação ou atualização: Não é possível invocar a função devido a um problema ocorrido durante o preparo dos recursos.
Imagem original inacessível: O Function Compute armazena imagens em cache para acelerar cold starts, mas a imagem original no ACR deve permanecer acessível durante as invocações. Se a imagem for excluída ou se a tag for sobrescrita com um digest diferente, a função entrará no estado Failed. Atualize a função com informações válidas da imagem e reimplante-a.
O Function Compute registra tanto a tag quanto o digest da versão da imagem selecionada durante a criação ou atualização da função. Se esse digest for posteriormente sobrescrito no ACR, a invocação da função falhará. Garanta que as tags das imagens não sejam sobrescritas após a implantação. Em caso de sobrescrita, reimplante a função utilizando as informações mais recentes da imagem.
Estados de atualização
Durante uma atualização de função em andamento, o campo LastUpdateStatus rastreia a atualização separadamente do estado principal da função.
|
** |
Descrição |
Roteamento de invocação |
|
|
O Function Compute prepara recursos para a atualização. |
Direcionado para o código anterior à atualização |
|
|
Atualização concluída. |
Direcionado para o código atualizado |
|
|
Falha no preparo de recursos para a atualização. |
Direcionado para o código anterior à atualização |
Verifique o estado antes da invocação
Chame a operação GetFunction para obter o estado e o digest da imagem de uma função. Ao utilizar um SDK ou Serverless Devs para criar ou atualizar uma função de Custom Container, chame a operação GetFunction para verificar o estado da função antes de invocá-la.
Funções recém-criadas: confirme se o estado é
Active. Funções em outros estados não podem ser invocadas.Funções atualizadas: confirme se
LastUpdateStatuséSuccessful.
Diagramas de estado
A saída abaixo mostra o resultado de s3 info para uma função recém-criada no estado Pending (o Function Compute reserva recursos e armazena a imagem em 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
A saída a seguir exibe o resultado de s3 info para uma função em processo de atualização (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
O exemplo abaixo apresenta o resultado de s3 info após uma atualização bem-sucedida. Quando lastUpdateStatus é Successful e state é Active, a atualização da função foi concluída e ela encontra-se no estado ativo.
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