我試圖在另一個區域創建一個實例,但我得到這個錯誤:啓動實例:VPC安全組可能不被用於非VPC推出
AWS Error Code: InvalidParameterCombination, AWS Error Message: VPC security groups may not be used for a non-VPC launch
這裏是我的代碼正在執行。
RunInstancesRequest instancereq = new RunInstancesRequest();
instancereq.setInstanceType("m3.medium");
instancereq.setImageId("ami-37b1b45e");
instancereq.setMinCount(1);
instancereq.setMaxCount(1);
ArrayList<String> secgroup = new ArrayList<String>();
instancereq.setKeyName("testkey");
secgroup.add("testdefault");
instancereq.setSecurityGroups(secgroup);
instancereq.setPlacement(getAzPlacement());
RunInstancesResult instanceresult = ec2.runInstances(instancereq);
我也試過的,而是採用了名爲「testdefault」,用實際GROUPID (sg-########)
,但我會得到一個錯誤,指出安全組不存在(這是不對的,它確實)。其中,based on the API doc,如果使用非默認VPC,你應該通過實際GROUPID但我會得到這樣的錯誤:如果我使用「默認」爲setSecurityGroups
它會使用默認的VPC
InvalidGroup.NotFound, AWS Error Message: The security group 'sg-########' does not exist
。它看起來不像我通過的groupid,儘管它是準確的。另外,如果我註釋掉setSecurityGroups
代碼,並使用setSubnetId
代替並傳遞子網ID,它會創建實例,但它會進入「默認」安全組,而不是「testdefault」,就像我想要的那樣。
我所要做的就是創建一個實例並讓它使用已經存在的VPC組。
這導致我的解決方案,感謝您的時間。我所做的錯誤是在您提供的代碼中發現的。我需要使用'setSecurityGroupIds'來傳遞安全組ID(例如'sg-1234567')。 'setSecurityGroups'是一種傳統方法,只有在沒有指定子網ID時才能使用,並且其值應該是安全組名稱列表(例如「默認」)。用Java解決方案更新原始帖子。 – QuickNull
@QuickNull,很高興它幫助你。 – slayedbylucifer