【发布时间】:2021-10-11 02:08:33
【问题描述】:
我正在尝试使用 SAM 部署 api 和 lambda 函数。但是方法响应和积分响应是空的。我的目标是配置如下图所示的 api-gateway。在此我手动配置了 api-gateway 及其工作,但是当我使用 SAM 生成 api-gateway 时,它不会显示方法响应和集成响应。
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Globals:
Function:
Timeout: 500
MemorySize: 5000
Resources:
MyApi:
Type: AWS::Serverless::Api
Properties:
StageName: Prod
GatewayResponses:
DEFAULT_4xx:
ResponseParameters:
Headers:
Access-Control-Expose-Headers: "'WWW-Authenticate'"
Access-Control-Allow-Origin: "'*'"
InferenceFunction:
Type: AWS::Serverless::Function
Properties:
PackageType: Image
Events:
Inference:
Type: Api # More info about API Event Source: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#api
Properties:
Path: /zero-shot-classification
Method: post
RestApiId: !Ref MyApi
Metadata:
Dockerfile: Dockerfile
DockerContext: ./zero-shot-classification
DockerTag: zero-shot-classification
【问题讨论】:
-
SAM 方式是通常的方式。你为什么要反其道而行之?您必须基本上不使用 SAM,并且从头开始做所有事情。
-
实际上,当我使用 SAM 部署它时,使用邮递员无法访问端点,它给出了
internal server error。虽然 lambda 函数正在工作。但是当我手动配置 api-gateway(配置 REST Api 的简单步骤)时,它可以工作。 -
所以我比较了 api-gateway 手动创建的一个和 sam 创建的一个,我发现它唯一的区别就是这个
标签: amazon-web-services aws-lambda amazon-cloudformation aws-api-gateway aws-sam