Облачная функция Google + Go + Подписанные URL + Сервисный аккаунт - PullRequest
0 голосов
/ 06 июля 2019

Я пытаюсь реализовать функцию, которая будет возвращать подписанные URL-адреса для объектов облачного хранилища (я знаю, что это бета-версия и пока официально не поддерживается).

Я заставил его работать локально с

url, err := storage.SignedURL(bucket, filename, &storage.SignedURLOptions{
    GoogleAccessID: "my-service-account@my-project.iam.gserviceaccount.com",
    PrivateKey:     pkey,
    Method:         "GET",
    Expires:        time.Now().Add(90 * time.Minute),
    Scheme:         storage.SigningSchemeV4,
})

Все отлично работает, и я использую переменную окружения GOOGLE_APPLICATION_CREDENTIALS, чтобы указать на файл ключа my-service-account.json.

Когда я внедряю тот же код, однако, в облачную функцию, все сгенерированные URL вернут 403 при попытке доступа.

Я разверну функцию с помощью
--service-account my-service-account@my-project.iam.gserviceaccount.com
и я могу проверить в облачной консоли, что функция работает под этой учетной записью службы.

Насколько я понимаю, это должно означать, что оба экземпляра работают с одинаковыми полномочиями / разрешениями, но только на локально работающихвыдает действительные URL, а развернутая версия Cloud - нет.
Что мне здесь не хватает и как мне заставить это работать?

...