admin 管理员组文章数量: 1184232
AccessDeniedException:用户无权执行:lambda:InvokeFunction
我正在尝试从节点调用 lambda 函数。
var aws = require('aws-sdk');
var lambda = new aws.Lambda({
accessKeyId: 'id',
secretAccessKey: 'key',
region: 'us-west-2'
});
lambda.invoke({
FunctionName: 'test1',
Payload: JSON.stringify({
key1: 'Arjun',
key2: 'kom',
key3: 'ath'
})
}, function(err, data) {
if (err) console.log(err, err.stack);
else console.log(data);
});
密钥供 IAM 用户使用。用户附加了
AWSLambdaExecute 和 AWSLambdaBasicExecutionRole 策略。
我收到权限错误:
AccessDeniedException: User: arn:aws:iam::1221321312:user/cli is not authorized to perform: lambda:InvokeFunction on resource: arn:aws:lambda:us-west-2:1221321312:function:test1
我阅读了文档和几篇博客,但我无法授权该用户调用 lambda 函数。如何让这个用户调用 lambda?
回答如下:更新(长话短说;博士)
现在还有一个名为
AWSLambdaRole 的 IAM 托管策略,您可以将其分配给您的 IAM 用户或 IAM 角色。这应该给你你需要的权限。
原答案
AWSLambdaExecute 和 AWSLambdaBasicExecutionRole 不提供错误中表达的权限。这两个托管策略都旨在附加到您的 Lambda 函数本身,因此它运行这些策略。
报错是运行nodejs程序的用户没有启动Lambda函数的权限
您需要为您的 IAM 用户授予
lambda:InvokeFunction 权限:
- 在 IAM 管理控制台中找到您的用户并单击它。
- 在“权限”选项卡上,展开“内联策略”部分并单击“单击此处”链接以添加策略。
- 选择“自定义策略”。
- 为您的保单命名。它可以是任何东西。
- 将此政策放在政策文件字段中。
政策样本:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1464440182000",
"Effect": "Allow",
"Action": [
"lambda:InvokeAsync",
"lambda:InvokeFunction"
],
"Resource": [
"*"
]
}
]
}
在这个策略中,我已经包含了调用 lambda 方法的两种方法。
本文标签: AccessDeniedException用户无权执行lambdaInvokeFunction
版权声明:本文标题:AccessDeniedException:用户无权执行:lambda:InvokeFunction 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.roclinux.cn/b/1717622475a709811.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论