Google 存储 - 动态更改单个对象的 ACL (PHP)
Google Storage - dynamically change ACL on single object (PHP)
我基本上需要通过添加或删除 allUsers 实体来更新 ACL。
我有 PHP 库,我现在正在做的是:
$storage = new StorageClient([
'projectId' => "xxxxx",
'keyFilePath' => mykey,
]);
$bucket = $storage->bucket('mybucket');
$acl = $bucket->acl('objectAccessControls', 'path/file/on/bucket');
if(add){
$acl->add('allUsers', 'READER');
}else{
$acl->delete('allUsers');
}
使用此代码实际上更改了所有存储桶配置,而不仅仅是文件。
如何正确指定特定文件的路径并仅更改 path/file/on/bucket 上的权限?我使用了错误的功能?
这是我正在使用的文档
https://googleapis.github.io/google-cloud-php/#/docs/google-cloud/v0.90.0/storage/acl
这种情况如果加上:
这是其他情况:
更新 1:
使用这个删除似乎有效 -> https://cloud.google.com/storage/docs/json_api/v1/objectAccessControls/delete
试图将此处列出的参数包含到我所做的调用中,如下所示:
$options = ['object' => 'path/obj'];
$acl->delete('allUsers', $options)
还是不行
其实我已经用Google_Service
解决了
$client = new Google_Client();
$client->setApplicationName('GoogleBuck/0.1');
$client->useApplicationDefaultCredentials(); // app engine env
$client->addScope('https://www.googleapis.com/auth/devstorage.full_control');
$storage = new Google_Service_Storage($client);
$acl = new Google_Service_Storage_ObjectAccessControl($client);
$acl->setEntity('allUsers');
$acl->setRole('READER');
$acl->setBucket($bucketName);
$acl->setObject($objectName);
添加
$response = $storage->objectAccessControls->insert($bucketName, $objectName, $acl);
删除
$response = $storage->objectAccessControls->delete($bucketName, $objectName, 'allUsers');
我基本上需要通过添加或删除 allUsers 实体来更新 ACL。
我有 PHP 库,我现在正在做的是:
$storage = new StorageClient([
'projectId' => "xxxxx",
'keyFilePath' => mykey,
]);
$bucket = $storage->bucket('mybucket');
$acl = $bucket->acl('objectAccessControls', 'path/file/on/bucket');
if(add){
$acl->add('allUsers', 'READER');
}else{
$acl->delete('allUsers');
}
使用此代码实际上更改了所有存储桶配置,而不仅仅是文件。
如何正确指定特定文件的路径并仅更改 path/file/on/bucket 上的权限?我使用了错误的功能?
这是我正在使用的文档 https://googleapis.github.io/google-cloud-php/#/docs/google-cloud/v0.90.0/storage/acl
这种情况如果加上:
这是其他情况:
更新 1: 使用这个删除似乎有效 -> https://cloud.google.com/storage/docs/json_api/v1/objectAccessControls/delete
试图将此处列出的参数包含到我所做的调用中,如下所示:
$options = ['object' => 'path/obj'];
$acl->delete('allUsers', $options)
还是不行
其实我已经用Google_Service
解决了 $client = new Google_Client();
$client->setApplicationName('GoogleBuck/0.1');
$client->useApplicationDefaultCredentials(); // app engine env
$client->addScope('https://www.googleapis.com/auth/devstorage.full_control');
$storage = new Google_Service_Storage($client);
$acl = new Google_Service_Storage_ObjectAccessControl($client);
$acl->setEntity('allUsers');
$acl->setRole('READER');
$acl->setBucket($bucketName);
$acl->setObject($objectName);
添加
$response = $storage->objectAccessControls->insert($bucketName, $objectName, $acl);
删除
$response = $storage->objectAccessControls->delete($bucketName, $objectName, 'allUsers');