我有一个本地运行的Windows批处理脚本,当我手动运行时,它也可以在EC2上运行。但是,当我尝试通过CLI启动ec2并且我在user-data参数中输入脚本时,它不会运行。
这是剧本:
for /l %%x in (20171101,1,20171102) do (
start "S3Copy" C:\Progra~1\Amazon\AWSCLI\aws s3 cp
s3://bucket1/%%x s3://bucket2/%%x --recursive
)
echo waiting
:loop
timeout 1 >nul
tasklist /v |find "S3Copy" >nul && goto :loop
echo all of them are finished
shutdown.exe /s /t 00
当我将其传递给UserData时,我用:
包围它[script] [/ script](尖括号)
然而它不会像这样运行。
正如我所说,我可以登录到已启动的相同Ec2,我可以手动运行脚本并按预期工作。
我会说,当我手动登录时,我使用特定用户,当我从cli启动时,它使用特定的密钥文件,该文件可以使用不同的用户,但是.aws配置是为所有用户设置的AMI。
这里可能缺少什么?
答案 0 :(得分:0)
您使用的是IAM角色还是IAM用户?使用角色更安全,它可能会解决您的问题:http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html
另外,请看一下 - 与Linux相比,Windows还有一些细微差别:http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2-windows-user-data.html