Todos los productos
Search
Centro de documentos

Function Compute:Context

Última actualización: Sep 25, 2026

Function Compute pasa un objeto de contexto a cada handler. Este objeto proporciona el ID de la solicitud, los metadatos de la función, la región y el logger para la invocación.

Diferencias entre runtimes

Python 3.12 reestructura el objeto de contexto respecto a los runtimes anteriores (3.10, 3.9 y 3.6).

Función

Python 3.12

Python 3.10, 3.9 y 3.6

Campo credentials

Se eliminó. Utilice variables de entorno.

Disponible como estructura Credentials.

Estructura service

Se eliminó. Los campos log_project, log_store, qualifier y version_id se movieron a FunctionMeta o al nivel superior del contexto.

Disponible como estructura ServiceMeta.

Campo logger

Disponible en el objeto de contexto.

No disponible.

Campos de FunctionMeta

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

4 campos: name, handler, memory y timeout.

Python 3.12

Propiedades del contexto

Propiedad

Tipo

Descripción

request_id

String

Identificador único de la solicitud. Regístrelo para solucionar problemas.

function

FunctionMeta

Metadatos de la función invocada. Consulte los campos de FunctionMeta.

region

String

ID de la región, por ejemplo cn-shanghai para China (Shanghai). Endpoints.

logger

Logger

Logger para la ejecución de la función. Inicialmente es None; llame a context.getLogger() para obtener un objeto logging.Logger.

account_id

String

ID de la cuenta de Alibaba Cloud propietaria de la función.

log_project

String

Nombre del proyecto de Simple Log Service asociado a la función.

log_store

String

Nombre del logstore de Simple Log Service asociado a la función.

Campos de FunctionMeta (Python 3.12)

Campo

Descripción

name

Nombre de la función.

handler

Punto de entrada del handler.

memory

Memoria asignada a la función, en MB.

timeout

Tiempo máximo de ejecución, en segundos.

version_id

Versión de la función que se invoca.

qualifier

Versión o alias especificado al invocar la función.

Migración de credenciales

Importante

El campo credentials se eliminó en Python 3.12. En su lugar, utilice variables de entorno.

Para acceder a otros servicios de Alibaba Cloud, utilice las siguientes variables de entorno:

Variable de entorno

Descripción

ALIBABA_CLOUD_ACCESS_KEY_ID

ID temporal del accesskey.

ALIBABA_CLOUD_ACCESS_KEY_SECRET

Secreto temporal del accesskey.

ALIBABA_CLOUD_SECURITY_TOKEN

Token de seguridad.

Configure environment variables.

Comparación antes y después:

# 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']

Definición de la clase 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 y 3.6

Propiedades del contexto

Propiedad

Tipo

Descripción

request_id

String

Identificador único de la solicitud. Regístrelo para solucionar problemas.

credentials

Credentials

Credenciales temporales obtenidas mediante la API AssumeRole, con una validez de 36 horas. Permiten acceder a otros servicios de Alibaba Cloud sin integrar un par de claves de accesskey. Consulte los campos de Credentials. Para más información, consulte Conceder permisos a Function Compute para acceder a otros servicios de Alibaba Cloud.

function

FunctionMeta

Metadatos de la función invocada. Consulte los campos de FunctionMeta.

service

ServiceMeta

Metadatos del servicio. Consulte los campos de ServiceMeta.

region

String

ID de la región, por ejemplo cn-shanghai para China (Shanghai). Endpoints.

account_id

String

ID de la cuenta de Alibaba Cloud propietaria de la función.

Campos de Credentials

Campo

Descripción

access_key_id

ID temporal del accesskey.

access_key_secret

Secreto temporal del accesskey.

security_token

Token de seguridad.

Cuando se asigna un rol de RAM a una función, Function Compute obtiene credenciales temporales mediante la API AssumeRole. Estas credenciales tienen una validez de 36 horas y permiten que la función acceda a otros servicios de Alibaba Cloud sin necesidad de integrar un par de claves de accesskey.

Campos de FunctionMeta (Python 3.10, 3.9 y 3.6)

Campo

Descripción

name

Nombre de la función.

handler

Punto de entrada del handler.

memory

Memoria asignada a la función, en MB.

timeout

Tiempo máximo de ejecución, en segundos.

Campos de ServiceMeta

Campo

Descripción

log_project

Nombre del proyecto de Simple Log Service.

log_store

Nombre del logstore de Simple Log Service.

qualifier

Versión o alias del servicio especificado al invocar la función.

version_id

Versión del servicio que se invocó realmente.

qualifier es la versión o el alias indicado en la solicitud de invocación; version_id es la versión que se ejecutó. Ambos valores difieren cuando un alias resuelve a una versión específica.

Definición de la clase 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

Ejemplo

Example 2: Read and write OSS resources using a temporary AccessKey pair.