Azureデバイスレジストリはジョブを使って、IoT Hubに接続されたデバイスのグループにソフトウェアアップデートを適用します。 ソフトウェア更新ジョブは、デバイスのグループを対象とし、そのグループ内の互換性のあるデバイスに対してソフトウェア更新を適用します。 対照的に、オンボーディングアップデートジョブはネームスペースにオンボーディングされるデバイスを対象とします。 ソフトウェアアップデートを作業として展開することで、同じアップデートを複数のデバイスに同時に展開できるため、IoT Hubに接続されたデバイスを個別に更新せずに最新の状態を保つことができます。
この記事では、ターゲットグループの定義や検証、AzureポータルやBicepを使って標準的なソフトウェアアップデートジョブを作成する方法、ジョブの実行やスケジュール、結果の監視方法を紹介します。 適用したい ソフトウェアアップデートをインポート した後、この記事をご利用ください。 ジョブ、グループ、ソフトウェアアップデートがどのように連携しているかについては、「Azure デバイスレジストリのソフトウェアアップデート」をご覧ください。
Important
Azure デバイス レジストリのソフトウェア更新機能は、現在プレビュー版として提供されています。 現在のプレビューはIoT Hub接続デバイスに限定されています。 このプレビューはサービスレベル契約なしで提供されており、一般公開前に機能やポータル体験が変わる可能性があります。 詳細については、「 Microsoft Azure プレビューの追加使用条件」を参照してください。
Note
プレビュー中は、既存のDevice Update for IoT Hubインスタンスを持たないIoTハブでのみソフトウェアアップデートを使用できます。 ソフトウェア更新を使用するには、Device Update for IoT Hub インスタンスがない IoT Hub を名前空間にリンクするか、既存のインスタンスを削除してからハブをリンクしてください。 詳細については、IoT Hub 向けのソフトウェア更新とデバイス更新を参照してください。
Prerequisites
- 更新対象のデバイスを識別するプロパティを持つ、IoT Hub に接続されたデバイス。 これらの特性を使ってターゲットグループを定義しましょう。
- 名前空間にインポートされたソフトウェアの更新プログラム。 詳細は 「ソフトウェアアップデートのインポート(プレビュー)」をご覧ください。
- ご利用のデバイスが含まれる名前空間で、ソフトウェアの更新が有効になっています。 詳しくは、「Azure Device Registry の使用を開始する」をご覧ください。
- ジョブの作成、読み取り、更新、削除を行うための、Contributor ロールなどの Azure Resource Manager のコントロール プレーン権限。
- ジョブを実行するには、名前空間のマネージド ID が名前空間にリンクされたソフトウェア更新インスタンスにアクセスできる必要があります。 Azureポータルでソフトウェアアップデートを有効にすると、これらの役割割り当てが作成されます。
ターゲットグループの定義または検証
ソフトウェアアップデートジョブは名前空間内のすべてのデバイスではなくグループを対象にします。 アップデートを受け取るべきIoT Hubに接続されたデバイスだけを選択するフィルター付きのグループを作成するか、その範囲に合致する既存のグループを再利用してください。 例えば、メーカー、モデル、ソフトウェアのリビジョンなどのデバイスプロパティを使って特定のデバイスコホートをターゲットにします。 AzureポータルやBicepを使ってグループを作成してください。
グループを Azure portal で作成するには、次の手順に従ってください。
名前空間ナビゲーションで Operations>Groups(プレビュー)を開き、コマンドバーからグループ作成を開始します。
基本 ページで、わかりやすい名前を入力し、必要に応じて、対象となるデバイス コホートを特定するための説明も入力します。
定義ページのフィルター条件を定義の下で、更新したいIoT Hub接続デバイスを選択するクエリを入力してください。
グループフィルターは作成後は不変です。 別のメンバーシップ条件を使用するには、別のクエリを設定したグループをもう 1 つ作成してください。
レビュー ページで 基本、定義、クエリのフィルター を確認し、作成 を選択します。
グループは Microsoft.DeviceRegistry/namespaces/groups リソースです。
properties.query値は、manufacturer、model、softwareRevisionなどのデバイス特性に基づいて、グループのメンバーとなる登録済みの IoT Hub 接続デバイスを選択します。 グループを作成した後はクエリを変更することはできません。 別のメンバーシップ条件を使用するには、別のクエリを設定したグループをもう 1 つ作成してください。
以下の内容でBicepファイルを作成してください。 プレースホルダーの値を、 <NAMESPACE_NAME> や <GROUP_NAME> などの値を自分のものに置き換えてください。
param namespaceName string = '<NAMESPACE_NAME>'
param groupName string = 'contoso-tractors'
param groupDescription string = 'Devices to receive the software update'
param groupQuery string = 'WHERE manufacturer = \'contoso\' AND model = \'tractor\''
resource namespace 'Microsoft.DeviceRegistry/namespaces@2026-11-02-preview' existing = {
name: namespaceName
}
resource group 'Microsoft.DeviceRegistry/namespaces/groups@2026-11-02-preview' = {
parent: namespace
name: groupName
location: namespace.location
properties: {
description: groupDescription
query: groupQuery
}
}
グループのメンバーシップは、グループを作成または再読み込みした際に計算され、キャッシュされます。 ソフトウェアアップデートの作業でグループを使う前に:
- デバイスプロパティが変わった場合は、グループのメンバーシップを更新してください。 Azureポータルでは、グループの詳細コマンドバーからRefreshが利用可能です。
- グループステータスが「Ready」になるまで待ちましょう。
- グループの詳細画面で、解決済みのクエリ フィルターとメンバー数を確認します。 メンバー一覧には最大 10 台のデバイスが表示されるため、これは完全なリストではなく、あくまで目視確認として扱い、メンバー数が更新対象のデバイス数と一致していることを確認してください。
ソフトウェアアップデートのジョブを作成する
ソフトウェアアップデートジョブは、デバイスのグループを対象にし、そのグループ内の互換性のあるメンバーにインポートされたソフトウェアアップデートを適用します。 AzureポータルやBicepを使ってジョブを作成してください。
Azureポータルで、Azureデバイスレジストリにアクセスし、更新したいデバイスを含む名前空間を選択します。
名前空間でOperations>Jobsを選択します。
ジョブ画面では、定義されたジョブのステータス、ジョブタイプ、ターゲットグループが表示されます。 この画面からは、名前空間内のグループやソフトウェアアップデートも確認できます。
新しいジョブを作成するために 「作成」 を選択してください。
基本ページには、ジョブの名前と説明を記載してください。
ジョブの種類では「ソフトウェアアップデート」を選択してください。
プレビューでは、利用可能なジョブタイプは ソフトウェアアップデート と オンボーディングアップデートです。 ソフトウェア更新ジョブはデバイスのグループを対象とし、オンボーディング更新ジョブは名前空間にオンボードされるデバイスを対象とします。 この記事ではソフトウェアアップデートの作業について説明しています。
ターゲットにしたいグループを選択してください。 グループピッカーを使ってグループを検索し、選択してください。 ピッカーは各グループに所属するデバイスのおおよその数を示します。
グループ メンバーシップの更新方法については、「グループの概念 (プレビュー)」をご覧ください。
グループ選択を保存してください。 ポータルにはグループ内のデバイスのサンプルとデバイス数が表示されます。
名前空間にインポートされたソフトウェア更新プログラムのいずれかを選択して、実行するアクションを定義します。 各ソフトウェアアップデートには、デバイスに適用されるかどうかを判断する互換性チェックが含まれています。 ポータルは選択したグループの互換性チェックを実行し、ソフトウェアアップデートが互換性があるかどうかを判断します。
「次へ」を選択して、ジョブの概要をご覧ください。 この概要には、グループのメンバー数と、そのジョブによって正常に更新される可能性が高い互換性のあるメンバー数の推定値が表示されています。
を選択してを作成します。 ジョブステータスは「作成中」と表示され、しばらくすると「準備完了」に変わります。
ソフトウェアアップデートジョブは、properties.jobType が Microsoft.DeviceRegistry/namespaces/jobs に設定された SoftwareUpdate リソースです。
target.resourceIdプロパティは、ジョブが更新を適用するグループを参照し、同じ名前空間内のMicrosoft.DeviceRegistry/namespaces/groupsリソースのリソースIDでなければなりません。
definition.update.updateId プロパティは、プロバイダー、名前、バージョンによって、適用するソフトウェア アップデートを特定します。 現在、definition.schedulingType は値 Continuous のみをサポートしています。
ジョブを作成すると、target や definition を含むそのプロパティは変更できなくなります。 ターゲットグループを変更したり定義を更新するには、ジョブを削除して新しいジョブを作成してください。
以下の内容でBicepファイルを作成してください。
<NAMESPACE_NAME>、<GROUP_NAME>、更新識別子の値などのプレースホルダー値は、自分のものに置き換えてください。
param namespaceName string = '<NAMESPACE_NAME>'
param jobName string = '<JOB_NAME>'
param groupName string = '<GROUP_NAME>'
param updateProvider string = '<UPDATE_PROVIDER>'
param updateName string = '<UPDATE_NAME>'
param updateVersion string = '<UPDATE_VERSION>'
resource namespace 'Microsoft.DeviceRegistry/namespaces@2026-11-02-preview' existing = {
name: namespaceName
}
resource group 'Microsoft.DeviceRegistry/namespaces/groups@2026-11-02-preview' existing = {
parent: namespace
name: groupName
}
resource softwareUpdateJob 'Microsoft.DeviceRegistry/namespaces/jobs@2026-11-02-preview' = {
parent: namespace
name: jobName
location: namespace.location
properties: {
description: 'Software update job'
jobType: 'SoftwareUpdate'
target: {
resourceId: group.id
}
definition: {
schedulingType: 'Continuous'
update: {
updateId: {
provider: updateProvider
name: updateName
version: updateVersion
}
}
}
}
}
作業を実行またはスケジュールしてください
ジョブが準備できたら、すぐに実行するか、後で実行をスケジュールできます。
ジョブ画面で、実行したいジョブを選択します。
次のいずれかのオプションを選択してください。
-
今すぐ実行: ジョブは即座に実行されます。
-
後でスケジュールを決める: 今後 7 日間のうちで、都合の良い日時を選択します。 ジョブはあなたが選んだ時間に実行されます。
ジョブを実行するかスケジュールした後、ポータルは Runs タブに移動します。
Bicepはリソースを宣言するため、ジョブの実行やスケジューリングなどのアクションを直接トリガーすることはできません。 代わりに、ジョブのscheduleアクションを使い、Azure CLIで呼び出せます。 すぐにジョブを実行するには scheduledTimeを省略してください。 作業のスケジュールを立てるには、scheduledTime 値を含めてください。
az rest --method post \
--uri "https://management.azure.com/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.DeviceRegistry/namespaces/<NAMESPACE_NAME>/jobs/<JOB_NAME>/schedule?api-version=2026-11-02-preview" \
--body '{
"scheduledTime": "2026-11-15T14:30:00Z",
"timeout": "PT1H"
}'
-
scheduledTime: UTCのジョブ実行日時。 このプロパティを省くと、ジョブがすぐに実行されます。
-
timeout: 実行に許容される時間を制限するISO 8601形式の期間 (1 時間を表すPT1H など) です。 このプロパティはオプションです。
ジョブを実行したりジョブをスケジュールした後、Azure ポータルやジョブ実行 API を使って実行を監視してください。
ジョブ実行を監視してください
Runsタブには、実行中、完了、およびスケジュールされた実行を含むジョブが表示されます。
実行タブを選択すると、実行履歴とその状態を確認できます。
完了したランを選択してその統計を見る。 実行の詳細は、更新されたデバイス数とそれらのデバイスの詳細を示しています。
特定のデバイスを確認してください。 特定のデバイスが更新されたかどうかを確認するには、実行詳細の検索ボックスを使ってデバイスを見つけてください。
ジョブランは読み取り専用リソースなので、Bicepで宣言するのではなく、Microsoft.DeviceRegistry/namespaces/jobs/runsリソースタイプをクエリして監視します。 Azure CLIを使って、そのジョブのランを一覧にし、そのステータスを確認してください:
az rest --method get \
--uri "https://management.azure.com/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.DeviceRegistry/namespaces/<NAMESPACE_NAME>/jobs/<JOB_NAME>/runs?api-version=2026-11-02-preview"
各実行には、Running、Ended、または status などの Scheduled 値と、成功、失敗、進行中、保留中、キャンセルされたデバイスのカウントを含む results 要約が含まれます。
特定のデバイスをチェックするには、ランの結果を取得し、状態で絞り込むことができます:
az rest --method post \
--uri "https://management.azure.com/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.DeviceRegistry/namespaces/<NAMESPACE_NAME>/jobs/<JOB_NAME>/runs/<RUN_NAME>/listResults?api-version=2026-11-02-preview" \
--body '{
"filter": "status eq '\''Failed'\''"
}'
結果の各エントリは、ターゲットデバイスとそのデバイスごとのステータスを示しています。 リクエストボディの filter プロパティを省略すると、実行のすべてのデバイス結果を返します。
関連するコンテンツ