如何组织AWS Lambda层的Python代码

2024-09-22 16:40:00 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

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

Folder structure

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

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

多谢各位

Lambda error message

Lambda configuration


Tags: 模块lambdapy程序文件夹awsapp应用程序
1条回答
网友
1楼 · 发布于 2024-09-22 16:40:00

我发现我的疏忽。在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

相关问题 更多 >