AWS PHP SDK Versão 2 S3 putObject Error

Portanto, a biblioteca AWS php sdk 2.x foi lançada recentemente e eu fiz um dia de peru mergulhar na atualização de 1.5x. O meu primeiro foi atualizar minha class de backup S3. Eu corri rapidamente em um erro:

Fatal error: Class 'EntityBody' not found in /usr/share/php/....my file here 

ao tentar carregar um arquivo compactado para um balde S3. Eu escrevi uma aula para abstrair a escrita um pouco para permitir backup de várias regiões, então o código abaixo referências a $ isso é isso.

 $response1 = $s3->create_object( $this->bucket_standard, $this->filename, array( 'fileUpload' => $this->filename, 'encryption' => 'AES256', //'acl' => AmazonS3::ACL_PRIVATE, 'contentType' => 'text/plain', 'storage' => AmazonS3::STORAGE_REDUCED, 'headers' => array( // raw headers 'Cache-Control' => 'max-age', //'Content-Encoding' => 'gzip', 'Content-Language' => 'en-US' //'Expires' => 'Thu, 01 Nov 2012 16:00:00 GMT' ), 'meta' => array( 'param1' => $this->backupDateTime->format('Ymd H:i:s'), // put some info on the file in meta tags 'param2' => $this->hostOrigin ) ) ); 

O anterior funcionou bem em 1.5.x.

Agora, em 2.x, estou olhando para seus documentos e eles mudaram quase tudo (ótimo … sarcasmo máximo)

 $s3opts=array('key'=> $this->accessKey, 'secret' => $this->secretKey,'region' => 'us-east-1'); $s3 = Aws\S3\S3Client::factory($s3opts); 

então agora eu tenho um novo object S3. E aqui está a minha syntax 2.x para fazer a mesma coisa exata. O meu problema surge quando eles (sinistramente) mudaram o antigo “fileupload” para “Body” e tornaram-no mais abstrato em como realmente append um arquivo! Eu tentei os dois e penso que tem a ver com as dependencies (Guzzle ou Smyfony, etc.), mas recebo o erro acima (ou substitua Stream, se quiser) sempre que tento executar isso.

Eu tentei usar o Composer com composer.json, e aws.phar, mas antes de entrar nisso, há algo burro que eu estou perdendo?

 $response1 = $s3->putObject(array( 'Bucket' => $this->bucket_standard, 'Key' => $this->filename, 'ServerSideEncryption' => 'AES256', 'StorageClass' => 'REDUCED_REDUNDANCY', 'Body' => EntityBody::factory(fopen($this->filename, 'r')), //'Body' => new Stream(fopen($fullPath, 'r')), 'MetaData' => array( 'BackupTime' => $this->backupDateTime->format('Ymd H:i:s'), // put some info on the file in meta tags 'HostOrigin' => $this->hostOrigin ) )); 

Obrigado, como sempre,

R

Você importou o EntityBody para o seu namespace?

 use Guzzle\Http\EntityBody; 

Caso contrário, você teria que fazer

 'Body' => \Guzzle\Http\EntityBody::factory(fopen($this->filename, 'r')),