Azure CLI kullanarak IoT Hub dosya yüklemelerini yapılandırma

Bu makalede, Azure CLI kullanarak IoT hub'ınıza dosya yüklemelerini yapılandırma adımları gösterilmektedir.

IoT Hub'da dosya karşıya yükleme işlevini kullanmak için önce bir Azure depolama hesabını ve blob kapsayıcısını IoT hub'ınızla ilişkilendirmeniz gerekir. IoT Hub, cihazların dosyaları karşıya yüklerken kullanabilmesi için bu blob kapsayıcısına yazma izinlerine sahip SAS URI'lerini otomatik olarak oluşturur. Depolama hesabı ve blob kapsayıcısına ek olarak, SAS URI'sinin yaşam süresini ve IoT Hub'ın Azure depolama ile kullandığı kimlik doğrulama türünü ayarlayabilirsiniz. IoT Hub'ın arka uç hizmetlerine sunabileceği isteğe bağlı dosya karşıya yükleme bildirimlerinin ayarlarını da yapılandırabilirsiniz.

Ön koşullar

  • Etkin bir Azure hesabı. Hesabınız yoksa, yalnızca birkaç dakika içinde ücretsiz bir hesap oluşturabilirsiniz.

  • Azure IoT hub'ı. IoT hub'ına sahip değilseniz komutunu kullanarak az iot hub create bir tane oluşturabilir veya portalı kullanarak IoT hub'ı oluşturabilirsiniz.

  • Bir Azure Depolama hesabı. Azure Depolama hesabınız yoksa Azure CLI'yı kullanarak bir hesap oluşturabilirsiniz. Daha fazla bilgi için bkz. Depolama hesabı oluşturma.

  • Azure Cloud Shell'de Bash ortamını kullanın. Daha fazla bilgi için bkz . Azure Cloud Shell'de Bash için hızlı başlangıç.

  • CLI başvuru komutlarını yerel olarak çalıştırmayı tercih ediyorsanız Azure CLI'yı yükleyin . Windows veya macOS üzerinde çalışıyorsanız Azure CLI’yi bir Docker kapsayıcısında çalıştırmayı değerlendirin. Daha fazla bilgi için bkz . Docker kapsayıcısında Azure CLI'yi çalıştırma.

    • Yerel yükleme kullanıyorsanız az login komutunu kullanarak Azure CLI ile oturum açın. Kimlik doğrulama işlemini tamamlamak için terminalinizde görüntülenen adımları izleyin. Diğer oturum açma seçenekleri için bkz . Azure CLI ile oturum açma.

    • İstendiğinde, ilk kullanımda Azure CLI uzantısını yükleyin. Uzantılar hakkında daha fazla bilgi için bkz. Azure CLI ile uzantıları kullanma.

    • Yüklü sürümü ve bağımlı kitaplıkları bulmak için az version komutunu çalıştırın. En son sürüme yükseltmek için az upgrade komutunu çalıştırın.

Dekont

Bu makalede Azure IoT uzantısının adlı azure-ioten yeni sürümü kullanılır. Eski sürüm olarak adlandırılır azure-cli-iot-ext. Bir kerede yalnızca bir sürümünüz yüklü olmalıdır. Şu anda yüklü olan uzantıları doğrulamak için komutunu az extension list kullanabilirsiniz.

Uzantının eski sürümünü kaldırmak için kullanın az extension remove --name azure-cli-iot-ext .

Uzantının yeni sürümünü eklemek için kullanın az extension add --name azure-iot .

Hangi uzantıları yüklediğinizi görmek için kullanın az extension list.

Oturum açma ve Azure hesabınızı ayarlama

Azure hesabınızda oturum açın ve aboneliğinizi seçin. Azure Cloud Shell kullanıyorsanız zaten oturum açmış olmanız gerekir; ancak, birden çok aboneliğiniz varsa Azure aboneliğinizi seçmeniz gerekebilir.

  1. Komut isteminde oturum açma komutunu çalıştırın:

    az login
    

    Kodu kullanarak kimlik doğrulaması gerçekleştirmek için yönergeleri uygulayın ve bir web tarayıcısı üzerinden Azure hesabınızda oturum açın.

  2. Birden fazla Azure aboneliğiniz varsa Azure’da oturum açtığınızda, kimlik bilgilerinizle ilişkili tüm Azure hesaplarınıza erişim izni elde edersiniz. Kullanabileceğiniz Azure hesaplarını listelemek için aşağıdaki komutu kullanın:

    az account list
    

    IoT hub'ınızı oluşturmak için komutları çalıştırmak için kullanmak istediğiniz aboneliği seçmek için aşağıdaki komutu kullanın. Önceki komutun çıkışında yer alan abonelik adını veya kimliği kullanabilirsiniz:

    az account set --subscription {your subscription name or id}
    

Depolama hesabı ayrıntılarınızı alma

Aşağıdaki adımlarda depolama hesabınızı Klasik dağıtım modelini değil Resource Manager dağıtım modelini kullanarak oluşturduğunuz varsayılır.

