Я работаю над двумя отдельными стеками (назовите их 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"
}