python - 尝试使用 python AWS CDK 创建空堆栈时返回 JSII 错误

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

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 错误源自何处或如何修复它们吗?

最佳答案

对于 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

关于python - 尝试使用 python AWS CDK 创建空堆栈时返回 JSII 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64694569/

相关文章:

node.js - 使用 Where 和 Include 失败的 Sequelize 查询

ubuntu - 无法引导 ec2 ubuntu 实例

python - 具有固定 Z 限制的 Matplotlib 动画 3D 条形图

python - 在 Python 的 matplotlib 中使用时间序列的百分位数设置颜色渐变

python - 如何优化编辑距离代码?

javascript - 从 promise 链内部解决可以安全吗?

mysql - 如何使用 HAPI JS 访问查询字符串参数以对 API 执行搜索/过滤?

python - 使用 AWS Secrets Manager 连接到 Postgres 数据库

amazon-web-services - 如何每 10 分钟在 00、10、20、30、40、50 运行一次无服务器 lambda 函数

python - 计算selenium python中找到的元素数量