全部产品
Search
文档中心

Function Compute:Konteks

更新时间:Nov 11, 2025

Topik ini menjelaskan konteks dalam waktu proses Python di Function Compute serta memberikan contoh penggunaannya.

Apa itu konteks?

Saat Function Compute menjalankan suatu fungsi, sistem meneruskan objek konteks ke metode yang digunakan untuk mengeksekusi fungsi tersebut. Objek konteks berisi informasi mengenai pemanggilan, layanan, fungsi, dan lingkungan eksekusi.

Python 3.12

Tabel berikut menjelaskan parameter yang didukung oleh objek konteks dalam waktu proses Python 3.12.

Parameter

Tipe

Deskripsi

request_id

String

ID permintaan. Anda dapat mencatat ID ini untuk pemecahan masalah jika terjadi kesalahan.

function

Struktur FunctionMeta, yang berisi bidang-bidang berikut:

  • name

  • handler

  • memory

  • timeout

  • version_id

  • qualifier

Informasi dasar mengenai fungsi yang dipanggil, seperti nama, penanganan, memori, periode waktu habis, versi, dan alias.

region

String

ID wilayah tempat fungsi dipanggil. Misalnya, jika fungsi dipanggil di wilayah Tiongkok (Shanghai), ID wilayahnya adalah cn-shanghai. Untuk informasi selengkapnya, lihat Titik akhir.

logger

String

Mencatat log selama eksekusi fungsi.

account_id

String

ID Akun Alibaba Cloud tempat fungsi tersebut berada.

log_project dan log_store

string

Nama proyek di Simple Log Service. Informasi penyimpanan log.

Bidang konteks credentials telah dihapus di Python 3.12. Anda dapat menggunakan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID, ALIBABA_CLOUD_ACCESS_KEY_SECRET, dan ALIBABA_CLOUD_SECURITY_TOKEN sebagai pengganti credentials untuk mengakses sumber daya lainnya. Untuk informasi selengkapnya, lihat Mengonfigurasi variabel lingkungan.

Kode berikut menunjukkan format objek konteks di Python 3.12.

# -*- 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, Python 3.9, dan Python 3.6

Tabel berikut menjelaskan parameter yang didukung oleh objek konteks dalam waktu proses Python 3.10, Python 3.9, dan Python 3.6.

Parameter

Tipe

Deskripsi

request_id

String

ID unik dari permintaan yang digunakan untuk memanggil fungsi. Anda dapat mencatat ID ini untuk pemecahan masalah jika terjadi kesalahan.

credentials

Struktur credentials, yang berisi bidang-bidang berikut:

  • access_key_id

  • access_key_secret

  • security_token

Setelah Anda mengonfigurasi peran untuk suatu fungsi, Function Compute memperoleh satu set kunci sementara melalui API AssumeRole. Kunci-kunci ini berlaku selama 36 jam. Anda dapat menggunakan Credentials dalam kode Anda untuk mengakses layanan terkait seperti OSS. Dengan cara ini, Anda dapat mengakses layanan tanpa perlu menuliskan pasangan Kunci Akses Anda di kode fungsi. Untuk informasi selengkapnya, lihat Memberikan izin Function Compute untuk mengakses layanan Alibaba Cloud lainnya.

function

Struktur FunctionMeta, yang berisi bidang-bidang berikut:

  • name

  • handler

  • memory

  • timeout

Informasi dasar mengenai fungsi yang dipanggil, seperti nama, penanganan, memori, dan periode waktu habis fungsi tersebut.

service

Struktur ServiceMeta, yang berisi bidang-bidang berikut:

  • log_project

  • log_store

  • qualifier

  • version_id

Informasi mengenai layanan tempat fungsi tersebut berada, seperti nama, proyek terkait, dan penyimpanan log di Simple Log Service, versi, serta alias layanan tersebut. Parameter qualifier menunjukkan versi atau alias layanan yang ditentukan saat Anda memanggil suatu fungsi. Parameter versionId menunjukkan versi layanan yang sebenarnya dipanggil.

region

String

ID wilayah tempat fungsi dipanggil. Misalnya, jika fungsi dipanggil di wilayah Tiongkok (Shanghai), ID wilayahnya adalah cn-shanghai. Untuk informasi selengkapnya, lihat Titik akhir layanan.

account_id

String

ID Akun Alibaba Cloud tempat fungsi tersebut berada.

Untuk informasi selengkapnya mengenai konteks, lihat format berikut.

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

Contoh

Untuk informasi selengkapnya tentang cara menggunakan konteks, lihat Contoh 2: Membaca dan menulis sumber daya OSS menggunakan pasangan AccessKey sementara.