Как мне перечислить облачные функции на основе пользовательских меток?

# # #go #google-cloud-platform #google-cloud-functions

Вопрос:

Я вижу в вызовах ListFunctions, что он возвращает все функции в проекте и указанном регионе. Я хотел бы отфильтровать по меткам, и я не вижу, чтобы ListFunctionsRequest принимал фильтр, чтобы отфильтровать его по меткам. Есть какие-нибудь предложения? Что-то вроде того, что поддерживает gcloud CLI: https://cloud.google.com/sdk/gcloud/reference/functions/list

Документация: https://pkg.go.dev/cloud.google.com/go/functions/apiv1#CloudFunctionsClient.Функции списка

Код из документов

 ctx := context.Background()
    c, err := functions.NewCloudFunctionsClient(ctx)
    if err != nil {
        // TODO: Handle error.
    }
    defer c.Close()

    req := amp;functionspb.ListFunctionsRequest{
        // TODO: Fill request struct fields.
    }
    it := c.ListFunctions(ctx, req)
    for {
        resp, err := it.Next()
        if err == iterator.Done {
            break
        }
        if err != nil {
            // TODO: Handle error.
        }
        // TODO: Use resp.
        _ = resp
    }```
 

Комментарии:

1. Я не знаю ответа в данном случае. Некоторые API поддерживают filters , некоторые не поддерживают или не поддерживают все варианты использования фильтров. Если интерфейс командной строки поддерживает фильтр, а API этого не делает, то фильтр реализуется внутри интерфейса командной строки. Это означает, что вам также потребуется дублировать эту функцию фильтрации в своем коде. Чтобы проверить, создайте команду CLI и добавьте параметр командной строки --log-http , чтобы увидеть фактический вызов REST API. Если фильтр не передается в API, то вы знаете, а) что вы должны написать этот код фильтра, или б) как фильтр кодируется в вызове API.

Ответ №1:

API облачных функций не поддерживает параметр запроса фильтра

Фильтрация gcloud выполняется с помощью интерфейса командной строки, а не API. Поэтому, если вы используете API напрямую, вам необходимо переопределить эту функцию фильтра.