簡體   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