API-шлюз не имеет разрешения для принятия предоставленной роли - PullRequest
0 голосов
/ 11 апреля 2019

Я пытаюсь вызвать лямбда-функцию из шлюза API. Я прошел следующий урок: https://docs.aws.amazon.com/apigateway/latest/developerguide/integrating-api-with-aws-services-lambda.html

Однако при тестировании через веб-интерфейс API Gateway появляется следующая ошибка:

Execution failed due to configuration error: API Gateway does not have permission to assume the provided role

У меня есть поиск в Google, и я не смог решить его (например, это ).

Если перейти к консоли управления IAM, я вижу, что доверительные отношения позволяют API-шлюзу принять роль, а JSON доверительных отношений выглядит следующим образом:

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

Я пробовал также с:

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

Политика роли следующая:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "lambda:InvokeFunction"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}  

Что здесь не так? Спасибо

1 Ответ

0 голосов
/ 11 апреля 2019

Я полагаю, вы не прикрепили роль к методу вызова, то есть к шлюзу API.

. Присоединение созданной роли к шлюзу API необходимо для API, выполняющего lamda.

В разделе «Роль выполнения» выберите «Выбрать существующую роль».

Введите ARN роли для роли lambda_invoke_function_assume_apigw_role, которую вы создали ранее.

Выберите Сохранить.

AWS Link

...