web-dev-qa-db-ja.com

サーバーレス呼び出しローカルにパラメーターを渡す方法

私はawsサーバーレスプロジェクトに取り組んでおり、ラムダ関数をローカルでテストする必要があります。
serverless invoke local -f {function_name}コマンドを使用して、パスまたはクエリパラメーターを要求しないAPI呼び出しをテストしています。
私の質問は、このコマンドを使用してパスまたはクエリパラメーターを関数に渡す方法です。

サーバーレスの説明の例

getFoodDetails:
    handler: handler.getFoodDetails
    events:
      - http:
          method: get
          path: /foods/{food_id}
          cors: true
          request:
            parameters:
              paths:
                food_id: true
17
Lasitha Yapa

データ文字列

前述のように、--dataオプションを使用して、文字列データをイベントとして関数に渡すことができます

serverless invoke local -f {function_name} --data '{ "queryStringParameters": {"id":"P50WXIl6PUlonrSH"}}'

データファイル

また、データをeventとしてjsonファイルに--pathを渡し、「イベントファイル」内で必要なデータを定義することもできます。

serverless invoke --function {function_name} --path event_mock.json

なんらかの方法で呼び出しからイベントを返し、JSONファイルに保存するか、Amazonから取得することができます。彼らはいくつかの例を提供します: https://docs.aws.Amazon.com/lambda/latest/dg/eventsources.html

--path--dataの両方を渡すと、--pathファイルに含まれるデータが--dataフラグで渡したデータを上書きすることに注意してください。

ドキュメント: https://serverless.com/framework/docs/providers/aws/cli-reference/invoke#invoke-local

30
maxrodrigo

--dataを使用します。passは、ローカルラムダに送信する任意の形式のデータです。

文字列データの例:

サーバーレス呼び出し--function functionName --stage dev --region us-east-1 --data "hello world"

JSONデータの例:

サーバーレス呼び出し--function functionName --stage dev --region us-east-1 --data '{"property1": "value"}'

ファイルからのJSONデータ:

サーバーレス呼び出し--function functionName --stage dev --region us-east-1 --path lib/data.json

完全なドキュメントは here からアクセスできます

それが役に立てば幸い。

5
Kannaiyan

属性--dataを使用して回答を試みましたが、neitherは機能します。
実際問題は、--dataがフレームワークに文字列値を渡すことです。したがって、javascriptファイル:console.log(typeof(event));に書き込むと、StringではなくObjectを取得します。つまり、サーバーレスフレームワーク入力をJSONオブジェクトに正しく変換しないです。そのため、xxの未定義エラーが発生しました。

私の解決策は、-p(または--path)属性を使用することです。例では、次の手順を実行します。

  1. コンソールの現在の場所に.jsonファイルを作成します。例:test.json
  2. jsonファイルに次のように書き込みます:{"pathParameters":{"food_id":"100"}}
  3. jsファイルで、food_idを取得するには、event.pathParameters.food_idを使用します
  4. コマンドを実行:sls invoke local -f yourFunction -p test.json
2
Nechadil

将来の参考のために。あなたのケースはこのように解決されたでしょう。 Kannaiyans JSON Exampleのおかげで理解できました。

sls invoke local -f getFoodDetails --data '{ "queryStringParameters": {"food_id":"123"}}'
1
d0utone