以编程方式创建和部署按需 EC2
Programmatically create and deploy On-Demand EC2
是否可以通过编程方式 get/deploy 并启动 EC2 实例?基本上选择您的实例类型、AMI 并启动它?
我看到了 StartInstance
方法,但这仅适用于已在您的帐户中创建和停止的实例。
http://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_StartInstances.html
本质上,发生的事情是我有一个需要多个 EC2 实例进行计算的自动化服务。我需要以编程方式创建一个新实例、选择实例类型、选择 AMI、启动它和 运行 一些部署脚本来启动它。
我认为有一种方法可以使用 AWS SDK 来执行此操作,但我只是没有看到它。
在相关说明中,还需要能够以编程方式销毁关闭实例。
是的,有可能。
您使用RunInstancesAPI方法。
Launches the specified number of instances using an AMI for which you have permissions.
要完全删除实例,请使用 TerminateInstance。
Shuts down one or more instances. This operation is idempotent; if you terminate an instance more than once, each call succeeds.
该语言有点令人困惑,因为它说 "Shuts down one or more instances",但实际上它完全删除了它们。
您可以编写 SDK 脚本来完成这项工作(创建、更改和销毁 ec2 实例),具体取决于您掌握的语言,例如 javascript、java、ruby, python, 等等
但是有更简单的方法跟进,我们称之为infrastructure as code,试试aws cloudformation
或者Hashicopy的terraform
使用他们的模板,您可以将整个基础架构(包括 ec2、rds、vpc、安全组、子网等)部署为分钟作业。
参考:
你可以试试这个..
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);
//code For assign Tag name
var InstanceId = runInstancesResponse.Reservation.Instances[0].InstanceId;
var trequest = new CreateTagsRequest();
trequest.Resources=new List<string>(){InstanceId};
List<Tag> tags=new List<Tag>();
Tag tag=new Tag("Name","TestCodeFinal");
tags.Add(tag);
trequest.Tags = tags;
amazonEc2client.CreateTags(trequest);
Reservation reservation = runInstancesResponse.Reservation;
是否可以通过编程方式 get/deploy 并启动 EC2 实例?基本上选择您的实例类型、AMI 并启动它?
我看到了 StartInstance
方法,但这仅适用于已在您的帐户中创建和停止的实例。
http://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_StartInstances.html
本质上,发生的事情是我有一个需要多个 EC2 实例进行计算的自动化服务。我需要以编程方式创建一个新实例、选择实例类型、选择 AMI、启动它和 运行 一些部署脚本来启动它。
我认为有一种方法可以使用 AWS SDK 来执行此操作,但我只是没有看到它。
在相关说明中,还需要能够以编程方式销毁关闭实例。
是的,有可能。
您使用RunInstancesAPI方法。
Launches the specified number of instances using an AMI for which you have permissions.
要完全删除实例,请使用 TerminateInstance。
Shuts down one or more instances. This operation is idempotent; if you terminate an instance more than once, each call succeeds.
该语言有点令人困惑,因为它说 "Shuts down one or more instances",但实际上它完全删除了它们。
您可以编写 SDK 脚本来完成这项工作(创建、更改和销毁 ec2 实例),具体取决于您掌握的语言,例如 javascript、java、ruby, python, 等等
但是有更简单的方法跟进,我们称之为infrastructure as code,试试aws cloudformation
或者Hashicopy的terraform
使用他们的模板,您可以将整个基础架构(包括 ec2、rds、vpc、安全组、子网等)部署为分钟作业。
参考:
你可以试试这个..
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);
//code For assign Tag name
var InstanceId = runInstancesResponse.Reservation.Instances[0].InstanceId;
var trequest = new CreateTagsRequest();
trequest.Resources=new List<string>(){InstanceId};
List<Tag> tags=new List<Tag>();
Tag tag=new Tag("Name","TestCodeFinal");
tags.Add(tag);
trequest.Tags = tags;
amazonEc2client.CreateTags(trequest);
Reservation reservation = runInstancesResponse.Reservation;