全部产品
Search
文档中心

Function Compute:Konteks

更新时间:Jul 02, 2025

Topik ini menjelaskan objek konteks yang digunakan saat menggunakan waktu proses Python di Function Compute untuk menulis kode. Topik ini juga menyertakan contoh kode untuk objek konteks.

Apa itu konteks?

Saat Function Compute menjalankan suatu fungsi, sistem mengirimkan objek konteks ke metode yang digunakan untuk mengeksekusi fungsi tersebut. Objek ini mencakup informasi tentang pemanggilan, layanan, fungsi, analisis tracing, dan lingkungan eksekusi.

Anda dapat menggunakan objek konteks sebagai parameter input untuk penanganan acara dan penanganan HTTP. Format serta isi parameter input konteks untuk kedua jenis penanganan tersebut adalah sama. Tabel berikut menjelaskan parameter yang didukung oleh objek konteks.
BidangTipeDeskripsi
request_idString

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

credentialsStruktur Credentials, yang terdiri dari bidang-bidang berikut:
  • access_key_id
  • access_key_secret
  • security_token

Pasangan AccessKey sementara yang diperoleh Function Compute dengan mengasumsikan peran layanan terkait Anda. Pasangan AccessKey sementara ini berlaku selama 36 jam. Anda dapat menggunakan credentials dalam kode Anda untuk mengakses layanan terkait seperti Object Storage Service (OSS). Dengan cara ini, Anda dapat mengakses layanan tanpa perlu menulis pasangan AccessKey Anda dalam kode fungsi. Untuk informasi lebih lanjut, lihat Memberikan izin Function Compute untuk mengakses layanan Alibaba Cloud lainnya.

functionStruktur FunctionMeta, yang berisi bidang-bidang berikut:
  • name
  • handler
  • memory
  • timeout

Informasi dasar dari fungsi yang dipanggil, seperti nama, handler, memori, dan periode timeout fungsi.

serviceStruktur ServiceMeta, yang berisi bidang-bidang berikut:
  • name
  • log_project
  • log_store
  • qualifier
  • version_id

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

regionString

ID wilayah tempat fungsi dipanggil. Sebagai contoh, jika fungsi dipanggil di wilayah China (Shanghai), ID wilayahnya adalah cn-shanghai. Untuk informasi lebih lanjut, lihat Titik akhir layanan.

account_idString

ID akun Alibaba Cloud tempat fungsi tersebut berada.

tracingStruktur Tracing, yang berisi bidang-bidang berikut:
  • span_context
  • jaeger_endpoint
  • span_baggages
  • parseOpenTracingBaggages

Parameter terkait Analisis Tracing. Untuk informasi lebih lanjut, lihat Ikhtisar.

Kode sampel berikut digunakan sebagai referensi untuk menjelaskan objek konteks.

# -*- 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 ServiceMeta:
    def __init__(self, service_name, log_project, log_store, qualifier, version_id):
        self.name = service_name
        self.log_project = log_project
        self.log_store = log_store
        self.qualifier = qualifier
        self.version_id = version_id


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('Gagal mem-parsing 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

Kode sampel untuk menggunakan penangan HTTP

Untuk informasi lebih lanjut tentang cara menggunakan objek konteks, lihat Contoh 2: Membaca dan Menulis Sumber Daya OSS dengan Menggunakan Pasangan AccessKey Sementara secara Aman.