All Products
Search
Document Center

Function Compute:Penanganan Python

Last Updated:Apr 24, 2026

Anda dapat menggunakan penanganan Python untuk memproses event masuk dan menjalankan logika bisnis Anda. Topik ini menjelaskan konsep dan struktur penanganan Python serta menyediakan contoh.

Apa itu penanganan?

Penanganan fungsi FC adalah metode dalam kode fungsi yang memproses permintaan. Ketika fungsi FC Anda dipanggil, Function Compute menjalankan penanganan yang Anda sediakan untuk memproses permintaan tersebut. Anda dapat mengonfigurasi penanganan di pengaturan Handler pada Function Compute console.

Untuk fungsi FC Python, penanganan Anda memiliki format filename.method_name. Misalnya, jika file Anda bernama main.py dan metodenya bernama handler, maka penanganannya adalah main.handler.

Untuk informasi lebih lanjut tentang pembuatan fungsi FC, lihat Buat fungsi yang dipicu oleh event.

Konfigurasi penanganan harus sesuai dengan spesifikasi konfigurasi Function Compute. Spesifikasi konfigurasi bervariasi tergantung pada jenis penanganan.

Tanda tangan penanganan

Kode berikut menunjukkan tanda tangan penanganan dasar:

def handler(event, context):
    return 'hello world'

Tanda tangan penanganan mencakup parameter berikut:

  • handler: Nama metode. Ini harus sesuai dengan penanganan yang Anda konfigurasikan di Function Compute console menggunakan pengaturan Handler. Misalnya, jika Anda mengatur penanganan untuk FC menjadi main.handler, Function Compute memuat metode handler yang didefinisikan dalam main.py dan menjalankan fungsi handler.

  • event: Parameter yang berisi data yang diteruskan ke fungsi. Pada runtime Python 2.7, ini berupa string. Pada runtime Python 3, ini berupa bytes.

  • context: Objek yang menyediakan informasi FC tentang pemanggilan tersebut.

Catatan

Jika Anda ingin menggunakan pemicu HTTP atau nama domain kustom untuk mengakses fungsi, peroleh struktur request sebelum mendefinisikan respons HTTP. Untuk informasi lebih lanjut, lihat Gunakan pemicu HTTP untuk memanggil fungsi.

Contoh 1: Uraikan event berformat JSON

Kode contoh

Function Compute meneruskan konten event berformat JSON langsung ke fungsi Anda. Anda harus mengurai konten ini dalam kode Anda. Kode contoh berikut menunjukkan cara mengurai event berformat JSON.

# -*- coding: utf-8 -*-
import json
def handler(event, context):
    evt = json.loads(event)
    return evt['key']

Prasyarat

Buat fungsi yang dipicu oleh event

Prosedur

  1. Login ke Function Compute console. Di panel navigasi kiri, pilih Function Management > Functions.

  2. Di bilah navigasi atas, pilih wilayah. Di halaman Functions, klik fungsi target.

  3. Di halaman detail fungsi, klik tab Code. Di editor kode, masukkan kode contoh lalu klik Deploy.

    Penting

    Dalam kode contoh, penanganannya adalah metode handler dalam index.py. Jika penanganan fungsi Anda dikonfigurasi berbeda, perbarui nama file dan nama metode sesuai kebutuhan.

  4. Di tab Code, klik ikon panah down di samping Test Function dan pilih Configure Test Parameters. Masukkan parameter contoh berikut, lalu klik OK.

    {
      "key": "value"
    }
  5. Klik Test Function.

    Setelah fungsi dieksekusi, respons yang diharapkan adalah value.

Contoh 2: Akses resource OSS secara aman

Kode contoh Python 3.12

Runtime Python 3.12 menghapus bidang credentials dari context. Sebagai gantinya, Anda dapat menggunakan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID, ALIBABA_CLOUD_ACCESS_KEY_SECRET, dan ALIBABA_CLOUD_SECURITY_TOKEN untuk mengakses Object Storage Service (OSS). Kode berikut menunjukkan contohnya. Untuk informasi lebih lanjut, lihat Buat AccessKey dan AssumeRole.

import json
import oss2
import os

def handler(event, context):
    evt = json.loads(event)
    auth = oss2.StsAuth(os.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), os.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"), os.getenv("ALIBABA_CLOUD_SECURITY_TOKEN"))
    bucket = oss2.Bucket(auth, evt['endpoint'], evt['bucket'])
    bucket.put_object(evt['objectName'], evt['message'])
    return 'success'

Kode contoh Python 3.10

Anda dapat menggunakan Function Compute yang disediakan oleh Object Storage Service untuk mengakses OSS. Kode berikut menunjukkan contohnya.

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'

Dalam kode contoh, creds = context.credentials mengambil pasangan AccessKey temporary dari objek context. Praktik ini mencegah Anda menyematkan informasi sensitif, seperti rahasia, secara langsung dalam kode Anda.

Penting

Pastikan role yang ditetapkan ke layanan memiliki izin untuk mengakses OSS. Anda dapat login ke Resource Access Management (RAM) console untuk memberikan izin yang diperlukan kepada role tersebut.

