Hızlı Başlangıç: Komut satırından Azure'da TypeScript işlevi oluşturma
Bu makalede, KOMUT satırı araçlarını kullanarak HTTP isteklerine yanıt veren bir TypeScript işlevi oluşturacaksınız. Kodu yerel olarak test ettikten sonra bunu Azure İşlevleri’nin sunucusuz ortamına dağıtacaksınız.
Önemli
Bu makalenin içeriği, sayfanın üst kısmındaki seçicide Node.js programlama modeli seçiminize göre değişir. Genel kullanıma sunulan v4 modeli, JavaScript ve TypeScript geliştiricileri için daha esnek ve sezgisel bir deneyime sahip olacak şekilde tasarlanmıştır. Geçiş kılavuzunda v3 ve v4 arasındaki farklar hakkında daha fazla bilgi edinin.
Bu hızlı başlangıcın tamamlanması, Azure hesabınızda birkaç ABD doları veya daha az bir maliyete neden olur.
Bu makalenin Visual Studio Code tabanlı bir sürümü de vardır.
Yerel ortamınızı yapılandırma
Başlamadan önce aşağıdaki önkoşullara sahip olmanız gerekir:
Etkin aboneliği olan bir Azure hesabı. Ücretsiz hesap oluşturun.
Azure kaynakları oluşturmak için aşağıdaki araçlardan biri:
Azure CLI sürüm 2.4 veya üzeri.
Azure Az PowerShell modülü sürüm 5.9.0 veya üzeri.
- Node.js sürüm 14 veya üzeri.
Node.js sürüm 18 veya üzeri.
TypeScript sürüm 4+.
Azure Functions Core Tools’u Yükleme
Çekirdek Araçları'nı yüklemenin önerilen yolu, yerel geliştirme bilgisayarınızın işletim sistemine bağlıdır.
Aşağıdaki adımlarda Core Tools v4.x'i yüklemek için bir Windows yükleyicisi (MSI) kullanılır. Diğer paket tabanlı yükleyiciler hakkında daha fazla bilgi için bkz . Çekirdek Araçları benioku.
Windows sürümünüz temelinde Core Tools yükleyicisini indirin ve çalıştırın:
- v4.x - Windows 64 bit (Önerilir. Visual Studio Code hata ayıklaması 64 bit gerektirir.)
- v4.x - Windows 32 bit
Daha önce Windows'a Core Tools yüklemek için Windows installer (MSI) kullandıysanız, en son sürümü yüklemeden önce Program Ekle Kaldır'dan eski sürümü kaldırmanız gerekir.
- Core Tools'un v4.0.5382 sürümünü veya sonraki bir sürümü yüklediğinizden emin olun.
Yerel işlev projesi oluşturma
Azure İşlevleri işlev projesi, her birinin belirli bir tetikleyiciye yanıt verdiği bir veya daha fazla tek tek işlev için bir kapsayıcıdır. Projedeki tüm işlevler aynı yerel ve barındırma yapılandırmalarını paylaşır. Bu bölümde, tek bir işlev içeren bir işlev projesi oluşturacaksınız.
Uygun bir klasörde komutunu aşağıdaki gibi çalıştırarak
func init
geçerli klasörde bir TypeScript Node.js v3 projesi oluşturun:func init --typescript --model V3
Bu klasör artık local.settings.json ve host.json adlı yapılandırma dosyaları da dahil olmak üzere proje için çeşitli dosyalar içerir. local.settings.json Azure'dan indirilen gizli dizileri içerebileceğinden, dosya .gitignore dosyasında varsayılan olarak kaynak denetiminden dışlanır.
Aşağıdaki komutu kullanarak projenize bir işlev ekleyin; burada
--name
bağımsız değişken işlevinizin benzersiz adıdır (HttpExample) ve--template
bağımsız değişken işlevin tetikleyicisini (HTTP) belirtir.func new --name HttpExample --template "HTTP trigger" --authlevel "anonymous"
func new
projenin seçilen diline uygun bir kod dosyası ve function.json adlı bir yapılandırma dosyası içeren işlev adıyla eşleşen bir alt klasör oluşturur.
(İsteğe bağlı) Dosya içeriğini inceleme
İsterseniz, İşlevi yerel olarak çalıştır'a atlayabilir ve dosya içeriğini daha sonra inceleyebilirsiniz.
index.ts
index.ts, function.json dosyasındaki yapılandırmaya göre tetiklenen bir işlevi dışarı aktarır.
import { AzureFunction, Context, HttpRequest } from "@azure/functions"
const httpTrigger: AzureFunction = async function (context: Context, req: HttpRequest): Promise<void> {
context.log('HTTP trigger function processed a request.');
const name = (req.query.name || (req.body && req.body.name));
const responseMessage = name
? "Hello, " + name + ". This HTTP triggered function executed successfully."
: "This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response.";
context.res = {
// status: 200, /* Defaults to 200 */
body: responseMessage
};
};
export default httpTrigger;
HTTP tetikleyicisi için işlev, function.json dosyasında tanımlandığı gibi HttpRequest türünde değişkendeki req
istek verilerini alır. function.json dosyasında olarak $return
tanımlanan dönüş nesnesi yanıttır.
function.json
function.json , tetikleyici türü de dahil olmak üzere işlevin giriş ve çıkışını bindings
tanımlayan bir yapılandırma dosyasıdır.
{
"bindings": [
{
"authLevel": "function",
"type": "httpTrigger",
"direction": "in",
"name": "req",
"methods": [
"get",
"post"
]
},
{
"type": "http",
"direction": "out",
"name": "res"
}
]
}
Her bağlama bir yön, tür ve benzersiz bir ad gerektirir. HTTP tetikleyicisi türünde bir giriş bağlaması ve türünde httpTrigger
http
çıkış bağlaması vardır.
Uygun bir klasörde komutunu aşağıdaki gibi çalıştırarak
func init
geçerli klasörde bir TypeScript Node.js v4 projesi oluşturun:func init --typescript
Bu klasör artık local.settings.json ve host.json adlı yapılandırma dosyaları da dahil olmak üzere proje için çeşitli dosyalar içerir. local.settings.json Azure'dan indirilen gizli dizileri içerebileceğinden, dosya .gitignore dosyasında varsayılan olarak kaynak denetiminden dışlanır. Gerekli npm paketleri de node_modules yüklenir.
Aşağıdaki komutu kullanarak projenize bir işlev ekleyin; burada
--name
bağımsız değişken işlevinizin benzersiz adıdır (HttpExample) ve--template
bağımsız değişken işlevin tetikleyicisini (HTTP) belirtir.func new --name HttpExample --template "HTTP trigger" --authlevel "anonymous"
func new
src/functions dizininde işlevinizin kodunu içeren HttpExample.ts adlı bir dosya oluşturur.local.settings.json dosyasına Azure Depolama bağlantı bilgilerini ekleyin.
{ "Values": { "AzureWebJobsStorage": "<Azure Storage connection information>", "FUNCTIONS_WORKER_RUNTIME": "node" } }
(İsteğe bağlı) Http tetikleyicisi gibi belirli bir işlev hakkında daha fazla bilgi edinmek istiyorsanız aşağıdaki komutu çalıştırabilirsiniz:
func help httptrigger
İşlevi yerel olarak çalıştırma
LocalFunctionProj klasöründen yerel Azure İşlevleri çalışma zamanı ana bilgisayarını başlatarak işlevinizi çalıştırın:
npm install npm start
npm start
Çıktının sonuna doğru aşağıdaki günlükler görünmelidir:
Dekont
HttpExample günlüklerde gösterildiği gibi görünmüyorsa, konağı büyük olasılıkla projenin kök klasörünün dışından başlatmış olursunuz. Bu durumda konağı durdurmak için Ctrl+c tuşunu kullanın, projenin kök klasörüne gidin ve önceki komutu yeniden çalıştırın.
İşlevinizin
HttpExample
URL'sini bu çıktıdan bir tarayıcıya kopyalayın ve sorgu dizesini?name=<your-name>
ekleyin ve tam URL'yi gibi yapınhttp://localhost:7071/api/HttpExample?name=Functions
. Tarayıcının gibiHello Functions
bir ileti görüntülemesi gerekir:Projenizi başlattığınız terminal, istekte bulunurken günlük çıkışını da gösterir.
Hazır olduğunuzda, Ctrl+c tuşlarını kullanın ve işlev ana bilgisayarını durdurmak için y'yi seçin.
İşleviniz için destekleyici Azure kaynakları oluşturma
İşlev kodunuzu Azure'a dağıtabilmeniz için önce üç kaynak oluşturmanız gerekir:
- İlgili kaynaklar için mantıksal bir kapsayıcı olan kaynak grubu.
- İşlevleriniz hakkındaki durumu ve diğer bilgileri korumak için kullanılan bir Depolama hesabı.
- İşlev kodunuzu yürütmek için ortam sağlayan bir işlev uygulaması. İşlev uygulaması yerel işlev projenize eşler ve kaynakların daha kolay yönetilmesi, dağıtılması ve paylaşılması için işlevleri mantıksal birim olarak gruplandırmanıza olanak tanır.
Bu öğeleri oluşturmak için aşağıdaki komutları kullanın. Hem Azure CLI hem de PowerShell desteklenir.
Henüz yapmadıysanız Azure'da oturum açın:
az login
az login komutu sizi Azure hesabınızda oturum açar.
Seçtiğiniz bölgede adlı
AzureFunctionsQuickstart-rg
bir kaynak grubu oluşturun:az group create --name AzureFunctionsQuickstart-rg --location <REGION>
az group create komutu bir kaynak grubu oluşturur. Yukarıdaki komutta, az account list-locations komutundan döndürülen kullanılabilir bir bölge kodunu kullanarak değerini yakınınızdaki bir bölgeyle değiştirin
<REGION>
.Kaynak grubunuz ve bölgenizde genel amaçlı bir depolama hesabı oluşturun:
az storage account create --name <STORAGE_NAME> --location <REGION> --resource-group AzureFunctionsQuickstart-rg --sku Standard_LRS --allow-blob-public-access false
az storage account create komutu depolama hesabını oluşturur.
Önceki örnekte değerini size uygun ve Azure Depolama'da benzersiz bir adla değiştirin
<STORAGE_NAME>
. Adlar yalnızca üç ile 24 karakter arasında sayı ve küçük harf içermelidir.Standard_LRS
İşlevler tarafından desteklenen genel amaçlı bir hesap belirtir.
Önemli
Depolama hesabı, bazen uygulama kodunun kendisi de dahil olmak üzere önemli uygulama verilerini depolamak için kullanılır. Diğer uygulama ve kullanıcılardan depolama hesabına erişimi sınırlamanız gerekir.
Azure'da işlev uygulamasını oluşturun:
az functionapp create --resource-group AzureFunctionsQuickstart-rg --consumption-plan-location <REGION> --runtime node --runtime-version 18 --functions-version 4 --name <APP_NAME> --storage-account <STORAGE_NAME>
az functionapp create komutu, Azure'da işlev uygulamasını oluşturur. Node.js dosyasının şu anda 18 olan en son sürümünü kullanmanız önerilir. sürümünü olarak ayarlayarak
--runtime-version
18
belirtebilirsiniz.Önceki örnekte değerini önceki
<STORAGE_NAME>
adımda kullandığınız hesabın adıyla değiştirin ve değerini size uygun genel olarak benzersiz bir adla değiştirin<APP_NAME>
.<APP_NAME>
aynı zamanda işlev uygulamasının varsayılan DNS etki alanıdır.Bu komut, Azure İşlevleri Tüketim Planı'nın altında belirtilen dil çalışma zamanınızda çalışan bir işlev uygulaması oluşturur ve bu uygulama burada tahakkuk ettiğiniz kullanım miktarı için ücretsizdir. Komut ayrıca aynı kaynak grubunda ilişkili bir Azure Uygulaması Analizler örneği oluşturur ve bu örnekle işlev uygulamanızı izleyebilir ve günlükleri görüntüleyebilirsiniz. Daha fazla bilgi için bkz. İzleme Azure İşlevleri. Örnek, siz etkinleştirene kadar ücret ödemez.
İşlev projesini Azure'a dağıtma
Projenizi Azure'a dağıtmak için Core Tools'u kullanmadan önce TypeScript kaynak dosyalarından üretime hazır bir JavaScript dosyası derlemesi oluşturursunuz.
TypeScript projenizi dağıtıma hazırlamak için aşağıdaki komutu kullanın:
npm run build
Gerekli kaynaklar kullanıldığında, yayımla komutunu kullanarak yerel işlevler projenizi Azure'daki işlev uygulamasına dağıtmaya hazırsınız demektir. Aşağıdaki örnekte değerini uygulamanızın adıyla değiştirin
<APP_NAME>
.func azure functionapp publish <APP_NAME>
"...adlı uygulama bulunamıyor" hatasını görürseniz birkaç saniye bekleyip yeniden deneyin çünkü Azure, önceki
az functionapp create
komut sonrasında uygulamayı tam olarak başlatmamış olabilir.Yayımla komutu aşağıdaki çıkışa benzer sonuçlar gösterir (kolaylık olması için kesilmiş):
... Getting site publishing info... Creating archive for current directory... Performing remote build for functions project. ... Deployment successful. Remote build succeeded! Syncing triggers... Functions in msdocs-azurefunctions-qs: HttpExample - [httpTrigger] Invoke url: https://msdocs-azurefunctions-qs.azurewebsites.net/api/httpexample?code=KYHrydo4GFe9y0000000qRgRJ8NdLFKpkakGJQfC3izYVidzzDN4gQ==
İşlevi Azure'da çağırma
İşleviniz bir HTTP tetikleyicisi kullandığından, tarayıcıda URL'sine http isteğinde bulunarak veya curl gibi bir araçla çağırabilirsiniz.
Yayımla komutunun çıkışında gösterilen tam Çağırma URL'sini tarayıcı adres çubuğuna kopyalayın ve sorgu parametresini ?name=Functions
ekleyin. Tarayıcı, işlevi yerel olarak çalıştırdığınızda olduğu gibi benzer bir çıkış görüntülemelidir.
Gerçek zamanlıya yakın akış günlüklerini görüntülemek için aşağıdaki komutu çalıştırın:
func azure functionapp logstream <APP_NAME>
Ayrı bir terminal penceresinde veya tarayıcıda uzak işlevi yeniden çağırın. Terminalde Azure'da işlev yürütme işleminin ayrıntılı bir günlüğü gösterilir.
Kaynakları temizleme
Bir sonraki adıma devam edip bir Azure Depolama kuyruğu çıkış bağlaması eklerseniz, daha önce yaptıklarınıza göre derleyeceğiniz gibi tüm kaynaklarınızı yerinde tutun.
Aksi takdirde, daha fazla maliyet oluşmasını önlemek için kaynak grubunu ve içerdiği tüm kaynakları silmek için aşağıdaki komutu kullanın.
az group delete --name AzureFunctionsQuickstart-rg