Tüm Ürünler
Search
Belge Merkezi

Function Compute:Web işlevleri

Son Güncelleme:Oct 08, 2026

Bu konu, özel çalışma zamanındaki işlevlerin çağrılma yöntemlerini, sınırlamalarını ve kod örneklerini açıklar.

Arka plan bilgileri

Özel bir çalışma zamanı HTTP sunucunuzu barındırabilir. Function Compute, işlev çağırma isteklerini HTTP isteklerine dönüştürüp HTTP sunucunuza gönderir. Ardından HTTP sunucunuzdan gelen yanıtları işlev çağırma yanıtlarına çevirerek istemciye döndürür. Aşağıdaki şekil bu süreci gösterir.

image

Bir işlevi aşağıdaki iki yöntemden biriyle çağırabilirsiniz:

  • HTTP çağrısı (önerilen): İşlevi HTTP üzerinden çağırın; örneğin bir HTTP tetikleyicisi veya özel etki alanı adı kullanın.

  • API çağrısı: InvokeFunction API'sini çağırarak işlevi çalıştırın; örneğin bir SDK kullanarak işlevi çağırın veya bir olay kaynağı aracılığıyla işlevi tetikleyin.

Farklı çağrılma yöntemleri, HTTP sunucunuzun istek ve yanıt biçimlerinin farklı olmasına neden olur.

Sınırlamalar

  • Bir işlevin her sürümü veya takma adı için yalnızca bir HTTP tetikleyicisi oluşturabilirsiniz. Daha fazla bilgi için bkz. Sürümleri yönetme ve Takma adları yönetme.

  • HTTP isteği sınırlamaları

    • İstek üstbilgileri, x-fc- ile başlayan veya aşağıdaki özel alanları içeren özel alanları desteklemez:

      • connection

      • keep-alive

    • Bir istek aşağıdaki sınırları aşarsa 400 durum kodu ve InvalidArgument hata kodu döndürülür.

      • Üstbilgi boyutu: Üstbilgilerdeki tüm anahtarların ve değerlerin toplam boyutu 8 KB'yi aşamaz.

      • Yol boyutu: Tüm sorgu parametreleri dahil yolun toplam boyutu 4 KB'yi aşamaz.

      • Gövde boyutu: Eşzamanlı bir çağrının istek gövdesinin toplam boyutu 32 MB'yi aşamaz. Zaman uyumsuz bir çağrının istek gövdesinin toplam boyutu 128 KB'yi aşamaz.

  • HTTP yanıtı sınırlamaları

    • Yanıt üstbilgileri, x-fc- ile başlayan veya aşağıdaki özel alanları içeren özel alanları desteklemez:

      • connection

      • content-length

      • date

      • keep-alive

      • server

      • content-disposition:attachment

        Not

        Güvenlik nedeniyle, Function Compute'un varsayılan aliyuncs.com etki alanını kullandığınızda sunucu, yanıt üstbilgilerine zorla content-disposition: attachment üstbilgisini ekler. Bu üstbilgi, yanıtın tarayıcıda bir ek olarak indirilmesine neden olur. Bu kısıtlamayı kaldırmak için özel bir etki alanı adı yapılandırın.

    • Bir yanıt aşağıdaki sınırları aşarsa 502 durum kodu ve BadResponse hata kodu döndürülür.

      • Üstbilgi boyutu: Üstbilgilerdeki tüm anahtarların ve değerlerin toplam boyutu 8 KB'yi aşamaz.

  • Diğer kullanım notları

    Özel bir etki alanı adı bağlayarak farklı HTTP erişim yollarını işlevinize eşleyebilirsiniz. Daha fazla bilgi için bkz. Özel etki alanı adı yapılandırma.

HTTP çağrısı (önerilen)

HTTP çağrıları için Function Compute passthrough modunu kullanır. İstemcinin HTTP isteğini doğrudan HTTP sunucunuza iletir ve HTTP sunucusunun yanıtını istemciye geçirir. Bazı sistem tarafından ayrılmış alanlar geçirilmez. Daha fazla bilgi için bkz. Sınırlamalar.

İstek üstbilgileri

