以编程方式创建和部署按需EC2

时间:2016-02-10 01:16:59

标签: amazon-web-services amazon-ec2 amazon-cloudformation terraform

是否可以以编程方式获取/部署并启动EC2实例?基本上选择你的实例类型,AMI并启动它?

我看到了StartInstance方法,但这仅适用于已在您的帐户中创建和停止的实例。

http://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_StartInstances.html

基本上,正在发生的事情是我有一个需要多个EC2实例进行计算的自动化服务。我需要以编程方式创建一个新实例,选择实例类型,选择AMI,启动它并运行一些部署脚本以使事情滚动。

我认为有一种方法可以使用AWS SDK做到这一点,但我只是没有看到它。

在相关的说明中,还需要能够以编程方式销毁关闭实例。

3 个答案:

答案 0 :(得分:5)

是的,这是可能的。

您使用RunInstances API方法。

  

使用您拥有权限的AMI启动指定数量的实例。

要完全删除实例,请使用TerminateInstance

  

关闭一个或多个实例。这种操作是幂等的;如果多次终止实例,则每次调用都会成功。

语言有点令人困惑,因为它说"关闭一个或多个实例",但实际上它完全删除了它们。

答案 1 :(得分:3)

您可以编写SDK脚本来完成工作(创建,更改和销毁ec2实例),具体取决于您掌握的语言,例如javascript,java,ruby,python等。

但是有更简单的跟进方式,我们称之为infrastructure as code,尝试aws cloudformation或Hashicopy' s terraform

使用他们的模板,您可以将整个基础架构(包括ec2,rds,vpc,安全组,子网等)部署为分钟工作。

参考:

AWS CloudFormation templates

Terraform AWS PROVIDER

答案 2 :(得分:1)

你可以试试这个..

runPE

//代码用于分配标签名称

   AmazonEC2Client amazonEc2client = GetAmazonClient(ConfigurationManager.AppSettings["AwsRegionEndPint"]);
     var launchRequest = new RunInstancesRequest()
                    {
                        ImageId = YOUR IMAGE ID,
                        InstanceType = YOUR INSTANCE TYPE,
                        MinCount = 1,
                        MaxCount = 1,
                        KeyName = your keyPairName,
                        SecurityGroupIds =your  groups,
                        SubnetId = your subnet Id,

                    };
                    RunInstancesResponse runInstancesResponse = amazonEc2client.RunInstances(launchRequest);