Qui*_*ull 6 java amazon-ec2 amazon-web-services amazon-vpc
我正在尝试在另一个区域中创建一个实例,但是我收到此错误:
AWS Error Code: InvalidParameterCombination, AWS Error Message: VPC security groups may not be used for a non-VPC launch
Run Code Online (Sandbox Code Playgroud)
这是我正在执行的代码.
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);
Run Code Online (Sandbox Code Playgroud)
我也试过,而不是使用名称"testdefault",使用实际的groupid (sg-########),但我会得到一个错误,说安全组不存在(这是错误的,它确实).其中,基于API文档,如果使用非默认VPC,你应该通过实际GROUPID,但我会得到这样的错误:
InvalidGroup.NotFound, AWS Error Message: The security group 'sg-########' does not exist
Run Code Online (Sandbox Code Playgroud)
如果我使用"默认",setSecurityGroups它将使用默认的VPC.尽管它准确无误,但它似乎并不像我正在传递的那种.
此外,如果我注释掉setSecurityGroups代码,然后使用setSubnetId并传递子网ID,它将创建实例,但它会进入"默认"安全组,而不是像我想要的那样"testdefault".
我想要完成的只是创建一个实例并让它使用已经存在的VPC组.
sla*_*fer 13
我的回答将集中于以下声明:
我想要完成的只是创建一个实例并让它使用已经存在的VPC组.
因此,据我所知,您希望在非默认VPC中启动实例,并为其分配现有的VPC安全组.
我不是一个java人,但我可以ruby按照以下方式做你想做的事.
require 'aws-sdk-core'
Aws.config = {
:access_key_id => "my_access_key",
:secret_access_key => "my_secret_key",
:region => 'us-west-2'
}
ec2 = Aws::EC2.new
ec2.run_instances(
min_count: 1,
max_count: 1,
image_id: 'ami-8635a9b6',
instance_type: 't1.micro',
placement: {
availability_zone: 'us-west-2a'
},
network_interfaces: [
{
subnet_id: 'subnet-e881bd63',
groups: ['sg-fd53bf5e'],
device_index: 0,
associate_public_ip_address: true
}
],
key_name: 'my-key'
).each do |resp|
resp.instances.each do |x|
puts x.instance_id
end
end
Run Code Online (Sandbox Code Playgroud)
虽然这是一个Ruby代码,但它非常简单,并且应该为您提供一些明确的提示,Java因为所有这些AWS开发工具包都在轮询相同的Web服务API.
我想,你应该专注于上面代码的事情是:
:region => 'us-west-2'
Run Code Online (Sandbox Code Playgroud)
和
placement: {
availability_zone: 'us-west-2a'
},
network_interfaces: [
{
subnet_id: 'subnet-e881bd63',
groups: ['sg-fd53bf5e'],
device_index: 0,
associate_public_ip_address: true
}
],
Run Code Online (Sandbox Code Playgroud)
subnet-e881bd63我的VPC中启动我的EC2实例,并将VPC安全组ID sg-fd53bf5e应用于其0网络接口.此外,它还将为我的实例分配一个公共IP地址.(默认情况下,在VPC中启动实例时,它不会分配公共IP地址).| 归档时间: |
|
| 查看次数: |
11337 次 |
| 最近记录: |