2016-07-29 53 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在我的列表生成脚本。

我的不好!