首页 文章

AWS S3无法对一个文件执行任何操作

提问于
浏览
0

我在尝试使用以下名称从我的s3存储桶中删除文件时遇到问题:Patrick bla bla 1 PV @ 05-06-2018-19:42:01.jpg

如果我尝试通过s3控制台重命名它,它只是说操作失败了 . 如果我尝试删除它,操作将“成功”但文件仍将存在 .

我已经尝试通过aws cli删除它,当列出我得到它的对象时

{
        "LastModified": "2018-06-05T18:42:05.000Z",
        "ETag": "\"b67gcb5f8166cab8145157aa565602ab\"",
        "StorageClass": "STANDARD",
        "Key": "test/\bPatrick bla bla 1 PV@05-06-2018-19:42:01.jpg",
        "Owner": {
            "DisplayName": "dev",
            "ID": "bd65671179435c59d01dcdeag231786bbf6088cb1ca4881adf3f5e17ea7e0d68"
        },
        "Size": 1247277
    },

但是,如果我试图删除或删除它,cli将无法找到它 .

s3api head-object --bucket mybucket --key "test/\bPatrick bla bla 1 PV@05-06-2018-20:09:37.jpg"

An error occurred (404) when calling the HeadObject operation: Not Found

有没有办法从文件夹中删除,重命名或只是移动此图像?

问候

1 回答

  • 2

    看起来您的对象的键以退格(\ b)字符开头 . 我确信有一种方法可以使用awscli来管理它,但我还没有弄清楚它到底是什么 .

    这是一个适合我的Python脚本:

    import boto3 
    s3 = boto3.client('s3')
    Bucket ='avondhupress'
    Key='test/\bPatrick bla bla 1 PV@05-06-2018-19:42:01.jpg'
    s3.delete_object(Bucket=bucket, Key=key)
    

    或者node.js中的等价物:

    const aws = require('aws-sdk');
    const s3 = new aws.S3({ region: 'us-east-1', signatureVersion: 'v4' });
    
    const params = {
      Bucket: 'avondhupress',
      Key: '\bPatrick bla bla 1 PV@05-06-2018-19:42:01.jpg',
    };
    
    s3.deleteObject(params, (err, data) => {
      if (err) console.error(err, err.stack);
    });
    

相关问题