Uso de variáveis de ambiente no AWS AppSync
É possível usar variáveis de ambiente para ajustar o comportamento de resolvedores e funções do AWS AppSync sem atualizar o código. As variáveis de ambiente são pares de strings armazenadas com sua configuração de API que são disponibilizadas para seus resolvedores e funções para serem aproveitadas em runtime. Elas são particularmente úteis para situações em que você precisa consultar dados de configuração que só estão disponíveis durante a configuração inicial, mas precisam ser usados por seus resolvedores e funções durante a execução. As variáveis de ambiente expõem os dados de configuração em seu código, reduzindo assim a necessidade de codificar esses valores.
nota
Para aumentar a segurança do banco de dados, recomendamos que você use o Secrets Manager ou o AWS Systems Manager Parameter Store, em vez de variáveis de ambiente, para armazenar credenciais ou informações confidenciais. Para aproveitar esse atributo, consulte Como invocar serviços da AWS com fontes de dados HTTP do AWS AppSync.
As variáveis de ambiente devem seguir vários comportamentos e regras para funcionar adequadamente:
-
Tanto os resolvedores/funções JavaScript quanto os modelos VTL oferecem suporte a variáveis de ambiente.
-
As variáveis de ambiente não são avaliadas antes da invocação da função.
-
As variáveis de ambiente só oferecem suporte a valores de string.
-
Qualquer valor definido em uma variável de ambiente é considerado um literal de string e não expandido.
-
O ideal é que as avaliações de variáveis sejam realizadas no código da função.
Configurar variáveis de ambiente (console)
Você pode configurar variáveis de ambiente para sua API GraphQL do AWS AppSync criando a variável e definindo seu par de chave-valor. Seus resolvedores e funções usarão o nome da chave da variável de ambiente para recuperar o valor em runtime. Para definir variáveis de ambiente no console do AWS AppSync:
-
Faça login no AWS Management Console e abra o console do AppSync
. -
Na página APIs, escolha o nome de uma API GraphQL.
-
Na página inicial da sua API, no painel de navegação, selecione Configurações.
-
Em Variáveis de ambiente, escolha Adicionar variáveis de ambiente.
-
Escolha Add environment variable (Adicionar variável de ambiente).
-
Insira um par de chave e valor.
-
Se necessário, repita as etapas 5 e 6 para adicionar mais valores de chave. Se precisar remover um valor de chave, escolha a opção Remover e a chave a ser removida.
-
Selecione Enviar.
dica
Há algumas regras que você deve seguir ao criar chaves e valores:
-
As chaves devem começar com uma letra.
-
As chaves devem conter pelo menos dois caracteres.
-
As chaves só podem conter letras, números e o caractere de sublinhado (_).
-
Os valores podem conter até 512 caracteres.
-
Você pode configurar até 50 pares de chave-valor em uma API GraphQL.
Configurar variáveis de ambiente (API)
Para definir uma variável de ambiente usando APIs, você pode usar PutGraphqlApiEnvironmentVariables
. O comando CLI correspondente é put-graphql-api-environment-variables
.
Para recuperar uma variável de ambiente usando APIs, você pode usar GetGraphqlApiEnvironmentVariables
. O comando CLI correspondente é get-graphql-api-environment-variables
.
O comando deve conter o ID da API e a lista de variáveis de ambiente:
aws appsync put-graphql-api-environment-variables \ --api-id "<api-id>" \ --environment-variables '{"key1":"value1","key2":"value2", …}'
O exemplo a seguir define duas variáveis de ambiente em uma API com o ID abcdefghijklmnopqrstuvwxyz
usando o comando put-graphql-api-environment-variables
:
aws appsync put-graphql-api-environment-variables \ --api-id "
abcdefghijklmnopqrstuvwxyz
" \ --environment-variables '{"USER_TABLE
":"users_prod
","DEBUG
":"true
"}'
Observe que, quando você aplica variáveis de ambiente com o comando put-graphql-api-environment-variables
, o conteúdo da estrutura das variáveis de ambiente é sobrescrito; isso significa que as variáveis de ambiente existentes serão perdidas. Para reter variáveis de ambiente existentes ao adicionar outras novas, inclua todos os pares de chave-valor existentes junto com os novos em sua solicitação. Usando o exemplo acima, se quiser adicionar "EMPTY":""
, você pode fazer o seguinte:
aws appsync put-graphql-api-environment-variables \ --api-id "
abcdefghijklmnopqrstuvwxyz
" \ --environment-variables '{"USER_TABLE
":"users_prod
","DEBUG
":"true
", "EMPTY
":""}'
Para recuperar a configuração atual, use o comando get-graphql-api-environment-variables
:
aws appsync get-graphql-api-environment-variables --api-id "<api-id>"
Usando o exemplo acima, você poderia usar o comando a seguir:
aws appsync get-graphql-api-environment-variables --api-id "
abcdefghijklmnopqrstuvwxyz
"
O resultado mostrará a lista de variáveis de ambiente junto com seus valores de chave:
{ "environmentVariables": { "USER_TABLE": "users_prod", "DEBUG": "true", "EMPTY": "" } }
Configuração de variáveis de ambiente (CFN)
Você pode usar o modelo abaixo para criar variáveis de ambiente:
AWSTemplateFormatVersion: 2010-09-09 Resources: GraphQLApiWithEnvVariables: Type: "AWS::AppSync::GraphQLApi" Properties: Name: "
MyApiWithEnvVars
" AuthenticationType: "AWS_IAM
" EnvironmentVariables: EnvKey1: "non-empty
" EnvKey2: ""
Variáveis de ambiente e APIs mescladas
As variáveis de ambiente definidas nas APIs de origem também estão disponíveis em suas APIs mescladas. As variáveis de ambiente nas APIs mescladas são somente para leitura e não podem ser atualizadas. Observe que suas chaves de variáveis de ambiente devem ser exclusivas em todas as APIs de origem para que suas mesclagens sejam bem-sucedidas; chaves duplicadas sempre resultarão em uma falha na mesclagem.
Recuperar variáveis de ambiente
Para recuperar variáveis de ambiente em seu código de função, recupere o valor do ctx.env
objeto em seus resolvedores e funções. Veja a seguir alguns exemplos.