Java 实例ID不为';不存在

Java 实例ID不为';不存在,java,amazon-web-services,amazon-ec2,Java,Amazon Web Services,Amazon Ec2,我正在尝试创建一个EC2实例,我遇到的问题是在创建了如下实例之后: SOURCE_REGION = Region.getRegion(Regions.US_WEST_2); ec2.setRegion(SOURCE_REGION); ec2.setEndpoint("ec2.us-west-1.amazonaws.com"); RunInstancesRequest instancereq = new RunInstancesRequest(); instancereq.setInstance

我正在尝试创建一个EC2实例,我遇到的问题是在创建了如下实例之后:

SOURCE_REGION = Region.getRegion(Regions.US_WEST_2);
ec2.setRegion(SOURCE_REGION);
ec2.setEndpoint("ec2.us-west-1.amazonaws.com");

RunInstancesRequest instancereq = new RunInstancesRequest();
instancereq.setInstanceType(instancearray.get(i).getInstanceType());
instancereq.setImageId(defaultAmi);
instancereq.setMinCount(1);
instancereq.setMaxCount(1);

ArrayList<String> groupid = new ArrayList<String>();  
groupid.add(secgroup.get(0).getGroupName());        

instancereq.setSecurityGroupIds(groupid);
instancereq.setKeyName("testkey");  

Placement place = new Placement();
place.setAvailabilityZone((String) target.getValueAt(row, column));   

instancereq.setPlacement("ec2.us-west-1.amazonaws.com");

RunInstancesResult instanceresult = ec2.runInstances(instancereq);
我得到的错误是:

Error Code: InvalidInstanceID.NotFound, AWS Error Message: The instance ID 'i-xxxxxxxx' does not exist
现在,我知道它确实存在,不仅
instanceresult
告诉我,我还可以在AWS控制台中看到新实例正在启动


如果使用默认区域,我不会有任何问题,但在区域和端点方面,我做得不对。任何建议/指导都会很好。

对于Java SDK,默认区域是
us-east-1
。因此,如果您没有在代码中指定任何区域,那么您正在轮询us-east-1

因此,如果实例位于另一个区域,则必须在代码中传递region参数

发件人:

如果未在代码中指定区域,AWS SDK for Java将使用美国东部(北弗吉尼亚)区域作为默认区域

另外,在同一链接中,这里有一个关于如何在Java中设置区域的示例:

例如,要将Amazon EC2客户端配置为使用欧盟(爱尔兰)地区,请使用以下代码:

AmazonEC2 ec2 = new AmazonEC2(myCredentials);
ec2.setEndpoint("https://ec2.eu-west-1.amazonaws.com");

经过更多的研究和测试,我意识到警告一直存在,我只是错过了它

This method is not threadsafe. Endpoints should be configured when the client is created and before any service requests are made. Changing it afterwards creates inevitable race conditions for any service requests in transit.

我没有使用公共静态ec2客户端对象(我在线程间使用并多次更改端点),而是将我的几个类切换为使用特定于我所在类的专用ec2客户端,这似乎解决了问题。

我感谢您的响应,但是,我不确定您是否仔细阅读了我的问题,因为我不仅在前两行代码中包括了设置端点,我还指出在region/AZ中创建实例是成功的,并且使用相同的ec2客户机对象的相同方法,我得到了该错误。
This method is not threadsafe. Endpoints should be configured when the client is created and before any service requests are made. Changing it afterwards creates inevitable race conditions for any service requests in transit.