【问题标题】:Returns JSII error when attempting to create empty stack with python AWS CDK尝试使用 python AWS CDK 创建空堆栈时返回 JSII 错误
【发布时间】:2020-11-05 09:38:15
【问题描述】:

aws cdk 在空堆栈上返回 jsii 错误。重现步骤处于 hello world 级别,这让我认为我在某处存在版本不匹配。我已经重新安装了 aws cli、cdk 和 nodejs。关于寻找什么的任何建议?

重现步骤:

mkdir myfolder
cdk init --language python
.env\Scripts\activate.ps1
python -m pip install -r requirements.txt
cdk synth

返回错误和一个空堆栈:

(.env) p$[myfolder]> cdk synth                                                                                                                      d:\myfolder\.env\lib\site-packages\jsii\_embedded\jsii\jsii-runtime.js:13295
                    throw e;
                    ^

Error: EOF: end of file, read
    at Object.readSync (fs.js:592:3)
    at SyncStdio.readLine (d:\myfolder\.env\lib\site-packages\jsii\_embedded\jsii\jsii-runtime.js:13278:33)
    at InputOutput.read (d:\myfolder\.env\lib\site-packages\jsii\_embedded\jsii\jsii-runtime.js:13203:34)
    at KernelHost.run (d:\myfolder\.env\lib\site-packages\jsii\_embedded\jsii\jsii-runtime.js:13021:32)
    at Immediate.<anonymous> (d:\myfolder\.env\lib\site-packages\jsii\_embedded\jsii\jsii-runtime.js:13029:37)
    at processImmediate (internal/timers.js:461:21) {
  errno: -4095,
  syscall: 'read',
  code: 'EOF'
}
Resources:
  CDKMetadata:
    Type: AWS::CDK::Metadata
    Properties:
      Modules: aws-cdk=1.69.0,@aws-cdk/cloud-assembly-schema=1.69.0,@aws-cdk/core=1.69.0,@aws-cdk/cx-api=1.69.0,@aws-cdk/region-info=1.69.0,jsii-runtime=Python/3.7.4
    Metadata:
      aws:cdk:path: myfolder/CDKMetadata/Default
    Condition: CDKMetadataAvailable

环境

  - **CLI Version      :aws-cli/2.0.61 Python/3.7.7 Windows/10 exe/AMD64
  - **cdk Version:1.69.0 (build 2b474b9)
  - **Node.js Version:v14.15.0 
  - **OS               :Windows 10
  - **Language (Version):python 3.7.4  

我第一次开始使用 cdk 时看到了这个错误。但是,“cdk 合成器”显示了一个堆栈,所以我按下了。我什至能够“cdk 部署”简单的堆栈。最终,随着代码变得稍微复杂一些,jsii 错误阻止了堆栈的创建。我创建的代码会在我的机器上抛出错误,但不会在其他机器上出错。来自其他开发人员的工作 cdk 代码不会在我的机器上合成或部署堆栈。

到目前为止,我已经重新安装了 aws cli、node.js 和 cdk。 jsii 错误的来源或解决方法有什么想法吗?

【问题讨论】:

    标签: python node.js amazon-web-services aws-cdk


    【解决方案1】:

    对于 Windows 上的 AWS-CDK,AWS CDK 小组记录的 jsii 中至少存在一个错误。在 jsiiruntime 的深处(确切地说是第 13278 行),aws cdk 组有一条评论,其中包含指向 nodejs 错误报告的链接。我向 aws-cdk 报告了我的问题,这似乎是相关的。他们重现了这个错误并在 nodejs 上创建了一个错误报告。此错误报告具有指向其他错误报告的链接。 https://github.com/aws/aws-cdk/issues/11314

    但我仍然需要一个解决方法。经过反复试验,以下 2 种解决方法应该适用于 Windows 上的 AWS-CDK。

    解决方法 1: 将站点包中的 jsii 1.14.x 发行版替换为 1.12 或 1.13 发行版。将 1.14 换成 1.12 或 1.13 后,错误就会停止。获得发行版是一个技巧。你必须从没有升级或运行 pip 的人那里得到一个——我就是这么做的。

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

    【讨论】:

      【解决方案2】:

      TL;博士。扩展的变通方法。 (上面提到的 AWS-CDK 错误报告中提出了一个问题)。

      解决方法 1:替换 jsii 1.14.x 发行版

      Distro 文件夹: jsii 包含在 2 个文件夹中

      jsii 和 jsii-1.14.1.dist-info

      将这两个文件夹替换为旧安装中的文件夹 -- 1.12 或 1.13。

      发行版文件夹位于以下一个或两个位置:

      Distro 位置虚拟环境: jsii 发行版将在 site-packages 目录中找到。示例:

      .env\lib\python3.8\site-packages

      其中虚拟环境名称 = .env,python 版本 = 3.8

      发行版位置非虚拟:如果您尚未创建虚拟环境,这应该是位置。请注意,python 版本是路径的一部分。

      C:\Program Files\Python37\Lib\site-packages

      注意:由于某种原因,它们没有安装在这里。但是,这可能会改变,所以请记住这一点。 C:\Users\yourusername\AppData\Roaming\Python\Python37\site-packages

      解决方法 2:迁移到 linux

      在 Windows 中,安装 WSL 2。
      安装 Ubuntu 或您最喜欢的 linux 版本。
      安装蟒蛇 从 Windows 使用您最喜欢的 Windows IDE!我使用 Visual Studio 代码。如果我没记错的话需要安装扩展。

      警告:我在尝试运行 python、cdk 等文件在 Windows 系统上时遇到问题(例如:/mnt/d/project)。只需将 repo 复制到“纯”linux 文件系统(例如:~/project)。我在 linux 端安装了 git,并像单独的机器一样维护我的文件。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-10-04
        • 2023-01-31
        • 2021-02-18
        • 1970-01-01
        • 2018-10-10
        • 1970-01-01
        • 2020-12-24
        • 2020-08-12
        相关资源
        最近更新 更多