Configuración de grupos de seguridad de Amazon EC2 de y tipos de instancia con AWS CLI - AWS Elastic Beanstalk

Configuración de grupos de seguridad de Amazon EC2 de y tipos de instancia con AWS CLI

Puede usar la interfaz de la línea de comandos (AWS CLI) de AWS para configurar las instancias de Amazon EC2 en los entornos de Elastic Beanstalk.

Configuración de grupos de seguridad de EC2 con AWS CLI

En este tema se proporcionan ejemplos de diferentes configuraciones de grupos de seguridad de EC2 para entornos de instancia única y con equilibrio de carga (instancias múltiples). Para obtener más información sobre las opciones de estos ejemplos, consulte aws:autoscaling:launchconfiguration.

Notas

La operación de creación de entorno proporciona un grupo de seguridad de EC2 de forma predeterminada. También crea un entorno con un Equilibrador de carga de aplicación de forma predeterminada.

La operación de actualización del entorno se puede utilizar para deshabilitar o habilitar el grupo de seguridad de EC2 predeterminado para su entorno con la opción booleana DisableDefaultEC2SecurityGroup. El ejemplo 5 muestra cómo volver a configurar su entorno con la configuración de seguridad predeterminada si la había modificado anteriormente.

En los ejemplos siguientes se muestra un comando create-environment que opta por no participar en el grupo de seguridad de EC2 predeterminado y, en su lugar, proporciona grupos de seguridad personalizados. Dado que la opción DisableDefaultEC2SecurityGroup está establecida en true, no se crea el grupo de seguridad de EC2 predeterminado que Elastic Beanstalk normalmente asocia a las instancias de EC2. Por lo tanto, debe proporcionar la opción de SecurityGroups a otros grupos de seguridad.

Tenga en cuenta que la opción EnvironmentType de aws:elasticbeanstalk:environment está establecida en SingleInstance. Para crear un entorno de instancia única, debe especificar esta opción, ya que LoadBalanced es el EnvironmentType predeterminado. Como este entorno no incluye un equilibrador de carga, no es necesario especificar un grupo de seguridad del equilibrador de carga.

ejemplo 1: nuevo entorno de instancia única con grupos de seguridad de EC2 personalizados (opciones de espacio de nombres integradas)
aws elasticbeanstalk create-environment \ --region us-east-1 \ --application-name my-app \ --environment-name my-env \ --solution-stack-name "64bit Amazon Linux 2023 v6.5.0 applrunning Node.js 22" \ --option-settings \ Namespace=aws:elasticbeanstalk:environment,OptionName=EnvironmentType,Value=SingleInstance \ Namespace=aws:autoscaling:launchconfiguration,OptionName=IamInstanceProfile,Value=aws-elasticbeanstalk-ec2-role \ Namespace=aws:autoscaling:launchconfiguration,OptionName=DisableDefaultEC2SecurityGroup,Value=true \ Namespace=aws:autoscaling:launchconfiguration,OptionName=SecurityGroups,Value=sg-abcdef01, sg-abcdef02 \ Namespace=aws:autoscaling:launchconfiguration,OptionName=EC2KeyName,Value=my-keypair

Como alternativa, utilice un archivo options.json para especificar las opciones del espacio de nombres en lugar de incluirlas en línea.

ejemplo 2: nuevo entorno de instancia única con grupos de seguridad de EC2 personalizados (opciones de espacio de nombres en el archivo options.json)
aws elasticbeanstalk create-environment \ --region us-east-1 \ --application-name my-app \ --environment-name my-env \ --solution-stack-name "64bit Amazon Linux 2023 v6.5.0 running Node.js 22" \ --option-settings file://options.json
### example options.json ### [ { "Namespace" : "aws:elasticbeanstalk:environment", "OptionName" : "EnvironmentType", "Value" : "SingleInstance" }, { "Namespace": "aws:autoscaling:launchconfiguration", "OptionName": "IamInstanceProfile", "Value": "aws-elasticbeanstalk-ec2-role" }, { "Namespace": "aws:autoscaling:launchconfiguration", "OptionName": "DisableDefaultEC2SecurityGroup", "Value": "true" }, { "Namespace": "aws:autoscaling:launchconfiguration", "OptionName": "SecurityGroups", "Value": "sg-abcdef01, sg-abcdef02" }, { "Namespace": "aws:autoscaling:launchconfiguration", "OptionName": "EC2KeyName", "Value": "my-keypair" } ]

