[英]Running a shell script in CloudFormation cfn-init
我試圖在 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 user
默認以sudo user
身份運行。 如果您的腳本駐留在/home/ec2-user/
並且您試圖從'~' (ie /root)
運行腳本,則可能存在問題。
請在cwd
給出絕對路徑(/home/ec2-user)
。 它會解決你的顧慮。
但是,確切的問題只能從日志中獲取。
通常 init 腳本由 root 執行,除非另有說明。 您可以嘗試在運行啟動腳本時提供完整路徑。 你可以試試cloudkast 。 它是一個在線 cloudformation 模板生成器。 更容易創建 aws::cloudformation::init 等對象。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.