【问题标题】:How to organize Python code for AWS Lambda Layers如何为 AWS Lambda 层组织 Python 代码
【发布时间】:2021-06-03 21:25:53
【问题描述】:

我在 PyCharm 中使用 AWS SAM 和 AWS SAM CLI 模块。我正在尝试设置一个简单的程序:

  1. “ROCFacade”的 Amazon Lambda 层
  2. ROCFacade 将导入 Python 的标准请求模块。使用 PIP 安装后,我将其从 External Libraries/python3.8/site-packages 文件夹(第三个框)复制到第二个框的 lambda-layers 子文件夹中。
  3. 我正在尝试从 hello-world/app.py 调用它,到目前为止,它只不过是 AWS SAM 安装的样板

当我尝试运行它时,PyCharm 报告找不到 ROCFacade 模块。

Folder structure

如果我使用以下“应用程序”配置或 Lambda 配置运行它,则会出现错误消息。

我有另一个项目,它使用相同的 ROCFacade 和一个简单的 main.py 控制台应用程序,因此代码可以正常工作。我不确定我的问题是环境变量(即 Python 不知道查看 lambda-layers 文件夹)还是 Pythong 应用程序/Lambda 配置。我是 Python 和 Lambda/AWS 开发的新手。

谢谢

Lambda error message

Lambda configuration

【问题讨论】:

    标签: python amazon-web-services aws-lambda


    【解决方案1】:

    我发现了我的疏忽。在 template.yaml 中,开发者需要在函数描述符中添加对层的引用并定义层。

    Resources:
      HelloWorldFunction:
        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: hello_world/
          Handler: app.lambda_handler
          Runtime: python3.8
          Layers: !Ref ROCFacadeLayer
          Events:
            HelloWorld:
              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: /hello
                Method: get
    
    ROCFacadeLayer:
      Type: AWS::Serverless::LayerVersion
      Properties:
        LayerName: ROCFacadeLayer
        ContentUri: lambda-layers/roc-facade-layer.zip
        CompatibleRuntimes:
          - python3.7
          - python3.8
    

    【讨论】:

      猜你喜欢
      • 2020-05-29
      • 2022-01-17
      • 2019-08-27
      • 1970-01-01
      • 2022-01-21
      • 2011-08-08
      • 1970-01-01
      • 1970-01-01
      • 2020-12-21
      相关资源
      最近更新 更多