python - AWS Python 层在本地运行

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

如何在本地运行带有层的 AWS Lambda 函数?

我的环境:

  • 带有 Python 3.6 运行时的 AWS Lambda 函数的 Pycharm 项目。
  • AWS 工具包
  • 创建 Lambda 层的类似文件/文件夹结构:https://aws.amazon.com/blogs/compute/working-with-aws-lambda-and-lambda-layers-in-aws-sam/如下:
  •     +---.aws-sam
            ....
        +---test
        |       app.py
        |       requirements.txt
        |       
        +---dependencies
        |   \---python
        |           constants.py
        |           requirements.txt
        |           sql.py
        |           utils.py
    
  • 和部署模板,如:
  • testFunc:
        Type: AWS::Serverless::Function
        Properties:
          CodeUri: teest/
          Handler: app.test
          Runtime: python3.6
          FunctionName: testFunc
          Events:
            test:
              Type: Api
              Properties:
                Path: /test
                Method: ANY
          Layers:
            - !Ref TempConversionDepLayer
    
      TempConversionDepLayer:
            Type: AWS::Serverless::LayerVersion
            Properties:
                LayerName: Layer1
                Description: Dependencies
                ContentUri: dependencies/
                CompatibleRuntimes:
                  - python3.6
                  - python3.7
                LicenseInfo: 'MIT'
                RetentionPolicy: Retain
    

    我可以正确部署该函数并且在 AWS 上运行它运行良好,
    每当我尝试在本地运行该函数时,它都会失败并显示错误消息:
    `Unable to import module 'app': No module named 'sql'`
    

    我尝试阅读有关 Layers 和 Pycharm 的所有可能资源,但没有任何帮助。

    有人可以帮忙吗?

    谢谢,

    最佳答案

    通过向包含该层代码的另一个目录添加符号链接(symbolic link),我能够在 PyCharm 中解决此问题

    关于python - AWS Python 层在本地运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57955983/

    相关文章:

    python - 从目录中的文件列表中删除元素

    python - 值错误: "color kwarg must have one color per dataset"

    python - 将 Pandas 中的时间序列重新采样为每周一次

    从 r 中的 s3 中一个一个地读取文件

    JavaScript:顺序迭代 Promise 函数

    python - map(function, sequence) 其中函数返回两个值

    amazon-web-services - toomanyrequests : You have reached your pull rate limit. 你可以通过认证和升级来增加限制

    amazon-web-services - 使用无服务器框架的 Cognito 用户池授权器

    c# - 测试 Alexa 技能返回 "Error converting the Lambda event JSON payload to a string"

    python - Cloudwatch 事件没有触发我的 lambda 函数,即使它是一个目标