我似乎无法在一个方面中使用CDK secretsmanager.Secret secretName,下面是我如何定义这个秘密的方法:
new secretsmanager.Secret(this, 'MySecret', {
secretName: 'my-secret-name'
})但是,在方面中,当我尝试访问secretName时:
export default class NameCheckAspect implements cdk.IAspect {
visit(node: IConstruct): void {
if (node instanceof secretsmanager.Secret) {
console.log(node.secretName)
}
}
}但是,我希望它记录“我的秘密名称”:'${TokenFn::Join.248}‘。因此,我尝试使用构造的堆栈解析令牌:
export default class NameCheckAspect implements cdk.IAspect {
visit(node: IConstruct): void {
if (node instanceof secretsmanager.Secret) {
console.log(cdk.Stack.of(node).resolve(node.secretName))
}
}
}但是,这将解析为一个CloudFormation Fn::Join:
{
'Fn::Join': [
'-',
[ [Object], [Object], [Object], [Object], [Object], [Object] ]
]
}为什么它要这样做,而不只是把我设置的字符串secretName还给我?有没有人知道,如果有一个明智的方法,以使secretName回到,而不需要采取措施,以逃避舱口?
发布于 2022-07-28 13:10:47
您可以尝试通过cfnProperties获得名称
const secret = node.defaultChild as secretsmanager.CfnSecret;
const secretName = secret.cfnProperties.SecretName as string | undefined;它应该是一个解析的名字。
https://stackoverflow.com/questions/73119401
复制相似问题