Utilizzo delle variabili di ambiente in AWS AppSync - AWS AppSync

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Utilizzo delle variabili di ambiente in AWS AppSync

Puoi utilizzare le variabili di ambiente per regolare il comportamento dei AWS AppSync resolver e delle funzioni senza aggiornare il codice. Le variabili di ambiente sono coppie di stringhe memorizzate con la API configurazione che vengono rese disponibili ai resolver e alle funzioni per utilizzarle in fase di esecuzione. Sono particolarmente utili nelle situazioni in cui è necessario fare riferimento a dati di configurazione disponibili solo durante la configurazione iniziale ma che devono essere utilizzati dai resolver e dalle funzioni durante l'esecuzione. Le variabili di ambiente espongono i dati di configurazione contenuti nel codice, riducendo così la necessità di codificare tali valori.

Nota

Per aumentare la sicurezza del database, si consiglia di utilizzare Secrets Manager o AWS Systems Manager Parameter Store anziché le variabili di ambiente per archiviare credenziali o informazioni riservate. Per sfruttare questa funzionalità, consulta Richiamo di AWS servizi con AWS AppSync HTTP fonti di dati.

Le variabili di ambiente devono seguire diversi comportamenti e regole per funzionare correttamente:

  • Sia i JavaScript risolutori/funzioni che i modelli supportano le variabili di ambienteVTL.

  • Le variabili di ambiente non vengono valutate prima dell'invocazione della funzione.

  • Le variabili di ambiente supportano solo valori di stringa.

  • Qualsiasi valore definito in una variabile di ambiente viene considerato una stringa letterale e non espanso.

  • Le valutazioni delle variabili dovrebbero idealmente essere eseguite nel codice della funzione.

Configurazione delle variabili di ambiente (console)

Puoi configurare le variabili di ambiente per il tuo AWS AppSync GraphQL API creando la variabile e definendo la sua coppia chiave-valore. I resolver e le funzioni utilizzeranno il nome chiave della variabile di ambiente per recuperare il valore in fase di esecuzione. Per impostare le variabili di ambiente nella console: AWS AppSync

  1. Accedi a AWS Management Console e apri la AppSyncconsole.

  2. Nella APIspagina, scegli il nome di un GraphQLAPI.

  3. Nella home page, nel pannello di navigazione, scegli Impostazioni. API

  4. In Variabili di ambiente, scegli Aggiungi variabile di ambiente.

  5. Scegli Add environment variable (Aggiungi variabile d'ambiente).

  6. Inserisci una coppia chiave valore.

  7. Se necessario, ripeti i passaggi 5 e 6 per aggiungere altri valori chiave. Se devi rimuovere un valore chiave, scegli l'opzione Rimuovi e le chiavi da rimuovere.

  8. Scegli Invia.

Suggerimento

Ci sono alcune regole da seguire quando si creano chiavi e valori:

  • Le chiavi devono iniziare con una lettera.

  • Le chiavi devono contenere almeno due caratteri.

  • Le chiavi possono contenere solo lettere, numeri e il carattere di sottolineatura (_).

  • I valori possono avere una lunghezza massima di 512 caratteri.

  • È possibile configurare fino a 50 coppie chiave-valore in un GraphQL. API

Configurazione delle variabili di ambiente () API

Per impostare una variabile di ambiente utilizzandoAPIs, puoi usarePutGraphqlApiEnvironmentVariables. Il CLI comando corrispondente èput-graphql-api-environment-variables.

Per recuperare una variabile di ambiente utilizzandoAPIs, puoi usareGetGraphqlApiEnvironmentVariables. Il CLI comando corrispondente èget-graphql-api-environment-variables.

Il comando deve contenere l'APIID e l'elenco delle variabili di ambiente:

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

L'esempio seguente imposta due variabili di ambiente in un API con l'ID di abcdefghijklmnopqrstuvwxyz utilizzo 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"}'

Si noti che quando si applicano variabili di ambiente con il put-graphql-api-environment-variables comando, il contenuto della struttura delle variabili di ambiente viene sovrascritto; ciò significa che le variabili di ambiente esistenti andranno perse. Per mantenere le variabili di ambiente esistenti quando ne aggiungi di nuove, includi tutte le coppie chiave-valore esistenti insieme a quelle nuove nella richiesta. Utilizzando l'esempio precedente, se desideri aggiungere"EMPTY":"", puoi fare quanto segue:

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

Per recuperare la configurazione corrente, usa il get-graphql-api-environment-variables comando:

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

Utilizzando l'esempio precedente, è possibile utilizzare il seguente comando:

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

Il risultato mostrerà l'elenco delle variabili di ambiente insieme ai loro valori chiave:

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

Configurazione delle variabili di ambiente () CFN

È possibile utilizzare il modello seguente per creare variabili di ambiente:

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

variabili di ambiente e unite APIs

Le variabili di ambiente definite in Source APIs sono disponibili anche in APIs Merged. Le variabili di ambiente in Merged APIs sono di sola lettura e non possono essere aggiornate. Tieni presente che le chiavi delle variabili di ambiente devono essere univoche in tutto Source APIs affinché le unioni abbiano successo; le chiavi duplicate comporteranno sempre un errore di unione.

Recupero delle variabili di ambiente

Per recuperare le variabili di ambiente nel codice della funzione, recuperate il valore dall'ctx.envoggetto nei resolver e nelle funzioni. Di seguito sono riportati alcuni esempi di ciò in azione.

Publishing to Amazon SNS

In questo esempio, il nostro HTTP resolver invia un messaggio a un argomento di AmazonSNS. L'ARNargomento è noto solo dopo che lo stack che definisce il API GraphQL e l'argomento sono stati distribuiti.

/** * 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

In questo esempio, i nomi della tabella DynamoDB sono diversi se è distribuita per API lo staging o è già in produzione. Non è necessario modificare il codice del resolver. I valori delle variabili di ambiente vengono aggiornati in base a dove API viene distribuito.

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 }, ], }; }