Доступ к CloudSearch только из шлюза API

#amazon-web-services #aws-api-gateway #amazon-cloudsearch

#amazon-веб-сервисы #aws-api-gateway #amazon-cloudsearch

Вопрос:

Я хотел бы получить доступ к CloudSearch только из API Gateway, потому что мне не нравится идея общедоступного доступа к моей конечной точке CloudSearch. Я попытался добавить политику доступа:

 {
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::*********:user/admin"
      },
      "Action": [
        "cloudsearch:search",
        "cloudsearch:suggest"
      ]
    }
  ]
}
 

Когда я пытаюсь получить доступ к конечной точке CloudSearch из своего браузера, я получаю User: anonymous is not authorized to perform: cloudsearch:search .

API Gateway получает "Request forbidden by administrative rules" .

Моей конечной точкой шлюза API является HTTP GET, а URI установлен для моей конечной точки cloudsearch. Я все делаю правильно? Как люди обычно это настраивают, я впервые использую обе службы. Я использую CloudSearch для поля ввода автозаполнения на веб-сайте.

Ответ №1:

Вам также необходимо настроить доверительные отношения для вашей роли IAM, которую использует API Gateway, в противном случае он не сможет взять на себя эту роль. Ознакомьтесь с документами здесь, в разделе «Предварительные требования»

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

Также убедитесь, что вы включили CORS в своем API, иначе это также может привести к ошибке.