Bir işlevi HTTP tetikleyicisi veya özel etki alanı adı kullanarak çağırdığınızda, Function Compute istek davranışını kontrol etmek için istek üstbilgilerini yapılandırmanıza olanak tanır. Aşağıdaki tabloda desteklenen istek üstbilgileri açıklanmaktadır.

Ad

Tür

Gerekli

Örnek

Açıklama

X-Fc-Invocation-Type

String

Hayır

Sync

Çağırma yöntemi. Daha fazla bilgi için bkz. Çağırma yöntemleri. Geçerli değerler:

  • Sync: eşzamanlı çağırma.

  • Async: zaman uyumsuz çağırma.

X-Fc-Log-Type

String

Hayır

Tail

Yanıtta döndürülecek günlükler. Geçerli değerler:

  • Tail: geçerli istek tarafından oluşturulan son 4 KB'lik günlükleri döndürür.

  • None: istek günlüklerini döndürmez. Bu, varsayılan değerdir.

Yanıt üstbilgileri

Bir işlevi HTTP tetikleyicisi veya özel etki alanı adı kullanarak çağırdığınızda, yanıt Function Compute tarafından varsayılan olarak eklenen bazı yanıt üstbilgilerini içerir. Aşağıdaki tabloda yanıt üstbilgileri açıklanmaktadır.


Ad


Açıklama


Örnek


X-Fc-Request-Id


İşlev çağrısının istek kimliği.


dab25e58-9356-4e3f-97d6-f044c4****

API çağrısı

InvokeFunction API'si kullanılarak yapılan çağrılar için Function Compute, InvokeFunction isteğini bir HTTP isteğine dönüştürür ve HTTP sunucunuza gönderir. Dönüşüm kuralları aşağıdaki gibidir:

  • InvokeFunction'ın event parametresi, HTTP isteğinin mesaj gövdesine dönüştürülür.

  • path değeri /invoke şeklindedir.

  • method değeri POST şeklindedir.

  • Content-Type mesaj üstbilgisi application/octet-stream şeklindedir.

Function Compute, HTTP sunucunuzun yanıtını InvokeFunction yanıtına dönüştürür ve istemciye döndürür. Dönüşüm kuralları aşağıdaki gibidir:

  • HTTP yanıt gövdesi, InvokeFunction yanıt gövdesine dönüştürülür.

  • HTTP yanıt üstbilgileri ve durum kodu dönüşüm sırasında kaybolur.

Invoke API isteği dönüşüm örneği

Invoke isteği

HTTP isteği (HTTP sunucusu tarafından alınan istek)

Invoke API istek içeriği:

"hello world"
> POST /invoke HTTP/1.1
> Host: 21,0.X.X
> Content-Length: 11
> Content-Type: application/octet-stream

hello world

Invoke API yanıtı çıkış örneği

HTTP yanıtı

Invoke yanıtı

< HTTP/1.1 200 OK
< Date: Mon, 10 Jul 2025 10:37:15 GMT
< Content-Type: application/octet-stream
< Content-Length: 11
< Connection: keep-alive

hello world
hello world
< HTTP/1.1 400 Bad Request
< Date: Mon, 10 Jul 2025 10:37:15 GMT
< Content-Type: application/octet-stream
< Content-Length: 28
< Connection: keep-alive

{"errorMessage":"exception"}
{"errorMessage":"exception"}

Function Compute yanıt kodları ve yanıt üstbilgileri

Özel bir çalışma zamanı, temel olarak sizin uyguladığınız bir HTTP sunucusudur. Bu nedenle, her işlev çağrısı bir HTTP isteğidir ve her yanıt bir yanıt kodu ile yanıt üstbilgileri içerir.

  • Yanıt kodu StatusCode

    • 200: başarılı.

    • 404: başarısız.

  • Yanıt üstbilgisi x-fc-status

    • 200: başarılı.

    • 404: başarısız.

