Фон
Мы реализуем CKAN на AWS с расширением DataStore и взаимодействуем с ним через python CKAN API. AWS по существу разделен на две среды:
PRIV: для внутренних целей и целей контроля качества/постановки, размещен на https://private.company.com.
PUB: для внешних конечных пользователей, размещенных на https://private.company.com
PUB создается через CloudFront и использует реплику чтения базы данных PRIV. Это в основном то же самое, что и PRIV, за исключением того, что он доступен только для чтения.
Вызов
URL-адреса ресурсов в PUB указывают на среду PRIV. Например, запуск вызова API PUB_ckan.resource_show(id='123')
в общедоступной среде возвращает следующее:
{ ...
'datastore_active': Ложь,
'id': '123',
'имя': 'Ресурс 1',
'package_id': 'abc',
«состояние»: «активно»,
'url': 'https://private.company.com/dataset/f688/resource/e3c785/download/file.zip',
'url_type': 'загрузить'
... }
То же самое для файлов, загруженных через CKAN API или расширение DataStore (в этом случае они помечены как «url_type»: «хранилище данных»).
Ожидание
Все метаданные пакета/ресурса должны быть одинаковыми в разных средах, за исключением URL-адреса ресурса, который должен отражать URL-адрес PUB, чтобы конечные пользователи могли выполнять вызовы API для высокодоступной и безопасной среды. то есть:
'url': 'https://public.company.com/dataset/f688/resource/e3c785/download/file.zip'
До сих пор я изучал, содержит ли файл конфигурации настройку для использования относительных URL-адресов, а также пытался обновить URL-адреса вручную с помощью скрипта Python, но оба безуспешно. Любая помощь в этом будет принята с благодарностью.