Google Cloud REST API для реестра артефактов – URL-адрес 404

Я хочу перечислить все образы Docker моего реестра артефактов в Google Cloud Platform. Поэтому я обращаюсь к REST API.

Следуя этой документации: https://cloud.google.com/artifact-registry/docs/reference/rest/v1/projects.locations.repositories.dockerImages/list

curl -X GET --location "https://artifactregistry.googleapis.com/v1/my-project-id/europe-west3/eu.gcr.io/dockerImages?key=AIzaSyBDf2452534f7Y5PfKRjsdgs%12342432TIGrI" --http1.1 \
    -H "Authorization: Bearer ya29.aFGDggsGSDGSHG4253h2ATzmAsT8dYhWoGm7dG1n7Cj-YYgfk-VIV9e-m22gDQnJ-5X7zSB2dgqyj2_T4ZL6yjaDAb8YWCFpKh64UZ-lYjVj1MYnATA7ZiR7AqTPGvL4NbH-MG2q48Fg_NtesOrC4rOHoSyRMrYxFQyuYg4MIXFfsdf23513JSSDGSDASDASDGYSDGw0177" \
    -H "Accept: application/json"

Ответ:

HTTP/1.1 404 Not Found
Date: Tue, 09 Apr 2024 09:28:17 GMT
Content-Type: text/html; charset=UTF-8
Server: ESF
Content-Length: 1659
X-XSS-Protection: 0
X-Frame-Options: SAMEORIGIN
X-Content-Type-Options: nosniff
Alt-Svc: h3 = ":443"; ma=2592000,h3-29 = ":443"; ma=2592000

Функция «Попробуйте этот метод» в документации также выдает ошибки.

Довольно запутанно, поскольку я уверен, что соответствую шаблону регулярного выражения, который им требуется: /^projects/[^/]+/locations/[^/]+/repositories/[^/]+$/


Есть идеи, что я делаю неправильно? Я думаю, что как-то путаю параметр resource, но не могу найти ни одного примера для этого запроса, который привел бы меня к правильному использованию.

Я с нетерпением жду ваших отзывов, чтобы понять, помогло ли предоставленное решение вам решить проблему. Если нет, я буду рад помочь дальше.

Sandeep Vokkareni 15.04.2024 08:07
Создание приборной панели для анализа данных на GCP - часть I
Создание приборной панели для анализа данных на GCP - часть I
Недавно я столкнулся с интересной бизнес-задачей - визуализацией сбоев в цепочке поставок лекарств, которую могут просматривать врачи и...
2
1
347
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Это может привести к тому, что когда клиент указывает заголовок Accept при запросе манифеста изображения, и этот заголовок не включает формат, который имеет изображение, реестр артефактов отвечает статусом 404 Not Found и выдает ошибку.

Реестр артефактов поддерживает несколько форматов изображений, но клиент может поддерживать только некоторые из них. Клиент должен отправить поддерживаемый формат в заголовке Accept, и если он отличается от фактического типа контента изображения, он получает ошибку 404 Not Found, которая интерпретируется как отсутствующее изображение.

Вы можете проверить формат изображения, хранящегося в AR, с помощью такой команды:

curl -s -D - -o /dev/null '
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
https://[Region]-docker.pkg.dev/v2/[Project]/[Repository]/[Image]/manifests/latest

Исправлено: загрузите изображение в формате, поддерживаемом клиентом. Вы можете конвертировать форматы изображений с помощью команды skopeo copy:

skopeo copy -f v2s2 docker://[Region]-docker.pkg.dev/[Project]//:latest docker://-docker.pkg.dev/[Repository]/[Image]/:latest docker://[Region]-docker.pkg.dev/[Project]/[Repository]/[Image]:[Tag2]

Также взгляните на эту Документацию и ссылку на Stackoverflow.

Ответ принят как подходящий

Я только что понял, что мне не хватает сегмента пути проекта -> /project/[project-id]. Я думал, что в документации был проект в качестве заполнителя для фактического идентификатора проекта.

Другие вопросы по теме