Шлюз API AWS: Как объединить несколько параметров запроса метода в один параметр запроса интеграции

#amazon-s3 #aws-api-gateway

#amazon-s3 #aws-api-gateway

Вопрос:

Я хотел бы использовать API Gateway в качестве прокси-сервера для S3. Сегмент управляется составным ключом, состоящим из двух частей, подобных этой: [userId] — [documentId] .

Идентификатор пользователя поступает в API Gateway в качестве параметра пути, documentId — в качестве параметра запроса, например: [gateway-url]/user1?documentId=doc1

Как я могу объединить их, чтобы URL-адрес для поиска s3 имел следующий формат: https://[bucket-url]/user1-doc1 ?

Спасибо.

Ответ №1:

  1. Настройте запрос метода так, чтобы он принимал параметр path {userid} и параметр запроса {docid}.
  2. Настройте запрос на интеграцию так, чтобы он принимал оба method.request.querystring.docid параметра и в method.request.path.userid качестве URL-адреса.
  3. Наконец, настройте URL конечной точки интеграции как https://your-url /{userid}-{docid}.

Фрагмент swagger для этого выглядит следующим образом-

 

 "paths": {
"/concat-params/{userid}": {
  "get": {
    "parameters": [
      {
        "name": "userid",
        "in": "path",
        "required": true,
        "type": "string"
      },
      {
        "name": "docid",
        "in": "query",
        "required": false,
        "type": "string"
      }
    ],
    "responses": {...},
    "x-amazon-apigateway-integration": {
      "responses": {...},
      "requestParameters": {
        "integration.request.path.userid":"method.request.path.userid",
    "integration.request.path.docid":"method.request.querystring.docid"
      },
      "uri": "https:.../{userid}-{docid}",
      ...
    }
  }
}
  

Надеюсь, это поможет,
Ритиша.