【发布时间】:2014-07-23 19:38:40
【问题描述】:
我有一个批处理文件C:\upload_to_s3.bat。在这个文件中,有一行:
aws s3 sync D:\S3\batch1\ s3://MyBucket/batch1 --exclude *.bat
我有 Windows 任务计划程序“S3 Hourly Sync”,它每小时运行一次以触发运行C:\upload_to_s3.bat。但是这个命令没有做任何事情 - 文件上传从未发生过。
如果我双击C:\upload_to_s3.bat,它会完美运行。
这是 Windows 2008 标准服务器。我已经安装了 AWS CLI 并使用命令“aws configure”进行了配置,并输入了我的访问密钥和密钥。这就是为什么如果我双击批处理文件它就会运行的原因。
Windows 任务计划程序以“[MyServer]/Administrator”帐户运行。
那么为什么“aws s3 sync”命令在任务调度器触发时不起作用?
是否需要在“aws s3 sync”之前添加一行来先设置凭据?如果有,怎么做?
谢谢!
【问题讨论】:
-
您在运行
aws configure时是否以[MyServer]\Administrator 身份登录?aws configure命令被记录为使用~/.aws/config的配置文件(在 Windows 上,我相信这映射到“%USERPROFILE%\.aws\config”)。批处理文件用户是否存在该文件? -
是的,我以管理员身份登录,我可以看到文件 C:\Users\Administrator\.aws\config。还有其他想法吗?请随时提出问题 - 其中一个可能只是闪闪发光。
-
批处理文件有输出吗?如果没有,您可以将输出捕获到文件中吗?您可能会运行另一个命令,例如列出 S3 中的文件,您可以运行该命令来安全地检查权限情况。
-
我将新行修改为 "aws s3 sync D:\S3\batch1\ s3://MyBucket/batch1 --exclude *.bat > D:\logs\s3.txt" 输出文件为空 - 实际上甚至没有创建输出文件。执行了此行之前和之后的命令 - 这意味着任务调度程序工作正常。 “aws s3”行是唯一的问题。更多想法?
-
可能是用户帐户控制阻止了本地文件访问?我建议尝试将本地问题与 AWS 问题分开,我会尝试通过在批处理文件中添加两行来捕获文本输出 - 1)
type "%USERPROFILE%\.aws\config"以确保批处理文件可以读取凭据,以及 2) @987654332 @ 作为使用 AWS 凭据而不做任何事情的最小命令。两者都应该产生输出,错误与否。
标签: windows batch-file amazon-web-services amazon-s3