Visual Studio Code kullanarak Azure Cosmos DB Azure işlevleri Bağlan
Azure Işlevleri, kendi tümleştirme kodunuzu yazmak zorunda kalmadan Azure hizmetlerini ve diğer kaynakları işlevlere bağlamanıza olanak tanır. Hem giriş hem de çıktıyı temsil eden bu bağlamalar, işlev tanımı içinde bildirilmiştir. Bağlamalardan alınan veriler işleve parametre olarak sağlanır. Tetikleyici özel bir giriş bağlama türüdür. Bir işlevde yalnızca bir tetikleyici olsa da, birden çok giriş ve çıkış bağlaması olabilir. Daha fazla bilgi için bkz. Azure işlevleri Tetikleyicileri ve bağlamaları kavramları.
bu makalede, önceki hızlı başlangıç makalesinde oluşturduğunuz işleve Azure Cosmos DB bağlanmak için Visual Studio Code nasıl kullanılacağı gösterilmektedir. bu işleve eklediğiniz çıkış bağlaması, HTTP isteğinden verileri Azure Cosmos DB kapsayıcısında depolanan bir JSON belgesine yazar.
Başlamadan önce, Visual Studio Code kullanarak Azure 'da bir C# işlevi oluşturma hızlıbaşlangıcı ' nı doldurmanız gerekir. Bu makalenin sonunda kaynakları zaten temizlediğinizde, işlev uygulamasını ve ilgili kaynakları Azure 'da yeniden oluşturmak için adımlara tekrar gidin.
Başlamadan önce, Visual Studio Code kullanarak Azure 'da bir JavaScript Işlevi oluşturma hızlıbaşlangıcı ' nı doldurmanız gerekir. Bu makalenin sonunda kaynakları zaten temizlediğinizde, işlev uygulamasını ve ilgili kaynakları Azure 'da yeniden oluşturmak için adımlara tekrar gidin.
Ortamınızı yapılandırma
Başlamadan önce, Visual Studio Code için Azure veritabanları uzantısını yüklediğinizden emin olun.
Azure Cosmos DB hesabınızı oluşturun
Önemli
Azure Cosmos DB sunucusuz genel kullanıma sunulmuştur. bu tüketim tabanlı mod sunucusuz iş yükleri için güçlü bir seçenek Azure Cosmos DB. sunucusuz modda Azure Cosmos DB kullanmak için hesabınızı oluştururken kapasite modu olarak sunucusuz ' ı seçin.
Visual Studio Code, etkinlik çubuğunda Azure simgesini seçin.
Azure: Databases alanında, önceki makaledeişlev uygulamanızı oluşturduğunuz Azure aboneliğindeki sağ tıklayın (MacOS ' a CTRL + tıklama) ve sunucu oluştur... seçeneğini belirleyin.
İstemlerde aşağıdaki bilgileri sağlayın:
İstem Seçim Bir Azure veritabanı sunucusu seçin Core (SQL)SQL söz dizimini kullanarak sorgulayabilmeniz için bir belge veritabanı oluşturmayı seçin. Azure Cosmos DB SQL apı 'si hakkında daha fazla bilgi edinin.Hesap adı Azure Cosmos DB hesabınızı tanımlayan benzersiz bir ad girin. Hesap adı yalnızca küçük harf, sayı ve kısa çizgi (-) kullanabilir ve 3 ila 31 karakter uzunluğunda olmalıdır. Kapasite modeli seçin Sunucusuz modda bir hesap oluşturmak Için sunucusuz ' ı seçin. Yeni kaynaklar için bir kaynak grubu seçin Önceki makaledeişlev uygulamanızı oluşturduğunuz kaynak grubunu seçin. Yeni kaynaklar için bir konum seçin Azure Cosmos DB hesabınızın barındırılacağı coğrafi konumu seçin. Verilerinize en hızlı erişimi sağlamak için size veya kullanıcılarınıza en yakın konumu kullanın. Yeni hesabınız sağlandıktan sonra bildirim alanında bir ileti görüntülenir.
Azure Cosmos DB veritabanı ve kapsayıcı oluşturma
Hesabınıza sağ tıklayıp veritabanı oluştur... seçeneğini belirleyin.
İstemlerde aşağıdaki bilgileri sağlayın:
İstem Seçim Veritabanı adı my-databaseyazın.Koleksiyonunuz için girin ve KIMLIĞI my-containeryazın.Koleksiyon için bölüm anahtarını girin /idBölüm anahtarıolarak yazın.Kapsayıcıyı ve veritabanını oluşturmak için Tamam ' ı seçin.
İşlev uygulaması ayarlarınızı güncelleştirme
Önceki hızlı başlangıç makalesindeAzure 'da bir işlev uygulaması oluşturdunuz. bu makalede, yeni oluşturduğunuz Azure Cosmos DB kapsayıcısına JSON belgelerini yazacak şekilde uygulamanızı güncelleştirdiniz. Azure Cosmos DB hesabınıza bağlanmak için, bağlantı dizesini uygulama ayarlarınıza eklemeniz gerekir. daha sonra yerel. settings. json dosyanıza yeni ayarı indirerek, yerel olarak çalışırken Azure Cosmos DB hesabınıza bağlanabilirsiniz.
Visual Studio Code ' de, yeni Azure Cosmos DB hesabınızda (macos üzerinde Ctrl + tıklama) öğesine sağ tıklayın ve bağlantı dizesini kopyala' yı seçin.
F1 tuşuna basarak komut paletini açın, sonra komutunu arayıp çalıştırın
Azure Functions: Add New Setting....Önceki makalede oluşturduğunuz işlev uygulamasını seçin. İstemlerde aşağıdaki bilgileri sağlayın:
İstem Seçim Yeni uygulama ayarı adı girin CosmosDbConnectionStringyazın."CosmosDbConnectionString" için değer girin yeni kopyaladığınız Azure Cosmos DB hesabınızın bağlantı dizesini yapıştırın. Bu,
CosmosDbConnectionStringAzure 'daki işlev uygulamanızda bağlantı adlı bir uygulama ayarı oluşturur. Şimdi bu ayarı yerel. Settings. JSON dosyanıza indirebilirsiniz.Bir kez F1 tuşuna basarak komut paletini açın, sonra komutunu arayıp çalıştırın
Azure Functions: Download Remote Settings....Önceki makalede oluşturduğunuz işlev uygulamasını seçin. Var olan yerel ayarların üzerine yazmak için Tümüne Evet ' i seçin.
Bu, yeni bağlantı dizesi ayarı da dahil olmak üzere Azure 'daki tüm ayarı yerel projenize indirir. İndirilen ayarların çoğu yerel olarak çalıştırılırken kullanılmaz.
Bağlama uzantılarını kaydetme
Azure Cosmos DB bir çıkış bağlaması kullandığınızdan, projeyi çalıştırmadan önce karşılık gelen bağlama uzantısının yüklü olması gerekir.
HTTP ve Zamanlayıcı Tetikleyicileri dışında, bağlamalar uzantı paketleri olarak uygulanır. Azure Cosmos DB uzantısı paketini projenize eklemek için Terminal penceresinde aşağıdaki dotnet paket ekle komutunu çalıştırın.
dotnet add package Microsoft.Azure.WebJobs.Extensions.CosmosDB
Şimdi, depolama çıkış bağlamasını projenize ekleyebilirsiniz.
Projeniz, önceden tanımlanmış bir uzantı paketleri kümesini otomatik olarak yüklediği uzantıpaketlerini kullanmak üzere yapılandırılmıştır.
Uzantı demeti kullanımı, projenin kökündeki, aşağıdaki gibi görünen Host. json dosyasında etkinleştirilir:
{
"version": "2.0",
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[1.*, 2.0.0)"
}
}
şimdi projenize Azure Cosmos DB çıktı bağlamayı ekleyebilirsiniz.
Çıktı bağlaması ekleme
Işlevlerde, her bağlama türü direction , type name function. json dosyasında tanımlanması için bir, ve benzersiz gerektirir. Bu öznitelikleri tanımlama yöntemi, işlev uygulamanızın diline bağlıdır.
C# sınıf kitaplığı projesinde bağlamalar, işlev yönteminde bağlama öznitelikleri olarak tanımlanır. Işlevler tarafından istenen function. JSON dosyası, bu özniteliklere göre otomatik olarak oluşturulur.
Httpexample. cs proje dosyasını açın ve Yöntem tanımına aşağıdaki parametreyi ekleyin Run :
[CosmosDB(databaseName: "my-database", collectionName: "my-container",
ConnectionStringSetting = "CosmosDbConnectionString"
)]IAsyncCollector<dynamic> documentsOut,
documentsOutparametresi IAsyncCollector<T> , işlev tamamlandığında Azure Cosmos DB kapsayıcısına yazılan JSON belgelerinin koleksiyonunu temsil eden bir türdür. Belirli öznitelikler kapsayıcının ve onun üst veritabanının adlarını belirtir. Azure Cosmos DB hesabınız için bağlantı dizesi tarafından ayarlanır ConnectionStringSettingAttribute .
Belirli öznitelikler kapsayıcının adını ve üst veritabanının adını belirtin. Azure Cosmos DB hesabınız için bağlantı dizesi tarafından ayarlanır CosmosDbConnectionString .
Bağlama öznitelikleri doğrudan function. json dosyasında tanımlanır. Bağlama türüne bağlı olarak ek özellikler gerekebilir. Azure Cosmos DB çıkış yapılandırması, Azure veritabanı çıkış bağlaması için Cosmos alanları açıklar. Uzantı, function.json dosyasına bağlamalar eklemenizi kolaylaştırır.
Bağlama oluşturmak için HttpTrigger klasörünüzdeki dosyaya sağ tıklayın (macOS'a Ctrl tuşunu basılı tutarak tıklayın) ve function.json Bağlama ekle... öğesini seçin. Yeni bağlama için aşağıdaki bağlama özelliklerini tanımlamak üzere istemleri izleyin:
| İstem | Değer | Açıklama |
|---|---|---|
| Bağlama yönünü seçme | out |
Bağlama bir çıkış bağlamasıdır. |
| "Out" yönüne sahip bağlamayı seçme | Azure Cosmos DB |
Bağlama bir Azure Cosmos DB bağlamasıdır. |
| Kodunda bu bağlamayı tanımlamak için kullanılan ad | outputDocument |
Kodunda başvurulan bağlama parametresini tanımlayan ad. |
| Verilerin Cosmos veritabanı | my-database |
Hedef kapsayıcıyı içeren Azure Cosmos DB veritabanının adı. |
| Verilerin yazıldığı veritabanı koleksiyonu | my-container |
JSON belgelerinin yazıldığı Azure Cosmos DB kapsayıcısı adı. |
| True ise, Cosmos DB veritabanı ve koleksiyonunu oluşturur | false |
Hedef veritabanı ve kapsayıcı zaten var. |
| "local.setting.json" ayarından ayarı seçin | CosmosDbConnectionString |
Azure Cosmos DB hesabının bağlantı dizesini içeren uygulama ayarının adı. |
| Bölüm anahtarı (isteğe bağlı) | boş bırakın | Yalnızca çıkış bağlaması kapsayıcıyı oluşturduğunda gereklidir. |
| Koleksiyon işleme hızı (isteğe bağlı) | boş bırakın | Yalnızca çıkış bağlaması kapsayıcıyı oluşturduğunda gereklidir. |
bindingsfunction.json işlevinizin dizinine bir bağlama eklenir ve bu da aşağıdakine benzer olacaktır:
{
"type": "cosmosDB",
"direction": "out",
"name": "outputDocument",
"databaseName": "my-database",
"collectionName": "my-container",
"createIfNotExists": "false",
"connectionStringSetting": "CosmosDbConnectionString"
}
Çıkış bağlaması kullanan kod ekleme
JSON belgesi oluşturmak documentsOut için çıkış bağlama nesnesini kullanan kod ekleyin. Yöntemin döndürtmeden önce bu kodu ekleyin.
if (!string.IsNullOrEmpty(name))
{
// Add a JSON document to the output container.
await documentsOut.AddAsync(new
{
// create a random ID
id = System.Guid.NewGuid().ToString(),
name = name
});
}
Bu noktada işleviniz aşağıdaki gibi olmalıdır:
[FunctionName("HttpExample")]
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
[CosmosDB(
databaseName: "my-database",
collectionName: "my-container",
ConnectionStringSetting = "CosmosDbConnectionString")]IAsyncCollector<dynamic> documentsOut,
ILogger log)
{
log.LogInformation("C# HTTP trigger function processed a request.");
string name = req.Query["name"];
string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
dynamic data = JsonConvert.DeserializeObject(requestBody);
name = name ?? data?.name;
if (!string.IsNullOrEmpty(name))
{
// Add a JSON document to the output container.
await documentsOut.AddAsync(new
{
// create a random ID
id = System.Guid.NewGuid().ToString(),
name = name
});
}
string responseMessage = string.IsNullOrEmpty(name)
? "This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response."
: $"Hello, {name}. This HTTP triggered function executed successfully.";
return new OkObjectResult(responseMessage);
}
JSON belgesi oluşturmak outputDocument için üzerinde çıkış bağlama nesnesini kullanan kod context.bindings ekleyin. Bu kodu deyiminden önce context.res ekleyin.
if (name) {
context.bindings.outputDocument = JSON.stringify({
// create a random ID
id: new Date().toISOString() + Math.random().toString().substr(2,8),
name: name
});
}
Bu noktada işleviniz aşağıdaki gibi olmalıdır:
module.exports = async function (context, req) {
context.log('JavaScript 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.";
if (name) {
context.bindings.outputDocument = JSON.stringify({
// create a random ID
id: new Date().toISOString() + Math.random().toString().substr(2,8),
name: name
});
}
context.res = {
// status: 200, /* Defaults to 200 */
body: responseMessage
};
}
Bu kod artık hem MultiResponse belge hem de HTTP yanıtı içeren bir nesne döndürür.
İşlevi yerel olarak çalıştırma
Visual Studio Code, Azure'Azure İşlevleri yayımlamadan önce bu projeyi yerel geliştirme bilgisayarınızda çalıştırmanıza izin vermenizi sağlar.
İşlevini çağırarak F5 tuşuna basarak işlev uygulaması projesini başlatabilirsiniz. Temel Araçlar’daki çıktı, Terminal panelinde görüntülenir. Uygulamanız Terminal panelinden başlar. HTTP ile tetiklenen işlevinizin URL uç noktasının yerel olarak çalıştır çalıştırıi olduğunu görüyorsunuz.

Windows'da çalıştırma konusunda sorun Visual Studio Code için varsayılan terminalin WSL Bash olarak ayarlanmay olduğundan emin olun.
Core Tools çalışıyorken Azure: İşlevler alanına gidin. İşlevler'in altında, Yerel Project İşlevler'i > genişletin. İşleve sağ tıklayın (Windows) veya Ctrl tuşunu basılı tutarak (macOS)
HttpExampletıklayın ve İşlevi Şimdi Yürüt... öğesini seçin.
İstek gövdenizi girin içinde, işlevinize bir istek iletisi göndermek için Enter tuşuna basın.
İşlev yerel olarak yürütülür ve bir yanıt döndürülürken, bir bildirim Visual Studio Code. İşlev yürütmesi hakkında bilgiler Terminal panelinde gösterilir.
Core Tools'ı durdurmak ve hata ayıklayıcının bağlantısını kesmek için Ctrl + C tuşlarına basın.
İşlevi yerel olarak çalıştırma
Önceki makalede olduğu gibi, işlev uygulaması projesini ve Core Tools'i başlatmak için F5 tuşuna basın.
Core Tools çalışıyorken Azure: İşlevler alanına gidin. İşlevler altında Yerel İşlevler'Project > genişletin. İşleve sağ tıklayın (Mac'e Ctrl tuşunu basılı tutarak
HttpExampletıklayın) ve İşlevi Şimdi Yürüt... öğesini seçin.
İstek gövdeyi girin içinde istek iletisi gövdesi değerini
{ "name": "Azure" }görüyorsunuz. Bu istek iletiyi işlevinize göndermek için Enter tuşuna basın.Yanıt döndürüldikten sonra Core Tools'ları durdurmak için Ctrl + C tuşlarına basın.
JSON belgesinin oluşturulmakta olduğunu doğrulama
Hizmet Azure portal Azure Cosmos DB hesabınıza geri gidin ve Veri Gezgini.
Veritabanınızı ve kapsayıcınızı genişletin ve Öğeler'i seçerek kapsayıcınız içinde oluşturulan belgeleri listelenin.
Çıkış bağlaması tarafından yeni bir JSON belgesi oluşturulmakta olduğunu doğrulayın.
Güncelleştirilmiş uygulamayı yeniden uygulama ve doğrulama
Komut Visual Studio Code F1 tuşuna basarak komut paletini açın. Komut paletinde öğesini arayın ve öğesini
Azure Functions: Deploy to function app...seçin.İlk makalede oluşturduğunuz işlev uygulamasını seçin. Projenizi aynı uygulamaya yeniden dağıtıyorsanız, dosyaların üzerine yazma uyarısını silmek için Dağıt'ı seçin.
Dağıtım tamamlandıktan sonra işlevi Azure'da tetiklemek için İşlevi Şimdi Yürüt... özelliğini yeniden kullanabilirsiniz.
Çıkış bağlamanın yeniden yeni bir JSON belgesi oluşturduğuna emin olmak için Azure Cosmos DB kapsayıcınız içinde oluşturulan belgeleri yeniden kontrol edin.
Kaynakları temizleme
Azure'da kaynaklar işlev uygulamalarına, işlevlere, depolama hesaplarına vb. başvurur. Bunlar kaynak gruplarına ayrılır ve grubu silerek bir gruptaki her şeyi silebilirsiniz.
Bu hızlı başlangıçları tamamlamak için kaynaklar oluşturdunuz. Hesap durumunuza ve hizmet fiyatlandırmanıza bağlı olarak size bu kaynakların ücretleri yansıtılabilir. Kaynaklara artık ihtiyacınız yoksa, şunları yaparak silebilirsiniz:
Visual Studio Code ' de, F1 tuşuna basarak komut paletini açın. Komut paletinde, araması yapın ve seçin
Azure Functions: Open in portal.İşlev uygulamanızı seçin ve ENTERtuşuna basın. İşlev uygulaması sayfası Azure portal açılır.
Genel bakış sekmesinde kaynak grubu' nun yanındaki adlandırılmış bağlantıyı seçin.
Kaynak grubu sayfasında, dahil edilen kaynakların listesini gözden geçirin ve silmek istediğiniz kaynakların bunlar olduğunu doğrulayın.
Kaynak grubunu sil’i seçin ve yönergeleri izleyin.
Silme işlemi birkaç dakika sürebilir. İşlem tamamlandığında, birkaç saniye boyunca bir bildirim görüntülenir. Bildirimi görüntülemek için sayfanın üst kısmındaki zil simgesini de seçebilirsiniz.
Sonraki adımlar
HTTP ile tetiklenen işlevinizi, JSON belgelerini azure Cosmos DB kapsayıcıya yazacak şekilde Cosmos güncelleştirildi. Artık Visual Studio Code kullanarak İşlev geliştirme hakkında daha fazla Visual Studio Code: