Topik ini menjelaskan struktur penangan acara dalam lingkungan Python dan memberikan contoh implementasi penangan acara di Python.
Tanda tangan untuk penangan acara
Kode sampel berikut menggambarkan tanda tangan untuk penangan acara.
def handler(event, context):
return 'hello world'Deskripsi parameter:
handler: Nama metode yang digunakan untuk memproses permintaan. Metode ini sesuai dengan nilai yang ditentukan untuk parameter Request Handler di Function Compute console. Sebagai contoh, jika penangan yang dikonfigurasikan untuk fungsi Function Compute adalahmain.handler, Function Compute akan memuat fungsihandleryang didefinisikan dimain.pydan mengeksekusi fungsi dari fungsihandler.event: Parameter yang dilewatkan saat memanggil fungsi. Dalam lingkungan runtime Python 2.7, nilai parameter ini bertipe STRING. Dalam lingkungan runtime Python 3, nilai parameter ini bertipe BYTES.context: Konteks runtime yang disediakan saat fungsi Function Compute dipanggil.
Contoh 1: Mengurai parameter berformat JSON
Kode sampel
Function Compute meneruskan parameter berformat JSON yang telah dikonfigurasi, Anda harus mengurai parameter tersebut dalam kode. Kode sampel berikut menunjukkan cara mengurai event yang berformat JSON.
# -*- coding: utf-8 -*-
import json
def handler(event, context):
evt = json.loads(event)
return evt['key']Prasyarat
Prosedur
Masuk ke Konsol Function Compute. Di panel navigasi kiri, klik Services & Functions.
Di bilah navigasi atas, pilih wilayah. Pada halaman Services, klik layanan yang diinginkan.
Pada halaman Functions, klik nama fungsi yang diinginkan.
- Pada halaman Detail Fungsi, klik tab Code, masukkan kode sampel sebelumnya di editor kode, lalu klik Deploy.Penting
Pada kode sampel sebelumnya, penangan adalah metode
handlerdiindex.py. Jika konfigurasi penangan fungsi Anda berbeda, gunakan konfigurasi penangan aktual Anda. - Pada tab Code, klik ikon
di sebelah Test Function, pilih Configure Test Parameters dari daftar drop-down, masukkan parameter uji berikut, lalu klik OK.{ "key": "value" } - Klik Test Function.Setelah fungsi dieksekusi, hasil eksekusi akan dikembalikan. Hasil eksekusi adalah
value.
Contoh 2: Membaca dan menulis sumber daya OSS menggunakan pasangan AccessKey sementara secara aman
Kode sampel
Anda dapat menggunakan pasangan kunci sementara yang disediakan oleh Function Compute untuk mengakses Object Storage Service (OSS). Kode berikut digunakan sebagai contoh.
import json
import oss2
def handler(event, context):
evt = json.loads(event)
creds = context.credentials
# jangan lupa security_token
auth = oss2.StsAuth(creds.access_key_id, creds.access_key_secret, creds.security_token)
bucket = oss2.Bucket(auth, evt['endpoint'], evt['bucket'])
bucket.put_object(evt['objectName'], evt['message'])
return 'success'Anda bisa mendapatkan pasangan AccessKey sementara dari context di creds = context.credentials. Ini mencegah pengkodean keras pada informasi sensitif seperti rahasia.
Prasyarat
Prosedur
Masuk ke Konsol Function Compute. Di panel navigasi kiri, klik Services & Functions.
Di bilah navigasi atas, pilih wilayah. Pada halaman Services, klik layanan yang diinginkan.
Pada halaman Functions, klik nama fungsi yang diinginkan.
- Pada halaman Function Details, klik tab Code, masukkan kode sampel sebelumnya di editor kode, lalu klik Deploy.Penting
Pada kode sampel sebelumnya, penangan adalah metode
handlerdiindex.py. Jika konfigurasi penangan fungsi Anda berbeda, gunakan konfigurasi penangan aktual Anda. - Pada tab Code, klik ikon
di sebelah Test Function, pilih Configure Test Parameters dari daftar drop-down, masukkan parameter uji berikut, lalu klik OK.{ "endpoint": "http://oss-cn-shenzhen-internal.aliyuncs.com", "bucket": "oss-********", "objectName": "oss-test-object", "message": "oss-test-content" } - Klik Test Function.Setelah fungsi dieksekusi, hasil eksekusi akan dikembalikan. Hasil eksekusi adalah
success.
Contoh 3: Menjalankan perintah eksternal
Anda dapat menggunakan program Python untuk membuat proses fork untuk memanggil perintah eksternal. Sebagai contoh, Anda dapat menggunakan modul subprocess untuk memanggil perintah ls -l di Linux. File di direktori saat ini akan dikembalikan. Kode sampel berikut menunjukkan contohnya:
import os
import subprocess
def handler(event, context):
ret = subprocess.check_output(['ls', "-l"])
return ret