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

Jos*_*rme 5 amazon-web-services amazon-cognito aws-iot aws-userpools aws-policies

我正在尝试在 AWS IoT 和我的 React JS 应用程序之间建立连接。

\n\n

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

\n\n

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

\n\n

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

\n\n

\xe2\x80\xa2 请注意,此命令中必须考虑 \xe2\x80\x9cidentity_pool_id\xe2\x80\x9d。

\n\n

在此输入图像描述

\n\n

在aws文档(https://aws-amplify.github.io/docs/js/pubsub)中,它说在命令行中写入\xe2\x80\x9cidentity_id\xe2\x80\x9d:

\n\n

在此输入图像描述

\n\n

当我在命令行中使用 \xe2\x80\x9cidentity_pool_id\xe2\x80\x9d 并尝试从 AWS IoT 发布消息时,出现以下错误:

\n\n

在此输入图像描述

\n\n

当我在命令行中使用 \xe2\x80\x9cidentity_id\xe2\x80\x9d 时,我可以成功执行 AWS IoT 和前端之间的通信:

\n\n

在此输入图像描述

\n\n

问题是 \xe2\x80\x9cidentity_id\xe2\x80\x9d 对于每个用户来说都是不同的代码。考虑到我的应用程序中将有很多用户,我不知道如何执行此任务。

\n\n

\xe2\x80\xa2 我是否正在执行正确的过程来考虑 \xe2\x80\x9cidentity_id\xe2\x80\x9d 而不是 \xe2\x80\x9cidentity_pool_id\xe2\x80\x9d?

\n\n

\xe2\x80\xa2 如果是,每次有新用户在我的应用程序中登录时,如何自动将 Cognito ID 附加到 AWS IoT 策略?

\n\n

\xe2\x80\xa2 在 AWS IoT 策略中附加数千个 Cognito 证书是否有任何问题?

\n

Tej*_*mar 1

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

\n
    \n
  1. 您只能将 Identity_id(用户)附加到 IoT 策略。另外,我可以看到您使用了“attach-principal-policy”API,该 API 现已弃用,因此请使用AttachPolicy API
  2. \n
  3. 我在这里不确定,但我仍然建议在 Cognito 的确认后触发器上评估和验证它
  4. \n
  5. 绝对正确,您可以将 IoT 策略附加到无数证书;从技术上讲,它被称为简化权限管理
  6. \n
\n

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

\n

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

\n

  • 恐怕无法在确认后阶段(当您提供验证码时)附加 Cognito Identity。首先,您需要在登录过程中获取 accessToken(或 idToken),然后才能获取 Cognito Identity ID (2认同)