首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用CDK创建python lambda层

使用CDK创建python lambda层
EN

Stack Overflow用户
提问于 2022-07-21 03:42:24
回答 2查看 603关注 0票数 0

如何使用CDK为python运行时创建自定义Lambda层?

Javascript代码,用于定义lambda层和函数:

代码语言:javascript
运行
复制
 this.sharedLayer = new lambda.LayerVersion(this, 'shared-layer', {
      code: lambda.Code.fromAsset('./lambda-functions/shared-layer'),
      compatibleRuntimes: [lambda.Runtime.PYTHON_3_8],
      layerVersionName: 'shared-layer',
    })
  }


this.testFunction = new lambda.Function(this, 'TestFunction', {
      runtime: lambda.Runtime.PYTHON_3_8,
      handler: 'function.lambda_handler',
      code: lambda.Code.fromAsset('./lambda-functions/test'),
      layers: [this.sharedLayer]
    })

实际的Lambda函数包含共享层文件夹中.py文件的直接导入,如下所示:

代码语言:javascript
运行
复制
import my_shared_functions

./lambda-函数/共享层中的Python层文件夹包含:

代码语言:javascript
运行
复制
/---lambda-functions/
      /---shared-layer/
             boto3/
             my_shared_functions.py
             ...etc

生成模板文件:

代码语言:javascript
运行
复制
cdk synth --no-staging my-lambda-stack > template.yml

使用SAM在本地构建和测试:

代码语言:javascript
运行
复制
sam build TestFunction && sam local invoke --profile siri-dev HeartbeatFunction

错误:

代码语言:javascript
运行
复制
"Unable to import module 'function': No module named 'my_shared_functions'"
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-07-21 03:42:24

将lambda层放入子文件夹'python‘解决了这个问题:

代码语言:javascript
运行
复制
/---lambda-functions/
      /---shared-layer/
            /---python/
                  boto3/
                  my_shared_functions.py
                  ...etc

我运行的假设是CDK的文件夹结构与手动上传图层有一定的不同。

票数 1
EN

Stack Overflow用户

发布于 2022-07-21 04:54:46

如果您正在使用CDK V2,请使用@aws/包。使用这个包可以更容易地管理python依赖项。

请检查下面的代码,使用引擎盖下的对接容器来创建包。

代码语言:javascript
运行
复制
import * as lambda from 'aws-cdk-lib/aws-lambda';
import * as pylambda from "@aws-cdk/aws-lambda-python-alpha";

const layerForCommonCode = new pylambda.PythonLayerVersion(
   this,
   "python-lambda-layer-for-common",
   {
     layerVersionName: "python-lambda-layer-for-common",
     entry: "../lambda-source/common-layer", 
     compatibleRuntimes: [lambda.Runtime.PYTHON_3_9],
   }
 );


The lambda-source structure as follows
--lambda-source
--common-layer
        --requirements.txt
          commonfiles.py
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73060461

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档