Todos os produtos
Search
Central de documentação

Function Compute:Handlers Python

Última atualização: Jun 29, 2026

Use um handler Python para processar eventos recebidos e executar sua lógica de negócios. Este tópico descreve o conceito e a estrutura dos handlers Python e fornece exemplos.

O que é um handler?

O handler de uma função do FC é o método no código da função que processa requisições. Quando você invoca sua função do FC, o Function Compute executa o handler fornecido para processar a requisição. Configure o handler na configuração Handler no console do Function Compute.

Para funções Python do FC, o handler segue o formato filename.method_name. Por exemplo, se o arquivo for main.py e o método for handler, o handler será main.handler.

Para obter mais informações sobre como criar funções do FC, consulte Criar uma função acionada por evento.

As configurações do handler devem obedecer às especificações do Function Compute. Essas especificações variam conforme o tipo de handler.

Assinatura do handler

O código a seguir mostra uma assinatura básica de handler:

def handler(event, context):
    return 'hello world'

A assinatura do handler inclui os seguintes parâmetros:

  • handler: Nome do método. Deve corresponder exatamente ao handler configurado no console do Function Compute pela configuração Handler. Por exemplo, se você definir o handler de uma função do FC como main.handler, o Function Compute carregará o método handler definido em main.py e executará a função handler.

  • event: Parâmetro que contém os dados passados para a função. No runtime Python 2.7, é uma string. Nos runtimes Python 3, são bytes.

  • context: Objeto que fornece informações do FC sobre a invocação.

Nota

Para usar triggers HTTP ou nomes de domínio personalizados no acesso às funções, obtenha a struct da requisição antes de definir as respostas HTTP. Para mais informações, consulte Usar um trigger HTTP para invocar uma função.

Exemplo 1: Analisar um evento formatado em JSON

Código de exemplo

O Function Compute transmite o conteúdo de eventos formatados em JSON diretamente para sua função. Analise esse conteúdo no seu código. O exemplo abaixo demonstra como analisar um evento formatado em JSON.

# -*- coding: utf-8 -*-
import json
def handler(event, context):
    evt = json.loads(event)
    return evt['key']

Pré-requisitos

Criar uma função acionada por evento

Procedimento

  1. Faça login no console do Function Compute. No painel de navegação à esquerda, escolha Function Management > Functions.

  2. Na barra de navegação superior, selecione uma região. Na página Functions, clique em na função de destino.

  3. Na página de detalhes da função, clique em na aba Code. Insira o código de exemplo no editor de código e clique em Deploy.

    Importante

    No código de exemplo, o handler corresponde ao método handler em index.py. Se o handler da sua função tiver uma configuração diferente, atualize o nome do arquivo e do método adequadamente.

  4. Na aba Code, clique em no ícone de seta down ao lado de Test Function e selecione Configure Test Parameters. Insira os parâmetros de exemplo a seguir e clique em OK.

    {
      "key": "value"
    }
  5. Clique em Test Function.

    Após a execução da função, a resposta esperada é value.

Exemplo 2: Acessar recursos do OSS com segurança

Código de exemplo para Python 3.12

O runtime Python 3.12 removeu o campo de credenciais do contexto. Como alternativa, use as variáveis de ambiente ALIBABA_CLOUD_ACCESS_KEY_ID, ALIBABA_CLOUD_ACCESS_KEY_SECRET e ALIBABA_CLOUD_SECURITY_TOKEN para acessar o Object Storage Service (OSS). O código abaixo ilustra essa abordagem. Para mais informações, consulte Criar uma AccessKey e AssumeRole.

import json
import oss2
import os

def handler(event, context):
    evt = json.loads(event)
    auth = oss2.StsAuth(os.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), os.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"), os.getenv("ALIBABA_CLOUD_SECURITY_TOKEN"))
    bucket = oss2.Bucket(auth, evt['endpoint'], evt['bucket'])
    bucket.put_object(evt['objectName'], evt['message'])
    return 'success'

Código de exemplo para Python 3.10

Use as credenciais fornecidas pelo Function Compute para acessar o Object Storage Service (OSS). Veja um exemplo no código a seguir.

import json
import oss2

def handler(event, context):
    evt = json.loads(event)
    creds = context.credentials
    # do not forget security_token
    auth = oss2.StsAuth(creds.access_key_id, creds.access_key_secret, creds.security_token)
    bucket = oss2.Bucket(auth, evt['endpoint'], evt['bucket'])
    bucket.put_object(evt['objectName'], evt['message'])
    return 'success'

No código de exemplo, creds = context.credentials recupera o par de AccessKey temporário do objeto context. Essa prática evita a codificação fixa de informações sensíveis, como segredos, diretamente no código.

Importante

