AWS CDK部署Lambda函数报错:无法找到指定资产路径
AWS CDK执行
cdk synth提示Lambda资产不存在的排查方案 问题描述
尝试使用AWS CDK创建Lambda函数,执行cdk synth命令时提示资产不存在,但实际目标路径是存在的。
使用的代码:
cwd = os.getcwd() aws_lambda.Function(self, "lambda_function", runtime=aws_lambda.Runtime.PYTHON_3_9, handler="index.handler", code=aws_lambda.Code.from_asset(os.path.join(cwd, "lambda_functions/lambda")) )
项目目录结构:
确认文件存在且错误信息显示的目录与预期一致,问题排查方向如下:
可能的原因及解决办法
- 工作目录不匹配:
os.getcwd()获取的是执行cdk synth时的终端工作目录,而非CDK栈文件所在的目录。如果你的栈文件不在项目根目录执行,就会导致路径拼接错误。建议改用__file__定位栈文件目录,再拼接相对路径:
from pathlib import Path # 获取当前栈文件所在的目录 stack_directory = Path(__file__).parent aws_lambda.Function(self, "lambda_function", runtime=aws_lambda.Runtime.PYTHON_3_9, handler="index.handler", code=aws_lambda.Code.from_asset(stack_directory / "lambda_functions/lambda") )
- 目录/文件权限不足:执行
cdk synth的用户没有目标目录或文件的访问权限。在Linux/macOS下可通过以下命令调整权限:
chmod -R 755 lambda_functions/lambda
目标目录为空或无有效文件:CDK的
from_asset要求目标目录下至少包含一个可打包的文件(比如你指定的index.py)。确认lambda_functions/lambda目录下存在index.py,且文件名、路径拼写无误。CDK缓存异常:CDK的缓存可能导致路径识别错误,清理缓存后重新执行:
cdk clean cdk synth
内容的提问来源于stack exchange,提问作者john4ster
相关产品推荐
相关产品推荐

