13

こんにちは、AWS Lambda があり、それにレイヤーを追加したいと考えていました。ラムダの単一のメソッドをテストできるようにしたいと思います。ただし、それらの多くはレイヤーロジックを使用しているため、簡単ではないようです。これを行うための最良のアプローチは何ですか?

1つのアプローチは、レイヤーをパッケージ化することです。ホストはどこかにあり、それを依存関係として使用します。その場合、わざわざレイヤーを使用するのはなぜですか?

私が考えているもう 1 つのアイデアは、sam-cli を使用してラムダをローカルにデプロイすることです。ラムダロジック全体をテストするためにそれを使用する方法は知っていますが、メソッドを個別に単体テストする方法はわかりません;/あなたの経験は何ですか? 韓国語

編集。私の解決策

  • パイテストを追加

  • すべてのテストをtestディレクトリに配置する

  • テストを呼び出すテスト ラムダ ハンドラを追加する

import pytest def lambda_handler(event, _): res = pytest.main(['-x', './tests']) return res

  • 以前に作成したラムダ ハンドラーを指す template.yml を追加します。

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
4

2 に答える 2