AWS Node JS SDK - Amazon IOT - MalformedPolicyException:策略文档格式错误

时间:2016-02-29 06:42:24

标签: json node.js amazon-web-services aws-iot

我尝试使用AWS SDK for Node JS使用以下代码生成IOT策略。

var params = {
  policyDocument: 'file:///tmp/mypolicy.json', 
  policyName: 'my_custom_policy'
};
iot.createPolicy(params, function(err, data) {
  if (err) console.log(err, err.stack); // an error occurred
  else     console.log(data);           // successful response
});

但是运行脚本会返回以下异常。

  

[MalformedPolicyException:政策文件格式错误]

     

消息:'政策文件格式错误',

     

代码:' MalformedPolicyException',   等

我已经尝试了/tmp/mypolicy.json./mypolicy.json(在脚本文件夹中复制json文件后)等等。但例外情况仍在继续。

json的内容如下(从亚马逊官方文档复制)。

{
    "Version": "2012-10-17", 
    "Statement": [{
        "Effect": "Allow",
        "Action":["iot:*"],
        "Resource": ["*"]
    }]
}

有关指定policyDocument和生成IOT策略的正确方法的想法吗?

1 个答案:

答案 0 :(得分:1)

我在Golang SDK中遇到了同样的问题,因为它不支持“file://”路径,这是CLI特有的功能。要从磁盘加载策略,您应该使用Go stdlib open并以字符串形式读取内容。

file, err := os.Open("filename") 
if err != nil { 
// handle error 
} 

buf := &bytes.Buffer{} 
if err := io.Copy(buf, file); err != nil { 
// handle error 
} 

resp, err := svc.CreatePolicy(&iot.CreatePolicyInput{ 
PolicyDocument: aws.String(buf.String()), 
// ... 
}) 
if err != nil { 
// handle error 
}