El siguiente ejemplo crea un entorno con equilibrio de carga. Especifica la opción LoadBalancerType del espacio de nombres aws:elasticbeanstalk:environment establecida como application. Como vamos a deshabilitar el grupo de seguridad de EC2 predeterminado con la opción DisableDefaultEC2SecurityGroup, debemos volver a proporcionar nuestros propios grupos de seguridad personalizados para las instancias de EC2, con la opción SecurityGroups de aws:autoscaling:launchconfiguration, como en el ejemplo anterior. Dado que este entorno tiene un equilibrador de carga para enrutar el tráfico, también debemos proporcionar grupos de seguridad para el equilibrador de carga.

Para crear un entorno con un Equilibrador de carga clásico, pero con la misma configuración, actualice la configuración de la opción LoadBalancerType del espacio de nombres aws:elasticbeanstalk:environment como classic.

Los distintos tipos de equilibrador de carga tienen diferentes espacios de nombres que contienen las opciones para especificar los grupos de seguridad:

ejemplo 3: nuevo entorno de instancia múltiple con grupos de seguridad de EC2 personalizados (opciones de espacio de nombres en el archivo options.json)
aws elasticbeanstalk create-environment \ --region us-east-1 \ --application-name my-app \ --environment-name my-env \ --solution-stack-name "64bit Amazon Linux 2023 v6.5.0 running Node.js 22" \ --option-settings file://options.json
### example options.json ### [ { "Namespace" : "aws:elasticbeanstalk:environment", "OptionName" : "EnvironmentType", "Value" : "LoadBalanced" }, { "Namespace" : "aws:elasticbeanstalk:environment", "OptionName" : "LoadBalancerType", "Value" : "application" }, { "Namespace" : "aws:elbv2:loadbalancer", "OptionName" : "SecurityGroups", "Value" : "sg-abcdefghikl012345" }, { "Namespace": "aws:autoscaling:launchconfiguration", "OptionName": "IamInstanceProfile", "Value": "aws-elasticbeanstalk-ec2-role" }, { "Namespace": "aws:autoscaling:launchconfiguration", "OptionName": "DisableDefaultEC2SecurityGroup", "Value": "true" }, { "Namespace": "aws:autoscaling:launchconfiguration", "OptionName": "SecurityGroups", "Value": "sg-abcdef01, sg-abcdef02" }, { "Namespace": "aws:autoscaling:launchconfiguration", "OptionName": "EC2KeyName", "Value": "my-keypair" } ]

Puede deshabilitar el grupo de seguridad de EC2 predeterminado para un entorno existente con el comando update-environment. El siguiente comando de ejemplo deshabilita el grupo de seguridad de EC2 predeterminado y asigna a las instancias de EC2 del entorno grupos de seguridad de EC2 personalizados.

Utilice los archivos options.jason de ejemplo de los ejemplos 4(a), 4(b) o 4(c), en función de si el entorno tiene un equilibrio de carga y del tipo de equilibrador de carga. El archivo de configuración 4(a) especifica los grupos de seguridad para un entorno de instancia única. Dado que no requiere un equilibrador de carga, solo proporcionamos el grupo de seguridad para las instancias de EC2. Los archivos de configuración 4(b) y 4(c) especifican los grupos de seguridad para un Equilibrador de carga de aplicación y un Equilibrador de carga clásico. En estos casos, también debemos especificar los grupos de seguridad para el equilibrador de carga.

ejemplo 4: actualice un entorno existente para deshabilitar el grupo de seguridad de EC2 predeterminado (opciones de espacio de nombres en el archivo options.json)
aws elasticbeanstalk update-environment \ --region us-east-1 \ --application-name my-app \ --environment-name my-env \ --solution-stack-name "64bit Amazon Linux 2023 v6.5.0 running Node.js 22" \ --option-settings file://options.json
ejemplo 4(a): archivo de configuración para un entorno de instancia única (sin equilibrador de carga)
### example options.json ### [ { "Namespace": "aws:autoscaling:launchconfiguration", "OptionName": "DisableDefaultEC2SecurityGroup", "Value": "true" }, { "Namespace": "aws:autoscaling:launchconfiguration", "OptionName": "SecurityGroups", "Value": "sg-abcdef01, sg-abcdef02" } ]

