我最近创建了一个 AWS Lex 机器人并添加了一个意图。然后我上传了一个简单的 AWS Lambda,它具有管理员访问权限(我稍后会降低它,不用担心),然后还添加了一些受信任的实体:
受信任的实体
- 身份提供者 apigateway.amazonaws.com
- 身份提供者 lambda.amazonaws.com
- 身份提供者 events.amazonaws.com
- 身份提供者 lex.amazonaws.com
然后我将 lambda 函数添加到意图并构建机器人,开始测试它。它工作得很好。下一步是(在 10 分钟内)更新 lambda 函数(测试新功能)。我添加了一个新版本并返回 AWS Lex 并开始编写消息,然后出现以下错误消息:
发生错误:从 arn:aws:lex:us-east-1:888888888:intent:test:3 调用 lambda 函数 arn:aws:lambda:us-east-1:99999999999:function:lex-test 时访问被拒绝. 请查看有关此功能的政策。
首先,我认为这是我的错误,并开始调查问题,但随后,我注意到AWSServiceRoleForLexBots角色的策略不正确。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"polly:SynthesizeSpeech"
],
"Resource": [
"*"
]
}
]
}
我无法更改它,因为“无法在 IAM 中修改此服务相关角色。您可以从依赖于此角色的 AWS 服务修改此角色。” 如果我再次单击每个意图并删除 lambda 函数,然后再次添加它,然后构建并发布它,它将一直工作到下一次更新。
然而,这是一场噩梦。你知道我该如何解决这个问题吗?
谢谢。