public function isDirectory($path) { $options = array('Bucket' => $this->_bucket, 'Prefix' => $this->_getAbsolutePath($path) . '/', 'MaxKeys' => 1); try { $result = $this->_client->listObjects($options); return count($result->get('Contents')) > 0; } catch (Exception $e) { throw new CM_Exception('Cannot get directory-info for the path', null, ['path' => $path, 'originalExceptionMessage' => $e->getMessage()]); } }
/** * Loads test fixtures into S3 */ 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)]);