6

我需要应用服务器(它是beanstalk实例)在启动时执行一些操作,我想运行一个bash脚本传递给具有UserData属性的实例定期到EC2实例。我如何通过CloudFormation将UserData传递给Beanstalk实例

我发现了几个例子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实例。如果是这样 - 你能提供一个例子吗?

回答

6

如果你想拥有Beanstalk提供的所有优点 - 比如不需要修补亚马逊为你做的操作系统 - 这是不可能的。一种选择是在包含所需脚本的情况下创建自定义AMI,但必须使用安全修补程序自行管理操作系统。阅读更多here

+0

+1对于您自己的问题,谢谢! –

+0

@tronda,你知不知道6年后还是这样? –

+0

对不起,自从这篇文章以来一直没有使用Beanstalk。 @AlexanderF。 – tronda

相关问题