Menggunakan variabel lingkungan di AWS AppSync - AWS AppSync

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Menggunakan variabel lingkungan di AWS AppSync

Anda dapat menggunakan variabel lingkungan untuk menyesuaikan perilaku AWS AppSync resolver dan fungsi Anda tanpa memperbarui kode Anda. Variabel lingkungan adalah pasangan string yang disimpan dengan API konfigurasi Anda yang tersedia untuk resolver dan fungsi Anda untuk dimanfaatkan saat runtime. Mereka sangat berguna untuk situasi di mana Anda harus mereferensikan data konfigurasi yang hanya tersedia selama penyiapan awal tetapi perlu digunakan oleh resolver dan fungsi Anda selama dijalankan. Variabel lingkungan mengekspos data konfigurasi dalam kode Anda, sehingga mengurangi kebutuhan untuk hard-code nilai-nilai tersebut.

catatan

Untuk meningkatkan keamanan database, sebaiknya gunakan Secrets Manager atau AWS Systems Manager Parameter Store, bukan variabel lingkungan untuk menyimpan kredensi atau informasi sensitif. Untuk memanfaatkan fitur ini, lihat Memanggil AWS layanan dengan sumber AWS AppSync HTTP data.

Variabel lingkungan harus mengikuti beberapa perilaku dan aturan agar berfungsi dengan baik:

  • Baik JavaScript resolver/fungsi dan VTL template mendukung variabel lingkungan.

  • Variabel lingkungan tidak dievaluasi sebelum pemanggilan fungsi.

  • Variabel lingkungan hanya mendukung nilai string.

  • Setiap nilai yang ditentukan dalam variabel lingkungan dianggap sebagai string literal dan tidak diperluas.

  • Evaluasi variabel idealnya harus dilakukan dalam kode fungsi.

Mengkonfigurasi variabel lingkungan (konsol)

Anda dapat mengonfigurasi variabel lingkungan untuk AWS AppSync API GraphQL Anda dengan membuat variabel dan menentukan pasangan nilai kunci-nya. Resolver dan fungsi Anda akan menggunakan nama kunci variabel lingkungan untuk mengambil nilai saat runtime. Untuk mengatur variabel lingkungan di AWS AppSync konsol:

  1. Masuk ke AWS Management Console dan buka AppSynckonsol.

  2. Pada APIshalaman, pilih nama GraphQLAPI.

  3. Di API beranda Anda, di panel navigasi, pilih Pengaturan.

  4. Di bawah variabel Lingkungan, pilih Tambahkan variabel lingkungan.

  5. Pilih Tambahkan variabel lingkungan.

  6. Masukkan kunci dan nilai.

  7. Jika perlu, ulangi langkah 5 dan 6 untuk menambahkan lebih banyak nilai kunci. Jika Anda perlu menghapus nilai kunci, pilih opsi Hapus dan kunci untuk dihapus.

  8. Pilih Kirim.

Tip

Ada beberapa aturan yang harus Anda ikuti saat membuat kunci dan nilai:

  • Kunci harus dimulai dengan surat.

  • Kunci harus memiliki panjang setidaknya dua karakter.

  • Tombol hanya dapat berisi huruf, angka, dan karakter garis bawah (_).

  • Nilai bisa mencapai 512 karakter.

  • Anda dapat mengonfigurasi hingga 50 pasangan nilai kunci dalam GraphQL. API

Mengkonfigurasi variabel lingkungan () API

Untuk mengatur variabel lingkungan menggunakanAPIs, Anda dapat menggunakanPutGraphqlApiEnvironmentVariables. CLIPerintah yang sesuai adalahput-graphql-api-environment-variables.

Untuk mengambil variabel lingkungan menggunakanAPIs, Anda dapat menggunakanGetGraphqlApiEnvironmentVariables. CLIPerintah yang sesuai adalahget-graphql-api-environment-variables.

Perintah harus berisi API ID dan daftar variabel lingkungan:

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

Contoh berikut menetapkan dua variabel lingkungan dalam API dengan ID abcdefghijklmnopqrstuvwxyz menggunakan put-graphql-api-environment-variables perintah:

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

Perhatikan bahwa ketika Anda menerapkan variabel lingkungan dengan put-graphql-api-environment-variables perintah, isi struktur variabel lingkungan ditimpa; ini berarti variabel lingkungan yang ada akan hilang. Untuk mempertahankan variabel lingkungan yang ada saat menambahkan yang baru, sertakan semua pasangan nilai kunci yang ada bersama dengan yang baru dalam permintaan Anda. Menggunakan contoh di atas, jika Anda ingin menambahkan"EMPTY":"", Anda dapat melakukan hal berikut:

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

Untuk mengambil konfigurasi saat ini, gunakan get-graphql-api-environment-variables perintah:

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

Dengan menggunakan contoh di atas, Anda dapat menggunakan perintah berikut:

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

Hasilnya akan menampilkan daftar variabel lingkungan bersama dengan nilai-nilai kunci mereka:

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

Mengkonfigurasi variabel lingkungan () CFN

Anda dapat menggunakan template di bawah ini untuk membuat variabel lingkungan:

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

variabel lingkungan dan digabungkan APIs

Variabel lingkungan yang ditentukan dalam Sumber juga APIs tersedia di Gabungan Anda. APIs Variabel lingkungan di Merged APIs hanya-baca dan tidak dapat diperbarui. Perhatikan bahwa kunci variabel lingkungan Anda harus unik di semua Sumber APIs agar penggabungan Anda berhasil; kunci duplikat akan selalu menghasilkan kegagalan penggabungan.

Mengambil variabel lingkungan

Untuk mengambil variabel lingkungan dalam kode fungsi Anda, ambil nilai dari ctx.env objek di resolver dan fungsi Anda. Di bawah ini adalah beberapa contoh tindakan ini.

Publishing to Amazon SNS

Dalam contoh ini, HTTP resolver kami mengirim pesan ke topik AmazonSNS. Topik hanya diketahui setelah tumpukan yang mendefinisikan API GraphQL dan topik telah digunakan. ARN

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

Dalam contoh ini, nama-nama tabel DynamoDB berbeda jika digunakan untuk pementasan atau sudah API dalam produksi. Kode resolver tidak perlu diubah. Nilai variabel lingkungan diperbarui berdasarkan di mana API digunakan.

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