我正在寻找最好的部署控制台应用程序和可能的Windows服务应用程序到AWS。我读到的关于CloudFormation的所有内容都让它听起来像是要走的路,但我看到的所有示例都是针对网络应用的。有谁知道是否有可能将CloudFormation用于非网络应用程序?如果有,那么知道一个示例模板是如何完成的吗?
答案 0 :(得分:2)
我最近有类似的问题。我实际上是在尝试安装一个包装器MSDeploy包,其中包含多个子包和一个runCommand来安装它们。
我发现AWSDeploy会失败,除非传递给CloudFormation的MSDeploy包本身就是一个iisApp包。经过调查后发现,这是因为AWSDeploy使用-setParam执行MSDeploy脚本:“IIS Web应用程序名称”=“在config中设置的值”,这就是它失败的原因。
要避免此错误并使用AWSDeploy和CloudFormation成功安装非网站,您只需将参数文件打包到包含此参数的MSDeploy包中。
这是一个示例文件。
<parameters>
<parameter name="IIS Web Application Name" defaultValue="Default Web Site/" tags="isIisApp" />
</parameters>
然后,您可以使用manifest或contentPath创建一个MSDeploy包,如下所示传入文件。
msdeploy -verb:sync -source:contentPath=C:\ConsoleApp\ -dest:package=deploy.zip -declareParamFile=parameters.xml
然后,您可以成功将其与CloudFormation模板一起使用。如果没有运行站点,请不要忘记禁用实例的运行状况监视。
答案 1 :(得分:1)
为什么不使用Windows Server EC2? CloudFormation只是管理云资源的一种方式,但您仍在使用优质的EC2实例(这是可用资源之一)。
在单个实例中,您可以部署控制台应用程序和Windows服务。
更新:您可以使用THIS文章中的信息从当前帐户中的资源生成CloudFormation模板。这样您就可以手动设置它,然后生成模板。
希望这有帮助
答案 2 :(得分:1)
是的,您可以将CloudFormation用于任何类型的应用。您可以基于任何AMI创建实例,并且(如果您使用Linux实例,请使用cloud-init来安装软件并在启动时运行)。
使用预先安装的软件创建自己的AMI也很容易,并使用CloudFormation基于该AMI启动实例。
没有特别针对CloudFormation的特定网络应用程序;它只是描述一组AWS资源的一种方式。