my solution looks like this, very similar to your suggestion - I created a slice outside of the subnet creation loop
var privateSubnets pulumi.StringArray
for i, zone := range zones.Names {
privateSubnet, err := ec2.NewSubnet(ctx, fmt.Sprintf("eks-subnet-private-%d", i), &ec2.SubnetArgs{
VpcId: vpc.ID(),
CidrBlock: pulumi.String(fmt.Sprintf("%s.1%d.0/24", netWork, i)),
AvailabilityZone: pulumi.String(zone),
MapPublicIpOnLaunch: pulumi.Bool(true),
Tags: GetTags(ctx, fmt.Sprintf("eks-%s-subnet-private-%d", environment, i)),
})
if err != nil {
return err
}
privateSubnets = append(privateSubnets, privateSubnet.ID().ToStringOutput())
...
Then I can pass this slice to my EKS creation Statement
eksCluster, err := eks.NewCluster(ctx, "eks-cluster", &eks.ClusterArgs{
RoleArn: pulumi.StringInput(eksRole.Arn),
VpcConfig: &eks.ClusterVpcConfigArgs{
PublicAccessCidrs: pulumi.StringArray{
pulumi.String("0.0.0.0/0"),
},
SecurityGroupIds: pulumi.StringArray{
clusterSg.ID().ToStringOutput(),
},
SubnetIds: privateSubnets, <<<
},
})
thank you once again!