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

如何通过AWS CDK创建依赖超200MB的Lambda层?

使用AWS CDK创建大依赖的Lambda层

不用手动提前把包传到S3桶,AWS CDK会自动搞定大资产的上传流程,但有几个关键细节要注意:

  • CDK自动处理资产上传:Lambda层有两个硬性限制——压缩包最大50MB、未压缩内容最大250MB。如果你的依赖压缩后超过50MB,CDK会自动把Zip包上传到它自己管理的S3桶里,然后直接用这个S3对象创建层,完全不用你手动操作S3。但要是未压缩内容超过250MB,那不管用CDK还是手动都建不成,得先精简依赖。
  • CDK构建层的两种常见方式:
    • 直接用本地打包好的依赖目录或Zip文件:通过LayerVersion配合AssetCode指定路径就行,CDK会自动处理后续上传。
    • 用容器构建依赖(适合Python/Node.js这类需要跨环境安装的依赖):用DockerImageAsset在容器里构建依赖,既能避免本地环境差异,也能稳妥处理大依赖的打包,之后再把容器里的产物作为层的代码源。
  • 自定义S3桶的情况:如果你非要用自己的S3桶存层包,那确实得先手动上传,然后用S3Code指定S3对象的路径,但这不是必须的,CDK默认的桶足够用。

举个Python CDK的简单例子:

from aws_cdk import aws_lambda as lambda_
from aws_cdk import Stack
from constructs import Construct

class MyStack(Stack):
    def __init__(self, scope: Construct, construct_id: str, **kwargs) -> None:
        super().__init__(scope, construct_id, **kwargs)

        # 基于本地层目录创建层,CDK自动处理S3上传
        large_dep_layer = lambda_.LayerVersion(
            self, "LargeDependencyLayer",
            code=lambda_.AssetCode("./layers/large-dependencies"),
            compatible_runtimes=[lambda_.Runtime.PYTHON_3_11],
            description="Layer with dependencies over 200MB (uncompressed)"
        )

        # 给Lambda函数附加这个层
        my_function = lambda_.Function(
            self, "MyLambdaFunction",
            runtime=lambda_.Runtime.PYTHON_3_11,
            handler="lambda_function.handler",
            code=lambda_.AssetCode("./lambda"),
            layers=[large_dep_layer]
        )

内容的提问来源于stack exchange,提问作者Yash Kamal Saxena

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 20:12:37