2011-11-30 69 views
1

我刚刚开始使用S3。我不小心做了一个包含坏字符的密钥,现在我不能列出该文件夹的内容,也不能删除那个坏密钥。 (我已经添加了检查,以确保我不再这样做)。无法删除包含错误字符的Amazon S3密钥

我原本是在2008年使用一个旧的“S3”python模块。现在我已经切换到boto-2.0了,但我仍然无法删除它。我在网上做了相当多的研究,看来问题是我有一个无效的XML字符,所以它似乎是最低级别的问题,到目前为止还没有API帮助过。

我终于联系了亚马逊,他们说从http://aws.amazon.com/code/128使用“s3-curl.pl”。我下载了它,这是我的钥匙:

<Key>info/&#x1b;[01</Key> 

我觉得我是在做一个快速的bash for循环在当时的一些文件,我有“LSCOLORS”成立,所以发生这种情况。

我试图 ./s3curl.pl --id <myID> --key <myKEY> -- -X DELETE https://mybucket.s3.amazonaws.com/info/&#x1b;[01

(也试图把URL中的单/双引号,并且还试图逃跑的“[”)。

没有引号的URL,它挂起。用引号,我得到了“curl:(3)[globbing]错误:在pos 50之后的范围不规范”。我编辑了s3-curl.pl来做curl --globoff,但仍然出现这个错误。

我将不胜感激任何帮助。

+1

如果您尝试通过https://console.aws.amazon.com/s3/从AWS控制台访问它,会发生什么情况? –

+0

如果我尝试查看文件夹或尝试删除文件夹,AWS控制台界面会显示“发生错误”。 –

+0

非常有趣... –

回答

5

您可以使用here的s3cmd工具。你首先需要运行

s3cmd fixbucket <bucket name that contains bad file>. 

然后,您可以使用

s3cmd del <bucket>/<file> 
0

在我的情况有在关键的换行符删除文件(但所发生..)。我能够与AWS CLI这样的修正:

aws cli rm "s3://my_bucket/Icon"$'\r' 

我也有版本控制启用,因此我还需要做到这一点,对于所有版本(版本IDS在UI可见启用版本时查看):

aws s3api delete-object --bucket my_bucket --key "Icon"$'\r' --version-id <version_id>