Mik*_*rno 3 amazon-web-services aws-lambda aws-codestar
我正在尝试 AWS Codestar。我的目标是部署一个重要的 lambda 端点,即处理程序具有依赖项的位置。理想情况下,我希望能够在requirements.txt某个文件中指定它们,但这似乎并不那么简单。具体来说,我想部署一个依赖于 nltk 的 lambda 处理程序,并且 nltk 分词器“punkt”的文件作为 Codebuild 过程的一部分下载并打包用于 Lambda。
如何通过buildspec.ymland来完成此操作template.yml?下面,我尝试将pip依赖项安装到子目录lib并将其包含在 zip 工件中。
运行时,Codebuild 能够安装依赖项、导入 nltk 并运行测试,部署到 Lambda 成功,并且正确的文件正在打包到子lib文件夹中(我下载了 ZIP 文件进行检查),但我在 Lambda 日志中看到错误unable to import module 'index': No module named 'nltk': 。
这是我的buildspec.yml:
版本:0.2
阶段:
安装:
命令:
-pip install -r 要求.txt -t lib
# 将AWS CLI升级到最新版本
- pip install --升级 awscli
预构建:
命令:
- 蟒蛇-V
- 导出 PYTHONPATH=$PYTHONPATH:./lib
- 导出 HOME_DIR=`pwd`
- mkdir $HOME_DIR/nltk_data/
- 导出 NLTK_DATA=$HOME_DIR/nltk_data
- python -m nltk.downloader -d $NLTK_DATA punkt
- python -m unittest 发现测试
建造:
命令:
- aws cloudformation 包 --template template.yml --s3-bucket
$S3_BUCKET --输出模板 template-export.yml
文物:
类型: 拉链
文件:
- 模板导出.yml
- '**/*'
和我的 template.yml:
资源:
你好世界:
类型:AWS::无服务器::函数
特性:
处理程序:index.handler
运行时:python3.6
环境:
变量:
Python路径:./lib
角色:
Fn::导入值:
!Join ['-', [!Ref 'ProjectId', !Ref 'AWS::Region', 'LambdaTrustRole']]
活动:
获取事件:
类型:API
特性:
小路: /
方法:获取
活动后:
类型:API
特性:
小路: /
方式:邮寄
上述内容不起作用的原因是,无论出于何种原因,它PYTHONPATH在 AWS Lambda 上不起作用(尽管它似乎可以与 Codebuild 一起使用)。以下配置有效。
构建规范.yml:
版本:0.2
阶段:
安装:
命令:
- pip install -r requests.txt -t 。
# 将AWS CLI升级到最新版本
- pip install --升级 awscli
预构建:
命令:
- 蟒蛇-V
- 导出 HOME_DIR=`pwd`
- mkdir $HOME_DIR/nltk_data/
- 导出 NLTK_DATA=$HOME_DIR/nltk_data
- python -m nltk.downloader -d $NLTK_DATA punkt
- python -m unittest 发现测试
建造:
命令:
- aws cloudformation 包 --template template.yml --s3-bucket
$S3_BUCKET --输出模板 template-export.yml
文物:
类型: 拉链
文件:
- 模板导出.yml
- '**/*'
和我的 template.yml:
资源:
你好世界:
类型:AWS::无服务器::函数
特性:
处理程序:index.handler
运行时:python3.6
环境:
变量:
NLTK_数据:./nltk_data
角色:
Fn::导入值:
!Join ['-', [!Ref 'ProjectId', !Ref 'AWS::Region', 'LambdaTrustRole']]
活动:
获取事件:
类型:API
特性:
小路: /
方法:获取
活动后:
类型:API
特性:
小路: /
方式:邮寄
| 归档时间: |
|
| 查看次数: |
2663 次 |
| 最近记录: |