2016-05-23 114 views
-2

我是初学者。'c4.2xlarge'类型的实例需要虚拟化类型'hvm'

尝试使用com.amazonaws.services.ec2.model.RunInstancesRequest亚马逊服务启动EC2实例(c4.2xlarge)时。

我得到了以下错误。

2016-05-23 13:13:19 ERROR org.codehaus.groovy.grails.web.errors.GrailsExceptionResolver: 213 - AmazonServiceException occurred when processing request: [POST] /leaseabuse-crawler-manager/instances/start 
Virtualization type 'hvm' is required for instances of type 'c4.2xlarge'. Ensure that you are using an AMI with virtualization type 'hvm'. For more information, see http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/virtualization_types.html (Service: AmazonEC2; Status Code: 400; Error Code: InvalidParameterCombination; Request ID: 9c35befc-15ba-4010-b0c6-bf38285369f1). Stacktrace follows: 
com.amazonaws.AmazonServiceException: Virtualization type 'hvm' is required for instances of type 'c4.2xlarge'. Ensure that you are using an AMI with virtualization type 'hvm'. For more information, see http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/virtualization_types.html (Service: AmazonEC2; Status Code: 400; Error Code: InvalidParameterCombination; Request ID: 9c35befc-15ba-4010-b0c6-bf38285369f1) 
     at com.amazonaws.http.AmazonHttpClient.handleErrorResponse(AmazonHttpClient.java:1369) 
     at com.amazonaws.http.AmazonHttpClient.executeOneRequest(AmazonHttpClient.java:913) 
     at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:631) 
     at com.amazonaws.http.AmazonHttpClient.doExecute(AmazonHttpClient.java:400) 
     at com.amazonaws.http.AmazonHttpClient.executeWithTimer(AmazonHttpClient.java:362) 
     at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:311) 
     at com.amazonaws.services.ec2.AmazonEC2Client.invoke(AmazonEC2Client.java:11093) 
     at com.amazonaws.services.ec2.AmazonEC2Client.runInstances(AmazonEC2Client.java:10618) 
     at com.leaseabuse.devops.AwsService.startInstances(AwsService.groovy:167) 
     at com.leaseabuse.devops.InstancesController.start(InstancesController.groovy:34) 
     at grails.plugin.cache.web.filter.PageFragmentCachingFilter.doFilter(PageFragmentCachingFilter.java:198) 
     at grails.plugin.cache.web.filter.AbstractFilter.doFilter(AbstractFilter.java:63) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
     at java.lang.Thread.run(Thread.java:745) 
2016-05-23 13:13:19 DEBUG grails.app.filters.com.leaseabuse.devops.ApiKeyFilters: 128 - Security enabled 

下面是我想使用

RunInstancesRequest runInstancesRequest = new RunInstancesRequest() 
       .withInstanceType(InstanceType.C42xlarge) 
       .withImageId(amiId) 
       .withMinCount(count) 
       .withMaxCount(count) 
       .withSecurityGroupIds("some-group") 
       .withKeyName("Key-name") 

任何人都可以建议我在哪里,我错了代码。 请帮忙出来。

回答

3

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/virtualization_types.html

Linux的亚马逊机器映像使用两个中的一个类型的虚拟化:半虚拟化(PV)或硬件虚拟机(HVM)。 PV和HVM AMI之间的主要区别在于它们的启动方式以及它们是否可以利用特殊的硬件扩展(CPU,网络和存储)来获得更好的性能。

为了获得最佳性能,我们建议您在启动实例时使用当前代实例类型和HVM AMI。

您使用的AMI ID是一个半虚拟ID,因此只能在older generations of EC2 instances上运行。

+0

感谢您的回答@ceejayoz,但我现在应该做什么。 是我必须创建一个hvm类型的AMI。 –

+0

@SandeepRoniyaar创建一个新的HVM AMI,或坚持仍旧支持PV的旧实例类型。我建议使用HVM方法 - PV代将最终完全消失。 – ceejayoz