簡體   English   中英

在 CloudFormation cfn-init 中運行 shell 腳本

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM