使用 pyaudio 的 AWS Lambda 函数
AWS Lambda function using pyaudio
我的梦想:)
我想将 pyaudio
用于将在 AWS Lambda 上 运行ning 的函数。但是,当 运行ning sam build --use-container
时出现 PythonPipBuilder:ResolveDependencies
错误
我的设置
我已经成功地构建了我的项目。
requirements.txt
pyaudio
app.py
def lambda_handler(event, context):
return {
'statusCode': 200,
'body': 'Hello World'
}
template.yaml(相关作品至少)
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
我的问题
当 运行ning sam build --use-container --debug
我看到这个输出:
Traceback (most recent call last):
File "/var/lang/lib/python3.6/site-packages/aws_lambda_builders/workflows/python_pip/actions.py", line 42, in execute
requirements_path=self.manifest_path,
File "/var/lang/lib/python3.6/site-packages/aws_lambda_builders/workflows/python_pip/packager.py", line 137, in build_dependencies
self._dependency_builder.build_site_packages(requirements_path, artifacts_dir_path, scratch_dir_path)
File "/var/lang/lib/python3.6/site-packages/aws_lambda_builders/workflows/python_pip/packager.py", line 201, in build_site_packages
raise MissingDependencyError(packages_without_wheels)
aws_lambda_builders.workflows.python_pip.packager.MissingDependencyError: {pyaudio==0.2.11(sdist)}
...
Build inside container returned response {"jsonrpc": "2.0", "id": 1, "error": {"code": 400, "message": "PythonPipBuilder:ResolveDependencies - {pyaudio==0.2.11(sdist)}"}}
我的理论
我的理论是这失败了,因为 PortAudio 没有安装在 运行ning sam build --use-container
时使用的 Docker 容器镜像中
如果我 运行 pip install -r requirements.txt
在我 安装了 PortAudio 的本地计算机上,一切都按预期工作。
我怀疑我需要以某种方式在 AWS Lambda 环境中安装 PortAudio...但是如何安装?图层?如果是这样,我从哪里得到我需要的二进制文件?
TL;DR;
如何在 AWS Lambda 环境中安装 PortAudio?
测试 lambda 的快速方法是在包含 lambda 代码的文件夹中安装包(例如 pyaudio),然后将其全部压缩并上传。查看更多信息 https://docs.aws.amazon.com/lambda/latest/dg/python-package.html#python-package-dependencies
如果您在安装软件包时遇到任何问题,则可能是依赖性问题,您可能需要添加一层。
一旦你的 lambda 开始工作,你就可以删除它并使用 buildspec.yml 安装 python 包。 AWS 将在 运行 代码管道时安装这些包。更多详情 https://docs.aws.amazon.com/lambda/latest/dg/build-pipeline.html
我的梦想:)
我想将 pyaudio
用于将在 AWS Lambda 上 运行ning 的函数。但是,当 运行ning sam build --use-container
PythonPipBuilder:ResolveDependencies
错误
我的设置
我已经成功地构建了我的项目。
requirements.txt
pyaudio
app.py
def lambda_handler(event, context):
return {
'statusCode': 200,
'body': 'Hello World'
}
template.yaml(相关作品至少)
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
我的问题
当 运行ning sam build --use-container --debug
我看到这个输出:
Traceback (most recent call last): File "/var/lang/lib/python3.6/site-packages/aws_lambda_builders/workflows/python_pip/actions.py", line 42, in execute requirements_path=self.manifest_path, File "/var/lang/lib/python3.6/site-packages/aws_lambda_builders/workflows/python_pip/packager.py", line 137, in build_dependencies self._dependency_builder.build_site_packages(requirements_path, artifacts_dir_path, scratch_dir_path) File "/var/lang/lib/python3.6/site-packages/aws_lambda_builders/workflows/python_pip/packager.py", line 201, in build_site_packages raise MissingDependencyError(packages_without_wheels) aws_lambda_builders.workflows.python_pip.packager.MissingDependencyError: {pyaudio==0.2.11(sdist)}
...
Build inside container returned response {"jsonrpc": "2.0", "id": 1, "error": {"code": 400, "message": "PythonPipBuilder:ResolveDependencies - {pyaudio==0.2.11(sdist)}"}}
我的理论
我的理论是这失败了,因为 PortAudio 没有安装在 运行ning sam build --use-container
如果我 运行 pip install -r requirements.txt
在我 安装了 PortAudio 的本地计算机上,一切都按预期工作。
我怀疑我需要以某种方式在 AWS Lambda 环境中安装 PortAudio...但是如何安装?图层?如果是这样,我从哪里得到我需要的二进制文件?
TL;DR;
如何在 AWS Lambda 环境中安装 PortAudio?
测试 lambda 的快速方法是在包含 lambda 代码的文件夹中安装包(例如 pyaudio),然后将其全部压缩并上传。查看更多信息 https://docs.aws.amazon.com/lambda/latest/dg/python-package.html#python-package-dependencies
如果您在安装软件包时遇到任何问题,则可能是依赖性问题,您可能需要添加一层。
一旦你的 lambda 开始工作,你就可以删除它并使用 buildspec.yml 安装 python 包。 AWS 将在 运行 代码管道时安装这些包。更多详情 https://docs.aws.amazon.com/lambda/latest/dg/build-pipeline.html