Para actualizar un entorno que utiliza un Equilibrador de carga de aplicación, use el espacio de nombres aws:elbv2:loadbalancer para especificar los grupos de seguridad del equilibrador de carga.

ejemplo 4(b): archivo de configuración para un entorno con un Equilibrador de carga de aplicación
### example options.json ### [ { "Namespace" : "aws:elbv2:loadbalancer", "OptionName" : "SecurityGroups", "Value" : "sg-abcdefghikl012345" }, { "Namespace": "aws:autoscaling:launchconfiguration", "OptionName": "DisableDefaultEC2SecurityGroup", "Value": "true" }, { "Namespace": "aws:autoscaling:launchconfiguration", "OptionName": "SecurityGroups", "Value": "sg-abcdef01, sg-abcdef02" } ]

Para actualizar un entorno que utiliza un Equilibrador de carga clásico, use el espacio de nombres aws:elb:loadbalancer para especificar los grupos de seguridad del equilibrador de carga.

ejemplo 4(c): archivo de configuración para un entorno con un Equilibrador de carga clásico
### example options.json ### [ { "Namespace" : "aws:elb:loadbalancer", "OptionName" : "SecurityGroups", "Value" : "sg-abcdefghikl012345" }, { "Namespace": "aws:autoscaling:launchconfiguration", "OptionName": "DisableDefaultEC2SecurityGroup", "Value": "true" }, { "Namespace": "aws:autoscaling:launchconfiguration",n "OptionName": "SecurityGroups", "Value": "sg-abcdef01, sg-abcdef02" } ]

Para devolver el entorno al comportamiento y la configuración predeterminados con el grupo de seguridad predeterminado que asigna Elastic Beanstalk, utilice el comando update-environment para establecer el DisableDefaultEC2SecurityGroup como false. Para un entorno de instancias múltiples, Elastic Beanstalk también gestiona los grupos de seguridad y las reglas de tráfico de red del equilibrador de carga del entorno.

El siguiente ejemplo se aplica a un entorno de instancia única o de instancias múltiples (con equilibrio de carga):

ejemplo 5: actualización de un entorno para que vuelva a utilizar el grupo de seguridad predeterminado (opciones de espacio de nombres en el archivo options.json)
aws elasticbeanstalk update-environment \ --region us-east-1 \ --application-name my-app \ --environment-name my-env \ --solution-stack-name "64bit Amazon Linux 2023 v6.5.0 running Node.js 22" \ --option-settings file://options.json
### example options.json ### [ { "Namespace": "aws:autoscaling:launchconfiguration", "OptionName": "DisableDefaultEC2SecurityGroup", "Value": "false" } ]

Configuración de EC2 con tipos de instancia mediante la AWS CLI

En este tema se proporcionan ejemplos para configurar los tipos de instancia de EC2 de su entorno.

En los dos primeros ejemplos se crea un nuevo entorno. El comando especifica un tipo de instancias de Amazon EC2, t4g.small, que se basa en la arquitectura del procesador arm64. Elastic Beanstalk establece el ID de imagen (AMI) de forma predeterminada para las instancias de EC2 en función de la región, la versión de la plataforma y el tipo de instancia. El tipo de instancia corresponde a una arquitectura del procesador. El parámetro solution-stack-name se aplica a la versión de la plataforma.

ejemplo 1 — crear un nuevo entorno basado en arm64 (opciones de espacio de nombres en línea)
aws elasticbeanstalk create-environment \ --region us-east-1 \ --application-name my-app \ --environment-name my-env \ --solution-stack-name "64bit Amazon Linux 2 v3.4.7 running Docker" \ --option-settings \ Namespace=aws:autoscaling:launchconfiguration,OptionName=IamInstanceProfile,Value=aws-elasticbeanstalk-ec2-role \ Namespace=aws:ec2:instances,OptionName=InstanceTypes,Value=t4g.small

Como alternativa, utilice un archivo options.json para especificar las opciones del espacio de nombres en lugar de incluirlas en línea.

