我尝试使用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策略的正确方法的想法吗?
答案 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
}