CDKTF 迭代 AWS 资源

huangapple go评论118阅读模式
英文:

CDKTF Iterator On AWS Resources

问题

我已经查看了CDKTF TerraformIterator的源代码以及AWS子网,尝试找到一种在设置for_each时迭代子网的方法。由于迭代器需要一个字符串列表,我不确定如何做到这一点,因为我没有看到从该类返回子网ID的任何内容。以下是一些Python伪代码:

  1. public_subnets = Subnet(self, 'default-public',
  2. for_each = public_subnet_iterator,
  3. availability_zone_id = public_subnet_iterator.get_string('availability_zone'),
  4. cidr_block = public_subnet_iterator.get_string('CIDR'),
  5. vpc_id = default_vpc.id,
  6. tags = Tags.commons_with_name('default-public')
  7. )
  8. route_table = RouteTable(self, 'public-subnets',
  9. vpc_id = default_vpc.id,
  10. RouteTableRoute(
  11. cidr_block = '0.0.0.0/0',
  12. gateway_id = default_gateway.id
  13. ),
  14. tags = Tags.commons_with_name('public-subnet-routing')
  15. )
  16. routable_subnets = TerraformIterator.fromList(public_subnets.?????)
  17. RouteTableAssociation(self, 'public-subnet-routes',
  18. for_each = routable_subnets,
  19. etc...
  20. )

如何迭代子网以生成这些路由表关联?

英文:

I've gone through the source code of CDKTF TerraformIterator, and the AWS Subnets to try and find a way to iterate over Subnet when setting for_each. I'm not sure how to do this as the iterator requires a list of strings and I don't see anything that would return subnet ids from that class. Here is some Python pseudo code:

  1. public_subnets = Subnet(self, 'default-public',
  2. for_each = public_subnet_iterator,
  3. availability_zone_id = public_subnet_iterator.get_string('availability_zone'),
  4. cidr_block = public_subnet_iterator.get_string('CIDR'),
  5. vpc_id = default_vpc.id
  6. tags = Tags.commons_with_name('default-public')
  7. )
  8. route_table = RouteTable(self, 'public-subnets',
  9. vpc_id = default_vpc.id,
  10. RouteTableRoute(
  11. cidr_block = '0.0.0.0/0',
  12. gateway_id = default_gateway.id
  13. ),
  14. tags = Tags.commons_with_name('public-subnet-routing')
  15. )
  16. routable_subnets = TerraformIterator.fromList(public_subnets.?????)
  17. RouteTableAssociation(self, 'public-subnet-routes',
  18. for_each = routable_subnets,
  19. etc...
  20. )

How can I iterate over the subnets to generate these route table associations?

答案1

得分: 1

这在CDKTF目前不受支持,但在即将推出的版本0.16中可能会发生改变。请参阅 https://github.com/hashicorp/terraform-cdk/issues/2024https://github.com/hashicorp/terraform-cdk/pull/2739 以获取更多上下文信息。在它受支持之前,您需要使用 逃生舱 来使其工作,或者如果 publicSubnetIterator 使用静态列表,您还可以使用 for 循环。

英文:

This is currently not supported in CDKTF, but will likely change in the upcoming version 0.16. See https://github.com/hashicorp/terraform-cdk/issues/2024 and https://github.com/hashicorp/terraform-cdk/pull/2739 for more context. Until it's supported you would need to use an escape hatch to make it work or if the publicSubnetIterator is using a static list you could also use a for loop.

huangapple
  • 本文由 发表于 2023年3月12日 06:30:04
  • 转载请务必保留本文链接:https://go.coder-hub.com/75709963.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定