如何使用公共读取权限在oracle云上创建bucket



我想通过PHP在oracle云服务上创建一个具有公共读取权限的bucket。我能够使用AWS兼容性方法创建bucket:

require dirname( __DIR__ ).'/composer/vendor/autoload.php';
use AwsS3S3Client;
use AwsExceptionAwsException;
use AwsS3ExceptionS3Exception;
$s3 = new AwsS3S3Client(array(
'credentials' => [
'key' => 'access key',
'secret' => 'secret key',
],
'version' => 'latest',
'region' => 'us-ashburn-1',
'bucket_endpoint' => true,
'endpoint' => 'https://namespace.compat.objectstorage.us-ashburn-1.oraclecloud.com/test-bucket',
));
$s3->getEndpoint();
$s3->putObject([ 'Bucket' => 'test-bucket', 'Key' => 'test-bucket' ]);

但这创造了一个私人水桶。

我已尝试在正文中发送权限:


$mRes = $s3->putObject([ 'Bucket' => $pa_sName, 'Key' => $pa_sName, 'Body' => json_encode( [ 'publicAccessType' => 'ObjectRead' ] ) ]);

但它最终会出现MalformedXML错误,可能是因为该请求不需要任何正文负载。

AWS兼容性仅包含PUT Bucket:https://docs.oracle.com/en-us/iaas/api/#/en/s3objectstorage/20160918/Bucket/PutBucket其不允许/指定访问类型参数。

POST方法Create Bucket确实指定了它:https://docs.oracle.com/en-us/iaas/api/#/en/objectstorage/20160918/Bucket/CreateBucket在这里https://docs.oracle.com/en-us/iaas/api/#/en/objectstorage/20160918/datatypes/CreateBucketDetails

但我没有找到如何通过AWS兼容性进行POST请求的方法。

有人知道怎么做吗?

谢谢

您想在本机OCI Beta PHP SDK中尝试一下这个用例吗?请在oci_sdk_team_ww_grp@oracle.com我很高兴与大家分享带有说明的测试版。

谢谢。

最新更新