/** * Create Bucket action * * Creates a new bucket belonging to the account of the * authenticated request sender. * * @param string $bucketName A bucket name. * @param string $bucketRegion optional AWS Region where bucket have to be located. * @param array $requestHeaders optional Additional request headers. * x-amz-acl|x-amz-grant-read|x-amz-grant-write|x-amz-grant-read-acp| * x-amz-grant-write-acp|x-amz-grant-full-control * @return BucketData Returns BucketData object on success or throws an exception. * @throws ClientException * @throws S3Exception */ public function createBucket($bucketName, $bucketRegion = Aws::REGION_US_EAST_1, array $requestHeaders = null) { $result = null; $options = array('_subdomain' => (string) $bucketName); if (!empty($requestHeaders)) { $requestHeaders = $this->getFilteredArray(self::$xamzAclAllowedHeaders, $requestHeaders); $options = array_merge($options, $requestHeaders); } $bucketLocation = $this->_getBucketLocationXml($bucketRegion); if ($bucketLocation === null) { $options['Content-Length'] = 0; } else { $options['_putData'] = $bucketLocation; } $response = $this->client->call('PUT', $options, '/'); if ($response->getError() === false) { $result = new BucketData(); $result->setS3($this->s3); $result->bucketName = (string) $bucketName; $result->creationDate = new \DateTime('now', new \DateTimeZone('UTC')); $this->getEntityManager()->attach($result); } return $result; }