Certifique-se de que a função atribuída ao serviço tenha permissões para acessar o OSS. Acesse o console do Resource Access Management (RAM) para conceder as permissões necessárias à função.

Pré-requisitos

Criar uma função acionada por evento

Procedimento

  1. Faça login no console do Function Compute. No painel de navegação à esquerda, escolha Function Management > Functions.

  2. Na barra de navegação superior, selecione uma região. Na página Functions, clique em na função de destino.

  3. Na página de detalhes da função, clique em na aba Code. Insira o código de exemplo no editor de código e clique em Deploy.

    Importante

    No código de exemplo, o handler corresponde ao método handler em index.py. Se o handler da sua função tiver uma configuração diferente, atualize o nome do arquivo e do método adequadamente.

  4. Na aba Code, clique em no ícone de seta down ao lado de Test Function e selecione Configure Test Parameters. Insira os parâmetros de exemplo a seguir e clique em OK.

    {
      "endpoint": "http://oss-cn-shenzhen-internal.aliyuncs.com",
      "bucket": "oss-********",
      "objectName": "oss-test-object",
      "message": "oss-test-content"
    }
  5. Clique em Test Function.

    Após a execução da função, a resposta esperada é success.

Exemplo 3: Chamar um comando externo

Sua função Python também pode criar um processo fork para chamar comandos externos. Por exemplo, use o módulo subprocess para executar o comando Linux ls -l, que lista os arquivos no diretório atual. Confira o exemplo no código abaixo.

import os
import subprocess

def handler(event, context):
    ret = subprocess.check_output(['ls', "-l"])
    return ret

Exemplo 4: Invocar uma função com um trigger HTTP

Código de exemplo

Para obter informações sobre os formatos de payload de requisição e resposta em invocações de trigger HTTP, consulte Usar um trigger HTTP para invocar uma função.

# -*- coding: utf-8 -*-
import logging
import json
import base64

def handler(event, context):
    logger = logging.getLogger()
    logger.info("receive event: %s", event)

    try:
        event_json = json.loads(event)
    except:
        return "The request did not come from an HTTP Trigger because the event is not a json string, event: {}".format(event)
    
    if "body" not in event_json:
        return "The request did not come from an HTTP Trigger because the event does not include the 'body' field, event: {}".format(event)
    req_body = event_json['body']
    if 'isBase64Encoded' in event_json and event_json['isBase64Encoded']:
        req_body = base64.b64decode(event_json['body']).decode("utf-8")

    return {
        'statusCode': 200,
        'headers': {'Content-Type': 'text/plain'},
        'isBase64Encoded': False,
        'body': req_body
    }

Pré-requisitos

Este exemplo requer uma função acionada por HTTP, configurada com um runtime Python e baseada no código de exemplo. Para mais informações, consulte Criar uma função acionada por evento e Configurar um trigger HTTP.

Procedimento

  1. Faça login no console do Function Compute. No painel de navegação à esquerda, escolha Function Management > Functions.

  2. Na barra de navegação superior, selecione uma região. Na página Functions, clique em na função de destino.

  3. Na página de detalhes da função, clique em na aba Triggers para localizar o endpoint público do trigger HTTP.

  4. Execute o seguinte comando curl para invocar a função.

    curl -i "https://test-python-ipgrwr****.cn-shanghai.fcapp.run" -d 'Hello fc3.0'

    No comando anterior, https://test-python-ipgrwr****.cn-shanghai.fcapp.run é o endpoint público do trigger HTTP.

    Importante
    • Se o Authentication Method do trigger HTTP estiver definido como No Authentication, use ferramentas como Postman ou curl para invocar a função diretamente. Para mais detalhes, consulte o Procedimento nesta seção.

    • Se o Authentication Method estiver definido como Signature Authentication, JWT Authentication ou Bearer Authentication, use o método de autenticação correspondente para invocar a função. Para mais informações, consulte Autenticação e autorização.

    A seguinte resposta é retornada:

    HTTP/1.1 200 OK
    Content-Disposition: attachment
    Content-Length: 12
    Content-Type: application/json
    X-Fc-Request-Id: 1-64f7449a-127fbe39cd7681596e33ebad
    Date: Tue, 05 Sep 2023 15:09:14 GMT
    
    Hello fc3.0

Possíveis erros

O código de exemplo desta seção foi projetado para invocação por um trigger HTTP ou por um nome de domínio personalizado. Se você invocar a função por meio de uma chamada de api e os parâmetros de teste não estiverem em conformidade com o formato de requisição do trigger HTTP, ocorrerá um erro.

Por exemplo, no console do Function Compute, se você definir o evento de teste como "Hello, FC!" e clicar em Test Function, a função retornará a seguinte resposta.

The request did not come from an HTTP Trigger, event: "Hello, FC!"