Tüm Ürünler
Search
Belge Merkezi

Function Compute:HTTP Tetikleyicisine Genel Bakış

Son Güncelleme:Oct 08, 2026

HTTP tetikleyicileri, Function Compute işlevini standart HTTP veya HTTPS istekleriyle çağırmanızı sağlar. Function Compute üzerinde web hizmetleri ve API'ler oluşturmanın en hızlı yoludur: kodlama ek yükü yoktur, yönetilecek ek bir ağ geçidine gerek duyulmaz ve herhangi bir HTTP test aracı veya Webhook özelliğine sahip hizmetle uyumludur.

Nasıl Çalışır?

Bir HTTP tetikleyicisi, işlevinizi bir HTTP uç noktası olarak kullanıma sunar. Bir istek geldiğinde, Function Compute (yapılandırılmışsa) isteğin kimlik doğrulamasını yapar, ardından isteği işlevinize iletir ve işlevin HTTP yanıtını çağıran tarafa döndürür.

Desteklenen HTTP yöntemleri: GET, POST, PUT, DELETE, HEAD, PATCH ve OPTIONS.

Node.js ile hazırlanmış basit bir web işlevi işleyicisi:

exports.handler = (event, context, callback) => {
  const request = JSON.parse(event);
  const response = {
    statusCode: 200,
    headers: { 'Content-Type': 'text/plain' },
    body: 'Hello from Function Compute'
  };
  callback(null, response);
};

event nesnesi tam HTTP isteğini (yol, üstbilgiler, gövde, yöntem) içerir. HTTP yanıtı göndermek için statusCode, headers ve body alanlarını içeren bir nesne döndürün.

Kullanım Notları

HTTP tetikleyicileri kullanarak geliştirme yapmadan önce aşağıdaki davranışlara dikkat edin.

Anonim erişim riski

Authentication Method seçeneğini No Authentication olarak ayarlarsanız, uç nokta URL'sine sahip olan herkes işlevinizi çağırabilir. Özel yetkilendirmeyi zorlamak için işlev kodunuzda Authorization üstbilgisini doğrulayın. Ayrıntılar için bkz. HTTP tetikleyicileri için imza tabanlı kimlik doğrulamayı yapılandırma.

APK indirme kısıtlaması

10 Haziran 2024 tarihinden itibaren, yeni oluşturulan HTTP tetikleyicileri genel ağ uç noktaları üzerinden APK dosya indirmelerini (MIME türü application/vnd.android.package-archive) engeller. İstekler HTTP durum kodu 400 ile yanıt verir. Ayrıntılar için bkz. HTTP tetikleyicinizin genel uç noktasının .apk dosyalarını doğru şekilde döndürmesini sağlama.

VIP rotasyonu

Function Compute, genel ve özel uç noktalarla ilişkili sanal IP adreslerini (VIP) periyodik olarak değiştirir. VIP'lerin sabit kodlanması hizmet kesintilerine neden olur ve Function Compute hizmet düzeyi sözleşmesi (SLA) kapsamında değildir. Kararlı erişim için CNAME yapılandırmasıyla birlikte özel bir alan adı kullanın. Ayrıntılar için bkz. Özel bir alan adı yapılandırma.

Varsayılan alan adı ve ek davranışı

Varsayılan aliyuncs.com alan adını kullanırken, Function Compute tüm yanıtlara content-disposition: attachment ekler; bu da tarayıcıların yanıtları işlemek yerine dosya olarak indirmesine neden olur. Bu davranışı kaldırmak için özel bir alan adı yapılandırın.

Sınırlamalar

Tetikleyici sınırlamaları

  • İşlev sürümü veya takma adı başına en fazla bir HTTP tetikleyicisi bulunabilir. Bkz. Sürüm yönetimi ve Takma adı yönetimi.

  • Yerleşik alan adları yalnızca test amaçlıdır; kararlılık garanti edilmez. Bunları üretim ortamına yönelik hizmetler için kullanmayın. Dışa dönük hizmetler için, işlevinizi kullanıma sunmadan önce ICP kaydı yapılmış özel bir alan adı bağlayın. Bkz. Özel bir alan adı yapılandırma.

