Usar o recurso de arquivos relacionados para fazer referência a vários arquivos de atualização
Use a funcionalidade de arquivos relacionados quando precisar expressar relações entre arquivos de atualização diferentes em uma única atualização.
Ao importar uma atualização para a Atualização de Dispositivo para Hub IoT, é necessário um manifesto de importação que contém metadados sobre o conteúdo da atualização. Os metadados no nível do arquivo no manifesto de importação podem ser uma lista simples de arquivos de conteúdo de atualização no caso mais simples. No entanto, para cenários mais avançados, o recurso de arquivos relacionados fornece uma maneira de especificar relações entre vários arquivos de atualização.
Ao criar um manifesto de importação usando a funcionalidade de arquivos relacionados, você pode adicionar uma coleção de arquivos relacionados a um ou mais de seus arquivos de conteúdo primário. Um exemplo desse conceito é a funcionalidade de atualização delta da Atualização de Dispositivo, que usa arquivos relacionados para especificar uma atualização delta associada a um arquivo de imagem completo. No cenário delta, a funcionalidade de arquivos relacionados permite que a imagem completa e a atualização delta sejam importadas como uma única ação de atualização e, em seguida, qualquer uma delas pode ser implantada em um dispositivo. No entanto, a funcionalidade de arquivos relacionados não está limitada a atualizações delta, pois foi projetada para ser extensível por nossos clientes, dependendo de seus próprios cenários exclusivos.
Como definir arquivos relacionados
O recurso de arquivos relacionados está disponível para manifestos de importação da versão 5 ou posterior.
Ao adicionar arquivos relacionados a um manifesto de importação, inclua as seguintes informações:
Detalhes do arquivo
Defina os arquivos relacionados fornecendo o nome do arquivo, o tamanho e o hash.
Um manipulador de download
Especifique como processar os arquivos relacionados para produzir o arquivo de destino. Especifique a abordagem de processamento incluindo uma propriedade
downloadHandler
no manifesto de importação. A inclusão dedownloadHandler
será necessária se você especificar uma coleção não vazia derelatedFiles
em um elementofile
. Você pode especificar umdownloadHandler
usando uma propriedadeid
simples. O manipulador de downloadsid
tem um limite de 64 caracteres ASCII.Propriedades de arquivos relacionados
Você pode fornecer metadados extras para o manipulador de atualização no dispositivo a fim de saber como interpretar e usar corretamente os arquivos especificados como arquivos relacionados. Esses metadados são adicionados como parte de um recipiente de propriedades
properties
para os objetosfile
erelatedFile
.
Para obter mais informações sobre o esquema de importação para arquivos relacionados, consulte objeto relatedFiles.
Exemplo de importação de manifesto usando arquivos relacionados
O manifesto de importação de exemplo a seguir demonstra como o recurso de arquivos relacionados é usado para importar uma atualização delta. Neste exemplo, você pode ver que, na seção files
, há uma imagem completa especificada (full-image-file-name
) com um item properties
. O item properties
, por sua vez, tem um item relatedFiles
associado abaixo dele. Na seção relatedFiles
, você pode ver outra seção properties
para o arquivo de atualização delta (delta-from-v1-file-name
) e também um item downloadHandler
com a lista apropriada id
(microsoft/delta:1
).
Observação
Este exemplo usa atualizações delta para demonstrar como fazer referência a arquivos relacionados. Se você quiser usar atualizações delta como um recurso, saiba mais na documentação da atualização delta.
{
"updateId": {
// provider, name, version
},
"compatibility": [
{
// manufacturer, model, etc.
}
],
"instructions": {
"steps": [
// Inline steps...
]
},
"files": [
{
// standard file properties
"fileName": "full-image-file-name",
"sizeInBytes": 12345,
"hashes": {
"SHA256": "full-image-file-hash"
},
"mimeType": "application/octet-stream",
// new properties
"properties ": {},
"relatedFiles": [
{
// delta from version 1.0.0.0
// standard file properties
"fileName": "delta-from-v1-file-name",
"sizeInBytes": 1234,
"hashes": {
"SHA256": "delta-from-v1-file-hash"
},
"mimeType": "application/octet-stream",
// new properties
"properties": {
"microsoft.sourceFileHash": "delta-source-file-hash",
"microsoft.sourceFileHashAlgorithm": "sha256"
}
}
],
// handler to download/process our related files
"downloadHandler": {
"id": "microsoft/delta:1"
}
}
],
"createdDateTime": "2021-12-01T01:12:21Z",
"manifestVersion": "5.0"
}
Comando de inicialização de exemplo usando arquivos relacionados
O comando az iot du init v5 para criar um manifesto de importação dá suporte a um parâmetro --related-file
opcional.
O parâmetro --related-file
usa uma chave path
e properties
:
--related-file path=<replace with path(s) to your delta file(s), including the full file name> properties='{"microsoft.sourceFileHashAlgorithm": "sha256", "microsoft.sourceFileHash": "<replace with the source SWU image file hash>"}'
Por exemplo:
az iot du update init v5 \
--update-provider Microsoft --update-name myBundled --update-version 2.0 \
--compat manufacturer=Contoso model=SpaceStation \
--step handler=microsoft/script:1 properties='{"arguments": "--pre"}' description="Pre-install script" \
--file path=/my/update/scripts/preinstall.sh downloadHandler=microsoft/delta:1 \
--related-file path=/my/update/scripts/related_preinstall.json properties='{"microsoft.sourceFileHashAlgorithm": "sha256"}' \
--step updateId.provider=Microsoft updateId.name=SwUpdate updateId.version=1.1 \
--step handler=microsoft/script:1 properties='{"arguments": "--post"}' description="Post-install script" \
--file path=/my/update/scripts/postinstall.sh
Próximas etapas
- Saiba mais sobre o esquema do manifesto de importação
- Saiba mais sobre atualizações delta