2011-11-30 82 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>