【发布时间】:2017-07-25 23:52:51
【问题描述】:
我们在 Amazon lex 中创建了一个聊天机器人。 bot 在尝试访问 lambda 函数时显示以下错误。
发生错误:调用 lambda 函数时访问被拒绝。请检查用于创建机器人的 IAM 策略的权限
你能帮我们解决这个错误吗?
【问题讨论】:
标签: amazon-web-services lambda aws-lambda chatbot amazon-lex
我们在 Amazon lex 中创建了一个聊天机器人。 bot 在尝试访问 lambda 函数时显示以下错误。
发生错误:调用 lambda 函数时访问被拒绝。请检查用于创建机器人的 IAM 策略的权限
你能帮我们解决这个错误吗?
【问题讨论】:
标签: amazon-web-services lambda aws-lambda chatbot amazon-lex
看起来此问题的根源在于与您的 Lex 机器人关联的 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 担任产品经理
【讨论】:
见http://docs.aws.amazon.com/lex/latest/dg/gs-cli-update-lambda.html
Lex 正在使用推送模型来触发 lambda 函数,基于每个意图函数策略。
“使用 Lambda AddPermission 函数启用 OrderFlowers 意图以调用 Lambda Invoke 操作。”
见http://docs.aws.amazon.com/lambda/latest/dg/API_AddPermission.html
很遗憾,无法通过 aws 控制台编辑资源策略。
【讨论】: