AWS S3 Ничего не могу сделать с одним файлом - PullRequest
0 голосов
/ 06 июня 2018

У меня возникают проблемы при попытке удалить файл из моей корзины 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
    },

Но если я попытаюсь удалить или переместить его в заголовок, он не будет найден.

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 Ответ

0 голосов
/ 06 июня 2018

Похоже, ключ вашего объекта начинается с символа возврата (\ 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);
});
...