Я создал функцию API Gateway & Lambda через CloudFormation (для функции) и файл swagger (для шлюза API).
Когда я запускаю конечную точку после развертывания, входные данные лямбда-события включают только мою полезную нагрузку.
Когда я запускаю API с помощью "SAM local start-api" и запускаю ту же конечную точку, кажется, что функция получила полный прокси ввод:
{
"httpMethod":"POST",
"body":"...",
"resource": "...",
"requestContext": {"...":"..."}
. . .
}
Пожалуйста, помогите мне проверить, что я делаю не так ...
Это моя конечная точка yaml:
/authorization/generate-token:
post:
consumes:
- "application/json"
produces:
- "application/json"
parameters:
- name: "x-api-key"
in: "header"
required: true
type: "string"
responses:
200:
description: "200 response"
schema:
$ref: "#/definitions/Empty"
headers:
Access-Control-Allow-Origin:
type: "string"
- api_key: []
x-amazon-apigateway-integration:
uri: "arn:aws:apigateway:us-west-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-west-2:ACCOUNT_NUMBER:function:generate_token/invocations"
responses:
default:
statusCode: "200"
responseParameters:
method.response.header.Access-Control-Allow-Origin: "'*'"
passthroughBehavior: "when_no_match"
httpMethod: "POST"
cacheNamespace: "8xok2h"
cacheKeyParameters:
- "method.request.header.x-api-key"
contentHandling: "CONVERT_TO_TEXT"
type: "aws"
options:
consumes:
- "application/json"
produces:
- "application/json"
responses:
200:
description: "200 response"
schema:
$ref: "#/definitions/Empty"
headers:
Access-Control-Allow-Origin:
type: "string"
Access-Control-Allow-Methods:
type: "string"
Access-Control-Allow-Headers:
type: "string"
x-amazon-apigateway-integration:
responses:
default:
statusCode: "200"
responseParameters:
method.response.header.Access-Control-Allow-Methods: "'POST,GET,OPTIONS'"
method.response.header.Access-Control-Allow-Headers: "'Content-Type'"
method.response.header.Access-Control-Allow-Origin: "'*'"
requestTemplates:
application/json: "{\"statusCode\": 200}"
passthroughBehavior: "when_no_match"
type: "mock"
Функция CloudFormation:
GenerateToken:
Type: 'AWS::Serverless::Function'
DependsOn:
- baseAuthRole
Properties:
FunctionName: generate_token
Handler: index.handler
Runtime: nodejs8.10
CodeUri: auth/generate_token
Description: ''
MemorySize: 128
Timeout: 3
Role: !Sub 'arn:aws:iam::${AWS::AccountId}:role/AUTH_ROLE'
Events:
Api1:
Type: Api
Properties:
RestApiId: !Ref BaseApi
Path: /authorization/generate-token
Method: POST
Объявление шлюза API:
BaseApi:
Type: AWS::Serverless::Api
Properties:
Name: ebiz-base
DefinitionBody:
Fn::Transform:
Name: AWS::Include
Parameters:
Location: base-api/swagger.yaml
StageName: !Ref stageName
Спасибо за помощников:)