Function Compute'deki web işlevlerini kullanarak web uygulamaları ve API hizmetleri kolayca oluşturabilirsiniz. Web işlevleri; Java SpringBoot, Python Flask ve Node.js Express gibi popüler dillere ait web çerçeveleriyle uyumludur. Bu sayede mevcut uygulamalarınızı hızlıca geçirebilirsiniz. Function Compute, altta yatan hesaplama kaynaklarını sizin için yönetir. Hizmetinize bir tarayıcı veya URL üzerinden erişildiğinde sistem, talebi karşılamak üzere örnekleri otomatik olarak sağlar ve ölçeklendirir. Trafik olmadığında örnekler otomatik olarak serbest bırakılır ve yalnızca kullandığınız kaynaklar için ücret ödersiniz.
Genel Bakış
Bu konuda, Function Compute'de bir web işlevi kullanılarak bir Flask uygulamasının nasıl dağıtılacağı açıklanmaktadır. Genel süreç şu şekildedir:
Web uygulamasını geliştirin ve test edin: Örnek kodu kullanarak yerel makinenizde bir proje oluşturun. API'nin beklendiği gibi çalıştığından emin olmak için API kodunu düzenleyin ve test edin. Mevcut bir uygulamayı geçirmek istiyorsanız bu adımı atlayabilirsiniz.
Kod paketi oluşturun: Gerekli bağımlılıkları yerel proje dizinine yükleyin. Ardından projeyi Function Compute'e dağıtmak üzere bir ZIP dosyasında paketleyin.
Uygulamayı yükleyin ve dağıtın: İşlev oluşturma parametrelerini yapılandırın ve ardından işlevi oluşturmak için kod paketini yükleyin.
Web işlevini test edin: Flask uygulamasının beklendiği gibi çalıştığını doğrulamak için web işlevini çağırın.
Ön Koşullar
Yordam
Bir web işlevi oluşturmak ve kodunuzu dağıtmak için aşağıdaki yöntemlerden birini kullanabilirsiniz.
Function Compute konsolunda işlev oluşturun: Bu yöntem, tek bir işlevi hızlıca oluşturmanıza olanak tanır ve hafif uygulamalar oluşturmak veya hızlı doğrulama yapmak için uygundur.
Serverless Devs komut satırı aracını kullanın: Bu yöntem, karmaşık üretim projelerini yönetmek ve otomatik dağıtımlar için daha uygundur. Birden çok işlevi ve bunlarla ilgili bulut kaynaklarını yönetmek için bir YAML yapılandırma dosyası kullanabilirsiniz. Daha fazla bilgi için bkz. Hızlı başlangıç.
Süreci basitleştirmek için bu konuda Function Compute konsolunda nasıl işlev oluşturulacağı açıklanmaktadır.
Adım 1: Uygulamayı geliştirin ve test edin
Mevcut bir Flask uygulamasını geçirmek istiyorsanız bu adımı atlayıp doğrudan Adım 2: Kod paketi oluşturma bölümüne geçebilirsiniz.
-
Yerel makinenizde yeni bir komut satırı penceresi açın ve gerekli
Flaskvetabulatekitaplıklarını yüklemek için aşağıdaki komutu çalıştırın.pip install Flask tabulate -
codeadlı bir klasör oluşturun ve içindeapp.pyadlı bir dosya oluşturun. Aşağıdaki örnek kodu dosyaya yapıştırın. Bu kod, API olarak paketlenmiş basit bir takvim hizmeti uygular. API, Ocak 2025 gibi bir yıl ve ay bilgisi kabul eder ve o aya ait bir takvim tablosu döndürür.import calendar from flask import Flask, request from tabulate import tabulate import logging import json logger = logging.getLogger() app = Flask(__name__) @app.route("/", methods=["POST"]) def get_month_calendar(): # Get the request ID and print the log. requestId = request.headers.get('x-fc-request-id', '') logger.info("FC Invoke Start RequestId: " + requestId) # Get the request content and check the request format. data = json.loads(request.stream.read().decode('utf-8')) if not ('year' in data and 'month' in data): message = "Request must be in format like {'year': '1999', 'month': '12'}" return message # Get the calendar table. result = print_calendar(year=int(data['year']), month=int(data['month'])) # Print the log that indicates the function execution is complete before the result is returned. logger.info("FC Invoke End RequestId: " + requestId) return result def print_calendar(year, month): # Get the calendar matrix for the specified year and month. cal = calendar.monthcalendar(year, month) # Change the dates that do not belong to the month from 0 to empty strings. cal = list(map(lambda sublist: list(map(lambda x: '' if x == 0 else x, sublist)), cal)) # Create table headers. headers = ["Mo", "Tu", "We", "Th", "Fr", "Sa", "Su"] # Use tabulate to print the calendar table. return tabulate(cal, headers=headers, tablefmt="grid", stralign='center', numalign='center') if __name__ == "__main__": app.run(host='0.0.0.0', port=9000) -
Flask uygulamanızı çalıştırmak için
python3 app.pykomutunu çalıştırın.Running on http://127.0.0.1:9000çıktısı görüntüleniyorsa Flask uygulaması çalışıyor demektir. Daha sonra uygulamayı test etmek için bir cURL komutu kullanabilirsiniz.python3 app.py * Serving Flask app 'app' * Debug mode: off WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. * Running on http://127.0.0.1:9000 * Running on http://47.100.XX.XX:9000 Press CTRL+C to quit -
Yeni bir terminal penceresi açın ve cURL kullanarak bir örnek istek gönderin. Komut başarılı olursa bir takvim tablosu döndürülür.
curl -X POST http://127.0.0.1:9000 -d '{"year": "2000", "month": "1"}'
Artık projeyi yerel ortamda oluşturup test ettiniz.
Adım 2: Kod paketi oluşturun
Function Compute için uygun bir kod paketini yerel ortamda oluşturacaksınız. Kod paketi aşağıdaki içeriği içermelidir:
Web uygulaması için gereken proje dosyaları.
Uygulamanızın, çalışma zamanına dahil olmayan bağımlılıkları varsa bunları kod paketinize eklemeniz gerekir. Çalışma zamanları için yerleşik bağımlılıklar hakkında bilgi almak için bkz. Yerleşik bağımlılıklar.
-
Bağımlılıkları yükleyin: Web uygulaması projenizin kök dizininde aşağıdaki komutu çalıştırarak gerekli bağımlılıkları (bu örnekte
tabulate) ilgili dizine yükleyin. Bu komut, bağımlılıkları projenizin kök dizinine yükler.NotPython web işlevi çalışma zamanı zaten
Flaskkitaplığını içerir. Örnek uygulamanın çalışması için yalnızcatabulatekitaplığını yüklemeniz yeterlidir.pip install -t . tabulate -
Proje kök dizinindeki tüm dosyaları paketleyin.
Linux veya macOS
Proje kök dizininde
zip code.zip -r ./*komutunu çalıştırın. Bu komut, proje dosyalarını ve bağımlılıklarını bir ZIP dosyasında paketleyerek kod paketini oluşturur.NotDizin üzerinde okuma ve yazma izinlerinizin bulunduğundan emin olun.
Windows
Proje dizinine gidin, tüm dosyaları seçin, dosyalara sağ tıklayın ve bunları bir ZIP dosyasında paketleyin. Bu işlem, proje dosyalarını ve bağımlılıklarını bir ZIP dosyasında paketleyerek kod paketini oluşturur.
Adım 3: İşlevi oluşturun ve dağıtın
-
Web işlevi türünü seçin: Function Compute konsoluna oturum açın. Sol gezinme bölmesinde seçeneklerini tıklayın. Üst gezinme çubuğunda işlevi oluşturmak istediğiniz bölgeyi seçin. Görüntülenen sayfada Create Function seçeneğini tıklayın ve ardından ekrandaki talimatları izleyerek bir Web Function oluşturun.
-
Çalışma zamanını seçin: Aşağıdaki şekilde gösterildiği gibi seçeneklerini seçin. Bu çalışma zamanı, Flask çerçevesi için gereken bağımlılıkları içerir.
NotWeb işleviniz için bir Custom Runtime kullanmanız önerilir. Custom Runtime ile bir başlatma komutu ve dinleme bağlantı noktası belirtebilir ve eşzamanlı istek işleme desteğinden yararlanabilirsiniz. Built-in Runtimes bu özellikleri sağlamaz ve daha çok diğer bulut hizmetleri tarafından oluşturulan olayları işlemek için uygundur.
Konteyner tabanlı dağıtımı tercih ediyorsanız bir web işlevi oluşturmak için Custom Container kullanabilirsiniz. Bu çalışma zamanı da eşzamanlı istek işlemeyi destekler ancak bağımlılıkları kendiniz yönetmeniz gerekir.
Çalışma zamanlarının ayrıntılı karşılaştırması için bkz. Çalışma zamanı seçme.
-
Kod paketini dağıtın: Şekilde gösterildiği gibi Adım 2 bölümünde oluşturduğunuz ZIP kod paketini yükleyin. Başlatma komutunu
python3 app.pyve dinleme bağlantı noktasını9000olarak ayarlayın. Mevcut bir Flask uygulamasını geçiriyorsanız yapılandırmayı gerçek başlatma komutuna ve bağlantı noktasına göre değiştirin. Örneğin, Flask'ın varsayılan bağlantı noktası 5000'dir.Create seçeneğini tıklayın ve işlevin oluşturulmasını bekleyin.

Adım 4: İşlevi test edin
-
İşlev URL'sini alın: Yeni oluşturulan işlevin ayrıntılar sayfasında Trigger sekmesini tıklayın. HTTP tetikleyici yapılandırmasında genel uç noktayı kopyalayın.
Bir test ortamındaysanız ve kimlik doğrulamaya ihtiyacınız yoksa, tetikleyiciyi oluştururken veya oluşturduktan sonra HTTP tetikleyicisinin yapılandırmasındaki Authentication Method ayarını No Authentication olarak değiştirebilirsiniz.

-
İşlevi test edin: Flask uygulamasının beklendiği gibi çalıştığını doğrulamak için işlevi çağırmak üzere cURL, Postman veya herhangi bir HTTP istemcisi kullanabilirsiniz. Aşağıdaki örnekte bir cURL komutu kullanılmaktadır. URL yerine önceki adımda kopyaladığınız uç noktayı yazın.
curl https://******.cn-hangzhou.fcapp.run -d '{"year": "2025", "month": "1"}'Web API'si, Ocak 2025 için takvim bilgilerini döndürür. Aşağıda örnek bir çıktı verilmiştir.
NotVarsayılan HTTP tetikleyici yapılandırmasını kullanırsanız komut "MissingRequiredHeader" hatası döndürür. Bir test ortamındaysanız tetikleyicinin Authentication Method ayarını No Authentication olarak değiştirebilirsiniz.
Bu adımdaki örnek komut ve çıktı yalnızca örnek kod için geçerlidir. Mevcut bir uygulamayı geçiriyorsanız hizmeti gerçek API adına ve parametrelerine göre çağırın. Daha fazla bilgi için bkz. İşlevi test etmek için cURL kullanma.
-
(İsteğe bağlı) İşleve bir tarayıcıdan erişin: HTTP tetikleyici tarafından sağlanan genel uç nokta doğrudan bir tarayıcıda açılamaz (zorunlu indirmeye neden olabilir) ve yalnızca test amaçlıdır. Tarayıcı erişimini etkinleştirmek ve üretim ortamında kullanmak için işleve özel bir etki alanı adı bağlamanız önerilir. Daha fazla bilgi için bkz. Özel etki alanı adı yapılandırma.
(İsteğe bağlı) Adım 5: Kaynakları temizleyin
Function Compute kullandıkça öde modeline sahip bir hizmettir. Kullanılmayan işlevler için ücret alınmaz. Ancak OSS ve File Storage NAS'ta depolanan veriler ve oluşturulan tetikleyiciler gibi ilişkili bulut kaynakları için ücretlendirilebilirsiniz.
Bir işlevi silmeniz gerekirse Function Compute konsoluna oturum açın. Sol gezinme bölmesinde seçeneklerini tıklayın. Bir bölge seçin. Hedef işlevin Actions sütununda Delete seçeneğini tıklayın. Görüntülenen iletişim kutusunda işlevin tetikleyiciler gibi herhangi bir kaynağa bağlı olmadığını onaylayın ve silme işlemini onaylayın.
Gelişmiş işlemler
Artık bir web uygulamasını web işlevine oluşturup dağıttığınıza göre ihtiyaçlarınıza bağlı olarak aşağıdaki gelişmiş işlemleri gerçekleştirebilirsiniz.
-
Konsolda kod geliştirin: Bu konu yerel geliştirmeye odaklansa da (mevcut uygulamaları geçirmek için faydalıdır) WebIDE kullanarak dağıtımı basitleştirebilirsiniz. Bu yöntem, yerel ortamda kod paketi oluşturma gereksinimini ortadan kaldırır ve hızlı geliştirme yinelemeleri için uygundur. Daha fazla bilgi için bkz. WebIDE kullanma.
NotWebIDE yalnızca Python, Node.js ve PHP dillerini destekler. Java ve Go gibi diğer diller için yalnızca derlenmiş ve paketlenmiş ZIP dosyalarını veya ikili dosyaları yükleyebilirsiniz.
Serverless Application Center kullanarak projeleri sürekli dağıtın: Kodunuzu Function Compute hizmetine otomatik olarak derlemek ve dağıtmak (CI/CD) için Serverless Application Center'ı kullanın. Daha fazla bilgi için bkz. Serverless Application Center kullanarak mevcut bir Function Compute projesi için sürekli dağıtım uygulama.
Günlük kaydı yapılandırın: Hata ayıklama, sorun giderme veya güvenlik denetimi kolaylaştırmak için işlevlerinizde günlük kaydı yapılandırmanız önerilir. Daha fazla bilgi için bkz. Günlük kaydı özelliğini yapılandırma.
Referanslar
Farklı diller için bağımlılık paketlerinin nasıl ekleneceği hakkında daha fazla bilgi için aşağıdaki konulara bakın: