/** * @param string $key * @param DateTime $date */ public function restoreByDeletingNewerVersions($key, DateTime $date) { $versions = $this->getVersions($key); $versionsToDelete = Functional\select($versions, function (CMService_AwsS3Versioning_Response_Version $version) use($key, $date) { $isExactKeyMatch = $key === $version->getKey(); $isModifiedAfter = $date < $version->getLastModified(); return $isExactKeyMatch && $isModifiedAfter; }); $this->_streamOutput->writeln('Restoring `' . $key . '` - deleting ' . count($versionsToDelete) . ' versions...'); if (count($versionsToDelete) > 0) { $objectsData = Functional\map($versionsToDelete, function (CMService_AwsS3Versioning_Response_Version $version) { return array('Key' => $version->getKey(), 'VersionId' => $version->getId()); }); $this->_client->deleteObjects(array('Bucket' => $this->_bucket, 'Objects' => $objectsData)); } }
date_default_timezone_set('Europe/Prague'); ini_set('display_errors', true); error_reporting(E_ALL); $basedir = dirname(__DIR__); require_once $basedir . '/vendor/autoload.php'; $client = new \Aws\S3\S3Client(['region' => getenv('AWS_REGION'), 'version' => '2006-03-01', 'credentials' => ['key' => getenv('AWS_ACCESS_KEY'), 'secret' => getenv('AWS_SECRET_KEY')]]); // Where the files will be source from $source = $basedir . '/tests/_data/csv-import'; // Where the files will be transferred to $bucket = getenv('AWS_S3_BUCKET'); $dest = 's3://' . $bucket; // clear bucket $result = $client->listObjects(['Bucket' => $bucket, 'Delimiter' => '/']); $objects = $result->get('Contents'); if ($objects) { $client->deleteObjects(['Bucket' => $bucket, 'Delete' => ['Objects' => array_map(function ($object) { return ['Key' => $object['Key']]; }, $objects)]]); } // Create a transfer object. $manager = new \Aws\S3\Transfer($client, $source, $dest, ['debug' => true]); // Perform the transfer synchronously. $manager->transfer(); // Create manifests $manifest = ['entries' => [['url' => sprintf("s3://%s/tw_accounts.csv", $bucket), 'mandatory' => true]]]; $client->putObject(['Bucket' => $bucket, 'Key' => '01_tw_accounts.csv.manifest', 'Body' => json_encode($manifest)]); $manifest = ['entries' => [['url' => sprintf("s3://%s/04_tw_accounts.csv.gz", $bucket), 'mandatory' => true]]]; $client->putObject(['Bucket' => $bucket, 'Key' => '03_tw_accounts.csv.gzip.manifest', 'Body' => json_encode($manifest)]); $manifest = ['entries' => [['url' => sprintf("s3://%s/not-exists.csv", $bucket), 'mandatory' => true]]]; $client->putObject(['Bucket' => $bucket, 'Key' => '02_tw_accounts.csv.invalid.manifest', 'Body' => json_encode($manifest)]); echo "Data loaded OK\n";