Как отключить создание выходов и импорта кросс-стека при совместном использовании токенов между стеками

Я работаю над двумя отдельными стеками (назовите их A и B) в одном проекте CDK. Я генерирую политику в стеке B, содержащую ссылки на ресурсы для ARN ресурсов в стеке A. CDK выполняет эту умную магию, которая создает CfnOutputs для каждого из общих arns, а затем использует Fn :: ImportValue в стеке B.

Пример кода TypeScript в стеке B:

const role = stackA.role;
stackB.permissionsBoundary.addStatements(
        new iam.PolicyStatement({
          resources: [ role.roleArn ],
          actions: [
            'sts:AssumeRole'
          ]
        })
      );

Я не хочу этого делать. Когда потом нужно выбросить стопки, это вызывает всякое горе. Я просто хочу использовать буквальные строки в стеке B, которые извлекаются из токенов, сгенерированных в стеке A.

Скажите, пожалуйста, есть способ отключить эту функцию. Это очень и очень дырявая абстракция, и она должна быть необязательной.

Пример сгенерированного шаблона в стеке A:

"ExportsOutputFnGetAttfoo": {
      "Value": {
        "Fn::GetAtt": [
          "bar",
          "Arn"
        ]
      },
      "Export": {
        "Name": "stackA:ExportsOutputFnGetAttfoo"
      }
    }

Пример сгенерированного шаблона в стеке B:

"Resource": [
  {
    "Fn::ImportValue": "stackA:ExportsOutputFnGetAttfoo"
  }

person Gabriel Bastien    schedule 19.01.2021    source источник


Ответы (1)


Я не верю, что можно использовать

буквальные строки в стеке B, извлеченные из токенов, сгенерированных в стеке A.

поскольку ARN неизвестны во время создания шаблона CloudFormation, поскольку вы создаете оба стека одновременно.

Совместное использование ресурсов между стеком через выходы CF - это обычный метод: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/walkthrough-crossstackref.html

person Milan Gatyas    schedule 20.01.2021