AWS IoT JITP预配模板未生效,证书处于待激活状态求助
以下是几个可能导致你的AWS IoT JITP预配流程卡壳的核心问题:
策略与证书未绑定
你的模板里只声明了要使用iot_test_policy,但没添加把策略绑定到证书的配置。AWS不会自动做这个关联,必须在模板的Resources里加一个AWS::IoT::PolicyPrincipalAttachment资源,示例代码如下:"policyAttachment": { "Type": "AWS::IoT::PolicyPrincipalAttachment", "Properties": { "PolicyName": { "Ref": "policy_iot_test_policy" }, "Principal": { "Ref": "certificate" } } }加上这段后,证书才能自动关联到策略。
指定的ThingTypeName不存在
模板里写了ThingTypeName: "test-type",如果AWS IoT里没预先创建这个设备类型,预配流程会因为找不到类型直接失败,导致Thing建不出来、证书卡在PENDING_ACTIVATION。先去控制台管理 > 设备类型里确认有没有test-type,没有的话先创建。CA未关联正确的JITP模板
你开了自动证书注册,但可能没把自己创建的JITP模板绑定到CA上。去安全 > CA证书找到你的CA,编辑自动注册设置,确认预配模板选的是你做的那个,别选错或留空。证书CommonName不符合ThingName规则
模板用证书的CommonName当ThingName,但AWS IoT的ThingName有严格限制:只能用字母、数字、连字符、下划线、点号,还不能以连字符或下划线开头。如果你的设备证书CommonName不符合这些要求,Thing创建会失败,整个流程就停住了。检查下证书的CommonName格式对不对。资源依赖关系可能有问题
虽然CloudFormation一般会自动处理资源创建顺序,但如果还是有问题,可以给policyAttachment加个DependsOn字段,确保它在证书和策略都创建好之后再执行:"policyAttachment": { "Type": "AWS::IoT::PolicyPrincipalAttachment", "DependsOn": ["certificate", "policy_iot_test_policy"], "Properties": { "PolicyName": { "Ref": "policy_iot_test_policy" }, "Principal": { "Ref": "certificate" } } }
内容的提问来源于stack exchange,提问作者Mathis Van Eetvelde

