AWS S3无法通过PHP SDK删除存储桶中的对象

奥古兹·吉拉尔

我正在使用适用于PHP的AWS开发工具包(Laravel),并且正在尝试删除包含所有对象的S3存储桶。这是我的代码:

public function deleteBucket($syndcateid){
    $s3client = AWS::createClient('s3');
    $bucket = env('S3_BUCKET')."/syndcate-uploads/syndcate-".$syndcateid;
    $listObjectsParams = ['Bucket' => $bucket];
    $batchDelete = BatchDelete::fromListObjects($s3client, $listObjectsParams);
    $batchDelete->delete();
    $s3client->deleteBucket(array('Bucket' => $bucket));
    $s3client->waitUntil('BucketNotExists', array('Bucket' => $bucket));
}

当我运行此代码时,出现错误:

在\“ https://s3-us-west-2.amazonaws.com/syndcate-media%2Fsyndcate-uploads%2Fsyndcate-32?delimiter=%2F&encoding-type=url \”上执行\“ ListObjects \”时出错AWS HTTP错误:客户端错误:GET https://s3-us-west-2.amazonaws.com/syndcate-media%2Fsyndcate-uploads%2Fsyndcate-32?delimiter=%2F&encoding-type=url导致403 Forbidden响应:\ n \ nSignatureDoesNotMatch我们计算的请求签名(被截断了...)\ n SignatureDoesNotMatch(客户端):我们计算出的请求签名与您提供的签名不匹配。检查您的密钥和签名方法。-\ nSignatureDoesNotMatch我们计算出的请求签名与您提供的签名不匹配。检查您的密钥和签名方法。

基本上,这是一个SignatureDoesNotMatch错误,其发生的原因是,URL中的斜杠没有被解码,因为请求的URL(https://s3-us-west-2.amazonaws.com/syndcate-media%2Fsyndcate-uploads%2Fsyndcate-32)似乎具有%2F而不是斜杠。

我尝试使用根存储桶(不使用斜线),它可以正常工作。

知道如何正确获取存储桶名称吗?

奥古兹·吉拉尔

知道了!

我在想什么,桶仅仅env('S3_BUCKET')是,这才是根源。但是S3中没有文件夹,有一个类似文件夹的结构使分类更加容易。所有文件都放在一个位置,文件名具有路径作为前缀(即/path/to/folder/image.jpg)。

所以我要的不是删除存储桶,而是删除一个文件夹。但是由于没有文件夹,我只想删除带有前缀的加星号的文件,例如path/to/folder/

无论如何,这是更新的代码:

public function deleteBucket($syndcateid){
        $s3client = AWS::createClient('s3');
        $startsWith = "syndcate-uploads/syndcate-".$syndcateid."/";
        $listObjectsParams = ['Bucket' => env('S3_BUCKET'), 'Prefix'=>$startsWith, 'Delimiter'=>'/'];
        $batchDelete = BatchDelete::fromListObjects($s3client, $listObjectsParams);
        $batchDelete->delete();
    }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从 AWS S3 存储桶中删除对象(不在代码中)

来自分类Dev

如何删除aws s3存储桶中具有相同键的多个对象

来自分类Dev

AWS S3 存储桶中对象更新的问题

来自分类Dev

使用PHP SDK列出AWS S3存储桶

来自分类Dev

无法使用ruby aws-sdk v2在S3中创建存储桶

来自分类Dev

AWS:无法通过s3存储桶策略授予s3访问权限

来自分类Dev

AWS S3 版本控制开启:我可以从我的存储桶中删除所有对象吗?

来自分类Dev

如何使用AWS C ++ SDK解析区域,存储桶和对象键的S3 URI?

来自分类Dev

删除存储桶AWS中的对象

来自分类Dev

AWS S3:无法从具有公共访问权限的存储桶中获取非拥有对象(通过非身份验证方式)

来自分类Dev

AWS S3 + Ruby SDK:如何列出存储桶

来自分类Dev

通过CloudFormation的AWS Lambda S3存储桶通知

来自分类Dev

如何编辑AWS S3存储桶对象?

来自分类Dev

AWS S3错误的存储桶对象

来自分类Dev

如何使用CLI在AWS S3中删除版本存储桶?

来自分类Dev

对象存在于Node.JS的AWS S3存储桶中

来自分类Dev

AWS S3存储桶中对象的数量或大小是否会对性能产生影响

来自分类Dev

aws s3 存储桶中的对象级过期有什么办法吗?

来自分类Dev

无法使用Boto连接AWS S3存储桶

来自分类Dev

无法使用Boto连接AWS S3存储桶

来自分类Dev

将 JSON 文件从 node.js 中的 aws-sdk 上传到 aws s3 存储桶

来自分类Dev

通过PUT触发到单独账户中的s3存储桶的AWS Lambda

来自分类Dev

检查 AWS S3 存储桶中的文件数

来自分类Dev

AWS S3存储桶问题

来自分类Dev

AWS S3 存储桶策略

来自分类Dev

如何通过k8s批注更新AWS NLB设置以将日志存储在S3存储桶中

来自分类Dev

通过AWS PHP SDK向IAM用户授予对AWS S3文件的权限

来自分类Dev

适用于Get对象的AWS S3存储桶策略,策略生成器Json代码中的错误

来自分类Dev

AWS S3存储桶日志与AWS CloudTrail

Related 相关文章

  1. 1

    从 AWS S3 存储桶中删除对象(不在代码中)

  2. 2

    如何删除aws s3存储桶中具有相同键的多个对象

  3. 3

    AWS S3 存储桶中对象更新的问题

  4. 4

    使用PHP SDK列出AWS S3存储桶

  5. 5

    无法使用ruby aws-sdk v2在S3中创建存储桶

  6. 6

    AWS:无法通过s3存储桶策略授予s3访问权限

  7. 7

    AWS S3 版本控制开启:我可以从我的存储桶中删除所有对象吗?

  8. 8

    如何使用AWS C ++ SDK解析区域,存储桶和对象键的S3 URI?

  9. 9

    删除存储桶AWS中的对象

  10. 10

    AWS S3:无法从具有公共访问权限的存储桶中获取非拥有对象(通过非身份验证方式)

  11. 11

    AWS S3 + Ruby SDK:如何列出存储桶

  12. 12

    通过CloudFormation的AWS Lambda S3存储桶通知

  13. 13

    如何编辑AWS S3存储桶对象?

  14. 14

    AWS S3错误的存储桶对象

  15. 15

    如何使用CLI在AWS S3中删除版本存储桶?

  16. 16

    对象存在于Node.JS的AWS S3存储桶中

  17. 17

    AWS S3存储桶中对象的数量或大小是否会对性能产生影响

  18. 18

    aws s3 存储桶中的对象级过期有什么办法吗?

  19. 19

    无法使用Boto连接AWS S3存储桶

  20. 20

    无法使用Boto连接AWS S3存储桶

  21. 21

    将 JSON 文件从 node.js 中的 aws-sdk 上传到 aws s3 存储桶

  22. 22

    通过PUT触发到单独账户中的s3存储桶的AWS Lambda

  23. 23

    检查 AWS S3 存储桶中的文件数

  24. 24

    AWS S3存储桶问题

  25. 25

    AWS S3 存储桶策略

  26. 26

    如何通过k8s批注更新AWS NLB设置以将日志存储在S3存储桶中

  27. 27

    通过AWS PHP SDK向IAM用户授予对AWS S3文件的权限

  28. 28

    适用于Get对象的AWS S3存储桶策略,策略生成器Json代码中的错误

  29. 29

    AWS S3存储桶日志与AWS CloudTrail

热门标签

归档