使用AWS lambda函数调用lex chat bot
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用AWS lambda函数调用lex chat bot相关的知识,希望对你有一定的参考价值。
我试图在AWS lambda函数中使用boto3,以便将post_text用于Lex聊天机器人。
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”来过滤列出的策略。
- 筛选的列表将包含策略调用“AmazonLexRunBotsOnly”。
- 将此政策附加到您的角色。
- 保存更改并返回lambda函数。
- 保存lambda函数并重新测试。
这将解决您的问题。
以上是关于使用AWS lambda函数调用lex chat bot的主要内容,如果未能解决你的问题,请参考以下文章
在 Aws Lex 中 - 我们可以使用 lambda 更改槽值吗?
最简单的方法是将现有的 AWS Lex 和 Lambda 部署为 Alexa Skills Kit (ASK)?