Я пытаюсь создать архивно-поисковую систему на php. Когда пользователь нажимает кнопку архива, определенные файлы будут перемещены в хранилище ледника из стандартного хранилища, а при нажатии кнопки восстановления файл в хранилище ледника будет восстановлен в стандартное хранилище.
Используя AWS php SDK 3.0 api, я успешно переместил файлы в хранилище ледников, и для извлечения было инициировано задание по извлечению из архива, и я получил идентификатор задания через 3-5 часов и, используя этот идентификатор задания через 5 часов, я попробовал функцию getJobOutput. И я получаю ответ, такой же, как указано в документации по api, но я не получаю восстановленный файл в моем ведре s3.
Вот мой код для загрузки на ледник и восстановления с ледника
public function archiveAndRestore() {
$this->s3Client = new S3Client(Configure::read('AWScredentials'));
$this->glacier = GlacierClient::factory(Configure::read('AWScredentials'));
// Upload to glacier
$this->s3Client->registerStreamWrapper();
$context = stream_context_create([
's3' => ['seekable' => true]
]);
$result = $this->glacier->uploadArchive(array(
'vaultName' => 'archiveTest',
'archiveDescription' => 'File Name is archiveTest.txt ',
'body' => fopen('s3://storage-bucket/Videos/archiveTest.txt', 'r', false, $context),
));
$archiveid = $result->get('archiveId');
$jobId = $this->glacier->initiateJob([
'accountId' => '-',
'vaultName' => 'archiveTest',
'jobParameters' => [
'Type' => 'archive-retrieval',
'ArchiveId' => 'ORgyyyqsKwoopp110EvFoyqj3G-csmOKLyy3IJnWF9Dpd8BJfwerEhg241nxHf6y6kNUUyhUHOaY4y8QvWBGESmAopa80f6GZ9C05tyyKANhY-qfBUB6YkfTABg',
],
]);
$this->s3Client->registerStreamWrapper();
$context = stream_context_create([
's3' => ['seekable' => true]
]);
$stream = fopen('s3://storage-bucket/RetrivedFiles/test1.txt', 'w');
$result = $this->glacier->getJobOutput([
'accountId' => '-',
'jobId' => '2dddfffffff9SwZIOPWxcB7TLm_3apNx--2rIiD7SgjOJjjkrerrcN1YCtivh_zsmpLyczY4br-bhyyX0Ev5B7e6-D1',
'vaultName' => 'archiveTest',
'saveAs' => $stream,
]);
fclose($stream);
}
Согласно документации (документация по операции aws GetJobOutput) атрибут saveAs функции getJobOutput указывает, куда следует загрузить содержимое операции. Может быть путем к файлу, ресурсу, возвращаемому fopen, или объекту Guzzle \ Http \ EntityBodyInterface. Поскольку я также указываю путь к файлу в s3. В чем будет проблема. Любая помощь очень ценится. Заранее спасибо.
Это результат, содержащийся в ответе $ result, который в точности совпадает с указанным в документации.
Aws \ Result Object ([data: Aws \ Result: private] => Array ([body] => GuzzleHttp \ Psr7 \ Stream Object ([stream: GuzzleHttp \ Psr7 \ Stream: private] => Идентификатор ресурса № 25 [размер: GuzzleHttp \ Psr7 \ Stream: private] => [seekable: GuzzleHttp \ Psr7 \ Stream: private] => 1 [читается: GuzzleHttp \ Psr7 \ Stream: private] => 1 [доступен для записи: GuzzleHttp \ Psr7 \ Stream: private] = > 1 [uri: GuzzleHttp \ Psr7 \ Stream: private] => php: // temp [customMetadata: GuzzleHttp \ Psr7 \ Stream: private] => Array ()) [контрольная сумма] => c176c1843fd0c0fc662lh9bb8de916540e6f220dpk [] contentRange] => [acceptRanges] => bytes [contentType] => application / octet-stream [archiveDescription] => Имя файла - children-wide.jpg [@metadata] => Array ([statusCode] => 200 [effectiveUri] => region-name.amazonaws.com/-/vaul TS / имя_хранилища / Работа / gFdjAl4xhTAVEnmffgfg-AO3-xmmjghfmqkCLOR1m34gHLQpMd0a3WKCiRRrItv2bklawwZnq9KeIch3LKs8suZoJwk2_ / выход [заголовки] => Array ([х-AMZN-RequestID] => NzAiVAfrMQbpSjj-2228iiKWK_VteDwNyFTUR7Kyu0duno [х-AMZ-sha256-дерево-хэш] => c176c1843khfullc662f09bb8de916540e6f9dcc9b22020bbb8388de6f81d1c2 [accept-range] => bytes [x-amz-archive-description] => Имя файла - children-wide.jpg [content-type] => application / octet-stream [content-length] => 1452770 [дата] => Вт, 31 января 2017 г. 03:34:26 GMT [соединение] => закрыть) [transferStats] => Array ([http] => Array ([0] => Array ())))))
$result = ...
, а потом никогда не проверяете, что$result
содержит? Кажется весьма вероятным, что вы отказываетесь от ценной информации. - person Michael - sqlbot   schedule 30.01.2017$result = $this->glacier->getJobOutput ...
Что найдено в$result
здесь? - person Michael - sqlbot   schedule 30.01.2017