【问题标题】:How do I pass UserData to a Beanstalk instance with CloudFormation如何使用 CloudFormation 将 UserData 传递给 Beanstalk 实例
【发布时间】:2012-01-14 18:46:26
【问题描述】:

我需要应用程序服务器(即 beanstalk 实例)在启动时执行一些操作,我想运行一个 bash 脚本,该脚本传递给具有常规 EC2 实例可用的 UserData 属性的实例。

我发现了几个示例 CloudFormation 模板,它们使用常规 EC2 实例执行此操作,但没有使用 Beanstalk 的示例。我已尝试将此添加到应用程序的属性字段中:

"MyApp" : {
  "Type" : "AWS::ElasticBeanstalk::Application",
  "Properties" : {
    "Description" : "MyApp description",
    "ApplicationVersions" : [{
      ...
    }],
    "UserData" : {
      "Fn::Base64" : { "Fn::Join" : ["", [
        "#!/bin/bash\n",
        "touch /tmp/userdata_sucess\n"
      ]]
    }},
    ...

我也尝试添加到环境部分:

"MyAppEnv" : {
  "Type" : "AWS::ElasticBeanstalk::Environment",
  "Properties" : {
    "ApplicationName" : { "Ref" : "MyApp" },
    "Description" :  "MyApp environment description",
    "UserData" : {
      "Fn::Base64" : { "Fn::Join" : ["", [
        "#!/bin/bash\n",
        "touch /tmp/userdata_sucess\n"
      ]]
    }},
    "TemplateName" : "MyAppConfiguration",
    "VersionLabel" : "First Cloud version"
  }
},

在这两种情况下,这都会导致尝试创建堆栈时失败。有谁知道是否可以使用 CloudFormation 将 UserData 传递给 Beanstalk 实例。如果是这样 - 你能举个例子吗?

【问题讨论】:

    标签: amazon-ec2 amazon-web-services amazon-elastic-beanstalk amazon-cloudformation


    【解决方案1】:

    如果您想拥有 Beanstalk 提供的所有优势——比如不必像亚马逊为你打补丁的操作系统——这是不可能的。一种选择是创建一个自定义 AMI,您可以在其中包含所需的脚本,但您必须自己使用安全补丁管理操作系统。阅读更多here

    【讨论】:

    • @tronda,你知道6年后还是一样吗?
    • 对不起,自从这篇文章之后,就没有与 Beanstalk 合作过。 @AlexanderF。
    【解决方案2】:

    您可以使用.ebextensions 执行此操作,请参阅Amazon docs

    一个例子:

    packages:
      yum:
        bison:              []
        libpcap-devel:      []
        libpcap:            "1.4.0"
        golang:             "1.13.4"
        git:                []
    
    commands:
      20_show_info_pkgs:
        env:
          GOPATH:           /usr/local/gocode
          PATH:             $PATH:/sbin:/bin:/usr/sbin:/usr/bin:/opt/aws/bin:/usr/local/bin
        ignoreErrors:       true
        command:            |
          ls -l /usr/local /usr/local/g*
          env
          yum list bison libpcap-devel libpcap golang git
          which git
          which go
          git --version
          go version
          goreplay version
          true
    

    【讨论】:

    • 这个例子和设置用户数据没有任何关系。我错过了什么吗?
    猜你喜欢
    • 2019-06-28
    • 2017-08-29
    • 2015-02-14
    • 2020-12-05
    • 2020-09-29
    • 1970-01-01
    • 1970-01-01
    • 2018-05-10
    相关资源
    最近更新 更多