Шлюз API блокирует запросы с содержимым в теле - PullRequest
0 голосов
/ 02 марта 2019

Я пытаюсь отправить запрос через шлюз AWS API с почтальоном.У меня есть AWS IAM, и это, кажется, работает.Я могу отправить запрос без текста в теле. Я получаю ответ 200 от своей лямбда-функции.

Я хотел бы отправить двоичный файл в теле, однако всякий раз, когда я добавляю что-либо, form-data, raw илидвоичные данные в теле запроса я получаю это сообщение:

{
    "message": "The request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method. Consult the service documentation for details.\n\nThe Canonical String for this request should have been\n'POST\ ..."
}

Я попытался добавить image / png и application / octect-stream к Binary Media Types, а также попытался указать модель только с одним полем ви это тоже не работает.

Любая помощь будет высоко ценится.Я пытался публиковать сообщения на форумах AWS, но на самом деле нет кнопки «опубликовать», «задать вопрос» или «создать», чтобы на самом деле задать вопрос, поэтому вернемся к старому надежному стековому потоку.

Приветствия.Mitch.

Изменить настройки шлюза API:

openapi: 3.0.1
info:
  title: AlarmEndpoints
  version: '2019-03-02T03:22:39Z'
servers:
- url: https://602wer34n1.execute-api.ap-southeast-2.amazonaws.com/{basePath}
  variables:
    basePath:
      default: /dev
paths:
  /alarm/message:
    post:
      responses:
        '200':
          description: 200 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Empty'
      security:
      - sigv4: [
          ]
      x-amazon-apigateway-integration:
        uri: arn:aws:apigateway:ap-southeast-2:lambda:path/2015-03-31/functions/arn:aws:lambda:ap-southeast-2:962000000000:function:alarm_message/invocations
        responses:
          default:
            statusCode: '200'
        passthroughBehavior: when_no_match
        httpMethod: POST
        contentHandling: CONVERT_TO_TEXT
        type: aws
components:
  schemas:
    Empty:
      title: Empty Schema
      type: object
  securitySchemes:
    sigv4:
      type: apiKey
      name: Authorization
      in: header
      x-amazon-apigateway-authtype: awsSigv4
x-amazon-apigateway-policy:
  Version: '2012-10-17'
  Statement:
  - Effect: Allow
    Principal:
      AWS: arn:aws:iam::962000000000:user/alarm_user
    Action: execute-api:Invoke
    Resource: arn:aws:execute-api:ap-southeast-2:962000000000:*/*/*

Лямбда-функция:

import json
import os
import boto3

def lambda_handler(event, context):
    var = os.environ.get("a_variable")

    return {
        'statusCode': 200,
        'body': json.dumps({'message': 'Hello from Lambda 2!',
                            'echo': event,
                            'data': var})
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...