Initial commit,修正
This commit is contained in:
+503
@@ -0,0 +1,503 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Copyright 2019 Huawei Technologies Co.,Ltd.
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use
|
||||
* this file except in compliance with the License. You may obtain a copy of the
|
||||
* License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software distributed
|
||||
* under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
|
||||
* CONDITIONS OF ANY KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* This sample demonstrates how to do bucket-related operations
|
||||
* (such as do bucket ACL/CORS/Lifecycle/Logging/Website/Location/Tagging/OPTIONS)
|
||||
* on OBS using the OBS SDK for PHP.
|
||||
*/
|
||||
if (file_exists ( 'vendor/autoload.php' )) {
|
||||
require 'vendor/autoload.php';
|
||||
} else {
|
||||
require '../vendor/autoload.php'; // sample env
|
||||
}
|
||||
|
||||
if (file_exists ( 'obs-autoloader.php' )) {
|
||||
require 'obs-autoloader.php';
|
||||
} else {
|
||||
require '../obs-autoloader.php'; // sample env
|
||||
}
|
||||
|
||||
use Obs\ObsClient;
|
||||
use Obs\ObsException;
|
||||
use function GuzzleHttp\json_encode;
|
||||
|
||||
$ak = '*** Provide your Access Key ***';
|
||||
|
||||
$sk = '*** Provide your Secret Key ***';
|
||||
|
||||
$endpoint = 'https://your-endpoint:443';
|
||||
|
||||
$bucketName = 'my-obs-bucket-demo';
|
||||
|
||||
|
||||
/*
|
||||
* Constructs a obs client instance with your account for accessing OBS
|
||||
*/
|
||||
$obsClient = ObsClient::factory ( [
|
||||
'key' => $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']);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user