dazzling-secretary-20293
06/20/2024, 3:23 PMvpc = aws.ec2.Vpc(assign_generated_ipv6_cidr_block=True,...)
I'm looping over AZs
for idx, zone in enumerate(availability_zones.names):
aws.ec2.Subnet(...,
ipv6_cidr_block = vpc.ipv6_cidr_block.apply(lambda ipv6_block: assign_ipv6_cidr_block(idx,ipv6_block)))
using a utility function:
def assign_ipv6_cidr_block(subnet_idx, vpc_ipv6_cidr):
vpc_ipv6_network = ipaddress.IPv6Network(vpc_ipv6_cidr)
subnet_ipv6_cidr = list(vpc_ipv6_network.subnets(new_prefix=64))[subnet_idx]
return str(subnet_ipv6_cidr)
However, I get InvalidSubnet.Conflict, probably because this async stuff causes last value of idx to be used in the call to Subnet(... assign_ipv6_cidr_block(idx)).
So, how to fix this code using seperate values of idx (as in a sync world) - or even better use some pulumi built-in functions that just works. Thanks for your helpdry-keyboard-94795
06/20/2024, 3:46 PMdry-keyboard-94795
06/20/2024, 3:46 PMl = ["a", "b", "c"]
funcs = []
for idx, item in enumerate(l):
funcs.append(lambda: print(idx, item))
for f in funcs:
f()
# prints 2 c 2 c 2 c
dry-keyboard-94795
06/20/2024, 3:48 PMOutput.all(idx, vpc.ipv6_cidr_block).apply(assign_ipv6_cidr_block)
dry-keyboard-94795
06/20/2024, 3:50 PMvpc.ipv6_cidr_block.apply(lambda ipv6_block, idx=idx: assign_ipv6_cidr_block(idx,ipv6_block)))
dazzling-secretary-20293
06/21/2024, 8:01 AMdef assign_ipv6_cidr_block(arg):
subnet_idx, vpc_ipv6_cidr = arg
...
Again, thank you so much!dry-keyboard-94795
06/21/2024, 11:05 AMdry-keyboard-94795
06/21/2024, 11:06 AM