Prasyarat

Buat fungsi yang dipicu oleh event

Prosedur

  1. Login ke Function Compute console. Di panel navigasi kiri, pilih Function Management > Functions.

  2. Di bilah navigasi atas, pilih wilayah. Di halaman Functions, klik fungsi target.

  3. Di halaman detail fungsi, klik tab Code. Di editor kode, masukkan kode contoh lalu klik Deploy.

    Penting

    Dalam kode contoh, penanganannya adalah metode handler dalam index.py. Jika penanganan fungsi Anda dikonfigurasi berbeda, perbarui nama file dan nama metode sesuai kebutuhan.

  4. Di tab Code, klik ikon panah down di samping Test Function dan pilih Configure Test Parameters. Masukkan parameter contoh berikut, lalu klik OK.

    {
      "endpoint": "http://oss-cn-shenzhen-internal.aliyuncs.com",
      "bucket": "oss-********",
      "objectName": "oss-test-object",
      "message": "oss-test-content"
    }
  5. Klik Test Function.

    Setelah fungsi dieksekusi, respons yang diharapkan adalah success.

Contoh 3: Panggil perintah eksternal

Fungsi Python Anda juga dapat membuat proses fork untuk memanggil perintah eksternal. Misalnya, Anda dapat menggunakan modul subprocess untuk memanggil perintah Linux ls -l, yang mencantumkan file dalam direktori saat ini. Kode berikut menunjukkan contohnya.

import os
import subprocess

def handler(event, context):
    ret = subprocess.check_output(['ls', "-l"])
    return ret

Contoh 4: Panggil fungsi dengan pemicu HTTP

Kode contoh

Untuk informasi tentang format muatan request dan respons untuk pemanggilan pemicu HTTP, lihat Gunakan pemicu HTTP untuk memanggil fungsi.

# -*- coding: utf-8 -*-
import logging
import json
import base64

def handler(event, context):
    logger = logging.getLogger()
    logger.info("receive event: %s", event)

    try:
        event_json = json.loads(event)
    except:
        return "The request did not come from an HTTP Trigger because the event is not a json string, event: {}".format(event)
    
    if "body" not in event_json:
        return "The request did not come from an HTTP Trigger because the event does not include the 'body' field, event: {}".format(event)
    req_body = event_json['body']
    if 'isBase64Encoded' in event_json and event_json['isBase64Encoded']:
        req_body = base64.b64decode(event_json['body']).decode("utf-8")

    return {
        'statusCode': 200,
        'headers': {'Content-Type': 'text/plain'},
        'isBase64Encoded': False,
        'body': req_body
    }

Prasyarat

Contoh ini memerlukan fungsi yang dipicu HTTP yang dikonfigurasi dengan runtime Python dan berdasarkan kode contoh. Untuk informasi lebih lanjut, lihat Buat fungsi yang dipicu oleh event dan Konfigurasi pemicu HTTP.

Prosedur

  1. Login ke Function Compute console. Di panel navigasi kiri, pilih Function Management > Functions.

  2. Di bilah navigasi atas, pilih wilayah. Di halaman Functions, klik fungsi target.

  3. Di halaman detail fungsi, klik tab Triggers untuk menemukan titik akhir publik pemicu HTTP.

  4. Jalankan perintah curl berikut untuk memanggil fungsi.

    curl -i "https://test-python-ipgrwr****.cn-shanghai.fcapp.run" -d 'Hello fc3.0'

    Dalam perintah di atas, https://test-python-ipgrwr****.cn-shanghai.fcapp.run adalah titik akhir publik pemicu HTTP.

    Penting
    • Jika Authentication Method untuk pemicu HTTP diatur ke No Authentication, Anda dapat langsung menggunakan tool seperti Postman atau curl untuk memanggil fungsi. Untuk informasi lebih lanjut, lihat Prosedur di bagian ini.

    • Jika Authentication Method diatur ke Signature Authentication, JWT Authentication, atau Bearer Authentication, Anda harus menggunakan metode autentikasi yang sesuai untuk memanggil fungsi. Untuk informasi lebih lanjut, lihat Autentikasi dan otorisasi.

    Respons berikut dikembalikan:

    HTTP/1.1 200 OK
    Content-Disposition: attachment
    Content-Length: 12
    Content-Type: application/json
    X-Fc-Request-Id: 1-64f7449a-127fbe39cd7681596e33ebad
    Date: Tue, 05 Sep 2023 15:09:14 GMT
    
    Hello fc3.0

Kemungkinan error

Kode contoh dalam contoh ini dirancang untuk dipanggil oleh pemicu HTTP atau nama domain kustom. Jika Anda memanggil fungsi melalui panggilan API dan parameter uji tidak sesuai dengan format request pemicu HTTP, akan terjadi error.

Misalnya, di Function Compute console, jika Anda mengatur event uji menjadi "Hello, FC!" dan mengklik Test Function, fungsi akan mengembalikan respons berikut.

The request did not come from an HTTP Trigger, event: "Hello, FC!"