Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python AWS IoT策略未插入策略变量(IoT:ClientId)_Python_Amazon Web Services_Amazon Iam_X509certificate_Aws Iot - Fatal编程技术网

Python AWS IoT策略未插入策略变量(IoT:ClientId)

Python AWS IoT策略未插入策略变量(IoT:ClientId),python,amazon-web-services,amazon-iam,x509certificate,aws-iot,Python,Amazon Web Services,Amazon Iam,X509certificate,Aws Iot,我正在尝试按照本文档中的说明设置即时资源调配(JITP)。我已成功创建了一个脚本,用于创建所有CA证书,向AWS CLI注册证书,并将配置模板附加到证书。当我第一次尝试连接设备时,证书和设备将正常创建,但我创建的附加到证书的策略没有插入{iot:clientID}。我还尝试使用其他变量,如{iot:Connection.Thing.ThingName},但似乎没有任何效果。 通过将clientID硬编码到我的策略模板中,我能够验证代码和其他一切是否正常工作,因此唯一的问题似乎是没有插入变量 我想

我正在尝试按照本文档中的说明设置即时资源调配(JITP)。我已成功创建了一个脚本,用于创建所有CA证书,向AWS CLI注册证书,并将配置模板附加到证书。当我第一次尝试连接设备时,证书和设备将正常创建,但我创建的附加到证书的策略没有插入
{iot:clientID}
。我还尝试使用其他变量,如
{iot:Connection.Thing.ThingName}
,但似乎没有任何效果。 通过将clientID硬编码到我的策略模板中,我能够验证代码和其他一切是否正常工作,因此唯一的问题似乎是没有插入变量

我想这可能是因为IAM角色没有足够的权限?目前,它只有上述文档中提到的AWSIoTThingsRegistration、AWSIOTLogging和AWSIOTRulesAction权限。或者可能只是策略在自动配置设备时不能使用这些变量,尽管配置模板文档中没有任何建议

我的政策供参考:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "iot:Publish",
      "Resource": "arn:aws:iot:eu-west-1:ACCOUNTID:topic/PROJECTTOPIC/"
    },
    {
      "Effect": "Allow",
      "Action": [
        "iot:Connect"
      ],
      "Resource": [
        "arn:aws:iot:eu-west-1:ACCOUNTID:client/${iot:ClientId}"
      ]
    },
    {
      "Effect": "Allow",
      "Action": "iot:Receive",
      "Resource": [
        "arn:aws:iot:eu-west-1:ACCOUNTID:topic/PROJECTTOPIC/${iot:ClientId}"
      ]
    },
    {
      "Effect": "Allow",
      "Action": "iot:Subscribe",
      "Resource": [
        "arn:aws:iot:eu-west-1:ACCOUNTID:topicfilter/PROJECTTOPIC/${iot:ClientId}"
      ]
    }
  ]
}
我不知道这是否相关,但以下是我的资源调配策略:

{
 "templateBody":"{ \"Parameters\" : { \"AWS::IoT::Certificate::Country\" : { \"Type\" : \"String\" }, \"AWS::IoT::Certificate::Id\" : { \"Type\" : \"String\" }, \"AWS::IoT::Certificate::CommonName\" : { \"Type\" : \"String\" } }, \"Resources\" : { \"thing\" : { \"Type\" : \"AWS::IoT::Thing\", \"Properties\" : { \"ThingName\" : {\"Ref\" : \"AWS::IoT::Certificate::CommonName\"}, \"AttributePayload\" : { \"version\" : \"v1\", \"country\" : \"IE\"} } }, \"certificate\" : { \"Type\" : \"AWS::IoT::Certificate\", \"Properties\" : { \"CertificateId\": {\"Ref\" : \"AWS::IoT::Certificate::Id\"}, \"Status\" : \"ACTIVE\" } }, \"policy\" : {\"Type\" : \"AWS::IoT::Policy\", \"Properties\" : { \"PolicyName\" :  \"MYPOLICYNAME\"} } } }",
 "roleArn":"arn:aws:iam::ACCOUNTID:role/MYROLENAME"
}

我对使用IAM策略还比较陌生,因此任何建议或帮助都将不胜感激。

因此,这毕竟是一个权限问题。对于试图使用JITP策略模板的任何人,请尝试将
awsiotconfigradonlyaccess
添加到您的IAM角色中。通常的JITP操作不需要这样做,但如果您试图访问数据,则需要这样做。

很抱歉,如果我的编辑被认为是讽刺,那不是我的本意。但这里没有必要在问题的底部说“谢谢”。如果你想感谢某人的回答,你应该投票并/或接受。此外,“提前感谢”是错误的,应该是“提前感谢”。你也可以接受自己的答案,这样别人就可以很容易地看到问题已经解决了。