Configurando grupos de segurança e tipos de instância do Amazon EC2 usando a AWS CLI
Você pode usar a AWS Command Line Interface (AWS CLI) para configurar as instâncias do Amazon EC2 em ambientes do Elastic Beanstalk.
Configurar grupos de segurança do EC2 usando a AWS CLI
Este tópico fornece exemplos de diferentes configurações de grupos de segurança do EC2 para ambientes de instância única e com carga balanceada (várias instâncias). Para obter mais informações sobre as opções nesses exemplos, consulte aws:autoscaling:launchconfiguration.
Observações
A operação de criação de ambiente fornece um grupo de segurança EC2 por padrão. Também cria um ambiente com um Application Load Balancer por padrão.
A operação de atualização do ambiente pode ser usada para desabilitar ou habilita o grupo de segurança do EC2 padrão para seu ambiente com a opção booleana DisableDefaultEC2SecurityGroup. O Exemplo 5 mostra como redefinir seu ambiente para a configuração de segurança padrão, caso você a tenha modificado anteriormente.
Os exemplos a seguir mostram um comando create-environment optando por não participar do grupo de segurança padrão do EC2 e fornecendo, em vez disso, grupos de segurança personalizados. Como a opção DisableDefaultEC2SecurityGroup está definida como true, o grupo de segurança padrão do EC2 que o Elastic Beanstalk normalmente associa às instâncias do EC2 não é criado. Portanto, você deve fornecer a opção SecurityGroups a outros grupos de segurança.
Observe que a opção aws:elasticbeanstalk:environment EnvironmentType está definida como SingleInstance. Para criar um ambiente de instância única, você deve especificar essa opção, porque LoadBalanced é o EnvironmentType padrão. Como esse ambiente não inclui um balanceador de carga, não precisamos especificar um grupo de segurança de balanceador de carga.
exemplo 1— Novo ambiente de instância única com grupos de segurança do EC2 personalizados (opções de namespace embutidas)
aws elasticbeanstalk create-environment \ --regionus-east-1\ --application-namemy-app\ --environment-namemy-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
Outra opção é usar um arquivo options.json para especificar as opções de namespace em vez de incluí-las inline.
exemplo 2— Novo ambiente de instância única com grupos de segurança do EC2 personalizados (opções de namespace no arquivo options.json)
aws elasticbeanstalk create-environment \ --regionus-east-1\ --application-namemy-app\ --environment-namemy-env\ --solution-stack-name"64bit Amazon Linux 2023 v6.5.0 running Node.js 22"\ --option-settingsfile://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" } ]
O exemplo a seguir cria um ambiente com balanceamento de carga. Ele especifica a opção LoadBalancerType de namespace aws:elasticbeanstalk:environment definida como application. Como estamos desabilitando o grupo de segurança padrão do EC2 com a opção DisableDefaultEC2SecurityGroup, precisamos fornecer nossos próprios grupos de segurança personalizados para as instâncias do EC2 novamente, com a opção aws:autoscaling:launchconfiguration SecurityGroups, como no exemplo anterior. Como esse ambiente tem um balanceador de carga para rotear o tráfego, também devemos fornecer grupos de segurança para o balanceador de carga.
Para criar um ambiente com um balanceador de carga clássico, mas com a mesma configuração, atualize a configuração da opção LoadBalancerType de namespace aws:elasticbeanstalk:environment para classic.
Os diferentes tipos de balanceador de carga têm namespaces diferentes que contêm as opções para especificar os grupos de segurança:
-
application load balancer: opção aws:elbv2:loadbalancer
SecurityGroups -
classic load balancer: opção aws:elb:loadbalancer
SecurityGroups -
network load balancer: como os balanceadores de carga de rede não possuem grupos de segurança, configure os grupos de segurança do EC2 com identificadores de VPC. Para ter mais informações, consulte Atualizar os grupos de segurança para o Network Load Balancer no Guia do usuário dos Network Load Balancers.
exemplo 3: novo ambiente multi-instância com grupos de segurança do EC2 personalizados (opções de namespace no arquivo options.json)
aws elasticbeanstalk create-environment \ --regionus-east-1\ --application-namemy-app\ --environment-namemy-env\ --solution-stack-name"64bit Amazon Linux 2023 v6.5.0 running Node.js 22"\ --option-settingsfile://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" } ]
Você pode desabilitar o grupo de segurança padrão do EC2 para um ambiente existente com o comando update-environment. O comando de exemplo a seguir desabilita o grupo de segurança padrão do EC2 e atribui grupos de segurança EC2 personalizados às instâncias do EC2 do ambiente.
Use os arquivos options.jason de exemplo nos exemplos 4(a), 4(b) ou 4(c), dependendo de se o ambiente tem balanceamento de carga e do tipo de balanceador de carga. O arquivo de configuração 4(a) especifica os grupos de segurança para um ambiente de instância única. Como ele não exige um balanceador de carga, fornecemos apenas o grupo de segurança para as instâncias do EC2. Os arquivos de configuração 4(b) e 4(c) especificam os grupos de segurança para um application load balancer e um classic load balancer. Nesses casos, também precisamos especificar grupos de segurança para o balanceador de carga.
exemplo 4: atualize um ambiente existente para desabilitar o grupo de segurança padrão do EC2 (opções de namespace no arquivo options.json)
aws elasticbeanstalk update-environment \ --regionus-east-1\ --application-namemy-app\ --environment-namemy-env\ --solution-stack-name"64bit Amazon Linux 2023 v6.5.0 running Node.js 22"\ --option-settingsfile://options.json
exemplo 4(a): arquivo de configuração para ambiente de instância única (sem balanceador 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 atualizar um ambiente que usa um application load balancer, use o namespace aws:elbv2:loadbalancer para especificar os grupos de segurança do balanceador de carga.
exemplo 4(b:) arquivo de configuração para ambiente com um application load balancer
### 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 atualizar um ambiente que usa um classic load balancer, use o namespace aws:elb:loadbalancer para especificar os grupos de segurança do balanceador de carga.
exemplo 4(c:) arquivo de configuração para ambiente com um classic load balancer
### 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 retornar seu ambiente ao comportamento e à configuração padrão com o grupo de segurança padrão que o Elastic Beanstalk atribui, use o comando update-environment para definir DisableDefaultEC2SecurityGroup como false. Para um ambiente de várias instâncias, o Elastic Beanstalk também gerencia os grupos de segurança e as regras de tráfego de rede do balanceador de carga do seu ambiente.
O exemplo a seguir se aplica a um ambiente de instância única ou de várias instâncias (balanceamento de carga):
exemplo 5: atualize um ambiente de volta para usar o grupo de segurança padrão (opções de namespace no arquivo options.json)
aws elasticbeanstalk update-environment \ --regionus-east-1\ --application-namemy-app\ --environment-namemy-env\ --solution-stack-name"64bit Amazon Linux 2023 v6.5.0 running Node.js 22"\ --option-settingsfile://options.json
### example options.json ### [ { "Namespace": "aws:autoscaling:launchconfiguration", "OptionName": "DisableDefaultEC2SecurityGroup", "Value": "false" } ]
Configurar o EC2 com tipos de instância usando o AWS CLI
Este tópico fornece exemplos para configurar os tipos de instância do EC2 no seu ambiente.
Os dois primeiros exemplos criam um novo ambiente. O comando especifica um tipo de instâncias do Amazon EC2, t4g.small, baseado na arquitetura do processador arm64. O Elastic Beanstalk usa como padrão a ID de imagem (AMI) para as instâncias do EC2 com base na região, na versão da plataforma e no tipo de instância. O tipo de instância corresponde a uma arquitetura de processador. O parâmetro solution-stack-name se aplica à versão da plataforma.
exemplo 1 – criar um novo ambiente baseado em arm64 (opções de namespace inline)
aws elasticbeanstalk create-environment \ --regionus-east-1\ --application-namemy-app\ --environment-namemy-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
Outra opção é usar um arquivo options.json para especificar as opções de namespace em vez de incluí-las inline.
exemplo 2 – criar um novo ambiente baseado em arm64 (opções de namespace no arquivo options.json)
aws elasticbeanstalk create-environment \ --regionus-east-1\ --application-namemy-app\ --environment-namemy-env\ --solution-stack-name"64bit Amazon Linux 2 v3.4.7 running Docker"\ --option-settingsfile://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" } ]
Os próximos dois exemplos atualizam a configuração de um ambiente existente com o comando update-environment. Neste exemplo, estamos adicionando outro tipo de instância que também se baseia na arquitetura do processador arm64. Para ambientes existentes, todos os tipos de instância adicionados devem ter a mesma arquitetura de processador. Se quiser substituir os tipos de instância existentes pelos de uma arquitetura diferente, você pode fazer isso. Mas certifique-se de que todos os tipos de instância no comando tenham o mesmo tipo de arquitetura.
exemplo 3 – atualize um ambiente baseado em arm64 existente (opções de namespace inline)
aws elasticbeanstalk update-environment \ --regionus-east-1\ --application-namemy-app\ --environment-namemy-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
Outra opção é usar um arquivo options.json para especificar as opções de namespace em vez de incluí-las inline.
exemplo 4 – atualize um ambiente baseado em arm64 existente (opções de namespace no arquivo options.json)
aws elasticbeanstalk update-environment \ --regionus-east-1\ --application-namemy-app\ --environment-namemy-env\ --solution-stack-name"64bit Amazon Linux 2 v3.4.7 running Docker"\ --option-settingsfile://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" } ]
Os próximos dois exemplos mostram mais comandos de create-environment Esses exemplos não fornecem valores para InstanceTypes. Quando valores InstanceTypes não são especificados, o Elastic Beanstalk usa como padrão a arquitetura de processador baseada em x86. A ID de imagem (AMI) para as instâncias do EC2 do ambiente será padrão de acordo com a Região, a versão da plataforma e o tipo de instância padrão. O tipo de instância corresponde a uma arquitetura de processador.
exemplo 5 – criar um novo ambiente baseado em x86 (opções de namespace inline)
aws elasticbeanstalk create-environment \ --regionus-east-1\ --application-namemy-app\ --environment-namemy-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
Outra opção é usar um arquivo options.json para especificar as opções de namespace em vez de incluí-las inline.
exemplo 6 – criar um novo ambiente baseado em x86 (opções de namespace no arquivo options.json)
aws elasticbeanstalk create-environment \ --regionus-east-1\ --application-namemy-app\ --environment-namemy-env\ --solution-stack-name"64bit Amazon Linux 2 v3.4.7 running Docker"\ --option-settingsfile://options.json
### example options.json ### [ { "Namespace": "aws:autoscaling:launchconfiguration", "OptionName": "IamInstanceProfile", "Value": "aws-elasticbeanstalk-ec2-role" } ]