sam local start-api返回HTTP1.0及API Gateway协议、TLS版本配置咨询
问题解答
一、HTTP协议版本相关说明
你本地测试观察到的sam local start-api返回HTTP/1.0响应属于本地模拟环境的限制,不会同步到线上AWS环境:sam local底层用旧版本Werkzeug服务提供本地API模拟,默认返回HTTP/1.0响应,这个行为和真实AWS API Gateway的运行逻辑无关。
关于线上API Gateway的协议配置:
- 不管是REST API还是HTTP API类型的API Gateway,面向客户端的端点默认都支持HTTP/1.1及更高版本协议(HTTP API额外支持HTTP/3)
- API Gateway和Lambda的集成走AWS内部私有调用链路,不使用公开HTTP协议,不存在使用HTTP/1.0的问题
- 目前AWS不支持也不需要手动配置API Gateway代理到Lambda的HTTP协议版本,线上不会出现你担心的返回HTTP/1.0响应的问题
二、设置API最低TLS版本为1.2的方法
SAM模板配置方式(推荐)
针对REST API类型
在你的AWS::Serverless::Api资源中添加SecurityPolicy配置即可,示例如下:
Resources: MyApi: Type: AWS::Serverless::Api Properties: StageName: Prod SecurityPolicy: TLS_1_2
针对HTTP API类型
HTTP API默认最低TLS版本就是1.2,如需明确指定,可在域名配置中添加SecurityPolicy字段:
Resources: MyHttpApi: Type: AWS::Serverless::HttpApi Properties: Domain: DomainName: your-api.example.com CertificateArn: 你的ACM证书ARN SecurityPolicy: TLS_1_2
控制台配置方式
- 打开API Gateway控制台,选择对应的API实例
- 进入「自定义域名」页面,选择你绑定的API域名
- 点击「编辑」,在安全策略下拉列表中选择
TLS 1.2后保存即可
如果你的API没有绑定自定义域名,使用的是API Gateway默认提供的服务端点,默认已经强制使用TLS 1.2及以上版本,不需要额外配置。
内容的提问来源于stack exchange,提问作者Justin Kredible
相关产品推荐
相关产品推荐

