提问人:Stephan N. 提问时间:9/20/2023 更新时间:10/27/2023 访问量:65
Python 使用 CDK 将 python 包添加到 aws 层不起作用
Python Add python package to aws layer using CDK not working
问:
我正在尝试使用 aws CDK 将 pandas 添加到我的 aws 层,以便我的 aws 函数可以使用此层。但是,在测试 lambda 函数时,我收到以下错误:
{
"errorMessage": "module 'pandas' has no attribute 'show_versions'",
"errorType": "AttributeError",
"requestId": "55a21990-a693-44df-b80c-03f497c4e7ee",
"stackTrace": [
" File \"/var/task/pandas.py\", line 5, in lambda_handler\n pd.show_versions()\n"
]
}
以下是我的项目结构概述:
- project
- .venv/**
- stack
- pandas_stack.py
- layers
- python/lib/python3.11/site-packages
- lambda
- pandas_lambda.py
在我的pandas_lambda.py中,我有以下代码:
import json
import pandas as pd
def lambda_handler(event, context):
pd.show_versions()
return 1
在我的pandas_stack.py中,我有以下代码:
from constructs import Construct
from aws_cdk import (
Stack,
aws_lambda as _lambda
)
class PandasStack(Stack):
def __init__(self, scope: Construct, construct_id: str, **kwargs) -> None:
super().__init__(scope, construct_id, **kwargs)
lambdaLayer = _lambda.LayerVersion(self, 'lambda-layer',
code = _lambda.AssetCode('layers/'),
compatible_runtimes = [_lambda.Runtime.PYTHON_3_11]
)
lambdaFn = _lambda.Function(
self, 'lambda-function',
runtime=_lambda.Runtime.PYTHON_3_11,
code=_lambda.Code.from_asset('lambda'),
handler='pandas.lambda_handler',
function_name='lambda_pandas_handler',
description='Lambda function deployed using AWS CDK Python',
layers = [lambdaLayer]
)
我使用以下命令在文件夹中安装的软件包 pandas:layers/python/lib/python3.11/site-packages
.venv/bin/pip3 install pandas -t ./layers/python/lib/python3.11/site-packages
我检查了 AWS 管理控制台,以检查我的层是否已正确添加到 AWS Lambda 函数中。碰巧是这种情况:在此处输入图像描述
我下载了 Lambda 层来检查该层的内容。图层的内容是这样的:在此处输入图像描述
不太确定我在这里错过了什么!有人知道出了什么问题吗? 提前致谢!
答:
0赞
Emile Tenezakis
10/27/2023
#1
我建议采用以下两种方法之一:
- 如前所述,切换到 ,而不是在文件夹中手动安装 pandas,您只需在放入的文件中列出该要求,CDK 即可完成其余工作。
PythonFunction
layer
requirements.txt
project/lambda
- 如果你坚持你的方法,我会首先检查是否真的在本地正确安装。我会检查.内容是否符合您的期望?您的 lambda 似乎检测到该软件包,但没有检测到其基本功能之一,这表明它没有正确安装。检查 lambda 依赖项的另一种方法是转到控制台(可能也可以在 CLI 上执行),转到 lambda 的页面,然后在“操作”中将 lambda 的 deps 导出到本地的 zip 文件中。然后,您可以检查模块。
pandas
layers/python/lib/python3.11/site-packages
pandas
show_versions
pandas
评论
dir
PythonFunction