CI =& get_instance(); $this->s3_properties = array('region'=>'ap-south-1','version'=>'latest','credentials' => array( 'key' =>$this->CI->config->item('s3_resource_key'), 'secret' => $this->CI->config->item('s3_resource_secret') )); $this->S3 = S3Client::factory($this->s3_properties); // echo "Called"; // $this->setCors('lender8');die(); } public function listAllBuckets() { $buckets = array(); try{ $buckets = $this->S3->listBuckets(); } catch(AwsException $e){ // echo $e->getMessage(); // echo "\n"; . } return $buckets; } public function createNewBucket($BUCKET_NAME) { try { $result = $this->S3->createBucket(['ACL' => 'private','Bucket' => $BUCKET_NAME]); return $result; } catch (AwsException $e) { //output error message if fails log_message('ERROR', $e->getMessage()); return $e->getMessage(); //echo "\n"; } } public function uploadFileToS3Bucket($data) { $result = ""; try { $result = $this->S3->putObject([ 'Bucket' => $data['bucket_name'], 'Key' => $data['key'], 'SourceFile' => $data['sourcefile'], 'ContentType' => '*/*', 'StorageClass' => 'STANDARD', 'ACL'=>'private' ]); } catch (AwsException $e) { $result = false; log_message('ERROR',$e); } return $result; } /* This Function return signed URI of single S3 Object*/ public function getSingleObjectInaBucketAsSignedURI($bucket_name,$folder_name,$time = '+5 minutes')//get as singed url { $result = array(); try { // $result = $this->S3->getObject([ // 'Bucket' => 'thecucumber', // 'Key' => 'byapi/woodgrass1.jpg' // //'ResponseContentType' => 'image/png' // //'ResponseContentDisposition' => 'attachment; woodgrass1.jpg', // ]); $cmd = $this->S3->getCommand('GetObject', [ 'Bucket' => $bucket_name, 'Key' => $folder_name ]); $request = $this->S3->createPresignedRequest($cmd, $time); $presignedUrl = (string) $request->getUri(); } catch(AwsException $e) { return $e->getMessage(); } return $presignedUrl; } public function getS3SingleObj($bucket_name,$folder_name,$time = '+5 minutes') { //echo $time;die(); $result = $this->S3->getObject([ 'Bucket' => $bucket_name, 'Key' => $folder_name //'ResponseContentType' => 'image/png' //'ResponseContentDisposition' => 'attachment; woodgrass1.jpg', ]); return result; } // Get List of objetcs as byte(Raw file). public function getAllObjectsInaBucket($bucket_name,$folder_name) { $objects = array(); try { $objects = $this->S3->getIterator('ListObjects', [ 'Bucket' => $bucket_name, 'Prefix' => $folder_name ]); // echo "Keys retrieved!" ; // //print_r($objects); // foreach ($objects as $object) { // print_r($object) ; // } } catch (S3Exception $e) { echo $e->getMessage() . PHP_EOL; } return $objects; } // Delete an object from the bucket. public function deleteSingleObjFromBucket($bucket,$key) { $result = $this->S3->deleteObject([ 'Bucket' => $bucket, 'Key' => $key ]); return $result; } public function setCors($BUCKETNAME) { $result = $this->S3->putBucketCors([ 'Bucket' => $BUCKETNAME, 'CORSConfiguration' => [ 'CORSRules' => [ [ 'AllowedHeaders' => [ '*', ], 'AllowedMethods' => [ 'PUT', 'POST', 'DELETE', ], 'AllowedOrigins' => [ '*', ], 'ExposeHeaders' => [ 'x-amz-server-side-encryption', ], 'MaxAgeSeconds' => 3000, ], [ 'AllowedHeaders' => [ 'Authorization', ], 'AllowedMethods' => [ 'GET', ], 'AllowedOrigins' => [ '*', ], 'MaxAgeSeconds' => 3000, ], ], ] ]); return $result; } public function getCORES($BUCKETNAME) { $result = $this->S3->getBucketCors([ 'Bucket' => $BUCKETNAME]); //////print_r($result); } public function copyS3Object($targetBucket,$sourceBucket,$sourceKeyname,$tagetKeyname) { //echo $sourceBucket.'/'.$sourceKeyname; // Copy an object. $res = $this->S3->copyObject([ 'Bucket' => $targetBucket, 'Key' => $tagetKeyname.'/'.$tagetKeyname.'.png', 'CopySource' => $sourceBucket.'/'.$sourceKeyname.'/v4MLA2019-01-12-18:01:21.png' ]); print($res); } public function dupSinglePDImages($bucketName,$sourceKey,$targetKey) { //first get all images/s3 obj from source bucket$objects = array(); $existingS3Objects = array(); $copied_objects = 0; try { $existingS3Objects =$this->S3->listObjects(['Bucket' => $bucketName,'Prefix' => $sourceKey]); if(isset($existingS3Objects['Contents']) && count($existingS3Objects['Contents'])) { // Perform a batch of CopyObject operations. $batch = array(); foreach($existingS3Objects['Contents'] as $obj_key => $obj_vale) { $key = ($obj_vale['Key']); $fulltargetKey = (function() use ($targetKey,$key){ $res = ''; $t = explode('/',$key);unset($t[0]); foreach ($t as $index => $value) { $res .= (count($t) == ($index+1) ? $value.'/' : $value); } return $targetKey.'/'.$res; }); $fulltargetKey = $fulltargetKey(); //echo $fulltargetKey.'###'.$bucketName.'/'.$key.'~~~'; $batch[] = $this->S3->getCommand('CopyObject', [ 'Bucket' => $bucketName, 'Key' => $fulltargetKey, 'CopySource' => "$bucketName/$key", 'MetadataDirective' => 'REPLACE' ]); } try { $results = CommandPool::batch($this->S3, $batch); foreach($results as $result) { if ($result instanceof ResultInterface) { $copied_objects++; echo 'DONE'; } if ($result instanceof AwsException) { log_message('ERROR','###Error in Batch result - '.$result->getAwsErrorMessage()); } } } catch (Exception $e) { log_message('ERROR','###Error in executing Copy Batch Operation'); log_message('ERROR',$e->getMessage()); echo $e->getMessage() . PHP_EOL; } } }catch (S3Exception $e) { log_message('ERROR','###Error in getting all exist s3 keys'); log_message('ERROR',$e->getMessage()); //echo $e->getMessage() . PHP_EOL; } echo $copied_objects; } } ?>