Cihazlarınızdan dosya yüklemelerini yapılandırmak için azure Depolama hesabının bağlantı dizesi gerekir. Depolama hesabının IoT hub'ınızla aynı abonelikte olması gerekir. Depolama hesabında blob kapsayıcısının adına da ihtiyacınız vardır. Depolama hesabı anahtarlarınızı almak için aşağıdaki komutu kullanın:

az storage account show-connection-string --name {your storage account name} \
  --resource-group {your storage account resource group}

bağlantı dizesi aşağıdaki çıkışa benzer olacaktır:

{
  "connectionString": "DefaultEndpointsProtocol=https;EndpointSuffix=core.windows.net;AccountName={your storage account name};AccountKey={your storage account key}"
}

connectionString değerini not edin. Aşağıdaki adımlarda buna ihtiyacınız vardır.

Dosya karşıya yüklemeleriniz için mevcut bir blob kapsayıcısını kullanabilir veya yeni bir tane oluşturabilirsiniz:

  • Depolama hesabınızdaki mevcut blob kapsayıcılarını listelemek için aşağıdaki komutu kullanın:

    az storage container list --connection-string "{your storage account connection string}"
    
  • Depolama hesabınızda blob kapsayıcısı oluşturmak için aşağıdaki komutu kullanın:

    az storage container create --name {container name} \
      --connection-string "{your storage account connection string}"
    

IoT hub'ınızı yapılandırma

Artık depolama hesabı ayrıntılarınızı kullanarak IoT hub'ına dosya yükleme özelliğini etkinleştirmek için IoT hub'ınızı yapılandırabilirsiniz.

Yapılandırma aşağıdaki değerleri gerektirir:

  • Depolama kapsayıcısı: IoT hub'ınızla ilişkilendirmek için geçerli Azure aboneliğinizdeki bir Azure depolama hesabındaki blob kapsayıcısı. Önceki bölümde gerekli depolama hesabı bilgilerini aldıysanız. IoT Hub, cihazların dosyaları karşıya yüklerken kullanabilmesi için bu blob kapsayıcısına yazma izinlerine sahip SAS URI'lerini otomatik olarak oluşturur.

  • Karşıya yüklenen dosyalar için bildirim alma: Dosya yükleme bildirimlerini etkinleştirin veya devre dışı bırakın.

  • SAS TTL: Bu ayar, IoT Hub tarafından cihaza döndürülen SAS URI'lerinin yaşam süresidir. Varsayılan olarak bir saat olarak ayarlayın.

  • Dosya bildirim ayarları varsayılan TTL: Dosya karşıya yükleme bildiriminin süresi dolmadan önce yaşam süresi. Varsayılan olarak bir gün olarak ayarlanır.

  • Dosya bildirimi teslim sayısı üst sınırı: IoT Hub'ın dosya karşıya yükleme bildirimi göndermeyi deneme sayısı. Varsayılan olarak 10 olarak ayarlayın.

  • Dosya bildirimi kilit süresi: Dosya bildirim kuyruğunun kilit süresi. Varsayılan olarak 60 saniyeye ayarlayın.

  • Kimlik doğrulama türü: Azure Depolama ile kullanılacak IoT Hub kimlik doğrulaması türü. Bu ayar, IoT hub'ınızın Azure Depolama ile kimlik doğrulaması ve yetkilendirme şeklini belirler. Varsayılan değer anahtar tabanlı kimlik doğrulamasıdır; ancak sistem tarafından atanan ve kullanıcı tarafından atanan yönetilen kimlikler de kullanılabilir. Yönetilen kimlikler, Azure hizmetlerine Microsoft Entra Id'de güvenli bir şekilde otomatik olarak yönetilen bir kimlik sağlar. IoT hub'ınız ve Azure Depolama hesabınızda yönetilen kimlikleri yapılandırmayı öğrenmek için bkz. Yönetilen kimlikler için IoT Hub desteği. Yapılandırıldıktan sonra Azure depolama ile kimlik doğrulaması için kullanılacak yönetilen kimliklerinizden birini ayarlayabilirsiniz.

    Dekont

    Kimlik doğrulama türü ayarı, IoT hub'ınızın Azure Depolama hesabınızla kimlik doğrulamasını yapılandırıyor. Cihazlar her zaman IoT hub'ından aldıkları SAS URI'sini kullanarak Azure Depolama ile kimlik doğrulaması yapar.

Aşağıdaki komutlar, IoT hub'ınızdaki dosya yükleme ayarlarını yapılandırmayı gösterir. Bu komutlar netlik için ayrı olarak gösterilir, ancak genellikle senaryonuz için gerekli tüm parametrelerle tek bir komut yayımlayabilirsiniz. Komut satırında göründükleri yerlerde tırnak işaretleri ekleyin. Ayraçları eklemeyin. Her parametre hakkında daha fazla ayrıntı az iot hub update komutu için Azure CLI belgelerinde bulunabilir.

Aşağıdaki komut depolama hesabını ve blob kapsayıcısını yapılandırır.

