tutorial pasos para interfaz grafica espaƱol ejemplos crear componentes componente java amazon-web-services amazon-ec2 amazon-vpc

interfaz - pasos para crear un componente en java



Instancia de lanzamiento: los grupos de seguridad de VPC no se pueden usar para un lanzamiento que no sea de VPC (4)

Este mismo error ocurre usando el programa de línea de comando, así que estoy agregando una respuesta separada ayudada por QuickNull. Simplemente asegúrese de especificar el grupo de seguridad y la subred. Por ejemplo:

aws ec2 run-instances --image-id ami-XXXXXXXX --count 1 --instance-type t1.micro --key-name XXXXXXXX --security-group-ids sg-XXXXXXXX --subnet-id subnet-XXXXXXXX

Intento crear una instancia en otra región, pero obtengo este error:

AWS Error Code: InvalidParameterCombination, AWS Error Message: VPC security groups may not be used for a non-VPC launch

Aquí está el código que estoy ejecutando.

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);

También intenté, en lugar de usar el nombre "testdefault", usar el groupid actual (sg-########) , pero recibiré un error que dice que el grupo de seguridad no existe (que es mal, lo hace). Lo cual, basado en el documento API , si usa una VPC no predeterminada, debe pasar el groupid real pero obtendré un error como este:

InvalidGroup.NotFound, AWS Error Message: The security group ''sg-########'' does not exist

Si utilizo "default" como setSecurityGroups la VPC predeterminada. Simplemente no parece ser como el groupid que estoy pasando, a pesar de ser exacto.

Además, si hago un comentario sobre el código setSecurityGroups , y uso setSubnetId en setSubnetId lugar y paso el ID de subred, creará la instancia muy bien, pero va al grupo de seguridad "predeterminado", no a "prueba predeterminada" como yo quiero.

Todo lo que intento lograr es crear una instancia y hacer que use el grupo de VPC ya existente.


Gracias a @slayedbylucifer por su código ruby , aquí está la solución java para referencia:

// Creates an instance in the specified subnet of a non-default VPC and using the // security group with id sg-1234567 ec2.runInstances(new RuntInstancesRequest() ... .withSubnetId("subnet-1234abcd") .withSecurityGroupIds("sg-1234567"));


Mi respuesta se enfocará en la siguiente declaración:

Todo lo que intento lograr es crear una instancia y hacer que use el grupo de VPC ya existente.

Entonces, según tengo entendido, desea iniciar una instancia en una VPC no predeterminada y asignarle un grupo de seguridad de VPC existente.

No soy un chico de java , pero podría hacer lo que quisieras en ruby como a continuación.

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

Aunque se trata de un código de Ruby , es bastante directo y debería darle algunos consejos claros sobre cómo hacerlo en Java ya que todos estos SDK de AWS sondean las mismas API de servicio web.

Supongo que las cosas que deberías concentrarte en el código anterior son:

:region => ''us-west-2''

y

placement: { availability_zone: ''us-west-2a'' }, network_interfaces: [ { subnet_id: ''subnet-e881bd63'', groups: [''sg-fd53bf5e''], device_index: 0, associate_public_ip_address: true } ],

  1. Asegúrese de especificar explícitamente la región.
  2. Compruebe cómo he definido la ID de subred y la ID del grupo de seguridad. Este código iniciará mi instancia de EC2 en subnet-e881bd63 de mi VPC y aplicará el ID de grupo de seguridad de VPC sg-fd53bf5e a su sg-fd53bf5e interfaz de red. Además, también asignará una dirección IP pública a mi instancia. (de forma predeterminada, no asignará una dirección IP pública cuando inicie instancias en VPC).
  3. FYI. Cuando inicia instancias en VPC, debe proporcionar la ID del grupo de seguridad en lugar del nombre del grupo de seguridad.

No puede especificar nombres de grupo de seguridad para el lanzamiento de VPC ( setSecurityGroups ). Para una VPC no predeterminada, debe usar ID de grupos de seguridad en su lugar. Consulte la página de instancias de ejecución EC2 ( withSecurityGroupIds , o --security-group-ids desde CLI).

Cuando especifica un grupo de seguridad para una VPC no predeterminada para la CLI o las acciones de API, debe usar la ID del grupo de seguridad y no el nombre del grupo de seguridad para identificar el grupo de seguridad.

Ver: Grupos de seguridad para EC2-VPC

Relacionado:

  • Terraform lanza "groupName no se puede usar con la subred del parámetro" o "los grupos de seguridad VPC no se pueden usar para un lanzamiento que no sea VPC"