This article提供了关于覆盖资源的逻辑id的说明,我已经成功地使用了这个技术几个月了:
class MyConstruct(scope: Construct, id: String) extends Construct(scope, id) {
val barFunc =
lambda
.Function
.Builder
.create(this, "bar")
.handler("blah.blah")
.code(lambda.Code.fromInline("blah"))
.runtime(lambda.Runtime.PYTHON_3_10)
.build
barFunc
.getNode
.getDefaultChild
.asInstanceOf[CfnFunction]
.overrideLogicalId("mylogicalid")
}
class MyStack(scope: Construct, id: String, stackProps: StackProps) extends Stack(scope, id, stackProps) {
val barConstruct = new MyConstruct(this, "bar")
}
字符串
突然,这段代码(没有更改)导致cdk在执行synth
时失败:
java.lang.ClassCastException:不能将类软件.构造.构造强制转换为类软件.amazon.awscdk.services.lambda.CfnFunction
我认为CDK做出了突破性的改变。
如何手动更改cdk资源的逻辑ID而不导致强制转换异常?
我试过恢复cdk和aws-cdk-lib
的版本,但没有成功。
我目前的相依性集合是:
的数据
这是基于以下依赖关系:
lazy val awsCdkLib = "software.amazon.awscdk" % "aws-cdk-lib" % "2.89.0"
lazy val awsConstructs = "software.constructs" % "constructs" % "10.2.69"
型
存在与InterfaceVpcEndpoint
相关的a similar question,该问题已通过使用单独的方法创建端点来解决。在本例中,我尝试更新一个可以成功示例化但不能修改的现有Function
的逻辑id。
1条答案
按热度按时间oalqel3c1#
我今天遇到了类似的问题,发现了这个:https://github.com/aws/jsii/issues/4202
为jsii添加一个排除项,然后像下面这样显式地声明一个降级的版本,为我解决了这个问题。
字符串