我正在试用AWS Codestar。我的目标是部署一个非平凡的lambdaendpoint,即处理程序具有依赖关系的地方。理想情况下,我希望能够在需求中指定它们。txt
文件,但这似乎不是那么简单。具体地说,我想部署一个依赖于nltk的lambda处理程序,其中nltk标记器“punkt”的文件作为代码构建过程的一部分下载,并为lambda打包。
如何通过buildspec实现这一点。yml
和模板。yml
?下面,我试图将pip
依赖项安装到子目录lib
,并将其包含在zip工件中。
运行时,Codebuild能够安装依赖项、导入nltk并运行测试,部署到Lambda成功,并且正确的文件被打包到lib
子文件夹中(我下载了ZIP文件以进行检查),但我在Lambda日志中看到错误:无法导入模块“索引”:没有名为“nltk”的模块。
。
这里是我的buildspec.yml
:
version: 0.2 phases: install: commands: - pip install -r requirements.txt -t lib # Upgrade AWS CLI to the latest version - pip install --upgrade awscli pre_build: commands: - python -V - export PYTHONPATH=$PYTHONPATH:./lib - export HOME_DIR=`pwd` - mkdir $HOME_DIR/nltk_data/ - export NLTK_DATA=$HOME_DIR/nltk_data - python -m nltk.downloader -d $NLTK_DATA punkt - python -m unittest discover tests build: commands: - aws cloudformation package --template template.yml --s3-bucket $S3_BUCKET --output-template template-export.yml artifacts: type: zip files: - template-export.yml - '**/*'
我的template.yml:
Resources: HelloWorld: Type: AWS::Serverless::Function Properties: Handler: index.handler Runtime: python3.6 Environment: Variables: PYTHONPATH: ./lib Role: Fn::ImportValue: !Join ['-', [!Ref 'ProjectId', !Ref 'AWS::Region', 'LambdaTrustRole']] Events: GetEvent: Type: Api Properties: Path: / Method: get PostEvent: Type: Api Properties: Path: / Method: post
上述方法不起作用的原因是,无论出于何种原因,PYTHONPATH
在AWS Lambda上不起作用(即使它似乎与Codebuild一起工作)。下面的配置工作正常。
buildspec.yml:
version: 0.2 phases: install: commands: - pip install -r requirements.txt -t . # Upgrade AWS CLI to the latest version - pip install --upgrade awscli pre_build: commands: - python -V - export HOME_DIR=`pwd` - mkdir $HOME_DIR/nltk_data/ - export NLTK_DATA=$HOME_DIR/nltk_data - python -m nltk.downloader -d $NLTK_DATA punkt - python -m unittest discover tests build: commands: - aws cloudformation package --template template.yml --s3-bucket $S3_BUCKET --output-template template-export.yml artifacts: type: zip files: - template-export.yml - '**/*'
我的template.yml:
Resources: HelloWorld: Type: AWS::Serverless::Function Properties: Handler: index.handler Runtime: python3.6 Environment: Variables: NLTK_DATA: ./nltk_data Role: Fn::ImportValue: !Join ['-', [!Ref 'ProjectId', !Ref 'AWS::Region', 'LambdaTrustRole']] Events: GetEvent: Type: Api Properties: Path: / Method: get PostEvent: Type: Api Properties: Path: / Method: post
If you have just checked out a package from version control, you will need to install those dependencies. If you are adding dependencies for your project, then those dependencies are automatically ins
问题内容: 我是python的新手。最近,我有一个用python编写的项目,需要进行一些安装。我运行以下命令进行安装,但出现错误。 我在Google上搜索并找到了此链接,但我不太了解该帖子中的解决方案。 以下是我的requirements.txt文件: 有没有简单的方法来在此python项目中安装所有必需的依赖项? 编辑1 以下是的输出。 我已经安装了,但是pip命令仍然报告缺少此依赖项。 问题答
安装包时(通过使用python setup.py install),依赖项从python包索引(pypi.python.org)获取。但我的目标主机无法访问internet。我已将依赖项放在本地目录下,如下所示。 通过运行?
我试图使用playwright在我的java应用程序中生成pdfs。这是一个很好的区域设置,但是当使用Beanstalk在ec2上部署它时,我会遇到以下错误:
使用AWS SAM时,我曾运行命令,该命令将遍历我的所有Lambda函数包并安装它们的依赖项(在它们上运行)。 如何使用AWS CDK实现相同的行为?它似乎不是自动完成的,还是我遗漏了什么?