嗨,我有我的 AWS Lambda,我想给它添加一个层。我希望能够只测试 lambda 的单个方法。然而,他们中的许多人使用层逻辑,因此在我看来这并不容易。这样做的最佳方法是什么?
一种方法是打包层,主机在某处并将其用作依赖项。在那种情况下,为什么还要费心使用层?
我的另一个想法是使用 sam-cli 在本地部署 lambda。我知道如何使用它来测试整个 lambda 逻辑,但我看不到如何单独对方法进行单元测试;/
你有什么经验?
韩国
编辑。我的解决方案
test
中目录调用测试的处理程序
import pytest
def lambda_handler(event, _):
res = pytest.main(['-x', './tests'])
return res
Resources:
MyFunction:
Type: AWS::Serverless::Function # More info about Function Resource: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction
Properties:
CodeUri: src/
Handler: test.lambda_handler
Runtime: python3.6
Events:
MyInfo:
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: /my-service/test
Method: get
Environment:
Variables:
ELASTICSEARCH_DOC_TYPE: "article"
ELASTICSEARCH_INDEX: "artilces"
ELASTICSEARCH_HOST: "elastic"
ELASTICSEARCH_PORT: "9200"
ELASTICSEARCH_URL: "http://my_elastic.com:9200"
Layers:
- arn:aws:lambda:eu-west-1:XXXXXXXXXXXXX:layer:lambda_layer:37
sam local invoke --no-event
最佳答案
就我而言,我使用 moto 库来模拟 AWS 服务,因此不能选择使用 sam local。我只是在我的测试文件中将我的 lambda 层的路径添加到我的 sys 路径中,它对我有用。
关于amazon-web-services - 如何对使用层方法的 lambda 逻辑进行单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54705464/