gpt4 book ai didi

python - AWS CDK 解析错误 : Unable to resolve object tree with circular reference

转载 作者:行者123 更新时间:2023-12-05 06:12:12 27 4
gpt4 key购买 nike

我有一个堆栈 (etl_stack_2.py),用于初始化 Partner 构造和 OrderWorkflow 构造。因此,partner 和 OrderWorkFlow 在树中是 sibling 。合作伙伴有一个由 OrderWorkFlow 使用的作业属性。当我运行 cdk ls 时,我收到循环引用错误:

$ cdk ls
jsii.errors.JavaScriptError:
Error: Resolution error: Resolution error: Unable to resolve object tree with circular reference. Path: /Resources/${Token[data-lake-etl-infra-dev.order_workflow-dev.order_workflow_start_trigger-dev.LogicalID.100]}/Properties/actions/0/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.
Object creation stack:
at new Intrinsic (/private/var/folders/gd/gpl89dgn5f7c8mzqx3dc8hzh0000gr/T/jsii-kernel-hDzf8X/node_modules/@aws-cdk/core/lib/private/intrinsic.js:21:44)
at new PostResolveToken (/private/var/folders/gd/gpl89dgn5f7c8mzqx3dc8hzh0000gr/T/jsii-kernel-hDzf8X/node_modules/@aws-cdk/core/lib/util.js:73:9)
at Object.ignoreEmpty (/private/var/folders/gd/gpl89dgn5f7c8mzqx3dc8hzh0000gr/T/jsii-kernel-hDzf8X/node_modules/@aws-cdk/core/lib/util.js:33:12)
at CfnTrigger._toCloudFormation (/private/var/folders/gd/gpl89dgn5f7c8mzqx3dc8hzh0000gr/T/jsii-kernel-hDzf8X/node_modules/@aws-cdk/core/lib/cfn-resource.js:237:44)
at /private/var/folders/gd/gpl89dgn5f7c8mzqx3dc8hzh0000gr/T/jsii-kernel-hDzf8X/node_modules/@aws-cdk/core/lib/private/refs.js:100:74
at Object.findTokens (/private/var/folders/gd/gpl89dgn5f7c8mzqx3dc8hzh0000gr/T/jsii-kernel-hDzf8X/node_modules/@aws-cdk/core/lib/private/resolve.js:128:13)
at findAllReferences (/private/var/folders/gd/gpl89dgn5f7c8mzqx3dc8hzh0000gr/T/jsii-kernel-hDzf8X/node_modules/@aws-cdk/core/lib/private/refs.js:100:38)
at Object.resolveReferences (/private/var/folders/gd/gpl89dgn5f7c8mzqx3dc8hzh0000gr/T/jsii-kernel-hDzf8X/node_modules/@aws-cdk/core/lib/private/refs.js:23:19)
at Object.prepareApp (/private/var/folders/gd/gpl89dgn5f7c8mzqx3dc8hzh0000gr/T/jsii-kernel-hDzf8X/node_modules/@aws-cdk/core/lib/private/prepare-app.js:34:16)
at Object.synthesize (/private/var/folders/gd/gpl89dgn5f7c8mzqx3dc8hzh0000gr/T/jsii-kernel-hDzf8X/node_modules/@aws-cdk/core/lib/private/synthesis.js:18:19)
at App.synth (/private/var/folders/gd/gpl89dgn5f7c8mzqx3dc8hzh0000gr/T/jsii-kernel-hDzf8X/node_modules/@aws-cdk/core/lib/stage.js:78:41)
at /Users/honarmand/xyz/xyz-data-lake/data-lake-etl-infra/venv/lib/python3.7/site-packages/jsii/_embedded/jsii/jsii-runtime.js:7756:51
at Kernel._wrapSandboxCode (/Users/honarmand/xyz/xyz-data-lake/data-lake-etl-infra/venv/lib/python3.7/site-packages/jsii/_embedded/jsii/jsii-runtime.js:8405:20)
at /Users/honarmand/xyz/xyz-data-lake/data-lake-etl-infra/venv/lib/python3.7/site-packages/jsii/_embedded/jsii/jsii-runtime.js:7756:25
at Kernel._ensureSync (/Users/honarmand/xyz/xyz-data-lake/data-lake-etl-infra/venv/lib/python3.7/site-packages/jsii/_embedded/jsii/jsii-runtime.js:8381:20)
at Kernel.invoke (/Users/honarmand/xyz/xyz-data-lake/data-lake-etl-infra/venv/lib/python3.7/site-packages/jsii/_embedded/jsii/jsii-runtime.js:7755:26)
at KernelHost.processRequest (/Users/honarmand/xyz/xyz-data-lake/data-lake-etl-infra/venv/lib/python3.7/site-packages/jsii/_embedded/jsii/jsii-runtime.js:7456:28)
at KernelHost.run (/Users/honarmand/xyz/xyz-data-lake/data-lake-etl-infra/venv/lib/python3.7/site-packages/jsii/_embedded/jsii/jsii-runtime.js:7394:14)
at Immediate._onImmediate (/Users/honarmand/xyz/xyz-data-lake/data-lake-etl-infra/venv/lib/python3.7/site-packages/jsii/_embedded/jsii/jsii-runtime.js:7397:37)
at processImmediate (internal/timers.js:456:21).
Object creation stack:
at new Intrinsic (/private/var/folders/gd/gpl89dgn5f7c8mzqx3dc8hzh0000gr/T/jsii-kernel-hDzf8X/node_modules/@aws-cdk/core/lib/private/intrinsic.js:21:44)
at new PostResolveToken (/private/var/folders/gd/gpl89dgn5f7c8mzqx3dc8hzh0000gr/T/jsii-kernel-hDzf8X/node_modules/@aws-cdk/core/lib/util.js:73:9)
at CfnTrigger._toCloudFormation (/private/var/folders/gd/gpl89dgn5f7c8mzqx3dc8hzh0000gr/T/jsii-kernel-hDzf8X/node_modules/@aws-cdk/core/lib/cfn-resource.js:235:39)
at /private/var/folders/gd/gpl89dgn5f7c8mzqx3dc8hzh0000gr/T/jsii-kernel-hDzf8X/node_modules/@aws-cdk/core/lib/private/refs.js:100:74
at Object.findTokens (/private/var/folders/gd/gpl89dgn5f7c8mzqx3dc8hzh0000gr/T/jsii-kernel-hDzf8X/node_modules/@aws-cdk/core/lib/private/resolve.js:128:13)
at findAllReferences (/private/var/folders/gd/gpl89dgn5f7c8mzqx3dc8hzh0000gr/T/jsii-kernel-hDzf8X/node_modules/@aws-cdk/core/lib/private/refs.js:100:38)
at Object.resolveReferences (/private/var/folders/gd/gpl89dgn5f7c8mzqx3dc8hzh0000gr/T/jsii-kernel-hDzf8X/node_modules/@aws-cdk/core/lib/private/refs.js:23:19)
at Object.prepareApp (/private/var/folders/gd/gpl89dgn5f7c8mzqx3dc8hzh0000gr/T/jsii-kernel-hDzf8X/node_modules/@aws-cdk/core/lib/private/prepare-app.js:34:16)
at Object.synthesize (/private/var/folders/gd/gpl89dgn5f7c8mzqx3dc8hzh0000gr/T/jsii-kernel-hDzf8X/node_modules/@aws-cdk/core/lib/private/synthesis.js:18:19)
at App.synth (/private/var/folders/gd/gpl89dgn5f7c8mzqx3dc8hzh0000gr/T/jsii-kernel-hDzf8X/node_modules/@aws-cdk/core/lib/stage.js:78:41)
at /Users/honarmand/xyz/xyz-data-lake/data-lake-etl-infra/venv/lib/python3.7/site-packages/jsii/_embedded/jsii/jsii-runtime.js:7756:51
at Kernel._wrapSandboxCode (/Users/honarmand/xyz/xyz-data-lake/data-lake-etl-infra/venv/lib/python3.7/site-packages/jsii/_embedded/jsii/jsii-runtime.js:8405:20)
at /Users/honarmand/xyz/xyz-data-lake/data-lake-etl-infra/venv/lib/python3.7/site-packages/jsii/_embedded/jsii/jsii-runtime.js:7756:25
at Kernel._ensureSync (/Users/honarmand/xyz/xyz-data-lake/data-lake-etl-infra/venv/lib/python3.7/site-packages/jsii/_embedded/jsii/jsii-runtime.js:8381:20)
at Kernel.invoke (/Users/honarmand/xyz/xyz-data-lake/data-lake-etl-infra/venv/lib/python3.7/site-packages/jsii/_embedded/jsii/jsii-runtime.js:7755:26)
at KernelHost.processRequest (/Users/honarmand/xyz/xyz-data-lake/data-lake-etl-infra/venv/lib/python3.7/site-packages/jsii/_embedded/jsii/jsii-runtime.js:7456:28)
at KernelHost.run (/Users/honarmand/xyz/xyz-data-lake/data-lake-etl-infra/venv/lib/python3.7/site-packages/jsii/_embedded/jsii/jsii-runtime.js:7394:14)
at Immediate._onImmediate (/Users/honarmand/xyz/xyz-data-lake/data-lake-etl-infra/venv/lib/python3.7/site-packages/jsii/_embedded/jsii/jsii-runtime.js:7397:37)
at processImmediate (internal/timers.js:456:21)
at resolve (/private/var/folders/gd/gpl89dgn5f7c8mzqx3dc8hzh0000gr/T/jsii-kernel-hDzf8X/node_modules/@aws-cdk/core/lib/private/resolve.js:35:15)
at Object.resolve (/private/var/folders/gd/gpl89dgn5f7c8mzqx3dc8hzh0000gr/T/jsii-kernel-hDzf8X/node_modules/@aws-cdk/core/lib/private/resolve.js:29:33)
at resolve (/private/var/folders/gd/gpl89dgn5f7c8mzqx3dc8hzh0000gr/T/jsii-kernel-hDzf8X/node_modules/@aws-cdk/core/lib/private/resolve.js:113:43)
at Object.resolve (/private/var/folders/gd/gpl89dgn5f7c8mzqx3dc8hzh0000gr/T/jsii-kernel-hDzf8X/node_modules/@aws-cdk/core/lib/private/resolve.js:29:33)
at resolve (/private/var/folders/gd/gpl89dgn5f7c8mzqx3dc8hzh0000gr/T/jsii-kernel-hDzf8X/node_modules/@aws-cdk/core/lib/private/resolve.js:113:43)
at Object.resolve (/private/var/folders/gd/gpl89dgn5f7c8mzqx3dc8hzh0000gr/T/jsii-kernel-hDzf8X/node_modules/@aws-cdk/core/lib/private/resolve.js:29:33)
at resolve (/private/var/folders/gd/gpl89dgn5f7c8mzqx3dc8hzh0000gr/T/jsii-kernel-hDzf8X/node_modules/@aws-cdk/core/lib/private/resolve.js:113:43)
at Object.resolve (/private/var/folders/gd/gpl89dgn5f7c8mzqx3dc8hzh0000gr/T/jsii-kernel-hDzf8X/node_modules/@aws-cdk/core/lib/private/resolve.js:29:33)
at resolve (/private/var/folders/gd/gpl89dgn5f7c8mzqx3dc8hzh0000gr/T/jsii-kernel-hDzf8X/node_modules/@aws-cdk/core/lib/private/resolve.js:113:43)
at Kernel._wrapSandboxCode (/Users/honarmand/xyz/xyz-data-lake/data-lake-etl-infra/venv/lib/python3.7/site-packages/jsii/_embedded/jsii/jsii-runtime.js:8408:19)
at /Users/honarmand/xyz/xyz-data-lake/data-lake-etl-infra/venv/lib/python3.7/site-packages/jsii/_embedded/jsii/jsii-runtime.js:7756:25
at Kernel._ensureSync (/Users/honarmand/xyz/xyz-data-lake/data-lake-etl-infra/venv/lib/python3.7/site-packages/jsii/_embedded/jsii/jsii-runtime.js:8381:20)
at Kernel.invoke (/Users/honarmand/xyz/xyz-data-lake/data-lake-etl-infra/venv/lib/python3.7/site-packages/jsii/_embedded/jsii/jsii-runtime.js:7755:26)
at KernelHost.processRequest (/Users/honarmand/xyz/xyz-data-lake/data-lake-etl-infra/venv/lib/python3.7/site-packages/jsii/_embedded/jsii/jsii-runtime.js:7456:28)
at KernelHost.run (/Users/honarmand/xyz/xyz-data-lake/data-lake-etl-infra/venv/lib/python3.7/site-packages/jsii/_embedded/jsii/jsii-runtime.js:7394:14)
at Immediate._onImmediate (/Users/honarmand/xyz/xyz-data-lake/data-lake-etl-infra/venv/lib/python3.7/site-packages/jsii/_embedded/jsii/jsii-runtime.js:7397:37)
at processImmediate (internal/timers.js:456:21)

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File "app.py", line 13, in <module>
app.synth()
File "/Users/honarmand/xyz/xyz-data-lake/data-lake-etl-infra/venv/lib/python3.7/site-packages/aws_cdk/core/__init__.py", line 11531, in synth
return jsii.invoke(self, "synth", [options])
File "/Users/honarmand/xyz/xyz-data-lake/data-lake-etl-infra/venv/lib/python3.7/site-packages/jsii/_kernel/__init__.py", line 122, in wrapped
return _recursize_dereference(kernel, fn(kernel, *args, **kwargs))
File "/Users/honarmand/xyz/xyz-data-lake/data-lake-etl-infra/venv/lib/python3.7/site-packages/jsii/_kernel/__init__.py", line 320, in invoke
args=_make_reference_for_native(self, args),
File "/Users/honarmand/xyz/xyz-data-lake/data-lake-etl-infra/venv/lib/python3.7/site-packages/jsii/_kernel/providers/process.py", line 351, in invoke
return self._process.send(request, InvokeResponse)
File "/Users/honarmand/xyz/xyz-data-lake/data-lake-etl-infra/venv/lib/python3.7/site-packages/jsii/_kernel/providers/process.py", line 321, in send
raise JSIIError(resp.error) from JavaScriptError(resp.stack)
jsii.errors.JSIIError: Resolution error: Resolution error: Unable to resolve object tree with circular reference. Path: /Resources/${Token[data-lake-etl-infra-dev.order_workflow-dev.order_workflow_start_trigger-dev.LogicalID.100]}/Properties/actions/0/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.
Object creation stack:
at new Intrinsic (/private/var/folders/gd/gpl89dgn5f7c8mzqx3dc8hzh0000gr/T/jsii-kernel-hDzf8X/node_modules/@aws-cdk/core/lib/private/intrinsic.js:21:44)
at new PostResolveToken (/private/var/folders/gd/gpl89dgn5f7c8mzqx3dc8hzh0000gr/T/jsii-kernel-hDzf8X/node_modules/@aws-cdk/core/lib/util.js:73:9)
at Object.ignoreEmpty (/private/var/folders/gd/gpl89dgn5f7c8mzqx3dc8hzh0000gr/T/jsii-kernel-hDzf8X/node_modules/@aws-cdk/core/lib/util.js:33:12)
at CfnTrigger._toCloudFormation (/private/var/folders/gd/gpl89dgn5f7c8mzqx3dc8hzh0000gr/T/jsii-kernel-hDzf8X/node_modules/@aws-cdk/core/lib/cfn-resource.js:237:44)
at /private/var/folders/gd/gpl89dgn5f7c8mzqx3dc8hzh0000gr/T/jsii-kernel-hDzf8X/node_modules/@aws-cdk/core/lib/private/refs.js:100:74
at Object.findTokens (/private/var/folders/gd/gpl89dgn5f7c8mzqx3dc8hzh0000gr/T/jsii-kernel-hDzf8X/node_modules/@aws-cdk/core/lib/private/resolve.js:128:13)
at findAllReferences (/private/var/folders/gd/gpl89dgn5f7c8mzqx3dc8hzh0000gr/T/jsii-kernel-hDzf8X/node_modules/@aws-cdk/core/lib/private/refs.js:100:38)
at Object.resolveReferences (/private/var/folders/gd/gpl89dgn5f7c8mzqx3dc8hzh0000gr/T/jsii-kernel-hDzf8X/node_modules/@aws-cdk/core/lib/private/refs.js:23:19)
at Object.prepareApp (/private/var/folders/gd/gpl89dgn5f7c8mzqx3dc8hzh0000gr/T/jsii-kernel-hDzf8X/node_modules/@aws-cdk/core/lib/private/prepare-app.js:34:16)
at Object.synthesize (/private/var/folders/gd/gpl89dgn5f7c8mzqx3dc8hzh0000gr/T/jsii-kernel-hDzf8X/node_modules/@aws-cdk/core/lib/private/synthesis.js:18:19)
at App.synth (/private/var/folders/gd/gpl89dgn5f7c8mzqx3dc8hzh0000gr/T/jsii-kernel-hDzf8X/node_modules/@aws-cdk/core/lib/stage.js:78:41)
at /Users/honarmand/xyz/xyz-data-lake/data-lake-etl-infra/venv/lib/python3.7/site-packages/jsii/_embedded/jsii/jsii-runtime.js:7756:51
at Kernel._wrapSandboxCode (/Users/honarmand/xyz/xyz-data-lake/data-lake-etl-infra/venv/lib/python3.7/site-packages/jsii/_embedded/jsii/jsii-runtime.js:8405:20)
at /Users/honarmand/xyz/xyz-data-lake/data-lake-etl-infra/venv/lib/python3.7/site-packages/jsii/_embedded/jsii/jsii-runtime.js:7756:25
at Kernel._ensureSync (/Users/honarmand/xyz/xyz-data-lake/data-lake-etl-infra/venv/lib/python3.7/site-packages/jsii/_embedded/jsii/jsii-runtime.js:8381:20)
at Kernel.invoke (/Users/honarmand/xyz/xyz-data-lake/data-lake-etl-infra/venv/lib/python3.7/site-packages/jsii/_embedded/jsii/jsii-runtime.js:7755:26)
at KernelHost.processRequest (/Users/

我不确定为什么会发生这种情况或如何解决它。我将不胜感激任何见解。这是我的代码:

应用程序.py

from aws_cdk import core
from etl_stack_2 import EtlStack

app = core.App()
environments = ["dev", "staging", "pre-production", "production"]
for env in environments:
EtlStack(app, id=f"data-lake-etl-infra-{env}", env=env)

app.synth()

etl_stack_2.py

from aws_cdk import (
aws_s3 as s3,
core
)
import yaml
from pathlib import Path
import os

from partner import Partner
from workflows.order_workflow import OrderWorkflow

class EtlStack(core.Stack):
def __init__(self, scope: core.Construct, id: str, env: str,**kwargs) -> None:
super().__init__(scope, id=id, **kwargs)

assets_bucket = s3.Bucket.from_bucket_name(self, 'assets_bucket', "bucket_name")

current_dir = os.path.dirname(os.path.abspath(__file__))
scripts_root = str(Path(current_dir, "../..", "scripts").resolve())
job_role = f"role-service-glue-{env}"

partner = Partner(self,
"id-123",
env=env,
assets_bucket=assets_bucket,
scripts_root=scripts_root,
job_role=job_role
)

OrderWorkflow(
scope=self,
id=f"order_workflow-{env}",
env=env,
partner_job=partner.job # this is where I pass the job property to OrderWorkflow
)

order_workflow.py

from aws_cdk import (
aws_glue as glue,
core
)

class OrderWorkflow(core.Construct):
def __init__(self, scope: core.Construct, id: str, *,
env: str,
partner_job: glue.CfnJob,
**kwargs):
super().__init__(scope, id, **kwargs)

order_workflow = glue.CfnWorkflow(
scope=self,
id=f"glue-order_workflow-{env}"
)

start_trigger = glue.CfnTrigger(
scope=self,
id=f"order_workflow_start_trigger-{env}",
actions=[partner_job], # If I pass [] to actions instead it works fine
type="SCHEDULED",
description="this schedules trigger starts the order workflow",
name="Order Workflow start",
schedule="cron(15 * * * ? *)",
workflow_name=order_workflow.name
)

最佳答案

在 OrderWorkflow 中,我将 [glue.CfnTrigger.ActionProperty(job_name=partner_job.ref)] 传递给操作而不是 [partner_job],这解决了问题。所以 start_trigger 看起来像:

start_trigger = glue.CfnTrigger(
scope=self,
id=f"order_workflow_start_trigger-{env}",
actions=[glue.CfnTrigger.ActionProperty(job_name=partner_job.ref)],
type="SCHEDULED",
description="this schedules trigger starts the order workflow",
name="Order Workflow start",
schedule="cron(15 * * * ? *)",
workflow_name=order_workflow.name
)

如果您查看 CfnTrigger 上的 CDK 文档,就会发现 actions 属性需要是 ActionProperty:https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-glue.CfnTrigger.html#construct-props

关于python - AWS CDK 解析错误 : Unable to resolve object tree with circular reference,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63693262/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com