8

serverlessフレームワークを使用して、AWS Lambda 関数を作成およびデプロイしようとしています。vendoredプロジェクトのルートにという名前のフォルダーを作成し、 (を使用してpip install) 関数の依存関係をインストールしました。ただし、(を使用して)実行しようとするたびにserverless function run、エラーが発生しました:

サーバーレス: isNewUser を実行しています...
サーバーレス: 警告: この変数は定義されていません: リージョン
サーバーレス: -----------------
サーバーレス: 失敗しました - このエラーが返されました:
サーバーレス: {"exception": ["Traceback (最新の呼び出しが最後):\n", " File \"/home/fernando/.nvm/versions/node/v5.10.1/bin/serverless-run-python-handler \"、170 行目、\n ハンドラ = import_program_as_module(path)\n"、" ファイル \"/home/fernando/.nvm/versions/node/v5.10.1/bin/serverless-run-python-handler\" 、149 行目、import_program_as_module 内\n module = make_module_from_file('lambda_handler', handler_file)\n", " File \"/home/fernando/.nvm/versions/node/v5.10.1/bin/serverless-run-python- handler\"、129 行目、make_module_from_file\n py_source_description\n"、" ファイル \"/home/fernando/workspace/os-cac/isNewUser/handler.py\"、11 行目、\n vtex.order インポートからOrder\n", "ImportError: vtex.order という名前のモジュールがありません\n"],"success": false} サーバーレス: Python からの例外メッセージ
サーバーレス: トレースバック (最新の呼び出しが最後): 、ファイル "/home/fernando/.nvm/versions/node/v5.10.1/bin/serverless-run-python-handler"、170 行目、ハンドラー内 = import_program_as_module(path) 、ファイル「/home/fernando/.nvm/versions/node/v5.10.1/bin/serverless-run-python-handler」、149 行目、import_program_as_module モジュール内 = make_module_from_file('lambda_handler', handler_file) 、ファイル「/home」 /fernando/.nvm/versions/node/v5.10.1/bin/serverless-run-python-handler"、129行目、make_module_from_file py_source_description、ファイル"/home/fernando/workspace/os-cac/isNewUser/handler.py "、11 行目、vtex.order import Order から、ImportError: vtex.order という名前のモジュールはありません `

vtex.orderhandler.py にインポートされたモジュールです

私のプロジェクトの構造は次のようなものです:

/root/
     |
     |--_meta/
     |--vendored/
                |--dependencies...
     |--function-name/
                     |--handler.py
                     |--event.json
                     |--s-function.json
     |--requirements.txt
     |--admin.env
     |--package.json
     |--s-project.json
     |--s-resources-cf.json
     |--s-project.json

私が間違っていることはありますか?ベンダーからの依存関係を含めるように関数を構成する必要がありますか?

4

3 に答える 3

9

これを機能させるためのいくつかの手順を次に示します。

  1. のハンドラ エントリのs-function.jsonパスに関数名が含ま れていることを確認します。"handler": "function-name/handler.handler",
  2. 以下をhandler.py追加します。

    import os
    import sys
    
    here = os.path.dirname(os.path.realpath(__file__))
    sys.path.append(os.path.join(here, "../vendored"))
    
    from vtex.order import Order
    

それでおしまい。それがうまくいったかどうか教えてください。

于 2016-04-29T18:00:28.350 に答える