AWS S3 - aws-cli s3api不接受bash变量中的参数

时间:2016-07-29 01:27:48

标签: amazon-web-services amazon-s3 aws-sdk amazon-glacier

我正在尝试使用aws-cli从冰川恢复对象,如下所示:

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返回此错误:

  

调用RestoreObject操作时发生错误(404):Not Found

无论$I包含什么,如果我手动取值并传递给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
  

调用RestoreObject操作时发生错误(RestoreAlreadyInProgress):对象还原已在进行中

我的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
  

调用RestoreObject操作时发生错误(404):未找到   xargs:aws:退出状态为255;中止

甚至没有-L 1 xargs打印由,分隔的文件列表,并且:

  

xargs:aws:退出状态为255;中止

即使尝试this answer,也会像上面那样404失败。

如何知道如何将“script-fashion”中的文件路径传递给aws-cli?

1 个答案:

答案 0 :(得分:1)

好吧,喝了几杯咖啡后,我回过头来发现,在生成文件列表时,grep命令对输出着色,因此在匹配前后插入了一些颜色代码。

我没有看到这些颜色代码,因为我的终端配置。使用hexdump(或其他编辑器)检查文件很明显,颜色代码正在弄乱路径。

解决方案:我的列表生成脚本中的grep --color=no

我的坏!