Я пытаюсь отправить запрос через шлюз 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})
}