Aws lambda 使用AWS lambda函数调用lex聊天机器人

Aws lambda 使用AWS lambda函数调用lex聊天机器人,aws-lambda,amazon-iam,amazon-lex,Aws Lambda,Amazon Iam,Amazon Lex,我试图从AWS lambda函数中使用boto3,以便向Lex聊天机器人发送post_文本 Python代码: client = boto3.client('lex-runtime') data = "string input" response = client.post_text( botName='xxx', botAlias='yyy', userId='id', inputText= data) 但我得到: An error o

我试图从AWS lambda函数中使用boto3,以便向Lex聊天机器人发送post_文本

Python代码:

    client = boto3.client('lex-runtime')
    data = "string input"
    response = client.post_text(
    botName='xxx',
    botAlias='yyy',
    userId='id',
    inputText= data)
但我得到:

An error occurred (AccessDeniedException) when calling the PostText 
operation: User: arn:aws:sts::111111111:assumed- 
role/functionName/functionName is not authorized to perform: lex:PostText on 
resource: arn:aws:lex:us-east-1:111111111:bot:xxx:yyyy"
因此,我制定了IAM规则和政策:

{
"Version": "2012-10-17",
"Statement": [
    {
        "Effect": "Allow",
        "Action": [
            "lex:PostText"
        ],
        "Resource": [
            "arn:aws:lex:us-east-1:111111111:bot:xxx:yyyy"
        ]
    }
]
}
信任关系:

{
"Version": "2012-10-17",
"Statement": [
{
  "Effect": "Allow",
  "Principal": {
    "Service": "lambda.amazonaws.com"
  },
  "Action": "sts:AssumeRole"
}
]
}

但它仍然不起作用,我也遇到了同样的错误。

我最近也遇到了同样的问题

它肯定与运行Lambda函数时所使用的分配给IAM角色的权限有关

解决此问题的最简单方法如下:-

  • 在AWS控制台上打开Lambda功能
  • 向下滚动至“执行角色”部分
  • 单击角色下的链接以在新窗口中查看角色。信息技术 应该是这样的:“查看角色”
  • 在“权限”选项卡下的新窗口中,单击“附加” 政策”
  • 这将带您进入一个新屏幕。在此屏幕上,筛选列出的 通过在输入字段中键入“lex”来执行策略
  • 筛选的列表将包含策略调用“AmazonExRunBotsOnly”
  • 将此策略附加到您的角色
  • 保存更改并返回lambda函数
  • 保存lambda函数并重新测试
  • 这将解决您的问题