Menggunakan HTTP resolver 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 HTTP resolver di AWS AppSync

catatan

Kami sekarang terutama mendukung runtime APPSYNC _JS dan dokumentasinya. Harap pertimbangkan untuk menggunakan runtime APPSYNC _JS dan panduannya di sini.

AWS AppSync memungkinkan Anda menggunakan sumber data yang didukung (yaitu, Amazon DynamoDB AWS Lambda, Amazon Service, atau OpenSearch Amazon Aurora) untuk melakukan berbagai operasi, selain titik akhir HTTP arbitrer untuk menyelesaikan bidang GraphQL. Setelah HTTP titik akhir Anda tersedia, Anda dapat menghubungkannya menggunakan sumber data. Kemudian, Anda dapat mengonfigurasi resolver dalam skema untuk melakukan operasi GraphQL seperti kueri, mutasi, dan langganan. Tutorial ini memandu Anda melalui beberapa contoh umum.

Dalam tutorial ini Anda menggunakan REST API (dibuat menggunakan Amazon API Gateway dan Lambda) dengan titik akhir AWS AppSync GraphQL.

Pengaturan Satu-Klik

Jika Anda ingin mengatur titik akhir GraphQL secara otomatis dengan titik akhir AWS AppSync yang dikonfigurasi (HTTPmenggunakan API Amazon Gateway dan Lambda), Anda dapat menggunakan templat berikut: AWS CloudFormation

Blue button labeled "Launch Stack" with an arrow icon indicating an action to start.

Membuat sebuah REST API

Anda dapat menggunakan AWS CloudFormation template berikut untuk menyiapkan REST titik akhir yang berfungsi untuk tutorial ini:

Blue button labeled "Launch Stack" with an arrow icon indicating an action to start.

AWS CloudFormation Tumpukan melakukan langkah-langkah berikut:

  1. Menyiapkan fungsi Lambda yang berisi logika bisnis Anda untuk layanan mikro Anda.

  2. Menyiapkan API Gateway REST API dengan kombinasi endpoint/method/content tipe berikut:

APIJalur Sumber Daya HTTPMetode Jenis Konten yang Didukung

/v1/pengguna

POST

aplikasi/json

/v1/pengguna

GET

aplikasi/json

/v1/pengguna/1

GET

aplikasi/json

/v1/pengguna/1

PUT

aplikasi/json

/v1/pengguna/1

DELETE

aplikasi/json

Membuat GraphQL Anda API

Untuk membuat GraphQL API di: AWS AppSync

  • Buka AWS AppSync konsol dan pilih Buat API.

  • Untuk API nama, ketikUserData.

  • Pilih skema Kustom.

  • Pilih Buat.

AWS AppSync Konsol membuat API GraphQL baru untuk Anda menggunakan mode otentikasi kunciAPI. Anda dapat menggunakan konsol untuk mengatur sisa API GraphQL dan menjalankan kueri di atasnya untuk sisa tutorial ini.

Membuat Skema GraphQL

Sekarang Anda memiliki GraphQL, mari kita buat skema API GraphQL. Dari editor skema di AWS AppSync konsol, pastikan skema Anda cocok dengan skema berikut:

schema { query: Query mutation: Mutation } type Mutation { addUser(userInput: UserInput!): User deleteUser(id: ID!): User } type Query { getUser(id: ID): User listUser: [User!]! } type User { id: ID! username: String! firstname: String lastname: String phone: String email: String } input UserInput { id: ID! username: String! firstname: String lastname: String phone: String email: String }

Konfigurasikan Sumber HTTP Data Anda

Untuk mengonfigurasi sumber HTTP data Anda, lakukan hal berikut:

  • Pada DataSourcestab, pilih Baru, lalu ketik nama ramah untuk sumber data (misalnya,HTTP).

  • Di tipe sumber data, pilih HTTP.

  • Setel titik akhir ke titik akhir API Gateway yang dibuat. Pastikan Anda tidak menyertakan nama panggung sebagai bagian dari titik akhir.

Catatan: Saat ini hanya titik akhir publik yang didukung oleh AWS AppSync.

Catatan: Untuk informasi selengkapnya tentang otoritas sertifikasi yang diakui oleh AWS AppSync layanan, lihat Otoritas Sertifikat (CA) yang Diakui oleh AWS AppSync untuk Titik HTTPS Akhir.

Mengkonfigurasi Resolver

Pada langkah ini, Anda menghubungkan sumber data http ke getUserkueri.

