首页 > 解决方案 > 使用 AssetStaging 作为代码源时,每次部署时 DockerImageCode 哈希都会发生变化

问题描述

我们有一个 CDK 应用程序,它使用 AssetStaging 构造将相关文件夹移动到临时文件夹,然后我们使用 DockerImageCode 创建一个引用复制文件夹的 lambda 函数。所以是这样的:

        self.assets= AssetStaging(
            self,
            "CopiedAsset",
            source_path=str(Path(".").absolute().parent.parent / "python_packages"),
            exclude=[
                "exclude_1/**/*",
                "exclude_2/**/*",
        )

        self.lambda = _lambda.DockerImageFunction(
            self,
            "Lambda",
            code=_lambda.DockerImageCode.from_image_asset(
                directory=self.assets.absolute_staged_path,
                file="lambda/Dockerfile",
                cmd=["/var/task/lambda/handler.handler"],
                exclude=docker_exclude_dirs,
            ),
        )

但是,从 CDK 的源代码(此处)看来,暂存目录的路径名(self.assets.absolute_staged_path)是来自 的源哈希的一部分DockerImageFunction,这意味着每次部署时都会重新部署 Docker 映像(self.assets因为随机的)

有没有办法解决?

标签: aws-cdk

解决方案


推荐阅读