İstek sınırlamaları

Sınır Değer
Üstbilgi boyutu (tüm anahtarlar + değerler) 8 KB
Yol boyutu (sorgu parametreleri dahil) 4 KB
Gövde boyutu — senkron çağrı 32 MB
Gövde boyutu — zaman uyumsuz çağrı Bkz. İşlev çalıştırma kaynak sınırları

Senkron çağrılar için üstbilgi, yol veya gövde sınırlarının aşılması, HTTP durum kodu 400 ve hata kodu InvalidArgument ile sonuçlanır.

Desteklenmeyen istek üstbilgileri: x-fc- ile başlayan herhangi bir üstbilginin yanı sıra connection ve keep-alive.

Yanıt sınırlamaları

Sınır Değer
Üstbilgi boyutu (tüm anahtarlar + değerler) 8 KB

Yanıt üstbilgisi sınırının aşılması, HTTP durum kodu 502 ve hata kodu BadResponse ile sonuçlanır.

Desteklenmeyen yanıt üstbilgileri: x-fc- ile başlayan herhangi bir üstbilginin yanı sıra connection, content-length, date, keep-alive, server, upgrade ve content-disposition:attachment.

Çağrı Yöntemleri

Senkron Çağrı

HTTP tetikleyicileri varsayılan olarak senkron çağrı kullanır. İşlev, bağlantı kapanmadan önce isteği işler ve sonucu döndürür. Bkz. Senkron çağrı.

Zaman Uyumsuz Çağrı

Zaman uyumsuz çağrıda, Function Compute isteği kalıcı hale getirir ve işlevin bitmesini beklemeden hemen HTTP durum kodu 202 döndürür. 202 dışındaki herhangi bir durum kodu, çağrının başarısız olduğu anlamına gelir. Hata işleme için bkz. Yeniden deneme mekanizması.

Zaman uyumsuz olarak çağırmanın iki yolu vardır:

  • İstek düzeyinde zaman uyumsuzluk: Herhangi bir HTTP isteğine "X-Fc-Invocation-Type": "Async" üstbilgisini ekleyin. Bkz. Zaman uyumsuz çağrı.

  • Zaman uyumsuz görev: İşleviniz için zaman uyumsuz bir görev yapılandırdıktan sonra, çağrı kimliğini belirtmek üzere "X-Fc-Async-Task-Id": "<task-id>" üstbilgisini ekleyin. Bkz. Zaman uyumsuz görev.

Yanıt, örneğin "X-Fc-Request-Id": "80bf7****281713e1" şeklinde bir istek kimliğini üstbilgide içerir. Desteklenen tüm istek üstbilgileri için bkz. İşlev çağırma.

Kimlik Doğrulama ve Yetkilendirme

Dış çağıranlar, bir HTTP tetikleyicisi aracılığıyla işlevinize erişmeden önce Function Compute kimlik doğrulama kontrollerini geçmelidir. Desteklenen yöntemler:

Çapraz Kaynak Paylaşımı (CORS)

Function Compute, çapraz kaynak paylaşımı (CORS) isteklerini işlemek için maliyet, karmaşıklık ve esneklik açısından farklı ödünleşimler sunan üç yöntemi destekler.

Özellik API Yapılandırmalı CORS (önerilen) Varsayılan CORS Kullanıcı Tanımlı CORS (kod)
Ön kontrol isteği ücretlendirilir mi? Ücretlendirilmez (ağ geçidi işler) Potansiyel ücretler Ücretlendirilir (işlev tetiklenir)
Kod değişikliği gerekir mi? Yok Yok Yüksek
Desteklenen API sürümleri Yalnızca FC 3.0 Tüm sürümler Tüm sürümler
Yapılandırma karmaşıklığı Düşük (tek seferlik kurulum) Yok Yüksek (OPTIONS ele alınmalıdır)

Varsayılan CORS Davranışı

Varsayılan olarak, Function Compute isteklere göre CORS üstbilgilerini geri yansıtır. Basit istekler (ön kontrol yok) için yanıt şunları içerir:

  • Access-Control-Allow-Origin: İstekteki Origin üstbilgisinden kopyalanır

  • Access-Control-Allow-Credentials: true

  • Access-Control-Expose-Headers: Function Compute tarafından tanımlanan üstbilgiler

