Использование лямбда-функции AWS для вызова бота lex chat - PullRequest
0 голосов
/ 28 ноября 2018

Я пытаюсь использовать boto3 из лямбда-функции AWS, чтобы сделать 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"
}
]
}

Но все равно не работает, и я получаю ту же ошибку.

1 Ответ

0 голосов
/ 28 марта 2019

Я недавно столкнулся с той же проблемой.

Скорее всего, это связано с разрешениями, назначенными роли IAM, которую вы используете при запуске функции Lambda.

Самый простой способрешить это ниже: -

  1. Открыть функцию лямбда на консоли AWS.
  2. Прокрутить вниз до раздела «Роль выполнения».
  3. Нажмите ссылку подроль, чтобы просмотреть роль в новом окне.Это должно выглядеть примерно так: «Просмотреть роль».
  4. В новом окне на вкладке разрешений нажмите «Присоединить политики».
  5. Откроется новый экран.На этом экране отфильтруйте перечисленные политики, введя «lex» в поле ввода.
  6. Отфильтрованный список будет содержать вызов политики «AmazonLexRunBotsOnly».
  7. Присоедините эту политику к своей роли.
  8. Сохраните изменения и вернитесь к лямбда-функции.
  9. Сохраните лямбда-функцию и повторите проверку.

Это решит вашу проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...