2016-08-17 108 views
0

我想使用AWS CLI从映像启动EC2实例我已经安装了Docker,然后为该实例提供一个脚本通过--user-data从码头集线器中拉出图像并运行该图像。我的AWS CLI命令启动实例,但看起来传递给--user-data的脚本从未运行。从AWS CLI启动EC2实例时未执行用户数据脚本

的CLI命令是:

aws ec2 run-instances --image-id ami-xxxxx --count 1 --instance-type t2.micro --key-name xxxxx --security-groups xxxxxxx --user-data file:///Users/xxxxxx/startlb.sh 

startlb.sh内容:

#!/bin/bash 
docker pull xxxxxx && docker run -p 9000:9000 -p 9090:9090 -d xxxxxxx go run lbserver.go > /home/ec2-user/startup.log 

我重定向命令泊坞窗进入startup.log的输出,以查看是否发生任何标准输出。当我登录到实例时,日志文件未被创建,导致我相信user-data脚本从不运行。 docker imagesdocker ps都显示实例上没有图像或容器。

该命令成功启动实例,只是不需要拖动和运行docker容器(默认情况下,Docker在实例上运行,因此无需启动它)。如果我将脚本的内容粘贴到终端并执行它,则会启动实例,然后拉动容器并运行该容器,因此脚本没有出现任何问题。

+0

当您通过AWS Web控制台查看实例的用户数据时,用户数据内容是否正确显示? AMI是否实际安装了cloud-init服务? –

+0

这个文件startlb.sh的权限是什么? – error2007s

+0

检查cloud-init日志(可能是'/ var/log/cloud-init *')以查看脚本是否运行,但由于某种原因失败。 –

回答

1

原来,它毕竟是在工作。我没有足够的时间让docker pull下载所有内容。几分钟后检查日志文件,图像和容器的存在表明一切都在那里。