CORS'u İşlev Kodunda İşleme

Basit istekler için, yanıtınızda doğrudan Access-Control-Allow-* üstbilgilerini ayarlayın.

Basit olmayan istekler için, bir tarayıcı gerçek istekten önce bir ön kontrol OPTIONS isteği gönderir. HTTP tetikleyicinizin izin verilen yöntemlerine OPTIONS ekleyin ve bunu işlev kodunuzda işleyin.

<details> <summary>Node.js örneği</summary>

exports.handler = (event, context, callback) => {
  const method = JSON.parse(event).requestContext.http.method;
  if (method === 'OPTIONS') {
    const fcResponse = {
      statusCode: 204,
      headers: {
        'Access-Control-Allow-Origin': 'http://www.fc.com',
        'Access-Control-Allow-Methods': 'POST',
        'Access-Control-Allow-Headers': 'Content-Type, Authorization',
        'Access-Control-Max-Age': '3600'
      },
      body: ''
    };
    callback(null, fcResponse);
  } else {
    callback(null, {
      statusCode: 200,
      body: 'hello world'
    });
  }
};

</details>

<details> <summary>Python örneği</summary>

import json

def handler(event, context):
    evt = json.loads(event)
    method = evt.get('requestContext', {}).get('http', {}).get('method', '')
    if method == 'OPTIONS':
        return {
            'statusCode': 204,
            'headers': {
                'Access-Control-Allow-Origin': 'http://www.fc.com',
                'Access-Control-Allow-Methods': 'POST',
                'Access-Control-Allow-Headers': 'Content-Type, Authorization',
                'Access-Control-Max-Age': '3600'
            },
            'body': ''
        }
    return {
        'statusCode': 200,
        'body': 'hello world'
    }

</details>

<details> <summary>Go örneği</summary>

package main

import (
    "context"
    "encoding/json"
)

type HttpRequest struct {
    RequestContext struct {
        Http struct {
            Method string `json:"method"`
        } `json:"http"`
    } `json:"requestContext"`
}

type HttpResponse struct {
    StatusCode int               `json:"statusCode"`
    Headers    map[string]string `json:"headers"`
    Body       string            `json:"body"`
}

func Handler(ctx context.Context, event []byte) (*HttpResponse, error) {
    var req HttpRequest
    if err := json.Unmarshal(event, &req); err != nil {
        return nil, err
    }
    if req.RequestContext.Http.Method == "OPTIONS" {
        return &HttpResponse{
            StatusCode: 204,
            Headers: map[string]string{
                "Access-Control-Allow-Origin":  "http://www.fc.com",
                "Access-Control-Allow-Methods": "POST",
                "Access-Control-Allow-Headers": "Content-Type, Authorization",
                "Access-Control-Max-Age":       "3600",
            },
            Body: "",
        }, nil
    }
    return &HttpResponse{StatusCode: 200, Body: "hello world"}, nil
}

</details>

API Yapılandırmalı CORS

API Yapılandırmalı CORS, davetiyeli ön izleme olarak sunulmaktadır. Etkinleştirmek için bizimle iletişime geçin ve Alibaba Cloud hesap kimliğinizi (UID) sağlayın.

API Yapılandırmalı CORS, ağ geçidi katmanı özelliğidir. CORS ilkelerini doğrudan bir HTTP tetikleyicisi veya özel alan adına yapılandırın; işlev kodunuzda CORS mantığına gerek yoktur.

Temel avantajlar:

  • Kod değişikliği yok: CORS işlemini iş mantığından ayırın.

  • Daha düşük maliyet: Ağ geçidi, ön kontrol OPTIONS isteklerini doğrudan işler, bu nedenle hiçbir işlev örneği çalışmaz.

  • Merkezi yönetim: CORS ilkelerini tetikleyici veya alan adı düzeyinde uygulayın.

  • Daha düşük gecikme süresi: Ağ geçidi, işlevinizi çağırmadan ön kontrol yanıtlarını döndürür.

