我想知道为什么亚马逊网络服务模板中的条件是software.amazon.awscdk.core.Construct的实例,而不是CfnCondition的实例。
Conditions:
ShouldCreateInfra: !Equals [!Ref CreateInfra, true]
ShouldCreateDB: !Equals [!Ref CreateDB, true]给定java代码:
CfnInclude template;
List<IConstruct> lic = template.getNode().getChildren();
for (IConstruct IC : lic) {
LOG.debug("TemplateToTreeMap class name " + IC.getClass().getTypeName());
if (IC instanceof CfnCondition) {
LOG.debug("IC is instanceof of CfnCondition");
}else if (IC instanceof CfnParameter) {
LOG.debug("IC is instanceof of CfnParameter");
}
}当构造是模板条件时,它是software.amazon.awscdk.core.Construct的实例,而不是CfnCondition,这与构造是CfnParameter时的情况不同,后者是CfnParameter的实例。
CfnCondition和CfnParameter都扩展了CfnElement。
为什么会发生这种情况,那么我如何识别条件呢?
另外,我也尝试过以下方法:
if (IC.toString().contains("$Conditions")) {
LOG.debug(IC.toString());
Construct C = (Construct) IC;
LOG.debug(toJsonString(C.getNode()));
LOG.debug(stack.resolve(C).toString());它给出如下输出
AwsCdkStack/Template/$Conditions
${Token[TOKEN.646]}但随后会导致错误
software.amazon.jsii.JsiiException:
Unable to resolve object tree with circular reference. Path: /node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node
Error: Unable to resolve object tree with circular reference. Path: /node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node/host/node
at resolve (/tmp/jsii-kernel-w8xgCb/node_modules/@aws-cdk/core/lib/private/resolve.js:35:15)
at Object.resolve (/tmp/jsii-kernel-w8xgCb/node_modules/@aws-cdk/core/lib/private/resolve.js:29:33)
at resolve (/tmp/jsii-kernel-w8xgCb/node_modules/@aws-cdk/core/lib/private/resolve.js:118:43)
at Object.resolve (/tmp/jsii-kernel-w8xgCb/node_modules/@aws-cdk/core/lib/private/resolve.js:29:33)
at resolve (/tmp/jsii-kernel-w8xgCb/node_modules/@aws-cdk/core/lib/private/resolve.js:118:43)
at Object.resolve (/tmp/jsii-kernel-w8xgCb/node_modules/@aws-cdk/core/lib/private/resolve.js:29:33)
at resolve (/tmp/jsii-kernel-w8xgCb/node_modules/@aws-cdk/core/lib/private/resolve.js:118:43)
at Object.resolve (/tmp/jsii-kernel-w8xgCb/node_modules/@aws-cdk/core/lib/private/resolve.js:29:33)
at resolve (/tmp/jsii-kernel-w8xgCb/node_modules/@aws-cdk/core/lib/private/resolve.js:118:43)
at Object.resolve (/tmp/jsii-kernel-w8xgCb/node_modules/@aws-cdk/core/lib/private/resolve.js:29:33)
at com.iriusrisk.cfimport.BasicApplicationTests.Example1_1(BasicApplicationTests.java:29)发布于 2021-02-10 17:09:23
要访问CfnCondition,请使用以下命令
CfnCondition condition = this.template.getCondition(condition_name);https://stackoverflow.com/questions/66091447
复制相似问题