在CloudFormation cfn-init

时间:2019-06-12 07:59:49

标签: amazon-web-services amazon-cloudformation

我试图在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脚本的正确方法是什么?

2 个答案:

答案 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之类的对象更加容易。