我试图在cfn-init命令中运行脚本,但该脚本一直超时。 运行startup-script.sh时我在做什么错了?
"WebServerInstance" : {
"Type" : "AWS::EC2::Instance",
"DependsOn" : "AttachGateway",
"Metadata" : {
"Comment" : "Install a simple application",
"AWS::CloudFormation::Init" : {
"config" : {
"files": {
"/home/ec2-user/startup_script.sh": {
"content": {
"Fn::Join": [
"",
[
"#!/bin/bash\n",
"aws s3 cp s3://server-assets/startserver.jar . --region=ap-northeast-1\n",
"aws s3 cp s3://server-assets/site-home-sprint2.jar . --region=ap-northeast-1\n",
"java -jar startserver.jar\n",
"java -jar site-home-sprint2.jar --spring.datasource.password=`< password.txt` --spring.datasource.username=`< username.txt` --spring.datasource.url=`<db_url.txt`\n"
]
]
},
"mode": "000755"
}
},
"commands": {
"start_server": {
"command": "./startup_script.sh",
"cwd": "~",
}
}
}
}
},
文件部分工作正常,可以创建文件,但是在运行命令时超时。 执行Shell脚本的正确方法是什么?
答案 0 :(得分:0)
您可以跟踪 /var/log/cfn-init.log
中的日志并在运行脚本时检测问题。
Cloudformation Init 中的命令默认作为 sudo user
运行。如果您的脚本驻留在 /home/ec2-user/
中并且您尝试从 '~' (i.e. /root)
运行脚本,可能会出现问题。
请在(/home/ec2-user)
中给出绝对路径cwd
。它将解决您的顾虑。
但是,只能从日志中获取确切的问题。
答案 1 :(得分:-1)
通常,除非另有说明,否则初始化脚本由root执行。您可以在运行启动脚本时尝试给出完整路径吗?您可以尝试cloudkast。它是一个在线cloudformation模板生成器。使创建aws :: cloudformation :: init之类的对象更加容易。