【问题标题】:AWS WaitCondition Wait for provisionAWS WaitCondition 等待预置
【发布时间】:2017-07-08 20:01:12
【问题描述】:

我正在尝试学习 Cloudformation,但我遇到了一个场景,我需要在配置一个 EC2 之后启动第二个 EC2 实例并准备就绪。

这是我在实例一的用户数据中所拥有的

"#!/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"
      }
    }

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

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

这不起作用。我不断收到错误

WaitCondition 超时。预期 1 时收到 0 个条件

任何帮助将不胜感激。

谢谢

【问题讨论】:

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


    【解决方案1】:

    在句柄周围加上引号

    改变这个

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

    到这里

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

    【讨论】:

      【解决方案2】:

      从您的 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",,这些语法问题不应导致您的脚本失败,但会输出“找不到命令”错误以出现在你的日志。

      【讨论】:

        猜你喜欢
        • 2023-03-22
        • 2019-12-12
        • 2021-03-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多