Sunucusuz TypeScript API'si: Azure İşlevleri ile MongoDB'de veri depolama
Mongoose API'siyle verileri Azure Cosmos DB'de depolamak için bir Azure İşlev API'si oluşturun, ardından İşlev uygulamasını genel http uç noktasıyla barındırmak üzere Azure bulutuna dağıtın.
Dekont
Bu makalede, şu anda önizleme aşamasında olan Azure İşlevleri Node.js v4 programlama modeli kullanılır.
Geliştirme ortamınızı hazırlama
Aşağıdaki yazılımı yükleyin:
- Ücretsiz Azure aboneliği oluşturma
- Node.js LTS v18+ yükleme
- TypeScript v4+
- Yerel geliştirme depolaması için genel olarak yüklenen Azurite
- Azure İşlevleri Runtime v4.16+
- Azure İşlevleri Core Tools v4.0.5095+ (yerel olarak çalışıyorsa) yerel geliştirme için genel olarak yüklendi
- Visual Studio Code'u yükleyin ve aşağıdaki uzantıları kullanın:
1. Visual Studio Code'da Azure'da oturum açma
Azure hizmet uzantılarını zaten kullanıyorsanız oturum açmış olmanız gerekir ve bu adımı atlayabilirsiniz.
Visual Studio Code'da bir Azure hizmet uzantısı yükledikten sonra Azure hesabınızda oturum açmanız gerekir.
Visual Studio Code'da, birincil yan çubukta Azure simgesini seçerek Azure gezginini açın veya klavye kısayolunu (Shift + Alt + A) kullanın.
Kaynaklar bölümünde Azure'da oturum aç'ı seçin ve istemleri izleyin.
Oturum açtıktan sonra Azure hesabınızın e-posta adresinin Durum Çubuğu'nda, aboneliklerinizin ise Azure gezgininde göründüğünü doğrulayın:
2. Azure kaynak grubu oluşturma
Kaynak grubu, bölge tabanlı bir kaynak koleksiyonudur. Bir kaynak grubu oluşturup bu grupta kaynak oluşturarak, öğreticinin sonunda her kaynağı tek tek silmek zorunda kalmadan kaynak grubunu silebilirsiniz.
Yerel sisteminizde Azure işlevleri projesinin kökü olarak kullanılacak yeni bir klasör oluşturun.
Bu klasörü Visual Studio Code'da açın.
Visual Studio Code'da, birincil yan çubukta Azure simgesini seçerek Azure gezginini açın veya klavye kısayolunu (Shift + Alt + A) kullanın.
Kaynaklar'ın altında aboneliğinizi bulun ve simgeyi + ve ardından Kaynak Grubu Oluştur'u seçin.
istemleri tamamlamak için aşağıdaki tabloyu kullanın:
İstem Değer Yeni kaynak grubunun adını girin. azure-tutorial
Yeni kaynaklarınız için bir konum seçin. Size yakın bir coğrafi bölge seçin.
3. Yerel İşlevler uygulamasını oluşturma
HTTP tetikleyici işlevi içeren bir yerel Azure İşlevleri (sunucusuz) uygulaması oluşturun.
Visual Studio Code'da komut paletini açın (Ctrl + Shift + P).
Azure İşlevleri: Yeni Proje Oluştur öğesini arayın ve seçin.
Yerel Azure İşlevi projesini oluşturmayı tamamlamak için aşağıdaki tabloyu kullanın:
İstem Değer Notlar İşlev projenizi içerecek klasörü seçin Geçerli (varsayılan) klasörü seçin. Dil seçin TypeScript TypeScript programlama modeli seçme Model V4 (Önizleme) Projenizin ilk işlevi için bir şablon seçin HTTP Tetikleyicisi API bir HTTP isteğiyle çağrılır. İşlev adı belirtin blogposts
API yolu /api/blogposts
Visual Studio Code projeyi oluşturduğunda, API kodunuzu dosyada
./src/functions/blogposts.ts
görüntüleyin.import { app, HttpRequest, HttpResponseInit, InvocationContext } from "@azure/functions"; export async function blogposts(request: HttpRequest, context: InvocationContext): Promise<HttpResponseInit> { context.log(`Http function processed request for url "${request.url}"`); const name = request.query.get('name') || await request.text() || 'world'; return { body: `Hello, ${name}!` }; }; app.http('blogposts', { methods: ['GET', 'POST'], authLevel: 'anonymous', handler: blogposts });
Bu kod, yeni v4 programlama modelinde standart ortaktır. POST ve GET ile API katmanı yazmanın tek yolunu göstermek için tasarlanmamıştır.
Yalnızca GET isteklerinin tüm blog gönderilerini döndürmesine izin vermek için önceki kodu aşağıdaki kodla değiştirin.
import { app, HttpRequest, HttpResponseInit, InvocationContext } from "@azure/functions"; // curl --location 'http://localhost:7071/api/blogposts' --verbose export async function getBlogPosts(request: HttpRequest, context: InvocationContext): Promise<HttpResponseInit> { context.log(`Http function getBlogPosts processed request for url "${request.url}"`); // Empty array for now ... will fix later const blogposts = []; return { status: 200, jsonBody: { blogposts } }; }; app.get('getBlogPosts', { route: "blogposts", authLevel: 'anonymous', handler: getBlogPosts });
Bu kodda dikkate alınması gereken birkaç Azure İşlevleri Node.js v4 programlama modeli değişikliği vardır:
- bunun bir GET isteği olduğunu belirten işlevinin
getBlobPosts
adı, işlevi günlüklerde yalıtmanıza yardımcı olur. route
özelliği, sağlanan/api/blogposts
varsayılan API yolunun bir parçası olan olarak ayarlanırblogposts
.methods
özelliği kaldırıldı ve nesneninapp
kullanımı bunun bir GET isteği olduğunu gösterdiğindenget
gereksiz. Yöntem işlevleri aşağıda listelenmiştir. Farklı bir yönteminiz varsa özelliğini kullanmayamethods
dönebilirsiniz.deleteRequest()
get()
patch()
post()
put()
- bunun bir GET isteği olduğunu belirten işlevinin
4. Azurite yerel depolama öykünücüsü başlatma
Yerel bilgisayarınızda işlev geliştirmek için Depolama öykünücü (ücretsiz) veya Azure Depolama hesabı (ücretli) gerekir.
Ayrı bir terminalde Azurite yerel depolama öykünücüsü başlatın.
azurite --silent --location ./azurite --debug ./azurite/debug.log
Bu, Azure İşlevleri yerel bir Azure Depolama öykünücüsü kullanarak yerel olarak çalıştırmak için gereklidir. Yerel depolama öykünücüsülocal.settings.json
, azurewebjobs Depolama özelliğine sahip dosyasında değeriyle UseDevelopmentStorage=true
belirtilir.
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"FUNCTIONS_WORKER_RUNTIME": "node",
"AzureWebJobsFeatureFlags": "EnableWorkerIndexing"
}
}
Alt azurite
klasör dosyanıza .gitignore
zaten eklenmiş.
5. Yerel sunucusuz işlevi çalıştırma
Azure'a dağıtmadan önce test etmek için Azure İşlevleri projesini yerel olarak çalıştırın.
Visual Studio Code'da getBlogPosts işlevinin sonunda deyiminde bir kesme noktası
return
ayarlayın.Visual Studio Code'da hata ayıklayıcıyı başlatmak ve Azure İşlevleri konağına eklemek için F5 tuşuna basın.
Hata Ayıklama Başlat Hata Ayıklama> menü komutunu da kullanabilirsiniz.
Çıkış, Terminal panelinde görünür.
Visual Studio Code'da, birincil yan çubukta Azure simgesini seçerek Azure gezginini açın veya klavye kısayolunu (Shift + Alt + A) kullanın.
Çalışma Alanı bölümünde Yerel Proje -İşlevler ->>getBlogPosts öğesini bulun ve genişletin.
İşlev adına sağ tıklayın, getBlogPosts'a tıklayın ve İşlev Url'sini Kopyala'yı seçin.
Tarayıcınızda URL'yi yapıştırın ve Enter tuşuna basın veya terminalde aşağıdaki cURL komutunu kullanın:
curl http://localhost:7071/api/blogposts --verbose
Boş bir blog gönderi dizisinin yanıtı şu şekilde döndürülür:
* Trying 127.0.0.1:7071... * Connected to localhost (127.0.0.1) port 7071 (#0) > GET /api/blogposts HTTP/1.1 > Host: localhost:7071 > User-Agent: curl/7.88.1 > Accept: */* > < HTTP/1.1 200 OK < Content-Type: application/json < Date: Mon, 08 May 2023 17:35:24 GMT < Server: Kestrel < Transfer-Encoding: chunked < {"blogposts":[]}* Connection #0 to host localhost left intact
VS Code'da, Shift + F5 hata ayıklayıcısını durdurun.
6. Visual Studio Code'da Azure İşlevi uygulamasını oluşturma
Bu bölümde, Azure aboneliğinizde bir işlev uygulaması bulut kaynağı ve ilgili kaynaklar oluşturacaksınız.
Visual Studio Code'da komut paletini açın (Ctrl + Shift + P).
Azure İşlevleri: Azure'da İşlev Uygulaması Oluşturma (Gelişmiş) öğesini arayın ve seçin.
İstemlerde aşağıdaki bilgileri sağlayın:
İstem Seçim İşlev uygulaması için genel olarak benzersiz bir ad girin URL yolunda geçerli olan bir ad yazın, örneğin first-function
. URL'yi genel olarak benzersiz hale getirmek için 3 karakterden sonra ekleyin. Yazdığınız ad, Azure İşlevleri benzersiz olduğundan emin olmak için doğrulanır.Çalışma zamanı yığını seçme Node.js 18 LTS veya daha yeni bir sürüm seçin. İşletim sistemi seçme Linux'u seçin. Yeni kaynaklar için bir kaynak grubu seçin azure-tutorial-first-function adlı yeni bir kaynak grubu oluşturun. Bu kaynak grubunun sonunda birkaç kaynağı olacaktır: Azure İşlevi, Azure Depolama ve MongoDB için Cosmos DB API'si. Barındırma planı seçme Tüketim'i seçin. Depolama hesabı seçme Yeni depolama hesabı oluştur'u seçin ve varsayılan adı kabul edin. Uygulamanız için bir Uygulama Analizler kaynağı seçin. Yeni Uygulama Analizler kaynağı oluştur'u seçin ve varsayılan adı kabul edin. Bildirim uygulamanın oluşturulduğunu onaylayana kadar bekleyin.
7. Visual Studio Code'da Azure İşlevi uygulamasını Azure'a dağıtma
Önemli
Mevcut bir işlev uygulamasına dağıtılması her zaman Azure'da bu uygulamanın içeriğinin üzerine yazılır.
- Etkinlik çubuğunda Azure simgesini seçin, ardından Kaynaklar alanında işlev uygulaması kaynağınıza sağ tıklayın ve İşlev Uygulamasına Dağıt'ı seçin.
- Dağıtmak istediğinizden emin olup olmadığınız sorulursa Dağıt'ı seçin.
- Dağıtım tamamlandıktan sonra çeşitli seçenekler içeren bir bildirim görüntülenir. Sonuçları görüntülemek için Çıkışı Görüntüle'yi seçin. Bildirimi kaçırırsanız, yeniden görmek için sağ alt köşedeki zil simgesini seçin.
8. Bulut uygulamasına uygulama ayarı ekleme
Etkinlik çubuğunda Azure simgesini seçin, ardından Kaynaklar alanında işlev uygulaması kaynağınızı genişletin ve Uygulama Ayarlar'ni sağ tıklatın.
Yeni Ayar Ekle'yi seçin ve Node.js v4 (Önizleme) programlama modelini etkinleştirmek için aşağıdaki ayarı ekleyin.
Ayar Değer AzureWebJobsFeatureFlags EnableWorkerIndexing
9. Uzak sunucusuz işlevini çalıştırma
Visual Studio Code'da, birincil yan çubukta Azure simgesini seçerek Azure gezginini açın veya klavye kısayolunu (Shift + Alt + A) kullanın.
Kaynaklar bölümünde Azure İşlevi uygulama kaynağınızı genişletin. İşlev adına sağ tıklayın ve İşlev Url'sini Kopyala'yı seçin.
URL'yi bir tarayıcıya yapıştırın. İşlevi yerel olarak çalıştırdığınızda olduğu gibi aynı boş dizi döndürülür.
{"blogposts":[]}
10. MongoDB API tümleştirmesi için Azure Cosmos DB ekleme
Azure Cosmos DB, tanıdık bir tümleştirme noktası sağlamak için bir MongoDB API'sini sağlar.
Visual Studio Code'da, birincil yan çubukta Azure simgesini seçerek Azure gezginini açın veya klavye kısayolunu (Shift + Alt + A) kullanın.
Kaynaklar bölümünde Veritabanı Sunucusu Oluştur'u + seçin. Yeni bir Azure Cosmos DB kaynağı oluşturma istemlerini tamamlamak için aşağıdaki tabloyu kullanın.
İstem Değer Notlar Azure Veritabanı Sunucusu seçme MongoDB API için Azure Cosmos DB Bir Azure Cosmos DB hesap adı sağlayın. cosmosdb-mongodb-database
Benzersiz bir ad oluşturmak için postpend üç karakter. Ad, API'nin URL'sinin bir parçası olur. Bir kapasite modeli seçin. Sunucusuz Yeni kaynaklar için bir kaynak grubu seçin. azure-tutorial-first-function Önceki bölümde oluşturduğunuz kaynak grubunu seçin. Yeni kaynaklar için bir konum seçin. Önerilen bölgeyi seçin.
11. Mongoose bağımlılığını yükleme
Visual Studio Code terminalinde Ctrl + Shift tuşunu basılı tutarak + ` npm paketini yükleyin:
npm install mongoose
12. Blog gönderileri için mongoose kodu ekleme
Visual Studio Code'da adresinde lib
./src/
adlı bir alt dizin oluşturun, adlı./database.ts
bir dosya oluşturun ve içine aşağıdaki kodu kopyalayın.import { Schema, Document, createConnection, ConnectOptions, model, set } from 'mongoose'; const connectionString = process.env.MONGODB_URI; console.log('connectionString', connectionString); const connection = createConnection(connectionString, { useNewUrlParser: true, useUnifiedTopology: true, autoIndex: true } as ConnectOptions); export interface IBlogPost { author: string title: string body: string } export interface IBlogPostDocument extends IBlogPost, Document { id: string created: Date } const BlogPostSchema = new Schema({ id: Schema.Types.ObjectId, author: String, title: String, body: String, created: { type: Date, default: Date.now } }); BlogPostSchema.set('toJSON', { transform: function (doc, ret, options) { ret.id = ret._id; delete ret._id; delete ret.__v; } }); export const BlogPost = model<IBlogPostDocument>('BlogPost', BlogPostSchema); connection.model('BlogPost', BlogPostSchema); export default connection;
Visual Studio Code'da dosyayı açın
./src/functions/blogposts
ve dosyanın kodunun tamamını aşağıdakilerle değiştirin:import { app, HttpRequest, HttpResponseInit, InvocationContext } from "@azure/functions"; import connection from '../lib/database'; // curl --location 'http://localhost:7071/api/blogposts' --verbose export async function getBlogPosts(request: HttpRequest, context: InvocationContext): Promise<HttpResponseInit> { context.log(`Http function getBlogPosts processed request for url "${request.url}"`); const blogposts = await connection.model('BlogPost').find({}); return { status: 200, jsonBody: { blogposts } }; }; app.get('getBlogPosts', { route: "blogposts", authLevel: 'anonymous', handler: getBlogPosts });
13. Yerel uygulamaya bağlantı dizesi ekleme
Visual Studio Code'un Azure gezgininde Azure Cosmos DB bölümünü seçin ve genişleterek yeni kaynağınızı seçin öğesine sağ tıklayın.
bağlantı dizesi Kopyala'yı seçin.
Visual Studio Code'da Dosya gezginini kullanarak dosyasını açın
./local.settings.json
.adlı
MONGODB_URI
yeni bir özellik ekleyin ve bağlantı dizesi değerini yapıştırın.{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "", "FUNCTIONS_WORKER_RUNTIME": "node", "AzureWebJobsFeatureFlags": "EnableWorkerIndexing", "MONGODB_URI": "mongodb://...." } }
Dosyadaki
./local.settings.json
gizli diziler:- Dosyaya dahil olduğundan Azure'a
./.funcignore
dağıtılmaz. - Dosyaya eklendiğinden kaynak denetiminde
./.gitignore
denetlenmiyor.
- Dosyaya dahil olduğundan Azure'a
Uygulamayı yerel olarak çalıştırın ve API'yi önceki bölümde aynı URL ile test edin.
14. Uzak uygulamaya bağlantı dizesi ekleme
- Visual Studio Code'da, birincil yan çubukta Azure simgesini seçerek Azure gezginini açın veya klavye kısayolunu (Shift + Alt + A) kullanın.
- Kaynaklar bölümünde Azure Cosmos DB örneğinizi bulun. Kaynağa sağ tıklayın ve Bağlan Ion Dizesini Kopyala'yı seçin.
- Aynı Kaynaklar bölümünde İşlev Uygulamanızı bulun ve düğümü genişletin.
- Uygulama Ayarlar'ne sağ tıklayın ve Yeni Ayar Ekle'yi seçin.
- Uygulama ayarı adını
MONGODB_URI
girin ve Enter tuşuna basın. - Kopyaladığınız değeri yapıştırın ve Enter tuşuna basın.
15. Blog gönderilerini oluşturmak, güncelleştirmek ve silmek için API'ler ekleyin
Visual Studio Code'da komut paletini kullanarak Azure İşlevleri: İşlev oluştur'u bulun ve seçin.
HTTP tetikleyicisi'ni seçin ve (tekil) olarak adlandırlayın
blogpost
.Aşağıdaki kodu dosyaya kopyalayın.
import { app, HttpRequest, HttpResponseInit, InvocationContext } from "@azure/functions"; import connection, { IBlogPost, IBlogPostDocument } from '../lib/database'; // curl -X POST --location 'http://localhost:7071/api/blogpost' --header 'Content-Type: application/json' --data '{"author":"john","title":"my first post", "body":"learn serverless node.js"}' --verbose export async function addBlogPost(request: HttpRequest, context: InvocationContext): Promise<HttpResponseInit> { context.log(`Http function addBlogPost processed request for url "${request.url}"`); const body = await request.json() as IBlogPost; const blogPostResult = await connection.model('BlogPost').create({ author: body?.author, title: body?.title, body: body?.body }); return { status: 200, jsonBody: { blogPostResult } }; }; // curl -X PUT --location 'http://localhost:7071/api/blogpost/64568e727f7d11e09eab473c' --header 'Content-Type: application/json' --data '{"author":"john jones","title":"my first serverless post", "body":"Learn serverless Node.js with Azure Functions"}' --verbose export async function updateBlogPost(request: HttpRequest, context: InvocationContext): Promise<HttpResponseInit> { context.log(`Http function updateBlogPost processed request for url "${request.url}"`); const body = await request.json() as IBlogPost; const id = request.params.id; const blogPostResult = await connection.model('BlogPost').updateOne({ _id: id }, { author: body?.author, title: body?.title, body: body?.body }); if(blogPostResult.matchedCount === 0) { return { status: 404, jsonBody: { message: 'Blog post not found' } }; } return { status: 200, jsonBody: { blogPostResult } }; }; // curl --location 'http://localhost:7071/api/blogpost/6456597918547e37d515bda3' --verbose export async function getBlogPost(request: HttpRequest, context: InvocationContext): Promise<HttpResponseInit> { context.log(`Http function getBlogPosts processed request for url "${request.url}"`); console.log('request.params.id', request.params.id) const id = request.params.id; const blogPost = await connection.model('BlogPost').findOne({ _id: id }); if(!blogPost) { return { status: 404, jsonBody: { message: 'Blog post not found' } }; } return { status: 200, jsonBody: { blogPost } }; }; // curl --location 'http://localhost:7071/api/blogpost/6456597918547e37d515bda3' --request DELETE --header 'Content-Type: application/json' --verbose export async function deleteBlogPost(request: HttpRequest, context: InvocationContext): Promise<HttpResponseInit> { context.log(`Http function deleteBlogPost processed request for url "${request.url}"`); const id = request.params.id; const blogPostResult = await connection.model('BlogPost').deleteOne({ _id: id }); if(blogPostResult.deletedCount === 0) { return { status: 404, jsonBody: { message: 'Blog post not found' } }; } return { status: 200, jsonBody: { blogPostResult } }; }; app.get('getBlogPost', { route: "blogpost/{id}", authLevel: 'anonymous', handler: getBlogPost }); app.post('postBlogPost', { route: "blogpost", authLevel: 'anonymous', handler: addBlogPost }); app.put('putBlogPost', { route: "blogpost/{id}", authLevel: 'anonymous', handler: updateBlogPost }); app.deleteRequest('deleteBlogPost', { route: "blogpost/{id}", authLevel: 'anonymous', handler: deleteBlogPost });
Hata ayıklayıcısıyla yerel işlevi yeniden başlatın. Aşağıdaki API'ler kullanılabilir:
deleteBlogPost: [DELETE] http://localhost:7071/api/blogpost/{id} getBlogPost: [GET] http://localhost:7071/api/blogpost/{id} getBlogPosts: [GET] http://localhost:7071/api/blogposts postBlogPost: [POST] http://localhost:7071/api/blogpost putBlogPost: [PUT] http://localhost:7071/api/blogpost/{id}
Birkaç blog gönderisi
blogpost
eklemek için cURL komutundaki (tekil) API'yi kullanın.curl -X POST --location 'http://localhost:7071/api/blogpost' --header 'Content-Type: application/json' --data '{"author":"john","title":"my first post", "body":"learn serverless node.js"}' --verbose
Blog gönderilerini
blogposts
almak için cURL komutundan (çoğul) API'yi kullanın.curl http://localhost:7071/api/blogposts --verbose
16. Azure Cosmos DB için Visual Studio Code uzantısıyla tüm verileri görüntüleme
Visual Studio Code'da, birincil yan çubukta Azure simgesini seçerek Azure gezginini açın veya klavye kısayolunu (Shift + Alt + A) kullanın.
Kaynaklar bölümünde Azure Cosmos DB veritabanınıza sağ tıklayın ve Yenile'yi seçin.
Belgeleri görüntülemek için test veritabanını ve blogposts koleksiyonu düğümlerini genişletin.
Azure Cosmos DB örneğindeki verileri görüntülemek için listelenen öğelerden birini seçin.
17. İşlev uygulamasını veritabanı kodunu içerecek şekilde yeniden dağıtın
- Visual Studio Code'da, birincil yan çubukta Azure simgesini seçerek Azure gezginini açın veya klavye kısayolunu (Shift + Alt + A) kullanın.
- Kaynaklar bölümünde Azure İşlev uygulamanıza sağ tıklayın ve İşlev Uygulamasına Dağıt'ı seçin.
- Dağıtmak istediğinizden emin olup olmadığını soran açılır pencerede Dağıt'ı seçin.
- Devam etmeden önce dağıtım tamamlanana kadar bekleyin.
18. Bulut tabanlı Azure İşlevi'ni kullanma
- Yine Azure Gezgini'ndeki İşlevler alanında işlevinizi seçer ve genişletir ve ardından API'leri listeleyen İşlevler düğümünü seçer
- API'lerden birine sağ tıklayın ve İşlev Url'sini Kopyala'yı seçin.
- Yerel URL yerine uzak URL'yi kullanmak için önceki cURL komutlarını düzenleyin. Uzak API'yi test etmek için komutları çalıştırın.
19. Azure İşlev günlüklerinizi sorgulama
Günlüklerde arama yapmak için Azure portalını kullanın.
Visual Studio Code'da Azure Gezgini'ni seçin, ardından İşlevler'in altında işlev uygulamanıza sağ tıklayın ve portalda aç'ı seçin.
Bu, Azure portalını Azure İşlevinize açar.
Ayarlar Uygulama Analizler'ı ve ardından Uygulama Analizler verilerini görüntüle'yi seçin.
Bu bağlantı, Visual Studio Code ile Azure İşlevinizi oluştururken sizin için oluşturulan ayrı ölçüm kaynağınıza götürür.
İzleme bölümünde Günlükler'i seçin. Sorgular açılır penceresi görüntülenirse, kapatmak için açılır pencerenin sağ üst köşesindeki X işaretini seçin.
Yeni Sorgu 1 bölmesindeki Tablolar sekmesinde izlemeler tablosuna çift tıklayın.
Bu işlem Kusto
traces
sorgusunu sorgu penceresine girer.Özel günlükleri aramak için sorguyu düzenleyin:
traces | where message startswith "***"
Çalıştır seçin.
Günlükte herhangi bir sonuç görüntülenmiyorsa bunun nedeni Azure İşlevi'ne http isteği ile Kusto'daki günlük kullanılabilirliği arasında birkaç dakika gecikme olması olabilir. Birkaç dakika bekleyin ve sorguyu yeniden çalıştırın.
Bu günlük bilgilerini almak için ek bir işlem yapmanıza gerek yoktu:
- Kod, İşlev çerçevesi tarafından sağlanan işlevi kullandı
context.log
. Günlük kaydınız yerineconsole
yerine kullanılarakcontext
belirli bir işleve göre filtrelenebilir. İşlev uygulamanızın birçok işlevi varsa bu yararlı olur. - İşlev uygulaması sizin için Uygulama Analizler ekledi.
- Kusto Sorgu aracı Azure portalına eklenir.
- Günlüklerinizden minimum bilgileri bile almak için kusto sorgusu yazmayı öğrenmek zorunda kalmadan seçebilirsiniz
traces
.
- Kod, İşlev çerçevesi tarafından sağlanan işlevi kullandı
20. Kaynakları temizleme
Tek bir kaynak grubu kullandığınızdan, kaynak grubunu silerek tüm kaynakları silebilirsiniz.
- Visual Studio Code'da, birincil yan çubukta Azure simgesini seçerek Azure gezginini açın veya klavye kısayolunu (Shift + Alt + A) kullanın.
- Azure: Kaynak grubuna göre gruplandır'ı arayın ve seçin.
- Kaynak grubunuzu seçin'e sağ tıklayın ve Kaynak Grubunu Sil'i seçin.
- Silme işlemini onaylamak için kaynak grubu adını girin.
Kaynak kodu kullanılabilir
Bu Azure İşlevi uygulaması için tam kaynak kodu:
Sonraki adımlar
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin