amazon-web-services - AWS S3 不能对一个文件做任何事情
问题描述
我在尝试从我的 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
有没有办法从文件夹中删除、重命名或只是移动这个图像?
问候
解决方案
看起来您的对象的键以退格 (\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);
});
推荐阅读
- python - 如何根据列对 3D numpy 数组进行排序?
- graphviz - 排序子图中节点的重新排序 Graphviz
- javascript - 在多维数据集的 SQL 定义中使用上下文变量时,Cube.js 是否支持 preAggregations?
- javascript - 如何在 jQuery 中制作一个选择器来说明具有顺序编号的 id?
- javascript - 将tensorflow张量导入tensorflow js
- powerbi - 每日测量的总和
- excel - VBA:检查可选参数
- laravel - Laravel 中的每个模型都需要单独的控制器吗?
- reactjs - 您可以使用 IBM Cloud 创建 React Native 应用程序吗?
- sql - 将具有多个分隔符的 url 字符串拆分为多行