ejemplo 2 — crear un nuevo entorno basado en arm64 (opciones de espacio de nombres en el archivo options.json)
aws elasticbeanstalk create-environment \ --region us-east-1 \ --application-name my-app \ --environment-name my-env \ --solution-stack-name "64bit Amazon Linux 2 v3.4.7 running Docker" \ --option-settings file://options.json
### example options.json ### [ { "Namespace": "aws:autoscaling:launchconfiguration", "OptionName": "IamInstanceProfile", "Value": "aws-elasticbeanstalk-ec2-role" }, { "Namespace": "aws:ec2:instances", "OptionName": "InstanceTypes", "Value": "t4g.small" } ]

En los siguientes dos ejemplos se actualiza la configuración de un entorno existente con el comando update-environment. En este ejemplo se agrega otro tipo de instancia que también se basa en la arquitectura del procesador arm64. En el caso de los entornos existentes, todos los tipos de instancia que se agreguen deben contar con la misma arquitectura del procesador. Si quiere reemplazar los tipos de instancia existentes por otros de una arquitectura diferente, puede hacerlo. Sin embargo, asegúrese de que todos los tipos de instancia del comando tengan el mismo tipo de arquitectura.

ejemplo 3 — actualizar un entorno basado en arm64 existente (opciones de espacio de nombres en línea)
aws elasticbeanstalk update-environment \ --region us-east-1 \ --application-name my-app \ --environment-name my-env \ --solution-stack-name "64bit Amazon Linux 2 v3.4.7 running Docker" \ --option-settings \ Namespace=aws:autoscaling:launchconfiguration,OptionName=IamInstanceProfile,Value=aws-elasticbeanstalk-ec2-role \ Namespace=aws:ec2:instances,OptionName=InstanceTypes,Value=t4g.small,t4g.micro

Como alternativa, utilice un archivo options.json para especificar las opciones del espacio de nombres en lugar de incluirlas en línea.

ejemplo 4 — actualizar un entorno basado en arm64 existente (opciones de espacio de nombres en el archivo options.json)
aws elasticbeanstalk update-environment \ --region us-east-1 \ --application-name my-app \ --environment-name my-env \ --solution-stack-name "64bit Amazon Linux 2 v3.4.7 running Docker" \ --option-settings file://options.json
### example options.json ### [ { "Namespace": "aws:autoscaling:launchconfiguration", "OptionName": "IamInstanceProfile", "Value": "aws-elasticbeanstalk-ec2-role" }, { "Namespace": "aws:ec2:instances", "OptionName": "InstanceTypes", "Value": "t4g.small, t4g.micro" } ]

En los siguientes dos ejemplos se muestran más comandos create-environment. En estos ejemplos no se proporcionan valores para InstanceTypes. Cuando no se especifican los valores InstanceTypes, Elastic Beanstalk utiliza la arquitectura del procesador basada en x86 de forma predeterminada. El ID de imagen (AMI) para las instancias de EC2 del entorno vendrá predeterminado en función de la región, la versión de la plataforma y el tipo de instancia predeterminado. El tipo de instancia corresponde a una arquitectura del procesador.

ejemplo 5 — crear un nuevo entorno basado en x86 (opciones de espacio de nombres en línea)
aws elasticbeanstalk create-environment \ --region us-east-1 \ --application-name my-app \ --environment-name my-env \ --solution-stack-name "64bit Amazon Linux 2 v3.4.7 running Docker" \ --option-settings \ Namespace=aws:autoscaling:launchconfiguration,OptionName=IamInstanceProfile,Value=aws-elasticbeanstalk-ec2-role

Como alternativa, utilice un archivo options.json para especificar las opciones del espacio de nombres en lugar de incluirlas en línea.

ejemplo 6 — crear un nuevo entorno basado en x86 (opciones de espacio de nombres en el archivo options.json)
aws elasticbeanstalk create-environment \ --region us-east-1 \ --application-name my-app \ --environment-name my-env \ --solution-stack-name "64bit Amazon Linux 2 v3.4.7 running Docker" \ --option-settings file://options.json
### example options.json ### [ { "Namespace": "aws:autoscaling:launchconfiguration", "OptionName": "IamInstanceProfile", "Value": "aws-elasticbeanstalk-ec2-role" } ]