目标是使用 az iot Edge deployment update
命令更改 azure iot hub/edge 部署中的模块。尝试执行此操作使用部署配置 json 中的属性路径来替换图像路径。问题是 json 属性 properties.desired
中有一个点,并且尝试转义它是徒劳的。该文件是默认的 Azure 部署配置文件。
命令格式
az iot edge deployment update --deployment-id <name-of-deployment> --hub-name <name-of-iot-hub> --set <json-path>=<new-value>
部署配置的第一部分(json)
目标是更改image
{
"content": {
"modulesContent": {
"$edgeAgent": {
"properties.desired": {
"modules": {
"demoimage1-latest": {
"settings": {
"image": "demoworkspac2478a907.azurecr.io/demoimage1:6",
最明显的尝试
az iot edge deployment update --deployment-id demoimage1-6 --hub-name iot-hubski --set content.modulesContent.'$edgeAgent'.'properties.desired'.modules.'demoimage1-latest'.settings.image=demoworkspac2478a907.azurecr.io/demoimage1:5
给予
Couldn't find 'properties' in 'content.modulesContent.$edgeAgent.properties.desired.modules.demoimage1-latest'. Available options: ['properties.desired']
状态
使用 bash (ubuntu LTS vm) 和 powershell (win10) 尝试了很多事情
[properties.desired]
'[properties.desired]'
['properties.desired']
属性\.desired
属性
.desired`properties.desired
'...“properties.desired”...'
'...\"properties.desired\"...'
'$edgeAgent'[properties.desired]
'$edgeAgent'['properties.desired']
^[properties.desired^]
^^[properties.desired^^]
- ``[properties.desired
]
- ```[properties.desired``]`
最佳答案
您需要手动对 $edgeHub JSON 进行字符串化。
az iot edge deployment update --deployment-id testedge --hub-name microwaves --set content.modulesContent.'$edgeHub'="{'properties.desired': {'routes': {'route': 'FROM /messages/* INTO $upstream'},'schemaVersion': '1.0','storeAndForwardConfiguration': {'timeToLiveSecs': 7201}}}"
但是,由于内容不可变,它不会执行任何操作。可以通过 az iot Edge deployment update
命令更新的项目:标签、指标、优先级和 targetCondition。标签和指标不允许名称中包含“.”的值。
关于json - azure 中带有点/句点的嵌套 JSON 路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57387665/