如何将Cognito身份ID附加到AWS IoT策略?

时间:2020-03-19 12:28:40

标签: amazon-web-services amazon-cognito aws-iot aws-userpools aws-policies

我正在尝试在AWS IoT和我的React JS APP之间建立连接。

我遵循了本教程(https://medium.com/serverlessguru/serverless-real-time-reactjs-app-aws-iot-mqtt-17d023954045),但我不清楚如何将Cognito身份ID附加到AWS IoT策略。

在进行所有调查期间,我发现此过程必须通过命令行完成。

在上面的文章中,这些过程是通过以下命令行完成的:

•请注意,此命令中必须考虑“ identity_pool_id”。

enter image description here

在aws文档(https://aws-amplify.github.io/docs/js/pubsub)中,它说要在命令行中写入“ identity_id”:

enter image description here

当我在命令行中使用“ identity_pool_id”,并尝试从AWS IoT发布消息时,出现以下错误:

enter image description here

当我在命令行中使用“ identity_id”时,我可以成功执行AWS IoT与前端之间的通信:

enter image description here

问题在于,“ identity_id”对于每个用户而言都是不同的代码。考虑到我的应用程序中将会有很多用户,所以我不知道如何执行此任务。

•我是否在考虑使用“ identity_id”而不是“ identity_pool_id”的正确过程?

•如果是,每当我在应用程序中登录新用户时,如何将Cognito ID自动附加到AWS IoT策略?

•在AWS IoT策略中附加数千个Cognito证书是否有问题?

1 个答案:

答案 0 :(得分:0)

以下答案按时间顺序对应于三个问题。

  1. 您只能将identity_id(用户)附加到IoT策略。另外,我可以看到您使用了现在已不推荐使用的“ attach-principal-policy” API,因此请使用AttachPolicy API
  2. 我不确定此处是否仍然建议在Cognito的post confirmation trigger上进行评估和验证
  3. 绝对正确,您可以将IoT策略附加到众多证书中;从技术上讲,它称为简化权限管理

对于#3,来自AWS的相关代码段(参考-https://aws.amazon.com/iot-core/faqs/,在其中找到问:什么是简化的权限管理?)

“您可以为多个设备共享一个通用策略。通用策略可以在同一类别的设备之间共享,而不必为每个设备创建唯一的策略。例如,将“序列号”引用为变量,可以附加到相同型号的所有设备上。当连接相同序列号的设备时,策略变量将自动替换为其序列号。”