我正在尝试使用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?
答案 0 :(得分:1)
好吧,喝了几杯咖啡后,我回过头来发现,在生成文件列表时,grep
命令对输出着色,因此在匹配前后插入了一些颜色代码。
我没有看到这些颜色代码,因为我的终端配置。使用hexdump(或其他编辑器)检查文件很明显,颜色代码正在弄乱路径。
解决方案:我的列表生成脚本中的grep --color=no
。
我的坏!