NAME
WebService::CEPH
DESCRIPTION
CEPH client for simple workflow, supporting multipart uploads. Most docs are in Russian.
Клинт для CEPH, без низкоуровневого кода для общения с библиотекой Amazon S3 (она вынесена в отдельный класс).
Обработка ошибок (исключения их тип итп; повторы неудачных запросов) - на совести более низкоуровневой библиотеки, если иное не гарантируется в этой документации.
Параметры конструктора:
Обязательные параметры:
protocol - http/https
host - хост бэкэнда
key - ключ для входа
secret - secret для входа
Необязательные параметры:
bucket - имя бакета (не нужен только для получения списка бакетов)
driver_name - в данный момент только 'NetAmazonS3'
multipart_threshold - после какого размера файла (в байтах) начинать multipart upload
multisegment_threshold - после какого размера файла (в байтах) будет multisegment download
query_string_authentication_host_replace - протокол-хост на который заменять URL в query_string_authentication_uri должен начинаться с протокола (http/https), затем хост, на конце может быть, а может не быть слэша. нужен если вы хотите сменить хост для отдачи клиентам (у вас кластер) или протокол (https внешним клиентам)
new
Конструктор. Параметры см. выше.
upload
Загружает файл в CEPH. Если файл уже существует - он заменяется. Если данные больше определённого размера, происходим multipart upload Ничего не возвращает
Параметры:
0-й - $self
1-й - имя ключа
2-й - скаляр, данные ключа
3-й - Content-type. Если undef, используется дефолтный binary/octet-stream
upload_from_file
То же, что upload, но происходит чтение из файла.
Параметры:
0-й - $self
1-й - имя ключа
2-й - имя файла (если скаляр), иначе открытый filehandle
3-й - Content-type. Если undef, используется дефолтный binary/octet-stream
Дваждый проходит по файлу, высчитывая md5. Файл не должен быть пайпом, его размер не должен меняться.
_upload
Приватный метод для upload/upload_from_file
Параметры
1) self
2) ключ
3) итератор с интерфейсом (данные, оффсет, длина). "данные" должны соответствовать последнему параметру этой функции (т.е. (6))
4) длина данных
5) заранее высчитанный md5 от данных
6) Content-type. Если undef, используется дефолтный binary/octet-stream
7) данные. или скаляр. или filehandle
download
Скачивает данные объекта с именем $key и возвращает их. Если объект не существует, возвращает undef.
Если размер объекта по факту окажется больше multisegment_threshold, объект будет скачан несколькими запросами с заголовком Range (т.е. multi segment download).
В данный момент есть workaround для бага http://lists.ceph.com/pipermail/ceph-users-ceph.com/2016-June/010704.html, в связи с ним всегда делается лишний HTTP запрос - запрос длины файла. Плюс не исключён Race condition.
download_to_file
Скачивает данные объекта с именем $key в файл $fh_or_filename. Если объект не существует, возвращает undef (при этом выходной файл всё равно будет испорчен и, возможно, частично записан в случае race condition - удаляйте эти данные сами; если удалять тяжело - пользуйтесь методом download) Иначе возвращает размер записанных данных.
Выходной файл открывается в режиме перезаписи, если это имя файла, если это filehandle, то образается на нулевую длину и пишется с начала.
Если размер объекта по факту окажется больше multisegment_threshold, объект будет скачан несколькими запросами с заголовком Range (т.е. multi segment download).
В данный момент есть workaround для бага http://lists.ceph.com/pipermail/ceph-users-ceph.com/2016-June/010704.html, в связи с ним всегда делается лишний HTTP запрос - запрос длины файла. Плюс не исключён Race condition.
_download
Приватный метод для download/download_to_file
Параметры:
1) self
2) имя ключа
3) appender - замыкание в которое будут передаваться данные для записи. оно должно аккумулировать их куда-то себе или писать в файл, который оно само знает.
size
Возвращает размер объекта с именем $key в байтах, если ключ не существует, возвращает undef
delete
Удаляет объект с именем $key, ничего не возвращает. Если объект не существует, не выдаёт ошибку
query_string_authentication_uri
Возвращает Query String Authentication URL для ключа $key, с экспайром $expires
$expires - epoch время. но низкоуровневая библиотека может принимать другие форматы. убедитесь что входные данные валидированы и вы передаёте именно epoch
Заменяет хост, если есть опция query_string_authentication_host_replace (см. конструктор)
get_buckets_ist
Returns buckets list
WARNING
Метод падает c ошибкой Attribute (owner_id) does not pass the type constraint because: Validation failed for 'OwnerId' Уведомления направлены разрабтчикам: http://tracker.ceph.com/issues/16806 и https://github.com/rustyconover/net-amazon-s3/issues/18
list_multipart_uploads
Возвращает список multipart загрузок в бакете
delete_multipart_upload
Удаляет multipart загрузку в бакете
Параметры позиционные: $key, $upload_id
Ничего не возвращает