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.
| Bidang | 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 terdiri dari bidang-bidang berikut:
| Pasangan AccessKey sementara yang diperoleh Function Compute dengan mengasumsikan peran layanan terkait Anda. Pasangan AccessKey sementara ini berlaku selama 36 jam. Anda dapat menggunakan |
| function | Struktur FunctionMeta, yang berisi bidang-bidang berikut:
| Informasi dasar dari fungsi yang dipanggil, seperti nama, handler, memori, dan periode timeout fungsi. |
| service | Struktur ServiceMeta, yang berisi bidang-bidang berikut:
| Informasi tentang layanan tempat fungsi tersebut berada, seperti nama, proyek terkait dan penyimpanan log di Log Service, versi, dan alias layanan. Parameter |
| region | String | 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_id | String | ID akun Alibaba Cloud tempat fungsi tersebut berada. |
| tracing | Struktur Tracing, yang berisi bidang-bidang berikut:
| 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 = tracingKode 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.