Uso de variables de entorno en AWS AppSync - AWS AppSync

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Uso de variables de entorno en AWS AppSync

Puede usar variables de entorno para ajustar el comportamiento de sus AWS AppSync resolutores y funciones sin necesidad de actualizar el código. Las variables de entorno son pares de cadenas almacenadas con la configuración de la API y que se ponen a disposición de los resolutores y las funciones para que las aprovechen durante el tiempo de ejecución. Son especialmente útiles en situaciones en las que debes hacer referencia a datos de configuración que solo están disponibles durante la configuración inicial, pero que tus resolutores y funciones deben utilizar durante la ejecución. Las variables de entorno exponen los datos de configuración del código, lo que reduce la necesidad de codificar esos valores de forma rígida.

nota

Para aumentar la seguridad de la base de datos, le recomendamos que utilice Secrets Manager o AWS Systems Manager Parameter Store en lugar de variables de entorno para almacenar credenciales o información confidencial. Para aprovechar esta función, consulte Invocar AWS servicios con fuentes de datos AWS AppSync HTTP.

Las variables de entorno deben seguir varios comportamientos y reglas para funcionar correctamente:

  • Tanto los JavaScript resolutores/funciones como las plantillas de VTL admiten variables de entorno.

  • Las variables de entorno no se evalúan antes de la invocación de la función.

  • Las variables de entorno solo admiten valores de cadena.

  • Cualquier valor definido en una variable de entorno se considera una cadena literal y no se expande.

  • Lo ideal es que las evaluaciones de variables se realicen en el código de la función.

Configuración de variables de entorno (consola)

Puedes configurar las variables de entorno para tu API de AWS AppSync GraphQL creando la variable y definiendo su par clave-valor. Tus resolutores y funciones utilizarán el nombre clave de la variable de entorno para recuperar el valor en tiempo de ejecución. Para configurar las variables de entorno en la AWS AppSync consola:

  1. Inicie sesión en la AppSyncconsola AWS Management Console y ábrala.

  2. En la página API, elija el nombre de una API de GraphQL.

  3. En el panel de navegación de la página de inicio de la API de, elija Ajustes.

  4. En Variables de entorno, selecciona Añadir variable de entorno.

  5. Elija Add environment variable (Añadir variable de entorno).

  6. Introduzca una clave y un valor.

  7. Si es necesario, repita los pasos 5 y 6 para añadir más valores clave. Si necesita eliminar un valor clave, elija la opción Eliminar y las claves que desee eliminar.

  8. Seleccione Submit (Enviar).

sugerencia

Hay algunas reglas que debes seguir al crear claves y valores:

  • Las claves deben empezar por una letra.

  • Las claves deben tener al menos dos caracteres.

  • Las claves solo pueden contener letras, números y el carácter de subrayado (_).

  • Los valores pueden tener una longitud máxima de 512 caracteres.

  • Puedes configurar hasta 50 pares clave-valor en una API de GraphQL.

Configuración de variables de entorno (API)

Para configurar una variable de entorno mediante API, puedes usar. PutGraphqlApiEnvironmentVariables El comando CLI correspondiente esput-graphql-api-environment-variables.

Para recuperar una variable de entorno mediante las API, puede utilizarGetGraphqlApiEnvironmentVariables. El comando CLI correspondiente esget-graphql-api-environment-variables.

El comando debe contener el ID de la API y la lista de variables de entorno:

aws appsync put-graphql-api-environment-variables \ --api-id "<api-id>" \ --environment-variables '{"key1":"value1","key2":"value2", …}'

El siguiente ejemplo establece dos variables de entorno en una API con el ID de abcdefghijklmnopqrstuvwxyz uso del put-graphql-api-environment-variables comando:

aws appsync put-graphql-api-environment-variables \ --api-id "abcdefghijklmnopqrstuvwxyz" \ --environment-variables '{"USER_TABLE":"users_prod","DEBUG":"true"}'

Tenga en cuenta que al aplicar variables de entorno con el put-graphql-api-environment-variables comando, el contenido de la estructura de las variables de entorno se sobrescribe; esto significa que se perderán las variables de entorno existentes. Para conservar las variables de entorno existentes al agregar otras nuevas, incluya todos los pares clave-valor existentes junto con los nuevos en su solicitud. Usando el ejemplo anterior, si quisieras agregar"EMPTY":"", podrías hacer lo siguiente:

aws appsync put-graphql-api-environment-variables \ --api-id "abcdefghijklmnopqrstuvwxyz" \ --environment-variables '{"USER_TABLE":"users_prod","DEBUG":"true", "EMPTY":""}'

Para recuperar la configuración actual, utilice el get-graphql-api-environment-variables comando:

aws appsync get-graphql-api-environment-variables --api-id "<api-id>"

Con el ejemplo anterior, puede utilizar el siguiente comando:

aws appsync get-graphql-api-environment-variables --api-id "abcdefghijklmnopqrstuvwxyz"

El resultado mostrará la lista de variables de entorno junto con sus valores clave:

{ "environmentVariables": { "USER_TABLE": "users_prod", "DEBUG": "true", "EMPTY": "" } }

Configuración de variables de entorno (CFN)

Puede usar la siguiente plantilla para crear variables de entorno:

AWSTemplateFormatVersion: 2010-09-09 Resources: GraphQLApiWithEnvVariables: Type: "AWS::AppSync::GraphQLApi" Properties: Name: "MyApiWithEnvVars" AuthenticationType: "AWS_IAM" EnvironmentVariables: EnvKey1: "non-empty" EnvKey2: ""

variables de entorno y API combinadas

Las variables de entorno definidas en las API de origen también están disponibles en las API combinadas. Las variables de entorno de las API combinadas son de solo lectura y no se pueden actualizar. Tenga en cuenta que las claves de las variables de entorno deben ser únicas en todas las API de origen para que las fusiones se realicen correctamente; las claves duplicadas siempre provocarán un error en la fusión.

Recuperación de variables de entorno

Para recuperar las variables de entorno del código de la función, recupere el valor del ctx.env objeto en los resolutores y las funciones. A continuación se muestran algunos ejemplos de esto en acción.

Publishing to Amazon SNS

En este ejemplo, nuestro solucionador HTTP envía un mensaje a un tema de Amazon SNS. El ARN del tema solo se conoce después de implementar la pila que define la API de GraphQL y el tema.

/** * Sends a publish request to the SNS topic */ export function request(ctx) { const TOPIC_ARN = ctx.env.TOPIC_ARN; const { input: values } = ctx.args; // this custom function sends values to the SNS topic return publishToSNSRequest(TOPIC_ARN, values); }
Transactions with DynamoDB

En este ejemplo, los nombres de la tabla de DynamoDB son diferentes si la API se implementa para la puesta en escena o si ya está en producción. No es necesario cambiar el código de resolución. Los valores de las variables de entorno se actualizan en función del lugar en el que se despliegue la API.

import { util } from '@aws-appsync/utils'; export function request(ctx) { const { authorId, postId } = ctx.args; return { operation: 'TransactWriteItems', transactItems: [ { table: ctx.env.POST_TABLE, operation: 'PutItem', key: util.dynamodb.toMapValues({ postId }), // rest of the configuration }, { table: ctx.env.AUTHOR_TABLE, operation: 'UpdateItem', key: util.dynamodb.toMapValues({ authorId }), // rest of the configuration }, ], }; }