Obter segredos e parâmetros para variáveis de ambiente do Elastic Beanstalk
O Elastic Beanstalk pode obter valores do AWS Secrets Manager e do AWS Systems Manager Parameter Store durante a inicialização da instância e atribuí-los a variáveis de ambiente para uso pela sua aplicação.
Os pontos a seguir resumem a configuração, a sincronização e o acesso para usar variáveis de ambiente como segredos:
-
Configure suas variáveis de ambiente para armazenar segredos, especificando os nomes do recurso da Amazon (ARNs) para os segredos e parâmetros que eles armazenarão.
-
Quando valores secretos são atualizados ou alternados no Secrets Manager ou no Systems Manager Parameter Store, você deve atualizar manualmente suas variáveis de ambiente.
-
As variáveis de ambiente de segredos estão disponíveis para comandos de contêiner ebextension e hooks de plataforma.
Versões compatíveis da plataforma
As versões da plataforma lançadas em ou após 26 de março de 2025 oferecem suporte a segredos do AWS Secrets Manager e parâmetros do AWS Systems Manager Parameter Store configurados como variáveis de ambiente.
nota
Com exceção das plataformas Docker e ECS baseadas em Docker, as versões da plataforma Amazon Linux 2 não são compatíveis com valores de variáveis multilinha. Para obter mais informações sobre suporte a variáveis multilinha, consulte Valores multilinha.
Tópicos
Preços
Cobranças padrão são aplicáveis ao uso do Secrets Manager e do Systems Manager Parameter Store. Para obter mais informações sobre preços, consulte os seguintes sites:
-
Preços do AWS Systems Manager
(selecione Parameter Store na lista de conteúdo)
O Elastic Beanstalk não cobra pela referência da sua aplicação a segredos de ambiente por meio de variáveis de ambiente. No entanto, as tarifas padrão se aplicam às solicitações que o Elastic Beanstalk faz a esses serviços em seu nome.
Configurar segredos como variáveis de ambiente do Elastic Beanstalk
Você pode usar o console do Elastic Beanstalk, os arquivos de configuração em .ebextensions, a AWS CLI e o AWS SDK para configurar segredos e parâmetros como variáveis de ambiente.
Tópicos
Pré-requisitos
Antes de configurar suas variáveis de ambiente para referenciar segredos, é necessário concluir as seguintes etapas.
Procedimento geral antes da configuração das variáveis de ambiente
-
Crie os segredos do Secrets Manager ou os parâmetros do Parameter Store para armazenar seus dados sensíveis. Para obter mais informações, consulte um ou ambos os tópicos a seguir:
-
Criar segredos no Usar o Secrets Manager para criar e recuperar segredos
-
Criar parâmetros no Usar o Systems Manager Parameter Store para criar e recuperar parâmetros
-
-
Configure as permissões necessárias do IAM para as instâncias do EC2 do seu ambiente para obter os segredos e parâmetros. Para obter mais informações, consulte Permissões obrigatórias do IAM.
Utilizar o console
Você pode usar o console do Elastic Beanstalk para configurar segredos como variáveis de ambiente.
Para configurar segredos como variáveis de ambiente no console do Elastic Beanstalk
Abra o console do Elastic Beanstalk
e, na lista Regions (Regiões), selecione a sua Região da AWS. -
No painel de navegação, selecione Ambientes e selecione o nome do ambiente na lista.
No painel de navegação, escolha Configuration (Configuração).
-
Na categoria de configuração Updates, monitoring, and logging (Atualizações, monitoramento e logs), escolha Edit (Editar).
-
Role para baixo até Variáveis de ambiente de runtime.
-
Selecione Adicionar variável de ambiente.
-
Em Origem, selecione Secrets Manager ou SSM Parameter Store.
nota
Para obter mais informações sobre a opção Texto sem formatação no menu suspenso, consulte Configurar propriedades do ambiente (variáveis de ambiente).
-
Em Nome da variável de ambiente, insira o nome da variável de ambiente para manter o valor do segredo ou do parâmetro.
-
Para Valor da variável de ambiente, insira o ARN do parâmetro do Systems Manager Parameter Store ou do segredo do Secrets Manager. Durante o bootstrap da instância, o Elastic Beanstalk iniciará o valor da variável que você inseriu na Etapa 8 para o valor armazenado neste ARN de recurso.
O console valida se o valor inserido é um formato de ARN válido para a loja selecionada na Etapa 7. No entanto, ele não valida a existência do recurso especificado pelo ARN nem se você possui as permissões do IAM necessárias para acessá-lo.
-
Se for necessário adicionar mais variáveis, repita a Etapa 6 até a Etapa 9.
-
Para salvar as alterações, escolha Apply (Aplicar) na parte inferior da página.
Configuração usando arquivos em .ebextensions
Você pode usar os arquivos de configuração do Elastic Beanstalk para configurar segredos como variáveis de ambiente. Use o aws:elasticbeanstalk:application:environmentsecrets namespace para definir propriedades do ambiente.
exemplo .ebextensions/options.config para segredos de ambiente (sintaxe abreviada)
option_settings:aws:elasticbeanstalk:application:environmentsecrets:MY_SECRET:arn:aws:secretsmanager:us-east-1:111122223333:secret:mysecretMY_PARAMETER:arn:aws:ssm:us-east-1:111122223333:parameter/myparam
exemplo .ebextensions/options.config para segredos de ambiente (sintaxe padrão)
option_settings: - namespace:aws:elasticbeanstalk:application:environmentsecretsoption_name:MY_SECRETvalue:arn:aws:secretsmanager:us-east-1:111122223333:secret:mysecret- namespace:aws:elasticbeanstalk:application:environmentsecretsoption_name:MY_PARAMETERvalue:arn:aws:ssm:us-east-1:111122223333:parameter/myparam
Configuração usando a AWS CLI
É possível usar a AWS Command Line Interface (AWS CLI) para configurar segredos como variáveis de ambiente do Elastic Beanstalk. Esta seção fornece exemplos dos comandos create-environment e update-environment com o namespace aws:elasticbeanstalk:application:environmentsecrets. Quando o Elastic Beanstalk inicializa as instâncias do EC2 para os ambientes referenciados por esses comandos, ele inicializa as variáveis de ambiente com o segredo obtido e os valores dos parâmetros. Ele obtém esses valores dos respectivos ARNs do Secrets Manager e do Systems Manager Parameter Store.
Os dois exemplos a seguir usam o comando create-environment para adicionar um segredo e um parâmetro, configurados como variáveis de ambiente denominadas MY_SECRET e MY_PARAMETER.
exemplo de create-environment com segredos configurados como variáveis de ambiente (opções de namespace inline)
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 20"\ --option-settings \ Namespace=aws:elasticbeanstalk:application:environmentsecrets,OptionName=MY_SECRET,Value=arn:aws:secretsmanager:us-east-1:111122223333:secret:mysecret\ Namespace=aws:elasticbeanstalk:application:environmentsecrets,OptionName=MY_PARAMETER,Value=arn:aws:ssm:us-east-1:111122223333:parameter/myparam
Outra opção é usar um arquivo options.json para especificar as opções de namespace em vez de incluí-las inline.
exemplo de create-environment com segredos configurados como variáveis de ambiente (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 20"\ --option-settingsfile://options.json
### example options.json ### [ { "Namespace": "aws:elasticbeanstalk:application:environmentsecrets", "OptionName": "MY_SECRET", "Value": "arn:aws:secretsmanager:us-east-1:111122223333:secret:mysecret" }, { "Namespace": "aws:elasticbeanstalk:application:environmentsecrets", "OptionName": "MY_PARAMETER", "Value": "arn:aws:ssm:us-east-1:111122223333:parameter/myparam" } ]
O próximo exemplo configura variáveis de ambiente, denominadas MY_SECRET e MY_PARAMETER, para armazenar um segredo e um parâmetro para um ambiente existente. O comando update-environment transmite opções com a mesma sintaxe do comando create-environment, inline ou com um arquivo options.json. O exemplo a seguir demonstra o comando usando o mesmo arquivo options.json que também é usado no exemplo anterior.
exemplo de update-environment com segredos configurados como variáveis de ambiente (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 20"\ --option-settingsfile://options.json
Configuração usando o AWS SDK
Você pode configurar segredos e parâmetros como variáveis de ambiente usando os AWS SDKs. Assim como os comandos update-environment e create-environment da AWS CLI mencionados na seção anterior, você pode usar as ações da API CreateEnvironment e UpdateEnvironment. Use o parâmetro de solicitação OptionSettings para especificar as opções do namespace aws:elasticbeanstalk:application:environmentsecrets.
Pratas recomendadas para sincronização de segredos com variáveis de ambiente do Elastic Beanstalk
Este tópico recomenda as práticas recomendadas para sua aplicação usar segredos de ambiente com o Secrets Manager ou o Systems Manager Parameter Store. Sua aplicação Elastic Beanstalk não receberá automaticamente os valores atualizados se os dados de armazenamento de segredos forem atualizados ou alternados. O Elastic Beanstalk só transfere segredos para variáveis de ambiente no momento do bootstrap da instância.
Atualizar suas variáveis de ambiente
Para acionar seu ambiente do Elastic Beanstalk para recuperar os valores mais recentes dos segredos dos seus armazenamentos de segredos, recomendamos que você execute a operação UpdateEnvironment ou RestartAppServer. Você pode executar essas operações usando o console do Elastic Beanstalk, a AWS CLI ou a API do Elastic Beanstalk. Para mais informações, consulte Exemplos da AWS CLI para o Elastic Beanstalk ou a Referência de APIs da AWS Elastic Beanstalk.
Gerenciar efeitos do ajuste de escala automático na sincronização de segredos
Se ocorrer um evento de aumento de escala horizontal ou uma troca de instância após as atualizações do armazenamento de segredos, a nova instância que for criada terá os valores de secredos mais recentes do Secrets Manager ou do Systems Manager Parameter Store. Esse evento pode ocorrer mesmo que nem todas as outras instâncias no ambiente tenham sido atualizadas para recuperar os novos segredos.
Importante
Você deve garantir que sua aplicação seja capaz de usar dois valores secretos diferentes para a mesma variável de ambiente. Isso acomoda eventos em que ocorre uma atualização de segredos no Secrets Manager ou no Systems Manager Parameter Store, seguida por um aumento da escala horizontal ou uma substituição de instância em seu ambiente, enquanto as outras instâncias aguardam a atualização das variáveis de ambiente. Durante o período de espera pela atualização, nem todas as instâncias do ambiente terão os mesmos valores para as variáveis de ambiente do armazenamento de segredos.
Um exemplo desse tipo de uso é a alternância de credenciais de banco de dados. Quando um evento de aumento de escala horizontal segue a alternância de credenciais, os segredos do ambiente referenciados pelas instâncias recém-inicializadas contêm as credenciais atualizadas do banco de dados. No entanto, os segredos do ambiente referenciados pelas instâncias existentes mantêm o valor antigo até serem atualizados pelas operações UpdateEnvironment ou RestartAppServer.
Valores multilinha nas variáveis de ambiente do Amazon Linux 2
Os valores multilinha são compostos por mais de uma linha e incluem um caractere de nova linha. Com exceção do Docker e das plataformas Docker baseadas em ECS, as plataformas que executam o Amazon Linux 2 não são compatíveis com valores multilinha para variáveis de ambiente.
nota
O Elastic Beanstalk falhará na implantação dos ambientes afetados se detectar um valor multilinha.
As seguintes opções podem servir como soluções alternativas ou soluções para o problema de várias linhas:
-
Faça upgrade para o Amazon Linux 2023 no seu ambiente Amazon Linux 2. Para obter mais informações, consulte Migração do Amazon Linux 2 para o Amazon Linux 2023.
-
Remova os caracteres de nova linha dos seus valores de secredos. Uma abordagem possível é codificar seus valores em Base64 antes de armazená-los no repositório de segredos. Sua aplicação precisaria então decodificar o valor de volta ao formato original quando o referenciar a partir da variável de segredo do ambiente.
-
Projete o código da sua aplicação para recuperar os dados diretamente do Secrets Manager ou do Systems Manager Parameter Store. Para obter mais informações, consulte Recuperar segredos no Usando o Secrets Manager ou Recuperar parâmetros Usando Systems Manager Parameter Store.