在经过身份验证的HTTP代理后面开发AWS应用程序

时间:2012-07-19 20:34:25

标签: amazon-ec2 amazon-web-services http-proxy

我们必须开发一个将部署在AWS EC2上的应用程序。作为我们每晚构建的一部分,我们希望在本地对我们的代码进行单元测试,然后部署到AWS实例并通过Internet运行功能测试。

在一个理想的世界中,我们只需编写一个构建脚本,以使用AWS SDK选择合适的AMI,启动实例,使用SSH登录,设置环境,FTP我们的程序和宾果!但是我们支持HTTP代理。由于我们无法使用SSH或FTP,因此我们考虑了三个基本选项。

1:尝试将userData添加到我们的RunInstanceRequest中,这会导致实例在启动时设置我们的环境,下载并运行我们的程序(可能来自AWS S3存储桶)。在Java中,这将是:

RunInstancesRequest runInstancesRequest = new RunInstancesRequest()
    .withInstanceType(myType)
    .withImageId(id)
    .withMinCount(min)
    .withMaxCount(max)
    .withSecurityGroupIds(mySecurityGroup)
    .withKeyName(someKey)
    .withUserData(myScript); //add our installation script

RunInstancesResult runInstances = ec2.runInstances(runInstancesRequest);

2:在本地安装我们的程序并使用ec2-import-instance工具将整个VM导入AWS,如here所述。

3:上下跳跃,要求限制较少的网络环境。

我们对(1)感到不安,因为调试安装的任何问题都非常困难。 (2)每次部署时涉及整个VM的传输和转换,(3)看起来不太有希望!

有谁知道最好的方法吗?

:d

1 个答案:

答案 0 :(得分:1)

为什么不构建自己的自定义AMI,在启动时自动下载并执行远程安装脚本?您可以编写一个花哨的init.d脚本,也可以从/etc/rc.local调用一个简单的shell脚本(假设类似Redhat的disto)。这与RightScale的工作方式非常相似。