我最近创建了一个 AWS Lex 机器人并添加了一个意图。然后我上传了一个简单的AWS Lambda,它有管理员权限(我以后会降低,不用担心),然后还添加了一些可信实体:
可信实体
然后我将 lambda 函数添加到意图中并构建机器人,开始测试它。它工作得很好。
下一步是(在 10 分钟内)更新 lambda 函数(测试新功能)。我添加了一个新版本并返回到 AWS Lex 并开始编写消息并出现以下错误消息:
发生错误:调用 lambda 函数时拒绝访问 arn:aws:lambda:us-east-1:99999999999:function:lex-test from arn:aws:lex:us-east-1:888888888:intent:test:3 .请查看有关此功能的政策。
首先,我认为这是我的错误,并开始调查问题,但后来,我注意到 AWSServiceRoleForLexBots 角色的策略不对。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"polly:SynthesizeSpeech"
],
"Resource": [
"*"
]
}
]
}
我无法更改它,因为“无法在 IAM 中修改此服务相关角色。您可以从依赖于此角色的 AWS 服务修改此角色。”
如果我再次单击每个意图并删除 lambda 函数,然后再次添加它,然后构建和发布它,它将一直工作到下一次更新。
然而,这是一场噩梦。你知道我该如何解决这个问题吗?
谢谢。
最佳答案
使用 AWS CLI 试试这个:
aws lambda add-permission --function-name lex-test --statement-id chatbot-fulfillment --action "lambda:InvokeFunction" --principal "lex.amazonaws.com"
看看:Using Resource-Based Policies for AWS Lambda (Lambda Function Policies)
关于amazon-web-services - 重新部署 lambda 后,AWS Lex 访问被拒绝。错误的默认 IAM 角色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43549478/