我想pyaudio
用于将在AWS Lambda上运行的功能。但是,PythonPipBuilder:ResolveDependencies
运行时出现错误sam build --use-container
我设法将我的项目构建到此。
pyaudio
def lambda_handler(event, context):
return {
'statusCode': 200,
'body': 'Hello World'
}
Resources:
MyFunction:
Type: AWS::Serverless::Function
Properties:
CodeUri: my_app/
Handler: app.lambda_handler
Runtime: python3.6
Events:
MyEvent:
Type: Api
Properties:
Path: /test
Method: get
运行时,sam build --use-container --debug
我看到以下输出:
追溯(最近一次通话最近):文件“ /var/lang/lib/python/python3.6/site-packages/aws_lambda_builders/workflows/python_pip/actions.py”,第42行,在执行requirements_path = self.manifest_path,文件“ / var / lang / lib / python3.6 / site-packages / aws_lambda_builders / workflows / python_pip / packager.py“,第137行,位于build_dependencies self._dependency_builder.build_site_packages(requirements_path,artifacts_dir_path,scratch_dir_path)中,文件“ / var / lang / lib /python3.6/site-packages/aws_lambda_builders/workflows/python_pip/packager.py“,第201行,在build_site_packages中引发MissingDependencyError(packages_without_wheels)aws_lambda_builders.workflows.python_pip.packager.MissingDependencyError:{pyaudio == 0.2.11( }
...
在容器内部构建返回的响应{“ jsonrpc”:“ 2.0”,“ id”:1,“错误”:{“代码”:400,“消息”:“ PythonPipBuilder:ResolveDependencies-{pyaudio == 0.2.11(sdist) }“}}
我的理论是失败的,因为在运行时使用的Docker容器映像中未安装PortAudio sam build --use-container
如果我跑pip install -r requirements.txt
我的本地机器上我有安装PortAudio,一切正常。
我的怀疑是我需要以某种方式在AWS Lambda环境中安装PortAudio ...但是如何?层?如果是这样,我从哪里可以得到所需的二进制文件?
如何在AWS Lambda环境中安装PortAudio?
测试您的lambda的快速方法是将软件包(例如pyaudio)安装在包含lambda代码的文件夹中,然后将其全部压缩并上传。查看更多信息https://docs.aws.amazon.com/lambda/latest/dg/python-package.html#python-package-dependencies
如果您在安装软件包时遇到任何问题,则可能取决于相关性,您可能需要添加一个或多个层。
一旦您的lambda工作了,您可以将其删除并使用buildspec.yml安装python软件包。AWS将在运行代码pipleine时安装软件包。更多详细信息https://docs.aws.amazon.com/lambda/latest/dg/build-pipeline.html
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句