func stackLambdaResources(serviceName string, cf *cloudformation.CloudFormation, logger *logrus.Logger) (provisionedResources, error) { resources := make(provisionedResources, 0) nextToken := "" for { params := &cloudformation.ListStackResourcesInput{ StackName: aws.String(serviceName), } if "" != nextToken { params.NextToken = aws.String(nextToken) } resp, err := cf.ListStackResources(params) if err != nil { logger.Error(err.Error()) return nil, err } for _, eachSummary := range resp.StackResourceSummaries { if *eachSummary.ResourceType == "AWS::Lambda::Function" { resources = append(resources, eachSummary) } } if nil != resp.NextToken { nextToken = *resp.NextToken } else { break } } return resources, nil }
func getStackResources(svc *cloudformation.CloudFormation, stackID string) ([]cloudformation.StackResourceSummary, error) { resources := make([]cloudformation.StackResourceSummary, 0) req := cloudformation.ListStackResourcesInput{ StackName: aws.String(stackID), } for { resp, err := svc.ListStackResources(&req) if err != nil { return nil, err } for _, s := range resp.StackResourceSummaries { resources = append(resources, *s) } req.NextToken = resp.NextToken if aws.StringValue(req.NextToken) == "" { break } } return resources, nil }