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.

Flow chart showing path of HTTP request to pass data through Azure Functions and store in Azure Cosmos DB.

Geliştirme ortamınızı hazırlama

Aşağıdaki yazılımı yükleyin:

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.

  1. Visual Studio Code'da, birincil yan çubukta Azure simgesini seçerek Azure gezginini açın veya klavye kısayolunu (Shift + Alt + A) kullanın.

  2. Kaynaklar bölümünde Azure'da oturum aç'ı seçin ve istemleri izleyin.

    Sign in to Azure through VS Code

  3. 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:

    VS Code Azure explorer showing subscriptions

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.

  1. Yerel sisteminizde Azure işlevleri projesinin kökü olarak kullanılacak yeni bir klasör oluşturun.

  2. Bu klasörü Visual Studio Code'da açın.

  3. Visual Studio Code'da, birincil yan çubukta Azure simgesini seçerek Azure gezginini açın veya klavye kısayolunu (Shift + Alt + A) kullanın.

  4. Kaynaklar'ın altında aboneliğinizi bulun ve simgeyi + ve ardından Kaynak Grubu Oluştur'u seçin.

  5. 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.

  1. Visual Studio Code'da komut paletini açın (Ctrl + Shift + P).

  2. Azure İşlevleri: Yeni Proje Oluştur öğesini arayın ve seçin.

  3. 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
  4. 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.

  5. 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 getBlobPostsadı, işlevi günlüklerde yalıtmanıza yardımcı olur.
    • route özelliği, sağlanan /api/blogpostsvarsayılan API yolunun bir parçası olan olarak ayarlanırblogposts.
    • methods özelliği kaldırıldı ve nesnenin app kullanımı bunun bir GET isteği olduğunu gösterdiğinden get gereksiz. Yöntem işlevleri aşağıda listelenmiştir. Farklı bir yönteminiz varsa özelliğini kullanmaya methods dönebilirsiniz.
      • deleteRequest()
      • get()
      • patch()
      • post()
      • put()

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=truebelirtilir.

{
    "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.

  1. Visual Studio Code'da getBlogPosts işlevinin sonunda deyiminde bir kesme noktası return ayarlayın.

  2. 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.

  3. Çıkış, Terminal panelinde görünür.

  4. Visual Studio Code'da, birincil yan çubukta Azure simgesini seçerek Azure gezginini açın veya klavye kısayolunu (Shift + Alt + A) kullanın.

  5. Çalışma Alanı bölümünde Yerel Proje -İşlevler ->>getBlogPosts öğesini bulun ve genişletin.

  6. İşlev adına sağ tıklayın, getBlogPosts'a tıklayın ve İşlev Url'sini Kopyala'yı seçin.

    Partial screenshot of Visual Studio Code, with the Azure Function's button named Copy Function URL highlighted.

  7. 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
    
  8. 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.

  1. Visual Studio Code'da komut paletini açın (Ctrl + Shift + P).

  2. Azure İşlevleri: Azure'da İşlev Uygulaması Oluşturma (Gelişmiş) öğesini arayın ve seçin.

  3. İ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.

  1. 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.
  2. Dağıtmak istediğinizden emin olup olmadığınız sorulursa Dağıt'ı seçin.
  3. 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

  1. 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.

  2. 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

  1. Visual Studio Code'da, birincil yan çubukta Azure simgesini seçerek Azure gezginini açın veya klavye kısayolunu (Shift + Alt + A) kullanın.

  2. 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.

  3. 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.

  1. Visual Studio Code'da, birincil yan çubukta Azure simgesini seçerek Azure gezginini açın veya klavye kısayolunu (Shift + Alt + A) kullanın.

  2. 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

  1. 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;
    
  2. 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

  1. 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.

  2. bağlantı dizesi Kopyala'yı seçin.

  3. Visual Studio Code'da Dosya gezginini kullanarak dosyasını açın ./local.settings.json.

  4. 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.
  5. 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

  1. Visual Studio Code'da, birincil yan çubukta Azure simgesini seçerek Azure gezginini açın veya klavye kısayolunu (Shift + Alt + A) kullanın.
  2. 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.
  3. Aynı Kaynaklar bölümünde İşlev Uygulamanızı bulun ve düğümü genişletin.
  4. Uygulama Ayarlar'ne sağ tıklayın ve Yeni Ayar Ekle'yi seçin.
  5. Uygulama ayarı adını MONGODB_URI girin ve Enter tuşuna basın.
  6. 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

  1. Visual Studio Code'da komut paletini kullanarak Azure İşlevleri: İşlev oluştur'u bulun ve seçin.

  2. HTTP tetikleyicisi'ni seçin ve (tekil) olarak adlandırlayın blogpost .

  3. 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
    });
    
  4. 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}
    
  5. 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
    
  6. 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

  1. Visual Studio Code'da, birincil yan çubukta Azure simgesini seçerek Azure gezginini açın veya klavye kısayolunu (Shift + Alt + A) kullanın.

  2. Kaynaklar bölümünde Azure Cosmos DB veritabanınıza sağ tıklayın ve Yenile'yi seçin.

  3. Belgeleri görüntülemek için test veritabanını ve blogposts koleksiyonu düğümlerini genişletin.

  4. Azure Cosmos DB örneğindeki verileri görüntülemek için listelenen öğelerden birini seçin.

    Partial screenshot of Visual Studio Code, showing the Azure explorer with the Databases with a selected item displayed in the reading pane.

17. İşlev uygulamasını veritabanı kodunu içerecek şekilde yeniden dağıtın

  1. Visual Studio Code'da, birincil yan çubukta Azure simgesini seçerek Azure gezginini açın veya klavye kısayolunu (Shift + Alt + A) kullanın.
  2. Kaynaklar bölümünde Azure İşlev uygulamanıza sağ tıklayın ve İşlev Uygulamasına Dağıt'ı seçin.
  3. Dağıtmak istediğinizden emin olup olmadığını soran açılır pencerede Dağıt'ı seçin.
  4. Devam etmeden önce dağıtım tamamlanana kadar bekleyin.

18. Bulut tabanlı Azure İşlevi'ni kullanma

  1. 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
  2. API'lerden birine sağ tıklayın ve İşlev Url'sini Kopyala'yı seçin.
  3. 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.

  1. 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.

  2. Ayarlar Uygulama Analizler'ı ve ardından Uygulama Analizler verilerini görüntüle'yi seçin.

    Browser screenshot showing menu choices. Select **Application Insights** from the Settings, then select **View Application Insights data**.

    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.

  3. İ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.

  4. Yeni Sorgu 1 bölmesindeki Tablolar sekmesinde izlemeler tablosuna çift tıklayın.

    Bu işlem Kusto traces sorgusunu sorgu penceresine girer.

  5. Özel günlükleri aramak için sorguyu düzenleyin:

    traces 
    | where message startswith "***"
    
  6. Ç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 yerine consoleyerine kullanılarak contextbelirli 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çebilirsiniztraces.

20. Kaynakları temizleme

Tek bir kaynak grubu kullandığınızdan, kaynak grubunu silerek tüm kaynakları silebilirsiniz.

  1. Visual Studio Code'da, birincil yan çubukta Azure simgesini seçerek Azure gezginini açın veya klavye kısayolunu (Shift + Alt + A) kullanın.
  2. Azure: Kaynak grubuna göre gruplandır'ı arayın ve seçin.
  3. Kaynak grubunuzu seçin'e sağ tıklayın ve Kaynak Grubunu Sil'i seçin.
  4. 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