如何用Python创建一个*干净*的AWS Lambda函数?
问题
当我在本地运行我的lambda API,使用命令sam local start-api
时,出现了错误{"message":"Missing Authentication Token"}
,而这个请求其实并不需要身份验证令牌。
代码
在我的云形成模板文件中,我创建了一个lambda函数(见下文)和一个API网关来处理API调用。由于这个设置在本地使用start-api
时会失败(谢谢AWS?),我添加了你们可以看到的Events
部分。
MyApi:
Type: AWS::Serverless::Function
Properties:
CodeUri: myapi
Handler: lambda_handler.lambda_handler
Runtime: python3.10
Architectures:
- arm64
...
Events:
Any:
Type: HttpApi
Properties:
Path: '/myapi/*'
Method: any
重现步骤
- 我运行
sam build && sam local start-api
来启动API。 - 我运行
curl localhost:8080/myapi/ping
- 8080是我在samconfig中配置的端口
/myapi/ping
是在API网关和lambda_handler中配置的路径。
1 个回答
0
问题
我不太明白为什么,但是 Path: '/myapi/*'
似乎是个问题所在。
解决办法
改用 Path: '/{proxy+}'
就解决了这个问题。
警告: 如果你在部署用的模板中使用这个设置,你的服务器上也会有相同的设置。这可能不是你想要的结果。
这是一个社区维基。谁知道更多的内容,欢迎补充细节