Amazon web services 以编程方式创建并按需部署EC2
是否可以通过编程方式获取/部署并启动EC2实例?基本上选择实例类型AMI并启动它 我看到了Amazon web services 以编程方式创建并按需部署EC2,amazon-web-services,amazon-ec2,amazon-cloudformation,terraform,Amazon Web Services,Amazon Ec2,Amazon Cloudformation,Terraform,是否可以通过编程方式获取/部署并启动EC2实例?基本上选择实例类型AMI并启动它 我看到了StartInstance方法,但这只适用于您的帐户中已经创建和停止的实例 本质上,我有一个自动服务,需要多个EC2实例进行计算。我需要以编程方式创建一个新实例,选择实例类型,选择AMI,启动它,并运行一些部署脚本以使事情顺利进行 我认为有一种方法可以通过AWS SDK实现这一点,但我只是没有看到它 另一方面,您还需要能够以编程方式销毁关机实例。是的,这是可能的 您可以使用API方法 使用您拥有权限的AM
StartInstance
方法,但这只适用于您的帐户中已经创建和停止的实例
本质上,我有一个自动服务,需要多个EC2实例进行计算。我需要以编程方式创建一个新实例,选择实例类型,选择AMI,启动它,并运行一些部署脚本以使事情顺利进行
我认为有一种方法可以通过AWS SDK实现这一点,但我只是没有看到它
另一方面,您还需要能够以编程方式销毁关机实例。是的,这是可能的
您可以使用API方法
使用您拥有权限的AMI启动指定数量的实例
要完全删除实例,请使用
关闭一个或多个实例。这个运算是幂等的;如果多次终止实例,则每次调用都会成功
这种语言有点混乱,因为它说“关闭一个或多个实例”,但实际上它完全删除了它们。您可以编写SDK脚本来完成这项工作(创建、更改和销毁ec2实例),这取决于您掌握的语言,如javascript、java、ruby、python等 但有更简单的方法可以跟进,我们称之为,尝试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);
//分配标记名的代码
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;
var InstanceId=runInstanceResponse.Reservation.Instances[0].InstanceId;
var trequest=new CreateTagsRequest();
Resources=newlist(){InstanceId};
列表标签=新列表();
标签标签=新标签(“名称”、“TestCodeFinal”);
标签。添加(标签);
标签=标签;
amazonEc2client.CreateTags(trequest);
预订预订=RunInstanceResponse.Reservation;
谢谢,这与RequestSpotInstance
有何不同?RequestSpotInstance允许您以当前现货市场价格对可用实例进行出价。如果您的出价至少等于市场价格,则此操作将成功。如果当前市场价格超过您愿意支付的价格,则可以在不通知的情况下关闭此类实例。现货市场通常用于CPU(或GPU)密集型任务,其中需要尽可能便宜的多个实例,在所有可用实例之间分配工作,并且体系结构可以承受一些刚刚消失的实例。好吧,那么RunInstances
打算以当前AWS每小时的价格按需启动实例吗?如果是的话,那就是我要找的,谢谢你。+1的CloudFormation服务。我从来都不知道那是存在的。我需要看看它是否适合我们的需要,因为我们真正需要做的就是启动一个特定的AMI并运行一些脚本。谢谢@杰克·威尔逊你最后做了什么?结果如何?