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:
| 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 = regionPython 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:
| 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 |
function | Struktur FunctionMeta, yang berisi bidang-bidang berikut:
| Informasi dasar mengenai fungsi yang dipanggil, seperti nama, penanganan, memori, dan periode waktu habis fungsi tersebut. |
service | Struktur ServiceMeta, yang berisi bidang-bidang berikut:
| Informasi mengenai layanan tempat fungsi tersebut berada, seperti nama, proyek terkait, dan penyimpanan log di Simple Log Service, versi, serta alias layanan tersebut. Parameter |
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 = tracingContoh
Untuk informasi selengkapnya tentang cara menggunakan konteks, lihat Contoh 2: Membaca dan menulis sumber daya OSS menggunakan pasangan AccessKey sementara.