You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用@aws/cdk的CfnFunction创建Lambda上传Python代码异常咨询

问题根因

lambda_.CfnFunction.CodeProperty的zip_file字段接收的是代码本身的字符串/二进制内容,而非本地代码文件或压缩包的存储路径。你直接传入路径字符串时,CDK会将这段字符串作为代码内容直接写入Lambda的index.py文件,因此会出现你观察到的现象。

解决方案

分场景选择对应的处理方式:

  • 场景1:代码逻辑简单,仅需单文件短代码
    可以直接将代码内容赋值给zip_file,该方式仅支持4KB以内的单文件Python代码:
    code_ = lambda_.CfnFunction.CodeProperty(
        zip_file = """
    

import json
def lambda_handler(event, context):
return {
"statusCode": 200,
"body": json.dumps("execute success")
}
"""
)

- 场景2:使用本地已打包好的zip代码包
先读取本地zip文件的二进制内容,转base64编码后传入`zip_file`:
```python
import base64

with open("./function-code/db-snapshot/index.zip", "rb") as f:
    zip_content = base64.b64encode(f.read()).decode("utf-8")

code_ = lambda_.CfnFunction.CodeProperty(
    zip_file = zip_content
)
  • 场景3:无特殊需求必须使用底层CfnFunction
    更建议使用CDK封装的高阶lambda_.Function构造器,它会自动完成本地代码打包、上传S3、关联Lambda的全流程,无需手动处理文件读取、编码等操作:
    from aws_cdk import aws_lambda as lambda_
    
    db_snapshot_lambda = lambda_.Function(
        self, 
        "DbSnapshotLambda",
        runtime = lambda_.Runtime.PYTHON_3_10,
        handler = "index.lambda_handler",
        # 直接传入本地代码目录路径即可
        code = lambda_.Code.from_asset("./function-code/db-snapshot")
    )
    

内容的提问来源于stack exchange,提问作者AJR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 23:27:05