Tous les produits
Search
Centre de documentation

Function Compute:Context

Dernière mise à jour :Sep 25, 2026

Function Compute transmet un objet de contexte à chaque gestionnaire, fournissant l'ID de requête, les métadonnées de la fonction, la région et le logger pour l'appel.

Différences entre les environnements d'exécution

Python 3.12 restructure l'objet de contexte par rapport aux environnements d'exécution précédents (3,10, 3,9, 3,6).

Fonctionnalité Python 3.12 Python 3.10, 3,9, 3,6
Champ credentials Supprimé. Utilisez des variables d'environnement. Disponible sous forme de structure Credentials.
Structure service Supprimée. Les champs log_project, log_store, qualifier et version_id ont été déplacés vers FunctionMeta ou vers le contexte de niveau supérieur. Disponible sous forme de structure ServiceMeta.
Champ logger Disponible sur l'objet de contexte. Non disponible.
Champs FunctionMeta 6 champs : name, handler, memory, timeout, version_id, qualifier. 4 champs : name, handler, memory, timeout.

Python 3.12

Propriétés du contexte

Propriété Type Description
request_id String Identifiant unique de la requête. À enregistrer pour le dépannage.
function FunctionMeta Métadonnées de la fonction appelée. Champs FunctionMeta.
region String ID de la région, par exemple cn-shanghai pour Chine (Shanghai). Endpoints.
logger Logger Logger pour l'exécution de la fonction. Initialement None ; appelez context.getLogger() pour obtenir un logging.Logger.
account_id String ID du compte Alibaba Cloud propriétaire de la fonction.
log_project String Nom du projet Simple Log Service associé à la fonction.
log_store String Nom du Logstore Simple Log Service associé à la fonction.

Champs FunctionMeta (Python 3.12)

Champ Description
name Nom de la fonction.
handler Point d'entrée du gestionnaire.
memory Mémoire allouée à la fonction, en Mo.
timeout Temps d'exécution maximal, en secondes.
version_id Version de la fonction appelée.
qualifier Version ou alias spécifié lors de l'appel de la fonction.

Migration des identifiants

Important

Le champ credentials est supprimé dans Python 3.12. Utilisez plutôt des variables d'environnement.

Pour accéder à d'autres services Alibaba Cloud, utilisez ces variables d'environnement :

Variable d'environnement Description
ALIBABA_CLOUD_ACCESS_KEY_ID ID AccessKey temporaire.
ALIBABA_CLOUD_ACCESS_KEY_SECRET Secret AccessKey temporaire.
ALIBABA_CLOUD_SECURITY_TOKEN Jeton de sécurité.

Configurer des variables d'environnement.

Comparaison avant/aprè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']

Définition de la classe Context

# -*- 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 et 3,6

Propriétés du contexte

Propriété Type Description
request_id String Identifiant unique de la requête. À enregistrer pour le dépannage.
credentials Credentials Identifiants temporaires obtenus via l'API AssumeRole, valables pendant 36 heures. Accédez à d'autres services Alibaba Cloud sans intégrer de paire AccessKey. Champs Credentials. Accorder à Function Compute des autorisations pour accéder à d'autres services Alibaba Cloud.
function FunctionMeta Métadonnées de la fonction appelée. Champs FunctionMeta.
service ServiceMeta Métadonnées du service. Champs ServiceMeta.
region String ID de la région, par exemple cn-shanghai pour Chine (Shanghai). Endpoints.
account_id String ID du compte Alibaba Cloud propriétaire de la fonction.

Champs Credentials

Champ Description
access_key_id ID AccessKey temporaire.
access_key_secret Secret AccessKey temporaire.
security_token Jeton de sécurité.

Après avoir attribué un rôle RAM à une fonction, Function Compute obtient des identifiants temporaires via l'API AssumeRole. Ces identifiants sont valables pendant 36 heures et permettent à la fonction d'accéder à d'autres services Alibaba Cloud sans paire AccessKey intégrée.

Champs FunctionMeta (Python 3.10, 3,9 et 3,6)

Champ Description
name Nom de la fonction.
handler Point d'entrée du gestionnaire.
memory Mémoire allouée à la fonction, en Mo.
timeout Temps d'exécution maximal, en secondes.

Champs ServiceMeta

Champ Description
log_project Nom du projet Simple Log Service.
log_store Nom du Logstore Simple Log Service.
qualifier Version ou alias du service spécifié lors de l'appel de la fonction.
version_id Version du service effectivement appelée.
qualifier correspond à la version ou à l'alias issu de la requête d'appel ; version_id représente la version réellement exécutée. Ils diffèrent lorsqu'un alias résout une version spécifique.

Définition de la classe Context

# -*- 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

Exemple

Exemple 2 : Lire et écrire des ressources OSS à l'aide d'une paire AccessKey temporaire.