in internal/resources/providers/awslib/account_provider.go [49:84]
func listAccounts(ctx context.Context, log *clog.Logger, client organizationsAPI) ([]cloud.Identity, error) {
organizationIdToName := make(map[string]string)
input := organizations.ListAccountsInput{}
var accounts []cloud.Identity
for {
o, err := client.ListAccounts(ctx, &input)
if err != nil {
return nil, err
}
for _, account := range o.Accounts {
if account.Status != types.AccountStatusActive || account.Id == nil {
continue
}
organization, err := getOUInfoForAccount(ctx, client, organizationIdToName, account.Id)
if err != nil {
log.Errorf("failed to get organizational unit info for account %s: %v", *account.Id, err)
}
accounts = append(accounts, cloud.Identity{
Provider: "aws",
Account: *account.Id,
AccountAlias: pointers.Deref(account.Name),
OrganizationId: organization.id,
OrganizationName: organization.name,
})
}
if o.NextToken == nil {
break
}
input.NextToken = o.NextToken
}
return accounts, nil
}