Amazon web services AWS物联网:即时资源调配(JITP)支持物联网中的附加属性

Amazon web services AWS物联网:即时资源调配(JITP)支持物联网中的附加属性,amazon-web-services,aws-iot,Amazon Web Services,Aws Iot,我使用下面的链接为AWS物联网实施即时资源调配(JITP) 如果我使用这个链接中提供的默认策略,我就能够成功注册这个东西。 对于第一个mosquitto_pub调用,我得到了连接丢失错误,随后的调用成功,该东西在AWS IoT中成功创建 我希望从证书中提取其他属性,例如OrganizationalUnit,并希望将其作为属性添加到该内容中 因此,我修改了配置模板以包含此属性,但它不起作用。我收到所有呼叫mosquitto_酒吧的连接丢失错误 下面是我正在使用的配置模板字符串- { "P

我使用下面的链接为AWS物联网实施即时资源调配(JITP)

如果我使用这个链接中提供的默认策略,我就能够成功注册这个东西。 对于第一个mosquitto_pub调用,我得到了连接丢失错误,随后的调用成功,该东西在AWS IoT中成功创建

我希望从证书中提取其他属性,例如OrganizationalUnit,并希望将其作为属性添加到该内容中

因此,我修改了配置模板以包含此属性,但它不起作用。我收到所有呼叫mosquitto_酒吧的连接丢失错误

下面是我正在使用的配置模板字符串-

{
    "Parameters": {
        "AWS::IoT::Certificate::Country": {
            "Type": "String"
        },
        "AWS::IoT::Certificate::CommonName": {
            "Type": "String"
        },
        "AWS::IoT::Certificate::Id": {
            "Type": "String"
        },
        "AWS::IoT::Certificate::OrganizationalUnit": {
            "Type": "String"
        }
    },
    "Resources": {
        "thing": {
            "Type": "AWS::IoT::Thing",
            "Properties": {
                "ThingName": {
                    "Ref": "AWS::IoT::Certificate::CommonName"
                },
                "ThingGroups": [{
                    "Ref": "AWS::IoT::Certificate::OrganizationalUnit"
                }],
                "AttributePayload": {
                    "version": "v1",
                    "country": {
                        "Ref": "AWS::IoT::Certificate::Country"
                    },
                    "customerid": {
                        "Ref": "AWS::IoT::Certificate::OrganizationalUnit"
                    }
                }
            }
        },
        "certificate": {
            "Type": "AWS::IoT::Certificate",
            "Properties": {
                "CertificateId": {
                    "Ref": "AWS::IoT::Certificate::Id"
                },
                "Status": "ACTIVE"
            }
        },
        "policy": {
            "Type": "AWS::IoT::Policy",
            "Properties": {
                "PolicyDocument": "{\"Version\": \"2012-10-17\",\"Statement\": [{\"Effect\":\"Allow\",\"Action\": [\"iot:Connect\"],\"Resource\" : \"arn:aws:iot:*:*:client\/${iot:Connection.Thing.ThingName}\"},{\"Effect\":\"Allow\",\"Action\": [\"iot:Receive\",\"iot:Subscribe\",\"iot:Publish\"],\"Resource\" : \"arn:aws:iot:*:*:topic\/${iot:Connection.Thing.ThingName}\/*\"}]}"
            }
        }
    }
}
我们还确保具有所需名称的ThingGroups存在


有什么建议吗?

我登上了你的帖子,试图自己解决这个问题。我不知道这对你是否有用,但我有两点意见:

正确的顺序:

我发现我必须在注册证书之前创建ThingGroups和ThingTypeName,尽管没有这样做不会返回任何错误。我注意到您已经这样做了,但请确保您没有更改任何组名或类型名(我心不在焉地更改了组名或类型名,这让我感到刺痛)

具体地说,当我先注册ca证书(使用配置模板中的ThingGroups和ThingTypeName),然后创建组和类型,最后开始连接设备时,它不起作用。我的建议是重新开始,并按顺序进行:创建组和类型;注册ca证书。然后尝试连接

策略格式:

作为起点,我对策略资源使用了以下格式。*用于隔离格式问题的来源。我发现直接在IoT控制台中编辑策略JSON文件是找出问题所在的最有效方法

对于物联网:发布、物联网:接收和物联网:订阅,资源=

"arn:aws:iot:ap-southeast-2:123456789012:*/things/${iot:Connection.Thing.ThingName}/* 
对于物联网:连接,资源=

"arn:aws:iot:ap-southeast-2:123456789012:*/${iot:Connection.Thing.ThingName}

完成后,JITP过程开始工作。祝你好运。

你有没有想过这个问题?我现在也有同样的问题。。。