我尝试在 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 脚本的正确方法是什么?
最佳答案
您可以跟踪 /var/log/cfn-init.log
中的日志并在运行脚本时检测问题。
Cloudformation Init 中的命令默认以 sudo 用户
身份运行。如果您的脚本驻留在 /home/ec2-user/
中,并且您尝试从 '~'(即/root)
运行脚本,则可能会出现问题.
请在cwd
中给出绝对路径(/home/ec2-user)
。它将解决您的担忧。
但是,只能从日志中获取确切的问题。
关于amazon-web-services - 在 CloudFormation cfn-init 中运行 shell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56557288/