Todos os produtos
Search
Central de documentação

Function Compute:Context

Última atualização: Jun 29, 2026

O Function Compute passa um objeto de contexto a cada handler com o ID da solicitação, metadados da função, região e logger da invocação.

Diferenças entre runtimes

O Python 3.12 reestrutura o objeto de contexto em relação aos runtimes anteriores (3.10, 3.9 e 3.6).

Recurso

Python 3.12

Python 3.10, 3.9 e 3.6

Campo credentials

Removido. Use variáveis de ambiente.

Disponível como struct Credentials.

Struct service

Removida. Os campos log_project, log_store, qualifier e version_id migraram para FunctionMeta ou para o nível superior do contexto.

Disponível como struct ServiceMeta.

Campo logger

Disponível no objeto de contexto.

Indisponível.

Campos de FunctionMeta

6 campos: name, handler, memory, timeout, version_id e qualifier.

4 campos: name, handler, memory e timeout.

Python 3.12

Propriedades do contexto

Propriedade

Tipo

Descrição

request_id

String

Identificador único da solicitação. Registre-o para solucionar problemas.

function

FunctionMeta

Metadados da função invocada. Veja Campos de FunctionMeta.

region

String

ID da região, como cn-shanghai para China (Xangai). Consulte Endpoints.

logger

Logger

Logger da execução da função. Inicialmente None; chame context.getLogger() para obter uma instância de logging.Logger.

account_id

String

ID da conta Alibaba Cloud proprietária da função.

log_project

String

Nome do projeto do Simple Log Service associado à função.

log_store

String

Nome do Logstore do Simple Log Service associado à função.

Campos de FunctionMeta (Python 3.12)

Campo

Descrição

name

Nome da função.

handler

Ponto de entrada do handler.

memory

Memória alocada à função, em MB.

timeout

Tempo máximo de execução, em segundos.

version_id

Versão da função invocada.

qualifier

Versão ou alias especificado na invocação da função.

Migração de credenciais

Importante

O campo credentials foi removido no Python 3.12. Use variáveis de ambiente como alternativa.

Para acessar outros serviços da Alibaba Cloud, use as seguintes variáveis de ambiente:

Variável de ambiente

Descrição

ALIBABA_CLOUD_ACCESS_KEY_ID

AccessKey ID temporário.

ALIBABA_CLOUD_ACCESS_KEY_SECRET

AccessKey Secret temporário.

ALIBABA_CLOUD_SECURITY_TOKEN

Token de segurança.

Consulte configure variáveis de ambiente.

Comparação antes e depois:

# Python 3.10 and earlier -- credentials from context
def handler(event, context):
    creds = context.credentials
    access_key_id = creds.access_key_id
    access_key_secret = creds.access_key_secret
    security_token = creds.security_token

# Python 3.12 -- credentials from environment variables
import os

def handler(event, context):
    access_key_id = os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID']
    access_key_secret = os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET']
    security_token = os.environ['ALIBABA_CLOUD_SECURITY_TOKEN']

Definição da classe de contexto

# -*- coding: utf-8 -*-

import json

class FunctionMeta:
    def __init__(self, name, handler, memory, timeout, version_id, qualifier):
        self.name = name
        self.handler = handler
        self.memory = memory
        self.timeout = timeout
        self.version_id = version_id
        self.qualifier = qualifier

class FCContext:
    def __init__(self, account_id, request_id, function_meta, logger, log_project, log_store,
                 region):
        self.account_id = account_id
        self.request_id = request_id
        self.function = function_meta
        self.logger = logger
        self.log_project = log_project
        self.log_store = log_store
        self.region = region

Python 3.10, 3.9 e 3.6

Propriedades do contexto

Propriedade

Tipo

Descrição

request_id

String

Identificador único da solicitação. Registre-o para solucionar problemas.

credentials

Credentials

Credenciais temporárias obtidas pela API AssumeRole, válidas por 36 horas. Permitem acessar outros serviços da Alibaba Cloud sem incorporar um par de AccessKey. Veja Campos de Credentials e Conceder permissões ao Function Compute para acessar outros serviços da Alibaba Cloud.

function

FunctionMeta

Metadados da função invocada. Consulte Campos de FunctionMeta.

service

ServiceMeta

Metadados do serviço. Consulte Campos de ServiceMeta.

region

String

ID da região, como cn-shanghai para China (Xangai). Consulte Endpoints.

account_id

String

ID da conta Alibaba Cloud proprietária da função.

Campos de Credentials

Campo

Descrição

access_key_id

AccessKey ID temporário.

access_key_secret

AccessKey Secret temporário.

security_token

Token de segurança.

Ao atribuir uma função RAM a uma função, o Function Compute obtém credenciais temporárias pela API AssumeRole. Essas credenciais valem por 36 horas e permitem que a função acesse outros serviços da Alibaba Cloud sem um par de AccessKey incorporado.

Campos de FunctionMeta (Python 3.10, 3.9 e 3.6)

Campo

Descrição

name

Nome da função.

handler

Ponto de entrada do handler.

memory

Memória alocada à função, em MB.

timeout

Tempo máximo de execução, em segundos.

Campos de ServiceMeta

Campo

Descrição

log_project

Nome do projeto do Simple Log Service.

log_store

Nome do Logstore do Simple Log Service.

qualifier

Versão ou alias do serviço especificado na invocação da função.

version_id

Versão do serviço efetivamente invocada.

O campo qualifier representa a versão ou alias da solicitação de invocação; version_id indica a versão realmente executada. Eles diferem quando um alias resolve para uma versão específica.

Definição da classe de contexto

# -*- coding: utf-8 -*-

import json

class Credentials:
    def __init__(self, access_key_id, access_key_secret, security_token):
        self.access_key_id = access_key_id
        self.access_key_secret = access_key_secret
        self.security_token = security_token

class Tracing:
    def __init__(self, span_context, base64_baggages, jaeger_endpoint):
        self.span_context = span_context
        self.jaeger_endpoint = jaeger_endpoint
        self.span_baggages = self.parseOpenTracingBaggages(base64_baggages)

    def parseOpenTracingBaggages(self, base64_baggages):
        span_baggages = {}
        # None || '' returns false
        if base64_baggages:
            try:
                import base64
                str_baggages = base64.b64decode(base64_baggages)
                span_baggages = json.loads(str_baggages)
            except Exception as e:
                import logging
                fc_sys_logger = logging.getLogger('fc_sys_logger')
                fc_sys_logger.error('Failed to parse base64 opentracing baggages:[{}], err: {}'.format(base64_baggages, e))
        return span_baggages

class FunctionMeta:
    def __init__(self, name, handler, memory, timeout):
        self.name = name
        self.handler = handler
        self.memory = memory
        self.timeout = timeout

class FCContext:
    def __init__(self, account_id, request_id, credentials, function_meta, service_meta, region, tracing):
        self.credentials = credentials
        self.function = function_meta
        self.request_id = request_id
        self.service = service_meta
        self.region = region
        self.account_id = account_id
      # self.tracing = tracing

Exemplo

Consulte Exemplo 2: Leitura e gravação de recursos do OSS usando um par de AccessKey temporário.