Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 以编程方式创建并按需部署EC2_Amazon Web Services_Amazon Ec2_Amazon Cloudformation_Terraform - Fatal编程技术网

Amazon web services 以编程方式创建并按需部署EC2

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

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

我看到了
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并运行一些脚本。谢谢@杰克·威尔逊你最后做了什么?结果如何?