az iot hub update --name {your iot hub name} \
    --fileupload-storage-connectionstring "{your storage account connection string}" \
    --fileupload-storage-container-name "{your container name}" 

Aşağıdaki komut SAS URI'sinin yaşam süresini varsayılan (bir saat) olarak ayarlar.

az iot hub update --name {your iot hub name} \
    --fileupload-sas-ttl 1 

Aşağıdaki komut dosya bildirimlerini etkinleştirir ve dosya bildirim özelliklerini varsayılan değerlerine ayarlar. (Dosya karşıya yükleme bildiriminin yaşam süresi bir saat, kilit süresi ise 60 saniye olarak ayarlanır.)

az iot hub update --name {your iot hub name} \
    --fileupload-notifications true  \
    --fileupload-notification-max-delivery-count 10 \
    --fileupload-notification-ttl 1 \
    --fileupload-notification-lock-duration 60

Aşağıdaki komut anahtar tabanlı kimlik doğrulamasını yapılandırmaktadır:

az iot hub update --name {your iot hub name} \
    --fileupload-storage-auth-type keyBased

Aşağıdaki komut, IoT hub'ına sistem tarafından atanan yönetilen kimliği kullanarak kimlik doğrulamasını yapılandırıyor. Bu komutu çalıştırabilmeniz için önce IoT hub'ınız için sistem tarafından atanan yönetilen kimliği etkinleştirmeniz ve Azure Depolama hesabınızda doğru RBAC rolünü vermeniz gerekir. Nasıl yapılacağını öğrenmek için bkz . Yönetilen kimlikler için IoT Hub desteği.

az iot hub update --name {your iot hub name} \
    --fileupload-storage-auth-type identityBased \
    --fileupload-storage-identity [system] 

Aşağıdaki komutlar IoT hub'ınızda yapılandırılan kullanıcı tarafından atanan yönetilen kimlikleri alır ve bunlardan biriyle kimlik doğrulamasını yapılandırabilir. Kimlik doğrulaması için kullanıcı tarafından atanan yönetilen kimliği kullanabilmeniz için önce IoT hub'ınızda yapılandırılması ve Azure Depolama hesabınızda uygun bir RBAC rolü verilmesi gerekir. Daha fazla ayrıntı ve adım için bkz . Yönetilen kimlikler için IoT Hub desteği.

IoT hub'ınızda kullanıcı tarafından atanan yönetilen kimlikleri sorgulamak için az iot hub identity show komutunu kullanın.

az iot hub identity show --name {your iot hub name} --query userAssignedIdentities

komutu, IoT hub'ınızda yapılandırılan kullanıcı tarafından atanan yönetilen kimliklerin bir koleksiyonunu döndürür. Aşağıdaki çıkışta, kullanıcı tarafından atanan tek bir yönetilen kimliği içeren bir koleksiyon gösterilmektedir.

{
  "/subscriptions/{your subscription ID}/resourcegroups/{your resource group}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{your user-assigned managed identity name}": 
  {
    "clientId": "<client ID GUID>",
    "principalId": "<principal ID GUID>"
  }
}

Aşağıdaki komut, kimlik doğrulamasını yukarıda kullanıcı tarafından atanan kimliği kullanacak şekilde yapılandırıyor.

az iot hub update --name {your iot hub name} \
    --fileupload-storage-auth-type identityBased \
    --fileupload-storage-identity  "/subscriptions/{your subscription ID}/resourcegroups/{your resource group}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{your user-assigned managed identity name}"

Aşağıdaki komutu kullanarak IoT hub'ınızdaki ayarları gözden geçirebilirsiniz:

az iot hub show --name {your iot hub name}

Yalnızca dosya yükleme ayarlarını gözden geçirmek için aşağıdaki komutu kullanın:

az iot hub show --name {your iot hub name}
    --query '[properties.storageEndpoints, properties.enableFileUploadNotifications, properties.messagingEndpoints.fileNotifications]'

Çoğu durumda, Azure CLI komutlarında adlandırılmış parametreleri kullanmak en kolayıdır; ancak, parametresiyle --set dosya yükleme ayarlarını da yapılandırabilirsiniz. Aşağıdaki komutlar nasıl yapılacağını anlamanıza yardımcı olabilir.

az iot hub update --name {your iot hub name} \
  --set properties.storageEndpoints.'$default'.connectionString="{your storage account connection string}"

az iot hub update --name {your iot hub name} \
  --set properties.storageEndpoints.'$default'.containerName="{your storage container name}"

az iot hub update --name {your iot hub name} \
  --set properties.storageEndpoints.'$default'.sasTtlAsIso8601=PT1H0M0S

az iot hub update --name {your iot hub name} \
  --set properties.enableFileUploadNotifications=true

az iot hub update --name {your iot hub name} \
  --set properties.messagingEndpoints.fileNotifications.maxDeliveryCount=10

az iot hub update --name {your iot hub name} \
  --set properties.messagingEndpoints.fileNotifications.ttlAsIso8601=PT1H0M0S

Sonraki adımlar