在设备上开发时添加访问控制。

0

【以下的问题经过翻译处理】 仍在尝试访问本地影子。

我已经移开了Lambda,现在只是在运行Python组件。

在组件本地开发不断调试,直到它正常工作为止。

使用以下操作部署:

sudo /greengrass/v2/bin/greengrass-cli deployment create --recipeDir /data/prov/GreengrassCore/recipes --artifactDir /data/prov/GreengrassCore/artifacts --merge "au.com.mycompany.smartdvr.shadowconfig=1.0.0"

当尝试访问本地影子(使用ipc_client = awsiot.greengrasscoreipc),我收到一个“GetThingShadowRequestHandler:handle-get-thing-shadow。Not authorized to get shadow”的错误消息。

如果我通过远程Greengrass控制台执行此操作,则可以添加与部署相关的访问控制。

“accessControl”:{

“aws.greengrass.ShadowManager”:{

“mtdshadowconfig-dev-shadowconfigpython :: 1”:{

“policyDescription”:“允许访问config#shadow”,

“operations”:[

“awsgreengrass#GetThingShadow”,

“awsgreengrass#UpdateThingShadow”,

“awsgreengrass#ListNamedShadowsForThing”

],

“resources”:[

“$aws/things/thingName/shadow/name/config1”

]

}

}

}

如何在设备本身上进行开发和部署时添加AccessControl?

profile picture
专家
已提问 6 个月前2 查看次数
1 回答
0

【以下的回答经过翻译处理】 配置合并(不是--merge命令)接受一个合适的JSON文档,因此只需编写您要合并的JSON,例如:

{
   "<componentName>":{
      "MERGE":{
         "accessControl":{
            "aws.greengrass.ShadowManager":{
               "mtdshadowconfig-dev-shadowconfigpython::1":{
                  "policyDescription":"allow access to config# shadow",
                  "operations":[
                     "aws.greengrass#GetThingShadow",
                     "aws.greengrass#UpdateThingShadow",
                     "aws.greengrass#ListNamedShadowsForThing"
                  ],
                  "resources":[
                     "$aws/things/thingName/shadow/name/config1"
                  ]
               }
            }
         }
      },
      "RESET":[
      ]
   }
}

保存为"config.json",然后使用部署创建命令,带有--update-config config.json --merge componentName=1.0.0选项。--merge选项用于告诉Greengrass将以下组件和版本添加到设备上。要设置配置,请使用--update-config选项,而不是--merge命令。

profile picture
专家
已回答 6 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则