[英]PHP S3 SDK upload object with versioning turned off
在瀏覽適用於PHP的Amazon S3 SDK時,在使用$this->s3Instance->putObject()
進行一些有趣的操作之后,我現在想刪除這些對象。
但是,當我運行$this->s3Instance->deleteObject()
,返回的消息是"DeleteMarker":true
,並且一些研究表明該對象具有適當的版本控制,因此我無法完全刪除它,而只能將其標記為刪除。
所以我的問題是,當我putObject()
可以將對象標記為沒有版本控制嗎? 我將這些對象放入的存儲桶將在父存儲桶中並啟用版本控制。 因此,假設父級存儲桶將所有內容排除在外。 我希望可以手動將對象的版本控制狀態設置為nope
。
如果不能,那么是否存在另一個使用deleteObject()
方法,如果將版本控制設置為true,則該方法實際上將從s3中刪除該對象?
基本思想是刪除對象的所有版本。 所以像這樣:
use Aws\S3\S3Client;
$bucket = 'the-bucket-name';
$keyname = 'the-file-or-object-name;
$s3 = new S3Client([
'version' => 'latest',
'region' => 'the-region-you-want'
]);
// get all of the versions for a particular bucket
$versions = $s3->listObjectVersions(['Bucket' => $bucket])
->getPath('Versions');
$s3->deleteObjects([
'Bucket' => $bucket,
'Delete' => [
'Objects' => array_map(function ($version) {
return [
'Key' => $version['Key'],
'VersionId' => $version['VersionId']
}, $versions),
],
]);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.