Tüm Ürünler
Search
Belge Merkezi

Function Compute:Context

Son Güncelleme:Oct 08, 2026

Function Compute, her işleyiciye bir bağlam nesnesi iletir; bu nesne çağırma için istek kimliğini, işlev meta verilerini, bölgeyi ve günlük kaydediciyi sağlar.

Çalışma zamanı farkları

Python 3.12, önceki çalışma zamanlarından (3,10, 3,9, 3,6) farklı olarak bağlam nesnesini yeniden yapılandırır.

Özellik Python 3.12 Python 3,10, 3,9, 3,6
credentials alanı Kaldırıldı. Ortam değişkenlerini kullanın. Credentials yapısı olarak mevcuttur.
service yapısı Kaldırıldı. log_project, log_store, qualifier ve version_id alanları FunctionMeta veya üst düzey bağlama taşındı. ServiceMeta yapısı olarak mevcuttur.
logger alanı Bağlam nesnesinde mevcuttur. Mevcut değildir.
FunctionMeta alanları 6 alan: name, handler, memory, timeout, version_id, qualifier. 4 alan: name, handler, memory, timeout.

Python 3.12

Bağlam özellikleri

Özellik Tür Açıklama
request_id String Benzersiz istek tanımlayıcısı. Sorun giderme amacıyla kaydedin.
function FunctionMeta Çağrılan işlev meta verileri. FunctionMeta alanları.
region String Bölge kimliği; örneğin Çin (Şanghay) için cn-shanghai. Uç noktalar.
logger Logger İşlev çalıştırması için günlük kaydedici. Başlangıçta None değerindedir; bir logging.Logger elde etmek için context.getLogger() yöntemini çağırın.
account_id String İşleve sahip olan Alibaba Cloud hesabının kimliği.
log_project String İşlevle ilişkili Simple Log Service proje adı.
log_store String İşlevle ilişkili Simple Log Service Logstore adı.

FunctionMeta alanları (Python 3.12)

Alan Açıklama
name İşlev adı.
handler İşleyici giriş noktası.
memory İşleve ayrılan bellek (MB cinsinden).
timeout Maksimum yürütme süresi (saniye cinsinden).
version_id Çağrılan işlevin sürümü.
qualifier İşlev çağrılırken belirtilen sürüm veya takma ad.

Kimlik bilgisi geçişi

Önemli

Python 3.12'de credentials alanı kaldırılmıştır. Bunun yerine ortam değişkenlerini kullanın.

Diğer Alibaba Cloud hizmetlerine erişmek için aşağıdaki ortam değişkenlerini kullanın:

Ortam değişkeni Açıklama
ALIBABA_CLOUD_ACCESS_KEY_ID Geçici AccessKey ID.
ALIBABA_CLOUD_ACCESS_KEY_SECRET Geçici AccessKey Secret.
ALIBABA_CLOUD_SECURITY_TOKEN Güvenlik belirteci.

Ortam değişkenlerini yapılandırın.

Önce ve sonra karşılaştırması:

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

Bağlam sınıfı tanımı

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

Bağlam özellikleri

Özellik Tür Açıklama
request_id String Benzersiz istek tanımlayıcısı. Sorun giderme amacıyla kaydedin.
credentials Credentials AssumeRole API'sinden alınan ve 36 saat geçerli olan geçici kimlik bilgileri. Bir AccessKey çiftini gömmeden diğer Alibaba Cloud hizmetlerine erişin. Credentials alanları. Function Compute'a diğer Alibaba Cloud hizmetlerine erişim izni verin.
function FunctionMeta Çağrılan işlev meta verileri. FunctionMeta alanları.
service ServiceMeta Hizmet meta verileri. ServiceMeta alanları.
region String Bölge kimliği; örneğin Çin (Şanghay) için cn-shanghai. Uç noktalar.
account_id String İşleve sahip olan Alibaba Cloud hesabının kimliği.

Credentials alanları

Alan Açıklama
access_key_id Geçici AccessKey ID.
access_key_secret Geçici AccessKey Secret.
security_token Güvenlik belirteci.

Bir işleve bir RAM rolü atadıktan sonra, Function Compute AssumeRole API'si aracılığıyla geçici kimlik bilgileri alır. Bu kimlik bilgileri 36 saat boyunca geçerlidir ve işlevin gömülü bir AccessKey çifti olmadan diğer Alibaba Cloud hizmetlerine erişmesine olanak tanır.

FunctionMeta alanları (Python 3,10, 3,9 ve 3,6)

Alan Açıklama
name İşlev adı.
handler İşleyici giriş noktası.
memory İşleve ayrılan bellek (MB cinsinden).
timeout Maksimum yürütme süresi (saniye cinsinden).

ServiceMeta alanları

Alan Açıklama
log_project Simple Log Service proje adı.
log_store Simple Log Service Logstore adı.
qualifier İşlev çağrılırken belirtilen hizmetin sürümü veya takma adı.
version_id Gerçekte çağrılan hizmetin sürümü.
qualifier , çağrı isteğindeki sürüm veya takma addır; version_id ise gerçekte yürütülen sürümdür. Bir takma ad belirli bir sürüme çözümlendiğinde bu iki değer farklılık gösterir.

Bağlam sınıfı tanımı

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

Örnek

Örnek 2: Geçici bir AccessKey çifti kullanarak OSS kaynaklarını okuma ve yazma.