İşlevin başarıyla yürütülüp yürütülmediğini Function Compute'a bildirmek için x-fc-status yanıt üstbilgisini kullanabilirsiniz.

  • x-fc-status ayarlanmazsa: Function Compute, çağrının varsayılan olarak başarıyla yürütüldüğünü kabul eder. Ancak, işleviniz Function Compute'a bildirilmeyen bir özel durumla karşılaşmış olabilir. Function Compute yürütmeyi hatasız olarak değerlendirir. Bu durum iş mantığınızı etkilemeyebilir ancak izleme ve gözlemlenebilirliği etkiler. Aşağıdaki kod bir örnek göstermektedir:

        print("FC Invoke Start RequestId: " + rid)
        data = request.stream.read()
        print("Path: " + path)
        print("Data: " + str(data))
        # Simulate an exception to trigger a runtime error
        raise Exception("mock exception")
        print("FC Invoke End RequestId: " + rid)
        return "Hello, World!"
    if __name__ == '__main__':
        app.run(host='0.0.0.0', port=9000)
  • x-fc-status ayarlanırsa: İşleviniz bir özel durumla karşılaşırsa, yürütme hatasını Function Compute'a bildirmek için x-fc-status yanıt üstbilgisini kullanabilirsiniz ve hata yığını bilgileri günlüklere yazdırılır. Aşağıdaki örnekte gösterildiği gibi, x-fc-status yanıt üstbilgisini 404 olarak ayarladıktan sonra Function Compute çağrıyı başarısız bir yürütme olarak tanımlar. Hata türü InvocationError olup döndürülen sonuç mock exception değeridir. app.py içindeki örnek kod aşağıdaki gibidir:

    @app.route('/', defaults={'path': ''})
    @app.route('/<path:path>', methods=['GET', 'POST', 'PUT', 'DELETE'])
    def hello_world(path):
        rid = request.headers.get(REQUEST_ID_HEADER)
        print("FC Invoke Start RequestId: " + rid)
        try:
            raise Exception("mock exception")
        except Exception as e:
            print("FC Invoke End RequestId: " + rid + ", Error: Unhandled Exception")
            print(str(e))
            return str(e), 404, [{"x-fc-status", "404"}]
Not

Döndürülen HTTP yanıtında hem StatusCode hem de x-fc-status değerlerini ayarlamanızı öneririz.

Kod örneği

İşlev için bir tetikleyici yapılandırıldıysa, herhangi bir dilde bir HTTP sunucusu uygulayabilirsiniz. Bu konuda Python örnek olarak kullanılmıştır. Örnek kod aşağıdaki gibidir.

Not

Örnek kod, bir Python ortamına ve Flask kitaplığına bağlıdır. İşlev oluşturma yöntemi olarak Web Function seçmenizi ve çalışma zamanı olarak Python 3.10 seçmenizi öneririz.

import os
from flask import Flask
from flask import request
REQUEST_ID_HEADER = 'x-fc-request-id'
app = Flask(__name__)
@app.route('/', defaults={'path': ''})
@app.route('/<path:path>', methods=['GET', 'POST', 'PUT', 'DELETE'])
def hello_world(path):
    rid = request.headers.get(REQUEST_ID_HEADER)
    data = request.stream.read()
    print("Path: " + path)
    print("Data: " + str(data))
    return "Hello, World!", 200, [('Function-Name', os.getenv('FC_FUNCTION_NAME'))]
if __name__ == '__main__':
    app.run(host='0.0.0.0', port=9000)

Örnek kodun açıklaması aşağıdaki gibidir:

  • @app.route('/', defaults={'path': ''}): kök yola karşılık gelen varsayılan rota.

  • @app.route('/<path:path>', methods=['GET', 'POST', 'PUT', 'DELETE']): yol parametresi içeren dinamik rota. GET, POST, PUT ve DELETE isteklerini işleyebilir. Yol parametresinin değeri, path bağımsız değişkeni olarak hello_world işlevine aktarılır.

  • rid = request.headers.get(REQUEST_ID_HEADER): istek üstbilgilerindeki x-fc-request-id alanının değerini alır.

  • data = request.stream.read(): istek içeriğini okur ve data değişkenine atar.

  • return "Hello, World!", 200, [('Function-Name', os.getenv('FC_FUNCTION_NAME'))]: "Hello, World!" içeren bir yanıt gövdesi döndürür, durum kodunu 200 olarak ayarlar ve bir Function-Name üstbilgisi ekler.