Kapsam:

  • Yalnızca FC 3.0 işlevleri (API sürümü 2023-03-30)

  • HTTP tetikleyicileri (yerleşik test alan adları dahil) ve bağlı özel alan adları için geçerlidir

Tetikleyiciyi güncelle veya Özel alan adını güncelle API'sini kullanarak yapılandırın.

CORS yapılandırma parametreleri

Parametre Tür Açıklama Varsayılan Kısıtlama
allowOrigins Dizi Kaynaklara erişmesine izin verilen kökenler — Maksimum 100 öğe, her biri ≤ 256 karakter. * veya https://* desteklenir.
allowMethods Dizi İzin verilen HTTP yöntemleri Tetikleyici yöntemleri OPTIONS dahil etmeyin; ağ geçidi ön kontrolü otomatik olarak işler.
allowHeaders Dizi Tarayıcılardan izin verilen özel istek üstbilgileri — Maksimum 50 öğe. * desteklenir.
exposeHeaders Dizi Tarayıcılara gösterilen yanıt üstbilgileri Sistem varsayılanı Maksimum 50 öğe.
allowCredentials Boole Çapraz kaynak isteklerinde çerezlere ve kimlik bilgilerine izin verilip verilmeyeceği false true ise, allowOrigins * olamaz.
maxAge Tamsayı Ön kontrol yanıtları için önbellek süresi (saniye cinsinden) 3600 Aralık: 0–86400.

