重新部署lambda后,AWS Lex访问被拒绝。错误的默认IAM角色

时间:2017-04-21 18:15:45

标签: amazon-web-services aws-lambda chatbot amazon-lex

我最近创建了一个AWS Lex bot并添加了一个intent。然后我上传了一个简单的AWS Lambda,它具有管理员访问权限(我稍后会降低它,不用担心),然后还添加了一些可信实体:

受信任的实体

  • 身份提供者apigateway.amazonaws.com
  • 身份提供者lambda.amazonaws.com
  • 身份提供者events.amazonaws.com
  • 身份提供者lex.amazonaws.com

然后我将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函数,然后再次添加它,然后构建并发布它,它将一直有效,直到下次更新。

然而,这是一场噩梦。你知道我怎么能解决这个问题?

感谢。

1 个答案:

答案 0 :(得分:1)

使用AWS CLI尝试:

aws lambda add-permission --function-name lex-test --statement-id chatbot-fulfillment --action "lambda:InvokeFunction" --principal "lex.amazonaws.com"

看看:https://hostname.top.com/user/login