繁体   English   中英

TypeScript:AWS CDK 使用循环设置资源标签

[英]TypeScript: AWS CDK setting resource tags with loop

我遇到了循环依赖错误。 我即将创建一个 aws 标签,但我不想每次都添加 class 实例; 相反,我创建了一个 function,它遍历给定的 object 并将它们应用于标签。

迭代器:

 ....
 ResourceTagger = (this, id, props: cdk.CfnTag[]) => {
   props.forEach(tag => {
             cdk.Tags.of(this).add(tag.key, tag.value)
   })
 }

Function 拨打

....
ResourceTagger(this.vpc, id, [
 {
   key: "Stack",
   value: id,
 },
 {
   key: "Cidr IPv4",
   value: this.vpc.vpcCidrBlock,
 }

])

错误信息:

❌ Deployment failed: Error: Stack Deployments Failed: ValidationError: Circular dependency between resources:

这段代码是否有有效的解决方案,也许有一种不使用cdk.CfnTag[]接口的方法?

问题是您尝试在ResourceTagger中使用的this.vpc.vpcCidrBlock 默认情况下ec2.Vpc construct创建许多资源,除非明确定义,否则不会对其进行管理。

因此,在您的情况下,当您添加 Tag 一些对符号敏感的 aws 资源时,会抛出错误: ValidationError 如果您想添加vpcCidrBlock ,请尝试更改为字符串,这应该会有所帮助。

至于cdk.CfnTag[] :你可以尝试这样的事情:

ResourceTagger = (this, props: Record<string, string>) => {
Object.entries(props).forEach(([key, value]) => {
  cdk.Tags.of(this).add(key, value)
});

ResourceTagger(this, {
"Foo1": "Bar1",
"Foo2": "Bar2",
})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM