Загрузите изображение в Google Cloud Storage, используя конечную точку отдыха через API-ключ - PullRequest
0 голосов
/ 30 августа 2018

Я новичок в Google Cloud. Я хочу загрузить изображение в мое ведро. Я сделал это успешно с консоли GCP и оболочки GCP. Однако я не могу сделать это с помощью REST Endpoint с помощью API-KEY. Вот мой URL.

https://www.googleapis.com/upload/storage/v1/b/[MY_BUCKET]/o?uploadType=media&name=myhero&key=[MY_API-KEY]

Я получаю следующее сообщение

{
    "error": {
        "errors": [
            {
                "domain": "global",
                "reason": "required",
                "message": "Anonymous caller does not have storage.objects.create access to [MY_BUCKET]/myhero.",
                "locationType": "header",
                "location": "Authorization"
            }
        ],
        "code": 401,
        "message": "Anonymous caller does not have storage.objects.create access to [MY_BUCKET]/myhero."
    }
}

Это связано с тем, что корзина в настоящее время не позволяет каким-либо образом разрешать пользователям API-ключ, даже если API-ключ позволяет пользователю этого ключа загружать объект в корзину.

Что мне делать 1) если я хочу пойти по API-ключу способом. 2) если я хочу пойти с сервис-аккаунта способом. Каков наилучший способ создания токена авторизации? Я дошел до этого момента

{"alg":"RS256","typ":"JWT"}.
{
"iss":"761326798069-r5mljlln1rd4lrbhg75efgigp36m78j5@developer.gserviceaccount.com",
"scope":"https://www.googleapis.com/auth/prediction",
"aud":"https://www.googleapis.com/oauth2/v4/token",
"exp":1328554385,
"iat":1328550785
}.

Но я не могу сгенерировать {закодированную подпись Base64url}, так как не могу выяснить закрытый и открытый ключи ...

1 Ответ

0 голосов
/ 10 сентября 2018

Вы получаете «анонимного абонента», потому что вы не прошли надлежащую аутентификацию. Вы можете аутентифицироваться, используя токен на предъявителя вместо API-ключа.

Вы можете запустить следующий скрипт:

BUCKET=<BUCKET_NAME>
OBJECT=<OBJECT>
TOKEN=$(gcloud auth print-access-token)
 curl "https://www.googleapis.com/upload/storage/v1/b/$BUCKET/o?uploadType=media&name=$OBJECT" -H"Authorization: Bearer $TOKEN" -H'Content-Type: image/jpg'  --data-binary @$OBJECT
...