allowOrigins değerleri:

  • *: Tüm kökenlere izin ver (yalnızca allowCredentials false olduğunda).

  • https://*: https:// ile başlayan tüm kökenlere izin ver.

  • Belirli alan adı: https://example.com.

  • Birden çok alan adı: ["https://example.com", "https://app.example.com"].

  • Alt alan adı joker karakterleri (örneğin, https://*.example.com) desteklenmez. Tüm alan adlarını açıkça listeleyin.

allowMethods değerleri:

  • Standart HTTP yöntemleri: GET, POST, PUT, DELETE, PATCH, HEAD.

  • *: Tüm yöntemlere izin ver.

  • OPTIONS dahil etmeyin; ağ geçidi tüm ön kontrol isteklerini otomatik olarak yönetir.

Ağ Geçidi İstekleri Nasıl İşler?

Ön kontrol istekleri (OPTIONS)

Ağ geçidi, Origin, Access-Control-Request-Method ve Access-Control-Request-Headers üstbilgilerini doğrular:

  • Doğrulama başarılı: Yapılandırılmış CORS üstbilgileriyle 204 No Content döndürür. İşlevi çağırmaz.

  • Doğrulama başarısız:

    • Köken eşleşiyor ancak diğer üstbilgiler eşleşmiyor: Ağ geçidi temel CORS üstbilgilerini ayarlar, ardından isteği işleve iletir.

    • Köken eşleşmiyor: CORS üstbilgileri ayarlanmaz. İstek işleve iletilir.

Basit istekler (GET, POST, HEAD vb.)

Ağ geçidi yalnızca Origin üstbilgisini doğrular:

  • Doğrulama başarılı: Yanıta Access-Control-Allow-Origin ve diğer CORS üstbilgilerini ekler. İsteği işleve iletir.

  • Doğrulama başarısız: CORS üstbilgilerini eklemez. Yine de isteği işleve iletir.

Öncelik

Aynı yol için birden fazla CORS işleme yöntemi geçerli olduğunda, ağ geçidi bunları şu sırayla uygular:

  1. API Yapılandırmalı CORS (en yüksek öncelik): Etkinleştirilirse, ağ geçidi önce bu yapılandırmayı uygular.

  2. Varsayılan CORS: API Yapılandırmalı CORS devre dışı bırakılırsa, ağ geçidi yerleşik varsayılan yansıtma davranışını kullanır.

  3. İşlev tanımlı CORS: İşleviniz tarafından döndürülen üstbilgiler, yukarıdaki sonuçlarla birleştirilir.

HTTP Tetikleyicisi ve API Gateway Tetikleyicisi Karşılaştırması

Hem HTTP tetikleyicileri hem de API Gateway tetikleyicileri web uygulamaları oluşturmayı destekler.

HTTP tetikleyicisi API Gateway tetikleyicisi
En uygun kullanım Hafif, doğrudan HTTP'den işleve giden yol Trafik yönetimi veya istek dönüşümü gibi API Gateway özelliklerine ihtiyaç duyduğunuzda
Yol yönlendirme Özel bir alan adı bağlayarak URL yollarını işlevinize eşleyin Function Compute'u API arka ucu olarak yapılandırın
Belgelendirme Özel bir alan adı yapılandırma Function Compute'u API arka uç hizmeti olarak kullanma

HTTP tetikleyicileri, API Gateway tetikleyicilerine kıyasla şu avantajları sunar:

  • Ek ağ geçidi yapılandırması olmadan daha hızlı kurulur ve hata ayıklaması daha kolaydır.

  • JSON kodlama veya kod çözme ek yükü yoktur; HTTP tetikleyicileri istekleri ve yanıtları doğrudan iletir.

  • Standart HTTP test araçlarıyla uyumludur.

  • CDN kaynak çekme ve Simple Message Queue (eskiden MNS) gibi Webhook özelliğine sahip hizmetlerle kolayca entegre olur.

SSS

Dinleme bağlantı noktasını nerede yapılandırıyorum?

Dinleme bağlantı noktasını yalnızca işlevi bir Web İşlevi olarak oluştururken yapılandırın.

İşlevim çok uzun sürüyor. Bunu nasıl düzeltirim?

Neden, desene bağlıdır:

İşlevim HTTP durum kodu 499 döndürüyor. Bununla nasıl başa çıkarım?

499 hatası, istemcinin işlev yanıt vermeden önce bağlantıyı kapattığı anlamına gelir. Bir 499 hatasından sonra işlev örneği yeniden başlar; gereksiz yeniden başlatmaları önlemek için sağlık kontrollerini yapılandırın. Bkz. Neden istemci 499 hatasından sonra işlev örneği yeniden başlar?

İstemci tarafı zaman aşımları kök nedense, zaman alan mantığı ayrı bir işleve taşıyın ve zaman uyumsuz olarak çağırın veya istemci tarafında zaman uyumsuz çağırmaya geçin.

İşlevimin yapılandırmasını güncelledim. Ne zaman etkili olur?

Yapılandırma güncellemeleri, mevcut yürütme tamamlandıktan sonra etkili olur. Devam eden istekler, bitene kadar eski yapılandırmayı kullanır; yeni istekler güncellenmiş yapılandırmayı kullanır.

Alternatif olarak, mevcut işlevi silin ve güncellenmiş yapılandırmayla yeni bir tane oluşturun.

allowMethods listesine OPTIONS ekledikten sonra API çağrım neden başarısız oluyor?

OPTIONS seçeneğini corsConfig.allowMethods listesine eklemeyin. Ağ geçidi tüm ön kontrol isteklerini otomatik olarak yönetir. OPTIONS seçeneğini manuel olarak dahil etmek, istek işleme hatalarına neden olur.

API Yapılandırmalı CORS'u yapılandırdıktan sonra OPTIONS istekleri neden 204 yerine 200 döndürüyor?

Hesabınızın davetiyeli ön izleme erişimine sahip olduğunu onaylayın. Ağ geçidi eklentisi tam olarak etkinleştirilmemişse, ağ geçidi varsayılan CORS davranışına geri döner; bu davranış 200 döndürür ve isteği işlevinize iletir.

**allowOrigins içinde alt alan adı joker karakterlerini kullanabilir miyim, örneğin *.example.com?**

Hayır. Alt alan adı joker karakterleri desteklenmez. Gerekli tüm alan adlarını allowOrigins dizisinde açıkça listeleyin veya geniş HTTPS köken eşleştirmesi için https://* kullanın.

İşlev kodum da CORS üstbilgilerini ayarlıyor. Çakışma olur mu?

Hayır. Ağ geçidi tarafından oluşturulan üstbilgiler ve işlev tarafından döndürülen üstbilgiler birleştirilir. Yinelenenler varsa, tarayıcılar ilk uyumlu değeri kullanır. Mevcut uygulamalar geçiş sırasında çalışmaya devam eder.