0

我试图使用以下代码使用 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 策略的正确方法的任何想法?

4

1 回答 1

1

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

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 
} 
于 2016-04-19T09:50:00.090 回答