in internal/resources/providers/awslib/ec2/provider.go [542:581]
func (p *Provider) DescribeVpcs(ctx context.Context) ([]awslib.AwsResource, error) {
vpcs, err := awslib.MultiRegionFetch(ctx, p.clients, func(ctx context.Context, region string, c Client) ([]awslib.AwsResource, error) {
var all []types.Vpc
input := &ec2.DescribeVpcsInput{}
for {
output, err := c.DescribeVpcs(ctx, input)
if err != nil {
return nil, err
}
all = append(all, output.Vpcs...)
if output.NextToken == nil {
break
}
input.NextToken = output.NextToken
}
var result []awslib.AwsResource
for _, vpc := range all {
logs, err := c.DescribeFlowLogs(ctx, &ec2.DescribeFlowLogsInput{Filter: []types.Filter{
{
Name: aws.String("resource-id"),
Values: []string{*vpc.VpcId},
},
}})
if err != nil {
p.log.Errorf("Error fetching flow logs for VPC %s: %v", *vpc.VpcId, err.Error())
continue
}
result = append(result, &VpcInfo{
Vpc: vpc,
FlowLogs: logs.FlowLogs,
awsAccount: p.awsAccountID,
region: region,
})
}
return result, nil
})
return lo.Flatten(vpcs), err
}