Eğitici: Python işlevini Azure Tablo Depolama çıktısı ile yapılandırma

Bu öğreticide, Azure Tablo Depolaması çıkış bağlaması olarak kullanmak için bir Python işlevi yapılandıracaksınız. Ardından işlevi Azure İşlevleri dağıtıp Hizmet Bağlayıcısı'nı kullanarak Azure İşlevleri uygulamasını Tablo Depolama'ya bağlarsınız.

Aşağıdaki görevleri tamamlamak için Visual Studio Code kullanırsınız:

  • bir Python işlev projesi oluşturun.
  • Tablo Depolama çıkış işlevi bağlantısı ekleyin.
  • İşlevi yerel olarak çalıştırın.
  • İşlevi Azure dağıtın.
  • Hizmet Bağlayıcısı'nı kullanarak Azure İşlevleri uygulaması ile Tablo Depolama arasında bir bağlantı oluşturun.

Hizmet Bağlayıcısı kaynak hizmeti Azure İşlevleri ve hedef hizmet Azure Tablo Depolaması. İşlev bağlaması, çıktı olarak depolama tablosuyla bir HTTP tetikleyicisi kullanır. Yerel ve bulut kimlik doğrulama türü bağlantı dizesidir (bağlantı dizesi).

Önkoşullar

  • Azure İşlevleri ve Azure İşlevleri içindeki hizmetlere bağlanma hakkında temel bilgiler.
  • Azure kaynağı yazma izinlerine sahip olduğunuz, Hizmet Bağlayıcısını destekleyen bir Azure bölgesinde bir Azure aboneliği. Ücretsiz bir Azure hesabı oluşturun.
  • Azure aboneliğinizde bir Azure Depolama Hesabı ve depolama hesabında testTable adlı bir tablo.
  • aşağıdaki uzantıların yüklü olduğu Visual Studio Code:
    • Python
    • Azure CLI Araçları
    • Azure İşlevleri, Programlama Modeli V1'e aşağıdaki şekilde izin verecek şekilde yapılandırıldı:
      1. Visual Studio Code'da, Azure İşlevleri uzantısının yanındaki Settings simgesini seçin ve Settings öğesini seçin.
      2. Settings ekranında Azure İşlevleri: Programlama Modeli Seçimine İzin Ver yanındaki onay kutusunu seçin.
      3. Ayarlar ekranını kapatın.

İşlev projesini oluşturma

Visual Studio Code'da HTTP tetikleyicisi ile bir Python işlev projesi oluşturun.

  1. komut paletini açmak için F1 tuşlarına basın ve Azure İşlevleri: Create New Project komutunu arayın ve seçin.
  2. İşlev projenizi içerecek klasörü seçmek için,Gözat öğesini tıklayın ve proje çalışma alanı için yeni bir klasör oluşturun veya boş bir klasör seçin. Zaten bir çalışma alanının parçası olan bir proje klasörünü seçmeyin.
  3. Bir proje türü seçin için Python öğesini seçin.
  4. Bir Python programlama modeli seçme için, Model V1'i seçin.
  5. Sanal ortam oluşturmak için bir Python yorumlayıcı seçin, Python yorumlayıcısını veya tam yolu manuel olarak girin ve Python yürütülebilir dosyanızın tam yolunu girin.
  6. Projenizin ilk işlevi için şablon seçin için HTTP tetikleyicisi'ni seçin.
  7. İşlev adı sağlayın alanınaTableStorageOutputFunc girin.
  8. Yetkilendirme düzeyi içinAnonim'i seçin.
  9. Projenizi nasıl açmak istediğinizi seçin için Geçerli pencerede aç'ı seçin.

Daha fazla bilgi için bkz. İşlev kodu oluşturma ve Visual Studio Code kullanarak Azure dağıtma.

Çıkış bağlaması olarak bir depolama tablosu ekle

Aşağıdaki yordam, işleviniz için bir tablo çıkış bağlaması oluşturmak üzere projenizdeki function.json ve local.settings.json dosyalarını düzenler.

  1. İşlev klasörünüzdeki function.json dosyasına sağ tıklayın ve bağlam menüsünden Bağlama ekle'yi seçin.
  2. Komut paletinde Bağlama yönünü seçin için dışarıyı seçin.
  3. "out" yönünde bağlama seçme için Azure Tablo Depolaması öğesini seçin.
  4. Kodunuzda bu bağlamayı tanımlamak için kullanılan ad için outMessage girin.
  5. Verilerin yazılacağı depolama hesabında Tablo adı için testTable girin.
  6. 'local.settings.json' dosyasındaki Depolama hesabı bağlantı dizesi'i ile uygulama ayarını seçmek içinYeni yerel uygulama ayarı oluştur'u seçin.
  7. Select subscription için Azure aboneliğinizi seçin.
  8. Geliştirme için bir depolama hesabı türü seçin ve Uzaktaki depolama için Azure Depolama kullanın'ı seçin.
  9. Bir depolama hesabı seçin için çıkış için kullanılacak Azure Depolama hesabını seçin.

Eklenen bağlamayı denetleyin

  • TableStorageOutputFunc/function.json dosyasını açın ve tablo çıkış bağlamasının dosyaya doğru eklendiğinden emin olun. Değerlerden herhangi biri farklıysa, bunları aşağıdaki değerlerle düzenleyin:

        {
          "type": "table",
          "direction": "out",
          "name": "outMessage",
          "tableName": "testtable",
          "connection": "<your-storage-account-name>_STORAGE"
        }
    
  • local.settings.json dosyasını açın ve şu anahtar-değer çiftinin şu dosyada olduğundan emin olun: <your-storage-account-name>_STORAGE: <your-storage-account-connection-string>.

Python kodunu düzenleme