Untuk mengatur resolver:

  • Pilih tab Skema.

  • Di panel Jenis data di sebelah kanan di bawah Jenis kueri, temukan getUserbidang dan pilih Lampirkan.

  • Di Nama sumber data, pilih HTTP.

  • Di Konfigurasikan templat pemetaan permintaan, tempel kode berikut:

{ "version": "2018-05-29", "method": "GET", "params": { "headers": { "Content-Type": "application/json" } }, "resourcePath": $util.toJson("/v1/users/${ctx.args.id}") }
  • Di Konfigurasikan template pemetaan respons, tempel kode berikut:

## return the body #if($ctx.result.statusCode == 200) ##if response is 200 $ctx.result.body #else ##if response is not 200, append the response to error block. $utils.appendError($ctx.result.body, "$ctx.result.statusCode") #end
  • Pilih tab Query, dan kemudian jalankan query berikut:

query GetUser{ getUser(id:1){ id username } }

Ini akan mengembalikan respons berikut:

{ "data": { "getUser": { "id": "1", "username": "nadia" } } }
  • Pilih tab Skema.

  • Di panel tipe data di sebelah kanan bawah Mutasi, temukan addUserbidang dan pilih Lampirkan.

  • Di Nama sumber data, pilih HTTP.

  • Di Konfigurasikan templat pemetaan permintaan, tempel kode berikut:

{ "version": "2018-05-29", "method": "POST", "resourcePath": "/v1/users", "params":{ "headers":{ "Content-Type": "application/json", }, "body": $util.toJson($ctx.args.userInput) } }
  • Di Konfigurasikan template pemetaan respons, tempel kode berikut:

## Raise a GraphQL field error in case of a datasource invocation error #if($ctx.error) $util.error($ctx.error.message, $ctx.error.type) #end ## if the response status code is not 200, then return an error. Else return the body ** #if($ctx.result.statusCode == 200) ## If response is 200, return the body. $ctx.result.body #else ## If response is not 200, append the response to error block. $utils.appendError($ctx.result.body, "$ctx.result.statusCode") #end
  • Pilih tab Query, dan kemudian jalankan query berikut:

mutation addUser{ addUser(userInput:{ id:"2", username:"shaggy" }){ id username } }

Ini akan mengembalikan respons berikut:

{ "data": { "getUser": { "id": "2", "username": "shaggy" } } }

Layanan Pemanggilan AWS

Anda dapat menggunakan HTTP resolver untuk mengatur antarmuka GraphQL untuk layanan. API AWS HTTPpermintaan AWS harus ditandatangani dengan proses Signature Version 4 sehingga AWS dapat mengidentifikasi siapa yang mengirimnya. AWS AppSync menghitung tanda tangan atas nama Anda saat Anda mengaitkan IAM peran dengan sumber HTTP data.

Anda menyediakan dua komponen tambahan untuk memanggil AWS layanan dengan HTTP resolver:

  • IAMPeran dengan izin untuk memanggil layanan AWS APIs

  • Menandatangani konfigurasi di sumber data

Misalnya, jika Anda ingin memanggil ListGraphqlApis operasi dengan HTTP resolver, Anda terlebih dahulu membuat IAM peran yang AWS AppSync diasumsikan dengan kebijakan berikut terlampir:

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "appsync:ListGraphqlApis" ], "Effect": "Allow", "Resource": "*" } ] }

Selanjutnya, buat sumber HTTP data untuk AWS AppSync. Dalam contoh ini, Anda menelepon AWS AppSync di Wilayah Barat AS (Oregon). Siapkan HTTP konfigurasi berikut dalam file bernamahttp.json, yang mencakup wilayah penandatanganan dan nama layanan:

{ "endpoint": "https://appsync.us-west-2.amazonaws.com/", "authorizationConfig": { "authorizationType": "AWS_IAM", "awsIamConfig": { "signingRegion": "us-west-2", "signingServiceName": "appsync" } } }

Kemudian, gunakan AWS CLI untuk membuat sumber data dengan peran terkait sebagai berikut:

aws appsync create-data-source --api-id <API-ID> \ --name AWSAppSync \ --type HTTP \ --http-config file:///http.json \ --service-role-arn <ROLE-ARN>

Saat Anda melampirkan resolver ke bidang dalam skema, gunakan templat pemetaan permintaan berikut untuk memanggil: AWS AppSync

{ "version": "2018-05-29", "method": "GET", "resourcePath": "/v1/apis" }

Saat Anda menjalankan kueri GraphQL untuk sumber data ini AWS AppSync , tandatangani permintaan menggunakan peran yang Anda berikan dan menyertakan tanda tangan dalam permintaan. Kueri mengembalikan daftar AWS AppSync APIs GraphQL di akun Anda di Wilayah tersebut. AWS