我最近创建了一个AWS Lex bot并添加了一个intent。然后我上传了一个简单的AWS Lambda,它具有管理员访问权限(我稍后会降低它,不用担心),然后还添加了一些可信实体:
受信任的实体
然后我将lambda函数添加到intent并构建bot,开始测试它。它运作得很好。 下一步是(在10分钟内)更新lambda函数(测试新功能)。我添加了一个新版本并返回AWS Lex并开始编写消息,并出现以下错误消息:
发生错误:在调用lambda函数时拒绝访问arn:aws:lambda:us-east-1:99999999999:function:lex-test from arn:aws:lex:us-east-1:888888888:intent:测试:3。请查看此功能的政策。
首先,我认为这是我的错误,并开始研究问题,但后来,我注意到 AWSServiceRoleForLexBots 角色的政策不对。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"polly:SynthesizeSpeech"
],
"Resource": [
"*"
]
}
]
}
我无法更改,因为"此服务关联角色无法在IAM中修改。您可以从依赖于此角色的AWS服务修改此角色。" 如果我再次点击每个意图并删除lambda函数,然后再次添加它,然后构建并发布它,它将一直有效,直到下次更新。
然而,这是一场噩梦。你知道我怎么能解决这个问题?
感谢。
答案 0 :(得分:1)
使用AWS CLI尝试:
aws lambda add-permission --function-name lex-test --statement-id chatbot-fulfillment --action "lambda:InvokeFunction" --principal "lex.amazonaws.com"