这是 AWS 的疏忽, 在日志文件名称中使用了 Windows 保留字符!当您执行该命令时,它将创建所有目录,但是名称中带有:: 的任何日志都无法下载。
问题在这里讨论:https://github.com/aws/aws-cli/issues/4543
非常沮丧,我想出了一个解决方法,即执行“DryRun”,它会打印预期的日志输出并将其移植到文本文件中,例如:
>aws s3 cp s3://config-bucket-7XXXXXXXXXXX3 c:\temp --recursive --dryrun > c:\temp\aScriptToDownloadFilesAndReplaceNames.txt
输出文件充满了这些 aws 日志条目,我们可以将其转换为 aws 脚本命令:
(试运行)下载:s3://config-bucket-7XXXXXXXXXXX3/AWSLogs/7XXXXXXXXXXX3/Config/ap-southeast-2/2019/10/1/ConfigHistory/7XXXXXXXXXXX3_Config_ap-southeast-2_ConfigHistory_AWS::RDS::DBInstance_20191001T103223Z_20191001T103223Z json.gz 到 \AWSLogs\7XXXXXXXXXXX3\Config\ap-southeast-2\2019\10\1\ConfigHistory\703014955993_Config_ap-southeast-2_ConfigHistory_AWS::RDS::DBInstance_20191001T103223Z_20191001T103223Z_1.json。 >
在 Notepad++ 或其他文本编辑器中,您将 (dryrun) download: 替换为 aws s3 cp
然后您将看到以下带有命令的行:aws s3 cp、Bucket 文件和本地文件路径。我们需要去掉to:
右侧本地文件路径中的
::
aws s3 cp s3://config-bucket-7XXXXXXXXXXX3/AWSLogs/7XXXXXXXXXXX3/Config/ap-southeast-2/2019/10/1/ConfigHistory/7XXXXXXXXXXX3_Config_ap-southeast-2_ConfigHistory_AWS::RDS::DBInstance_20191001T103223Z_20191001T103223Z_1.json.gz to AWSLogs\7XXXXXXXXXXX3\Config\ap-southeast-2\2019\10\1\ConfigHistory\7XXXXXXXXXXX3_Config_ap-southeast-2_ConfigHistory_AWS::RDS::DBInstance_20191001T103223Z_20191001T103223Z_1.json.gz
我们只能在本地路径中将 :: 替换为 -,而不是在 S3 Bucket 路径中使用正则表达式 (.*):: 删除末尾最后出现的字符每一行:
在这里我们可以看到我已经用连字符 $1- 替换了 ::'s,方法是点击两次“全部替换”:
接下来移除 to(忽略下图中的 | 光标图标,to 应替换为空)。
查找:json.gz to AWSLogs
替换:json.gz AWSLogs
最后选择所有行复制/粘贴到命令提示符以下载所有带有保留文件字符的文件!
更新:
如果您有 WSL(Windows 子系统 Linux),您应该能够下载文件,然后在复制到已安装的 Windows 文件夹系统之前发出简单的文件重命名替换 ::'s。