我们在亚马逊lex中创建了一个聊天机器人。机器人在尝试访问lambda函数时会显示以下错误。
发生错误:调用lambda函数时拒绝访问。请检查用于创建机器人的IAM策略的权限
您能否帮我们解决此错误。
答案 0 :(得分:3)
看起来这个问题的根源在与您的Lex Bot相关联的IAM角色上。 Lex在调用Lambda函数时承担此角色,并且需要1)允许角色调用Lambda的策略,以及2)允许Amazon Lex代表您承担该角色的信任策略。从您看到的错误消息中,我预计可以在您的Bot角色上配置信任策略。
1. 在IAM角色的“权限”选项卡中,选择“内联策略”,然后附加以下自定义策略。
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"lambda:InvokeFunction",
"polly:SynthesizeSpeech"
],
"Effect": "Allow",
"Resource": "*"
}
]
}
2. 在“信任关系”选项卡中,选择“编辑信任关系”,然后指定Amazon Lex服务主体(" lex.amazonaws.com")。更新的策略应如下所示:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "lex.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
请参阅我们的入门文档(http://docs.aws.amazon.com/lex/latest/dg/gs-bp-prep.html)中的第2项作为参考
完全披露:我作为产品经理在Amazon Lex工作
答案 1 :(得分:0)
请参阅http://docs.aws.amazon.com/lex/latest/dg/gs-cli-update-lambda.html
Lex正在使用push模型触发lambda函数,基于每个意图函数策略。
"使用Lambda AddPermission函数启用OrderFlowers意图调用Lambda Invoke操作。"
请参阅http://docs.aws.amazon.com/lambda/latest/dg/API_AddPermission.html
不幸的是,无法通过aws控制台编辑资源策略。