AWS WaitCondition等待提供

时间:2017-02-19 15:54:14

标签: amazon-web-services amazon-ec2 amazon-cloudformation aws-cli

我正在尝试学习使用senario的Cloudformation,我需要在配置一个EC2后启动第二个EC2实例,并且很好。

这就是我在Instance one的UserData中所拥有的

"#!/bin/bash\n",
"#############################################################################################\n",
"sudo add-apt-repository ppa:fkrull/deadsnakes\n",
"sudo apt-get update\n",
"curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash -\n",
"sudo apt-get install build-essential libssl-dev python2.7 python-setuptools -y\n",
"#############################################################################################\n",
"Install Easy Install",
"#############################################################################################\n",
"easy_install https://s3.amazonaws.com/cloudformation-examples/aws-cfn-bootstrap-latest.tar.gz\n",
"#############################################################################################\n",
"#############################################################################################\n",
"GIT LFS Repo",
"#############################################################################################\n",
"curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash\n",
"#############################################################################################\n",

"cfn-init",
"         --stack ",
{
"Ref": "AWS::StackName"
},
"         --resource UI",
"         --configsets InstallAndRun ",
"         --region ",
{
"Ref": "AWS::Region"
},
"\n",

"#############################################################################################\n",
"# Signal the status from cfn-init\n",
"cfn-signal -e 0 ",
"         --stack ",
{
"Ref": "AWS::StackName"
},
"         --resource UI",
"         --region ",
{
"Ref": "AWS::Region"
},
" ",
{
"Ref": "WaitHandleUIConfig"
},
"\n"

我有一个WaitCondition,我认为这是用来做这个的

 "WaitHandleUIConfig" : {
      "Type" : "AWS::CloudFormation::WaitConditionHandle",
      "Properties" : {}
    },

    "WaitConditionUIConfig" : {
      "Type" : "AWS::CloudFormation::WaitCondition",
      "DependsOn" : "UI",
      "Properties" : {
        "Handle" : { "Ref" : "WaitHandleUIConfig" },
        "Timeout" : "500"
      }
    }

在Instance中,我在第二个实例中使用DependsOn等待第一个实例。

"Service": {
  "Type": "AWS::EC2::Instance",
  "Properties": {
  },
  "Metadata": {
    "AWS::CloudFormation::Designer": {
      "id": "1ba546d0-2bad-4b68-af47-6e35159290ca"
    },
  },
  "DependsOn":"WaitConditionUIConfig"
}

这不起作用。我一直收到错误

WaitCondition超时。期待1

时收到0条件

任何帮助都将不胜感激。

由于

2 个答案:

答案 0 :(得分:0)

在句柄周围加上引号

更改此

" ",
{
"Ref": "WaitHandleUIConfig"
},
"\n"

到这个

" \"",
{
"Ref": "WaitHandleUIConfig"
},
"\"\n"

答案 1 :(得分:0)

cfn-signal命令中删除--stack--resource--region。这些仅在“资源信令”时使用,而不是在使用等待条件句柄发信号时使用。 (您可能还需要添加--id选项,但文档说这不是必需的。)

要进一步调试,请检查EC2实例上的/var/log/cloud-init-output.log文件,以查看可能无法成功将信号发送到等待条件的任何进一步的cloud-init错误。

您可能还想对说明"Install Easy Install","GIT LFS Repo",进行评论和换行,例如"# Install Easy Install\n",,这些语法问题不应该导致您的脚本失败,但会输出& #39;命令未找到'错误会显示在您的日志中。