【问题标题】:AWS SAM local invoke doesn't work when python venv has dependencies当 python venv 具有依赖项时,AWS SAM 本地调用不起作用
【发布时间】:2021-08-05 23:19:29
【问题描述】:

我正在尝试在本地运行一个非常简单的 python lambda 函数,以了解 AWS SAM 本地调用如何工作并测试我的代码。

我有一个非常简单的文件结构,或多或少看起来像这样:

|- env/
|- lambda_function.py
|- pyproject.toml
|- setup.cfg
|- template.yaml
|- test_data.json

我的 lambda_function.py 看起来像这样:

import pandas as pd


def lambda_handler(event, context):
    print(event)
    print(pd.DataFrame({'c1': [1, 2, 3]}))
    return {}

我的template.yaml 如下所示:

AWSTemplateFormatVersion: '2010-09-09'
Transform: 'AWS::Serverless-2016-10-31'
Resources:
  MyFunction:
    Type: 'AWS::Serverless::Function'
    Properties:
      Handler: lambda_function.lambda_handler
      Runtime: python3.8

我的 setup.cfg 定义了我的 lambda 的依赖项,目前它只是 pandas。我的虚拟环境中安装了 pandas,它位于 env/lib/site-packages/...

但是,每当我运行以下命令时:

sam local invoke -e ./test_data.json

我收到以下错误:

Invoking lambda_function.lambda_handler (python3.8)
Skip pulling image and use local one: amazon/aws-sam-cli-emulation-image-python3.8:rapid-1.27.2.

Mounting /Users/XXXXXXXX/XXXXXX/XXXXXXX/[current folder] as /var/task:ro,delegated inside runtime container
START RequestId: 10680278-8001-4a51-87a5-d5fa8a2ab2c6 Version: $LATEST
Traceback (most recent call last): Unable to import module 'lambda_function': No module named 'pandas'
END RequestId: 10680278-8001-4a51-87a5-d5fa8a2ab2c6
REPORT RequestId: 10680278-8001-4a51-87a5-d5fa8a2ab2c6  Init Duration: 0.18 ms  Duration: 130.39 ms     Billed Duration: 200 ms Memory Size: 128 MB     Max Memory Used: 128 MB     
{"errorMessage": "Unable to import module 'lambda_function': No module named 'pandas'", "errorType": "Runtime.ImportModuleError", "stackTrace": []}%                        

(我已经删除了一些个人信息)如何让 SAM CLI 识别虚拟环境中的依赖项?

【问题讨论】:

    标签: python aws-lambda aws-sam aws-sam-cli


    【解决方案1】:

    您必须向 Lambda 函数添​​加一个层,它才能与 pandas 和其他库一起使用。

    1. aws-github-repo
    2. 在 AWS-Lambda-Layers 中创建一个层并上传 zip 文件。
    3. 将图层添加到 lambda 函数。

    这是一个video的进程。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-26
      • 2020-11-11
      • 2021-09-13
      • 2018-10-07
      • 2012-10-18
      • 2019-09-20
      • 2021-04-01
      • 1970-01-01
      相关资源
      最近更新 更多