【问题标题】:Using AWS lambda function to call lex chat bot使用 AWS lambda 函数调用 lex 聊天机器人
【发布时间】:2019-04-29 19:44:41
【问题描述】:

我正在尝试在 AWS lambda 函数中使用 boto3,以便对 Lex 聊天机器人执行 post_text。

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"
}
]
}

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

【问题讨论】:

    标签: aws-lambda amazon-iam amazon-lex


    【解决方案1】:

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

    这肯定与分配给您在运行 Lambda 函数时使用的 IAM 角色的权限有关。

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

    1. 在 AWS 控制台上打开 Lambda 函数。
    2. 向下滚动到“执行角色”部分。
    3. 单击角色下方的链接可在新窗口中查看角色。它 应该看起来像这样:“查看角色”。
    4. 在权限选项卡下的新窗口中单击“附加 政策”。
    5. 这会将您带到一个新屏幕。在此屏幕上过滤列出的 通过在输入字段中输入“lex”来制定政策。
    6. 过滤后的列表将包含一个策略调用“AmazonLexRunBotsOnly”。
    7. 将此策略附加到您的角色。
    8. 保存更改并返回到您的 lambda 函数。
    9. 保存 lambda 函数并重新测试。

    这将解决您的问题。

    【讨论】:

      猜你喜欢
      • 2018-10-31
      • 2019-09-30
      • 1970-01-01
      • 2017-12-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-16
      • 1970-01-01
      • 2021-07-07
      相关资源
      最近更新 更多