私は、アーカイブと検索システムをPHPで作成しようとしています。ユーザーがアーカイブボタンをクリックすると、特定のファイルが標準ストレージから氷河ストレージに移動し、氷河ストレージ内のリストアボタンファイルをクリックすると、標準ストレージに取得されます。amazon awsの氷河の保管場所へのアーカイブと取り出しawake
AWS php SDK 3.0 APIを使用してファイルを正常に氷河のボールトに移動し、検索のためアーカイブ検索ジョブが開始され、3時間から5時間後にジョブIDを取得し、5時間後にそのジョブIDを使用しました。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 operation documentationは)のsaveAs getJobOutput機能の属性が指定する場所操作の内容をすべきダウンロードしてください。ファイルへのパス、fopenから返されるリソース、Guzzle \ Http \ EntityBodyInterfaceオブジェクトのいずれかになります。私はs3のファイルへのパスも与えています。何が問題になるでしょうか。どんな助けでも本当に感謝しています。前もって感謝します。
これはドキュメント
Aws\Result Object ([data:Aws\Result:private] => Array ([body] => GuzzleHttp\Psr7\Stream Object ([stream:GuzzleHttp\Psr7\Stream:private] => Resource id #25 [size:GuzzleHttp\Psr7\Stream:private] => [seekable:GuzzleHttp\Psr7\Stream:private] => 1 [readable:GuzzleHttp\Psr7\Stream:private] => 1 [writable:GuzzleHttp\Psr7\Stream:private] => 1 [uri:GuzzleHttp\Psr7\Stream:private] => php://temp [customMetadata:GuzzleHttp\Psr7\Stream:private] => Array ()) [checksum] => c176c1843fd0c0fc662lh9bb8de916540e6f9dpk9b22020bbb8388jk6f81d1c2 [status] => 200 [contentRange] => [acceptRanges] => bytes [contentType] => application/octet-stream [archiveDescription] => File Name is children-wide.jpg [@metadata] => Array ([statusCode] => 200 [effectiveUri] =>https://glacier.region-name.amazonaws.com/-/vaults/vaultname/jobs/gFdjAl4xhTAVEnmffgfg-Ao3-xmmjghfmqkCLOR1m34gHLQpMd0a3WKCiRRrItv2bklawwZnq9KeIch3LKs8suZoJwk2_/output [headers] => Array ([x-amzn-requestid] => NzAiVAfrMQbpSjj-2228iiKWK_VteDwNyFTUR7Kyu0duno [x-amz-sha256-tree-hash] => c176c1843khfullc662f09bb8de916540e6f9dcc9b22020bbb8388de6f81d1c2 [accept-ranges] => bytes [x-amz-archive-description] => File Name is children-wide.jpg [content-type] => application/octet-stream [content-length] => 1452770 [date] => Tue, 31 Jan 2017 03:34:26 GMT [connection] => close) [transferStats] => Array ([http] => Array ([0] => Array ())))))
なぜ '$ result = ...'を使用して、 '$ result'に何が含まれているかを実際に調べることはありませんか?貴重な情報を捨てているようです。 –
こんにちは@ Michael-sqlbot私は$ resultに値を格納せずに試してみたところ、ファイルはs3の場所にコピーされていませんでした。あなたは何を意味するのかを詳しく説明できますか?私がやったことは間違っているかもしれないと思います。あなたの貴重な答えをありがとう –
'$ result = $ this-> glacier-> getJobOutput ...' '$ result'には何がありますか? –