2016-07-29 103 views
1

我試圖恢復使用AWS-CLI如下從冰川對象:AWS S3 - AWS-CLI s3api不接受參數在bash變量

aws s3api restore-object --restore-request Days=7 --bucket mybucket --key some-file.ext 

這工作不錯。不過,我想通過腳本來完成這一堆文件,但如果你可以試試:

$ export I="some-file.ext" 
$ aws s3api restore-object --restore-request Days=7 --bucket mybucket --key $I 

AWS-CLI返回此錯誤:

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

無論什麼$I包含,如果我manualy拿值,並傳遞到AWS-CLI它的工作原理:

$ echo $I 
some-other-file.ext 
$ aws s3api restore-object --restore-request Days=7 --bucket mybucket --key some-other-file.ext 

如果我重複操作過相同的密鑰,它返回一個確認:

$ aws s3api restore-object --restore-request Days=7 --bucket mybucket --key some-other-file.ext 

An error occurred (RestoreAlreadyInProgress) when calling the RestoreObject operation: Object restore is already in progress

我的AWS-CLI的版本如下:

$ aws --version 
aws-cli/1.10.50 Python/2.7.6 Linux/3.13.0-92-generic botocore/1.4.40 

我如何可以通過使用bash變量-key參數?其他建議? xargs的也沒有,雖然與另一個錯誤:

$ {echo list of files one per line} | xargs -L 1 aws s3api restore-object --restore-request Days=7 --bucket mybucket --key 

An error occurred (404) when calling the RestoreObject operation: Not Found xargs: aws: exited with status 255; aborting

甚至沒有-L 1 xargs的打印由,分離,文件列表:

xargs: aws: exited with status 255; aborting

即使試圖this answer失敗爲404像上面。

關於如何將「腳本 - 時尚」中的文件路徑傳遞給aws-cli?

回答

1

好吧,在我喝了一杯咖啡後,我發現在生成文件列表的同時,grep命令給輸出着色,所以在匹配之前和之後插入一些顏色代碼。

我沒有看到這些顏色代碼,因爲我的終端配置。使用hexdump(或其他編輯器)檢查文件很明顯顏色代碼與路徑混淆。

解決方案:grep --color=no在我的列表生成腳本。

我的不好!