$ak, 'secret' => $sk, 'endpoint' => $endpoint, 'socket_timeout' => 30, 'connect_timeout' => 10 ] ); try { /* * Put bucket operation */ createBucket (); /* * Get bucket location operation */ getBucketLocation (); /* * Get bucket storageInfo operation */ getBucketStorageInfo (); /* * Put/Get bucket quota operations */ doBucketQuotaOperation (); /* * Put/Get bucket versioning operations */ doBucketVersioningOperation (); /* * Put/Get bucket acl operations */ $ownerId = doBucketAclOperation (); /* * Put/Get/Delete bucket cors operations */ doBucketCorsOperation (); /* * Options bucket operation */ optionsBucket (); /* * Get bucket metadata operation */ getBucketMetadata (); /* * Put/Get/Delete bucket lifecycle operations */ doBucketLifecycleOperation (); /* * Put/Get/Delete bucket logging operations */ doBucketLoggingOperation ($ownerId); /* * Put/Get/Delete bucket website operations */ doBucketWebsiteOperation (); /* * Put/Get/Delete bucket tagging operations */ doBucketTaggingOperation (); /* * Delete bucket operation */ deleteBucket (); } catch ( ObsException $e ) { echo 'Response Code:' . $e->getStatusCode () . PHP_EOL; echo 'Error Message:' . $e->getExceptionMessage () . PHP_EOL; echo 'Error Code:' . $e->getExceptionCode () . PHP_EOL; echo 'Request ID:' . $e->getRequestId () . PHP_EOL; echo 'Exception Type:' . $e->getExceptionType () . PHP_EOL; } finally{ $obsClient->close (); } function createBucket() { global $obsClient; global $bucketName; $resp = $obsClient->createBucket ([ 'Bucket' => $bucketName, ]); printf("HttpStatusCode:%s\n\n", $resp ['HttpStatusCode']); printf("Create bucket: %s successfully!\n\n", $bucketName); } function getBucketLocation() { global $obsClient; global $bucketName; $promise = $obsClient -> getBucketLocationAsync(['Bucket' => $bucketName], function($exception, $resp){ printf("Getting bucket location %s\n\n", $resp ['Location']); }); $promise -> wait(); } function getBucketStorageInfo() { global $obsClient; global $bucketName; $promise = $obsClient -> getBucketStorageInfoAsync(['Bucket' => $bucketName], function($exception, $resp){ printf("Getting bucket storageInfo Size:%d,ObjectNumber:%d\n\n", $resp ['Size'], $resp ['ObjectNumber']); }); $promise -> wait(); } function doBucketQuotaOperation() { global $obsClient; global $bucketName; $obsClient->setBucketQuota ([ 'Bucket' => $bucketName, 'StorageQuota' => 1024 * 1024 * 1024//Set bucket quota to 1GB ]); $resp = $obsClient->getBucketQuota ([ 'Bucket' => $bucketName ]); printf ("Getting bucket quota:%s\n\n", $resp ['StorageQuota'] ); } function doBucketVersioningOperation() { global $obsClient; global $bucketName; $resp = $obsClient->getBucketVersioningConfiguration ( [ 'Bucket' => $bucketName ]); printf ( "Getting bucket versioning config:%s\n\n", $resp ['Status']); //Enable bucket versioning $obsClient->setBucketVersioningConfiguration ([ 'Bucket' => $bucketName, 'Status' => 'Enabled' ]); $resp = $obsClient->getBucketVersioningConfiguration ( [ 'Bucket' => $bucketName ]); printf ( "Current bucket versioning config:%s\n\n", $resp ['Status']); //Suspend bucket versioning $obsClient->setBucketVersioningConfiguration ([ 'Bucket' => $bucketName, 'Status' => 'Suspended' ]); $resp = $obsClient->getBucketVersioningConfiguration ( [ 'Bucket' => $bucketName ]); printf ( "Current bucket versioning config:%s\n\n", $resp ['Status']); } function doBucketAclOperation() { global $obsClient; global $bucketName; printf ("Setting bucket ACL to ". ObsClient::AclPublicRead. "\n\n"); $obsClient->setBucketAcl ([ 'Bucket' => $bucketName, 'ACL' => ObsClient::AclPublicRead, ]); $resp = $obsClient->getBucketAcl ([ 'Bucket' => $bucketName ]); printf ("Getting bucket ACL:%s\n\n", json_encode($resp -> toArray())); printf ("Setting bucket ACL to ". ObsClient::AclPrivate. "\n\n"); $obsClient->setBucketAcl ([ 'Bucket' => $bucketName, 'ACL' => ObsClient::AclPrivate, ]); $resp = $obsClient->getBucketAcl ([ 'Bucket' => $bucketName ]); printf ("Getting bucket ACL:%s\n\n", json_encode($resp -> toArray())); return $resp ['Owner'] ['ID']; } function doBucketCorsOperation() { global $obsClient; global $bucketName; printf ("Setting bucket CORS\n\n"); $obsClient->setBucketCors ( [ 'Bucket' => $bucketName, 'CorsRule' => [ [ 'AllowedMethod' => ['HEAD', 'GET', 'PUT'], 'AllowedOrigin' => ['http://www.a.com', 'http://www.b.com'], 'AllowedHeader'=> ['Authorization'], 'ExposeHeaders' => ['x-obs-test1', 'x-obs-test2'], 'MaxAgeSeconds' => 100 ] ] ] ); printf ("Getting bucket CORS:%s\n\n", json_encode($obsClient-> getBucketCors(['Bucket' => $bucketName])-> toArray())); } function optionsBucket() { global $obsClient; global $bucketName; $resp = $obsClient->optionsBucket([ 'Bucket'=>$bucketName, 'Origin'=>'http://www.a.com', 'AccessControlRequestMethods' => ['PUT'], 'AccessControlRequestHeaders'=> ['Authorization'] ]); printf ("Options bucket: %s\n\n", json_encode($resp -> toArray())); } function getBucketMetadata() { global $obsClient; global $bucketName; printf ("Getting bucket metadata\n\n"); $resp = $obsClient->getBucketMetadata ( [ "Bucket" => $bucketName, "Origin" => "http://www.a.com", "RequestHeader" => "Authorization" ] ); printf ( "\tHttpStatusCode:%s\n", $resp ['HttpStatusCode'] ); printf ( "\tStorageClass:%s\n", $resp ["StorageClass"] ); printf ( "\tAllowOrigin:%s\n", $resp ["AllowOrigin"] ); printf ( "\tMaxAgeSeconds:%s\n", $resp ["MaxAgeSeconds"] ); printf ( "\tExposeHeader:%s\n", $resp ["ExposeHeader"] ); printf ( "\tAllowHeader:%s\n", $resp ["AllowHeader"] ); printf ( "\tAllowMethod:%s\n", $resp ["AllowMethod"] ); printf ("Deleting bucket CORS\n\n"); $obsClient -> deleteBucketCors(['Bucket' => $bucketName]); } function doBucketLifecycleOperation() { global $obsClient; global $bucketName; $ruleId0 = "delete obsoleted files"; $matchPrefix0 = "obsoleted/"; $ruleId1 = "delete temporary files"; $matchPrefix1 = "temporary/"; $ruleId2 = "delete temp files"; $matchPrefix2 = "temp/"; printf ("Setting bucket lifecycle\n\n"); $obsClient->setBucketLifecycleConfiguration ( [ 'Bucket' => $bucketName, 'Rules' => [ [ 'ID' => $ruleId0, 'Prefix' => $matchPrefix0, 'Status' => 'Enabled', 'Expiration'=> ['Days'=>5] ], [ 'ID' => $ruleId1, 'Prefix' => $matchPrefix1, 'Status' => 'Enabled', 'Expiration' => ['Date' => '2017-12-31T00:00:00Z'] ], [ 'ID' => $ruleId2, 'Prefix' => $matchPrefix2, 'Status' => 'Enabled', 'NoncurrentVersionExpiration' => ['NoncurrentDays' => 10] ] ] ]); printf ("Getting bucket lifecycle\n\n"); $resp = $obsClient->getBucketLifecycleConfiguration ([ 'Bucket' => $bucketName ]); $i = 0; foreach ( $resp ['Rules'] as $rule ) { printf ( "\tRules[$i][Expiration][Date]:%s,Rules[$i][Expiration][Days]:%d\n", $rule ['Expiration'] ['Date'], $rule ['Expiration'] ['Days'] ); printf ( "\yRules[$i][NoncurrentVersionExpiration][NoncurrentDays]:%s\n", $rule ['NoncurrentVersionExpiration'] ['NoncurrentDays'] ); printf ( "\tRules[$i][ID]:%s,Rules[$i][Prefix]:%s,Rules[$i][Status]:%s\n", $rule ['ID'], $rule ['Prefix'], $rule ['Status'] ); $i ++; } printf ("Deleting bucket lifecycle\n\n"); $obsClient->deleteBucketLifecycleConfiguration (['Bucket' => $bucketName]); } function doBucketLoggingOperation($ownerId) { global $obsClient; global $bucketName; printf ("Setting bucket ACL, give the log-delivery group " . ObsClient::PermissionWrite ." and " .ObsClient::PermissionReadAcp ." permissions\n\n"); $obsClient->setBucketAcl ([ 'Bucket' => $bucketName, 'Owner' => [ 'ID' => $ownerId ], 'Grants' => [ [ 'Grantee' => [ 'URI' => ObsClient::GroupLogDelivery, 'Type' => 'Group' ], 'Permission' => ObsClient::PermissionWrite ], [ 'Grantee' => [ 'URI' => ObsClient::GroupLogDelivery, 'Type' => 'Group' ], 'Permission' => ObsClient::PermissionReadAcp ], ] ]); printf ("Setting bucket logging\n\n"); $targetBucket = $bucketName; $targetPrefix = 'log-'; $obsClient->setBucketLoggingConfiguration ( [ 'Bucket' => $bucketName, 'LoggingEnabled' => [ 'TargetBucket' => $targetBucket, 'TargetPrefix' => $targetPrefix, 'TargetGrants' => [ [ 'Grantee' => [ 'URI' => ObsClient::GroupAuthenticatedUsers, 'Type' => 'Group' ], 'Permission' => ObsClient::PermissionRead ] ] ] ]); printf ("Getting bucket logging\n"); $resp = $obsClient->getBucketLoggingConfiguration ([ 'Bucket' => $bucketName ]); printf ("\tTarget bucket=%s, target prefix=%s\n", $resp ['LoggingEnabled'] ['TargetBucket'], $resp ['LoggingEnabled'] ['TargetPrefix'] ); printf("\tTargetGrants=%s\n\n", json_encode($resp ['LoggingEnabled'] ['TargetGrants'])); printf ("Deletting bucket logging\n"); $obsClient->setBucketLoggingConfiguration ( [ 'Bucket' => $bucketName ]); } function doBucketWebsiteOperation() { global $obsClient; global $bucketName; printf ("Setting bucket website\n\n"); $obsClient->setBucketWebsiteConfiguration ([ 'Bucket' => $bucketName, 'IndexDocument' => [ 'Suffix' => 'index.html' ], 'ErrorDocument' => [ 'Key' => 'error.html' ] ]); printf ("Getting bucket website\n"); $resp = $obsClient->GetBucketWebsiteConfiguration ( [ 'Bucket' => $bucketName ]); printf ("\tIndex document=%s, error document=%s\n\n", $resp ['IndexDocument'] ['Suffix'], $resp ['ErrorDocument'] ['Key']); printf ("Deletting bucket website\n"); $obsClient->deleteBucketWebsiteConfiguration ([ 'Bucket' => $bucketName ]); } function doBucketTaggingOperation() { global $obsClient; global $bucketName; printf ("Setting bucket tagging\n\n"); $obsClient -> setBucketTagging([ 'Bucket' => $bucketName, 'TagSet' => [ [ 'Key' => 'testKey1', 'Value' => 'testValue1' ], [ 'Key' => 'testKey2', 'Value' => 'testValue2' ] ] ]); printf ("Getting bucket tagging\n"); $resp = $obsClient -> getBucketTagging(['Bucket' => $bucketName]); printf ("\t%s\n\n", json_encode($resp->toArray())); printf ("Deletting bucket tagging\n\n"); $obsClient -> deleteBucketTagging(['Bucket' => $bucketName]); } function deleteBucket() { global $obsClient; global $bucketName; $resp = $obsClient->deleteBucket ([ 'Bucket' => $bucketName ] ); printf("Deleting bucket %s successfully!\n\n", $bucketName); printf("HttpStatusCode:%s\n\n", $resp ['HttpStatusCode']); }