TableStorageOutputFunc/__init__.py dosyasını açın ve içeriğini aşağıdaki kodla değiştirin:

import logging
import uuid
import json
import azure.functions as func

def main(req: func.HttpRequest, outMessage: func.Out[str]) -> func.HttpResponse:

    rowKey = str(uuid.uuid4())
    data = {
        "Name": "Output binding message",
        "PartitionKey": "message",
        "RowKey": rowKey
    }

    outMessage.set(json.dumps(data))
    return func.HttpResponse(f"Message created with the rowKey: {rowKey}")

İşlevi yerel olarak çalıştırma

İşlevi yerel olarak çalıştırmak için F5 tuşuna basın. Depolama hesabına bağlanmanız istenirse bir Azure Depolama hesabı seçin. Bu değer Azure İşlevleri çalışma zamanı için kullanılır ve olabilir, ancak işlev çıktısı için kullandığınız depolama hesabıyla aynı olması gerekmez.

İşlev çalışırken, Etkinlik çubuğunun Çalışma Alanı görünümünde TableStorageOutputFunc işlevine sağ tıklayıp İşlevi Şimdi Yürüt'ü seçerek Tablo Depolama tablonuza yazabildiğini doğrulayın. Tabloya yazılmış bir rowKey değer içerdiğinden emin olmak için işlev yanıtını denetleyin.

İşlevinizi Azure'a dağıtma

bir Azure İşlevleri uygulaması oluşturun ve işlevinizi Azure dağıtın.

  1. Proje function.json dosyanızda, connectionbindings özelliğinin değerini AZURE_STORAGETABLE_CONNECTIONSTRING olarak değiştirin.
  2. komut paletini açmak için F1 tuşlarına basın ve Azure İşlevleri: İşlev Uygulamasına Dağıt komutunu arayın ve seçin.
  3. Select subscription için Azure aboneliğinizi seçin.
  4. İşlev uygulaması seçin içinYeni İşlev Uygulaması oluştur'u seçin.
  5. Yeni kaynaklar için bir konum seçin, Azure İşlevleri uygulamanız için bir Azure bölgesi seçin, tercihen Depolama hesabınızla aynı bölge.
  6. Yeni işlev uygulaması için bir ad girin alanında, yerel işlevinizle aynı adı (TableStorageOutputFunc) girebilirsiniz.
  7. Select a runtime stack için Python 3.10 öğesini seçin.
  8. Kaynak kimlik doğrulama türü içinGizliler'i seçin.

Important

Gizli dizileri kullanan bağlantı dizesi kimlik doğrulama akışı, uygulamada yüksek düzeyde güven gerektirir ve diğer akışlarda mevcut olmayan riskleri taşır. Bu akışı yalnızca yönetilen kimlikler gibi daha güvenli akışlar uygun olmadığında kullanmalısınız.

Service Connector kullanarak bağlantı oluşturma

İşlevler uygulamasını oluşturduktan sonra, uygulamanızı Tablo Depolama tablonuza bağlamak için Service Connector'ı kullanabilirsiniz, böylece uygulamanız depolama hesabınıza kolayca çıktı yazabilir. Aşağıdaki komut, işlevin Uygulama Ayarları'nda değişkeni yapılandıran AZURE_STORAGETABLE_CONNECTIONSTRING bir Hizmet Bağlayıcısı kaynağı oluşturur.

İşlev bağlaması, işlevin depolama tablosuna yazabilmesi için depolama hesabına bağlanmak için bu uygulama ayarını kullanır. Daha fazla bilgi için bkz. Service Connector, Azure İşlevleri'ın hizmetlere bağlanmasına nasıl yardımcı olur.

Bağlantıyı oluşturmak için, Visual Studio Code'da aşağıdaki Azure CLI komutunu çalıştırabilir veya Azure Cloud Shell veya local Azure CLI kullanabilirsiniz. Yer tutucu değerlerini aşağıdaki gibi değiştirin:

  • <function-resource-id>:
    /subscriptions/<your-subscription>/resourceGroups/<function-resource-group>/providers/Microsoft.Web/sites/<function-name>

  • <storage-resource-id>:
    /subscriptions/<your-subscription>/resourceGroups/<storage-resource-group>/providers/Microsoft.Storage/storageAccounts/<storage-account>/tableServices/default

az functionapp connection create storage-table --source-id "<function-resource-id>" --target-id "<storage-resource-id>" --secret

Sorun giderme

depolama konağıyla ilgili No such host is known (<account-name>.table.core.windows.net:443) gibi hatalar alırsanız, Tablo Depolama'ya bağlanmak için kullanılan bağlantı dizesi tablo uç noktasını içerdiğinden emin olun. Yoksa, Azure Depolama sayfasına gidin, Access anahtarlarındanGüvenlik + ağ altındaki bağlantı dizesi kopyalayın ve değerini değiştirin.

Yerel olarak çalıştırdığınızda bu hata oluşursa local.settings.json dosyasını denetleyin. İşlevinizi Azure dağıttığınızda hata oluşursa İşlevler uygulamasının Uygulama Ayarları'nı denetleyin.

Kaynakları temizleme

Bu öğretici için oluşturduğunuz Azure kaynaklarını artık istemiyorsanız, bunları silebilirsiniz.

  • Azure portalında İşlevler uygulamasını veya Depolama hesabı kaynağını açın ve üst menü çubuğundan Delete seçin. Kaynak adını girin ve Sil'i seçin.

  • Azure CLI'de, yer tutucuları kendi bilgilerinizle değiştirerek aşağıdaki komutlardan birini veya her ikisini çalıştırın.

    az functionapp delete --name <functionapp-name> --resource-group <functionapp-resource-group>
    az storage account delete --name <storageaccount-name> --resource-group <storageaccount-resource-group>