AWS CDK "staging.relativeStagedPath is not a function" 当 运行 cdk 合成器

AWS CDK "staging.relativeStagedPath is not a function" when running cdk synth

我正在为一些 lambda 和网关构建一个 cdk 脚本。我正忙着收拾行李,但收到错误 staging.relativeStagedPath is not a function.

设置它的代码是这样的,特别是 Code.from_asset 行。

self.sqlalchemy_layer = LayerVersion(
        self,
        "Sqlalchemy-Lambda-Layer",
        compatible_runtimes=[Runtime.PYTHON_3_8],
        code=Code.from_asset("./src/layers/sqlalchemy-layer.zip"),
    )

我确认代码确实存在,如果我弄乱图层的位置,我会得到一个 'file not found error'。

我还确认 from_asset 函数确实接受了一个指向 zip 文件的字符串。

 def from_asset(
    cls,
    path: builtins.str,
    *,
   ...
) -> "AssetCode":
    """Loads the function code from a local disk path.

    :param path: Either a directory with the Lambda code bundle or a .zip file.

将代码更改为指向捆绑代码而不是 zip 的目录会出现同样的问题。

有谁知道我为什么会收到这个错误?

我设法“解决”了这个问题。我将我的所有代码一点一点地复制到之前设置的 CDK 测试环境中,希望其中一行能告诉我系统哪里出了问题,或者至少能指导我。然而,由于一切都在继续工作,我决定从头开始重建一个新的 CDK,然后将我的 lambda 和层复制到部署目录。而这一次,一切正常。所以我不知道出了什么问题,但我很高兴重建解决了我的问题。

我一直在为这个 jsii 错误以及另一个 jsii 错误而苦苦挣扎。终于有了适合我的解决方法。

解决方法 1: 将 site-packages 中的 jsii 1.14.x 发行版替换为 1.12 或 1.13 发行版。将 1.14 换成 1.12 或 1.13 后,错误停止。

如果您使用 Windows 到 运行 CDK,则 AWS CDK 组记录的 jsii 中存在错误。我向 aws-cdk 报告了它。他们重现了这个错误并在 nodejs 上创建了一个错误报告。此错误报告具有指向其他错误报告的链接。 https://github.com/aws/aws-cdk/issues/11314

解决方法 2: 将开发环境从 Windows 移到 linux 或 mac

我的相关 Whosebug 问题:Returns JSII error when attempting to create empty stack with python AWS CDK