我在使用策略限制使用指定证书限制对设备的影子访问时,在使用$ {iot:Certificate.Subject.SerialNumber}时遇到困难。
我有一个由aws-iot颁发的证书,序列号为十六进制:00 FC 63 F4 3D D8 8D 92 B1 19 5E 3C 6B D4 1B 99 1E 60 7C 86 34
如果将其转换为十进制字符串,则会得到:1440894724465102102684840527826579699971598878260
我已将此证书附加到名称为的事物上:Scoot-1440894724465102159684825527826579699971598878260
我的政策是:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "iot:Connect",
"Resource": "arn:aws:iot:eu-central-1:XXXXXXXXXX:client/*"
},
{
"Effect": "Allow",
"Action": [
"iot:Publish",
"iot:Subscribe",
"iot:Receive"
],
"Resource": [
"arn:aws:iot:eu-central-1:XXXXXXXXXX:topic/$aws/things/Scoot-${iot:Certificate.Subject.SerialNumber}/*",
"arn:aws:iot:eu-central-1:XXXXXXXXXX:topicfilter/$aws/things/Scoot-${iot:Certificate.Subject.SerialNumber}/*"
]
}
]
}
设备无法将消息发布到影子主题。
我在做什么错?
我知道了。由AWS颁发的证书在subject中没有SerialNumber属性。
它们本身就是属性。
我应该使用$ {iot:Certificate.SerialNumber}
而不是$ {iot:Certificate。Subject。SerialNumber}现在可以使用,我的设备无法再访问彼此的阴影。