上下文,我有一个带有两个堆栈的 CDK 应用程序,使用以下设置:
Stack_A:
StateMachine_A
Lambda_A
S3Bucket_A
IAMRole_A
Stack_B:
StateMachine_B
SageMakerTrainJob_B
IAMRole_B
Run Code Online (Sandbox Code Playgroud)
StateMachine_A 使用执行角色 IAMRole_A 运行 Lambda_A。StateMachine_A 中的一个单独步骤将数据写入 S3Bucket_A。StateMachine_B 使用执行角色 IAMRole_B 运行 SageMakerTrainJob_B。Lambda_A 的目的是开始执行 StateMachine_B,其 SageMakerTrainJob_B 需要从 S3Bucket_A 读取。因此,我们必须配置以下权限:
我们尝试通过在 Stack_B 中创建一个对 Stack_A 的直接依赖,在 Stack_B 的定义中使用对 IAMRole_A 和 S3Bucket_A 的引用来在代码中授予所需的权限,从而在 CDK 中对此进行建模。但是,这产生了以下错误:
Error: 'Stack_B' depends on 'Stack_A' (dependency added using stack.addDependency()). Adding this dependency (Stack_A -> Stack_B/IAMRole_B/Resource.Arn) would create a cyclic reference.
同样,尝试对另一个方向的依赖项进行建模也会出现相同的错误:
Error: 'Stack_A' depends on 'Stack_B' (dependency added …