小编use*_*256的帖子

解决 AWS CDK CloudFormation 堆栈之间的循环依赖关系

上下文,我有一个带有两个堆栈的 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 读取。因此,我们必须配置以下权限:

  • IAMRole_A 需要 StateMachine_B 的 startExecution 权限。
  • IAMRole_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 …

amazon-web-services aws-cloudformation aws-cdk

8
推荐指数
1
解决办法
5601
查看次数