Amazon web services AWS物联网&x2B;Cognito连接流

Amazon web services AWS物联网&x2B;Cognito连接流,amazon-web-services,aws-iot,Amazon Web Services,Aws Iot,根据文档,我了解了如何创建物联网,以及如何使用AWS物联网创建经过身份验证的用户。我的问题是如何有效地组合这些服务,以便每个用户都可以安全地访问他或她的多个设备 假设Jane刚刚注册了该平台,并希望将她的灯泡设备连接到她的帐户。我们还假设她的灯泡设备上已经有证书和物联网中的策略,以便它可以连接到物联网平台,然后发布和订阅一些主题。为了简单起见,假设Jane可以通过简单地进行名为pairDevice的API调用来创建此连接,该调用接受cognito标识(即59700b18-94c7-XXXX-85

根据文档,我了解了如何创建物联网,以及如何使用AWS物联网创建经过身份验证的用户。我的问题是如何有效地组合这些服务,以便每个用户都可以安全地访问他或她的多个设备

假设Jane刚刚注册了该平台,并希望将她的灯泡设备连接到她的帐户。我们还假设她的灯泡设备上已经有证书和物联网中的策略,以便它可以连接到物联网平台,然后发布和订阅一些主题。为了简单起见,假设Jane可以通过简单地进行名为
pairDevice
的API调用来创建此连接,该调用接受cognito标识(即59700b18-94c7-XXXX-857a-d820a68c0ec6)和设备序列号

基本上,我设想这个函数做两件事:

  • 它将调用“AttachPrincipalPolicy”,将与该灯泡关联的策略链接到cognito用户。在这一点上,我假设cognito用户能够发布和订阅特定灯泡的主题,并且该灯泡

  • 它将在thing ARN的用户帐户中添加一个DynamoDB条目,以便以后可以方便地引用和查询它

  • 所以,若我的理解是正确的,我会为IoT中的每个设备制定这样的策略(他们是否也应该发布和订阅带有序列号的主题?我想确保用户不能连接到他们不允许的设备):

    
    {
    “版本”:“2012-10-17”,
    “声明”:[
    {
    “效果”:“允许”,
    “行动”:[
    “物联网:连接”
    ],
    “资源”:[
    “arn:aws:iot:us-west-1:123456789012:client/SerialNumber”,
    ]
    },
    {
    “效果”:“允许”,
    “行动”:[
    “物联网:发布”,
    “物联网:订阅”,
    “物联网:接收”
    ],
    “资源”:[
    "*"
    ]
    }
    ]
    }
    


    然后我将使用AttachPrincipalPolicy将这个策略附加到cognito用户?我是否需要在Amazon Cognito身份池中有一个明确的IoT访问策略,或者这种链接是通过AttachPrincipalPolicy实现的

    为了验证Amazon Cognito标识以通过HTTP发布MQTT消息,必须指定两个策略。第一个策略必须附加到Amazon Cognito标识池角色。第一个策略很可能是托管策略
    AWSIoTDataAccess

    第二个策略必须使用AWS IoT AttachPrincipalPolicy API附加到Amazon Cognito用户

    示例应用程序演示了这一点:

    有关明确的说明,您可以阅读: