是否可以以编程方式获取/部署并启动EC2实例?基本上选择你的实例类型,AMI并启动它?
我看到了StartInstance
方法,但这仅适用于已在您的帐户中创建和停止的实例。
http://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_StartInstances.html
基本上,正在发生的事情是我有一个需要多个EC2实例进行计算的自动化服务。我需要以编程方式创建一个新实例,选择实例类型,选择AMI,启动它并运行一些部署脚本以使事情滚动。
我认为有一种方法可以使用AWS SDK做到这一点,但我只是没有看到它。
在相关的说明中,还需要能够以编程方式销毁关闭实例。
答案 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,安全组,子网等)部署为分钟工作。
参考:
答案 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);