Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menggunakan AWS AppSync Private APIs
Jika Anda menggunakan Amazon Virtual Private Cloud (Amazon VPC), Anda dapat membuat AWS AppSync Private APIs, APIs yang hanya dapat diakses dari VPC. Dengan API Pribadi, Anda dapat membatasi akses API ke aplikasi internal Anda dan terhubung ke titik akhir GraphQL dan Realtime tanpa mengekspos data secara publik.
Untuk membuat koneksi pribadi antara VPC Anda dan AWS AppSync layanan, Anda harus membuat antarmuka VPC endpoint. Endpoint antarmuka didukung oleh AWS PrivateLink
AWS AppSync mendukung AWS PrivateLink untuk operasi bidang data dan bidang kontrol:
-
Data plane endpoint (
com.amazonaws.{region}.appsync-api): Menyediakan akses pribadi ke GraphQL Anda dan APIs Real-time untuk kueri, mutasi, dan langganan. -
Control plane endpoint (
com.amazonaws.{region}.appsync): Menyediakan akses pribadi ke operasi AWS AppSync manajemen seperti membuat APIs, memperbarui skema, dan mengonfigurasi sumber data.
Ada beberapa faktor tambahan yang perlu dipertimbangkan sebelum mengaktifkan fitur API Pribadi:
-
Menyiapkan titik akhir antarmuka VPC AWS AppSync dengan fitur DNS Pribadi diaktifkan akan mencegah sumber daya di VPC dapat memanggil publik lain AWS AppSync menggunakan URL API yang dihasilkan. APIs AWS AppSync Ini karena permintaan ke API publik dirutekan melalui titik akhir antarmuka, yang tidak diizinkan untuk umum. APIs Untuk memanggil publik APIs dalam skenario ini, disarankan untuk mengonfigurasi nama domain khusus di publik APIs, yang kemudian dapat digunakan oleh sumber daya di VPC untuk memanggil API publik.
-
AWS AppSync Private Anda hanya APIs akan tersedia dari VPC Anda. Editor kueri AWS AppSync konsol hanya akan dapat menjangkau API Anda jika konfigurasi jaringan browser Anda dapat merutekan lalu lintas ke VPC Anda (misalnya, koneksi melalui VPN atau lebih AWS Direct Connect).
-
Dengan titik akhir antarmuka VPC untuk AWS AppSync, Anda dapat mengakses API Pribadi apa pun di AWS akun dan Wilayah yang sama. Untuk lebih membatasi akses ke Private APIs, Anda dapat mempertimbangkan opsi berikut:
-
Memastikan hanya administrator yang diperlukan yang dapat membuat antarmuka titik akhir VPC untuk. AWS AppSync
-
Menggunakan kebijakan kustom titik akhir VPC untuk membatasi mana yang APIs dapat dipanggil dari sumber daya di VPC.
-
Untuk sumber daya di VPC, kami menyarankan Anda menggunakan otorisasi IAM untuk memanggil AWS AppSync APIs dengan memastikan bahwa sumber daya diberikan peran tercakup ke bawah. APIs
-
-
Saat membuat atau menggunakan kebijakan yang membatasi prinsip IAM, Anda harus mengatur metode ke atau
authorizationType.AWS_IAMNONE
Membuat AWS AppSync Pribadi APIs
Langkah-langkah berikut di bawah ini menunjukkan kepada Anda cara membuat Private APIs di AWS AppSync layanan.
Awas
Anda dapat mengaktifkan fitur API Pribadi hanya selama pembuatan API. Pengaturan ini tidak dapat dimodifikasi pada AWS AppSync API atau API AWS AppSync Pribadi setelah dibuat.
-
Masuk ke AWS Management Console dan buka AppSync konsol
. -
Di Dashboard, pilih Create API.
-
-
Pilih Desain API dari awal, lalu pilih Berikutnya.
-
Di bagian Private API, pilih Use Private API features.
-
Konfigurasikan opsi lainnya, tinjau data API Anda, lalu pilih Buat.
Sebelum Anda dapat menggunakan API AWS AppSync Pribadi, Anda harus mengonfigurasi titik akhir antarmuka AWS AppSync di VPC Anda. Perhatikan bahwa API Pribadi dan VPC harus berada di AWS akun dan Wilayah yang sama.
Membuat titik akhir antarmuka untuk AWS AppSync
Anda dapat membuat titik akhir antarmuka untuk AWS AppSync menggunakan konsol VPC Amazon atau () AWS Command Line Interface .AWS CLI Bergantung pada kasus penggunaan Anda, Anda mungkin perlu membuat satu atau kedua jenis titik akhir:
-
Titik akhir pesawat data: Diperlukan untuk mengakses Private APIs dari VPC Anda
-
Titik akhir bidang kontrol: Diperlukan untuk mengelola AWS AppSync sumber daya dari VPC Anda menggunakan atau AWS CLI SDKs
Untuk informasi selengkapnya, lihat Membuat titik akhir antarmuka dalam Panduan Pengguna Amazon VPC.
catatan
Pastikan Anda memilih layanan titik akhir VPC yang tepat; ada dua untuk AppSync: com.amazonaws.{region}.appsync-api adalah yang diperlukan untuk pribadi APIs sementara com.amazonaws.{region}.appsync digunakan untuk manajemen API.
Untuk menggunakan opsi DNS pribadi, Anda harus mengatur enableDnsHostnames dan enableDnsSupportattributes nilai VPC Anda. Untuk informasi selengkapnya, lihat Melihat dan memperbarui dukungan DNS untuk VPC Anda di Panduan Pengguna Amazon VPC. Jika Anda mengaktifkan fitur DNS pribadi untuk titik akhir antarmuka, Anda dapat membuat permintaan ke API AWS AppSync GraphQL dan titik akhir Real-time menggunakan titik akhir DNS publik defaultnya menggunakan format di bawah ini:
https://{api_url_identifier}.appsync-api.{region}.amazonaws.com/graphql
Untuk operasi pesawat kontrol, Anda dapat menggunakan titik akhir AWS AppSync layanan standar:
https://appsync.{region}.amazonaws.com
Untuk informasi selengkapnya tentang titik akhir layanan, lihat Titik akhir layanan dan kuota di Referensi Umum.AWS
Untuk informasi selengkapnya tentang interaksi layanan dengan titik akhir antarmuka, lihat Mengakses layanan melalui titik akhir antarmuka di Panduan Pengguna Amazon VPC.
Untuk informasi tentang membuat dan mengonfigurasi titik akhir menggunakan AWS CloudFormation, lihat VPCEndpoint sumber daya AWS:EC2:: di AWS CloudFormation Panduan Pengguna.
Contoh lanjutan
Jika Anda mengaktifkan fitur DNS pribadi untuk titik akhir antarmuka, Anda dapat membuat permintaan ke API AWS AppSync GraphQL dan titik akhir Real-time menggunakan titik akhir DNS publik defaultnya menggunakan format di bawah ini:
https://{api_url_identifier}.appsync-api.{region}.amazonaws.com/graphql
Menggunakan antarmuka VPC endpoint public DNS hostname, URL dasar untuk memanggil API akan dalam format berikut:
https://{vpc_endpoint_id}-{endpoint_dns_identifier}.appsync-api.{region}.vpce.amazonaws.com/graphql
Anda juga dapat menggunakan nama host DNS khusus AZ jika Anda telah menerapkan titik akhir di AZ:
https://{vpc_endpoint_id}-{endpoint_dns_identifier}-{az_id}.appsync-api.{region}.vpce.amazonaws.com/graphql.
Menggunakan nama DNS publik titik akhir VPC akan memerlukan nama host titik akhir AWS AppSync API untuk diteruskan sebagai Host atau sebagai header ke permintaan. x-appsync-domain Contoh-contoh ini menggunakan TodoAPI yang dibuat dalam panduan skema Launch a sample:
curl https://{vpc_endpoint_id}-{endpoint_dns_identifier}.appsync-api.{region}.vpce.amazonaws.com/graphql \ -H "Content-Type:application/graphql" \ -H "x-api-key:da2-{xxxxxxxxxxxxxxxxxxxxxxxxxx}" \ -H "Host:{api_url_identifier}.appsync-api.{region}.amazonaws.com" \ -d '{"query":"mutation add($createtodoinput: CreateTodoInput!) {\n createTodo(input: $createtodoinput) {\n id\n name\n where\n when\n description\n }\n}","variables":{"createtodoinput":{"name":"My first GraphQL task","when":"Friday Night","where":"Day 1","description":"Learn more about GraphQL"}}}'
Dalam contoh berikut, kita akan menggunakan aplikasi Todo yang dihasilkan dalam panduan Launch a sample schema. Untuk menguji contoh Todo API, kita akan menggunakan DNS Pribadi untuk menjalankan API. Anda dapat menggunakan alat baris perintah pilihan Anda; contoh ini menggunakan curl{ } di bawah ini dengan nilai yang sesuai dari akun Anda AWS .
Pengujian Operasi Mutasi — createTodo Permintaan
curl https://{api_url_identifier}.appsync-api.{region}.amazonaws.com/graphql \ -H "Content-Type:application/graphql" \ -H "x-api-key:da2-{xxxxxxxxxxxxxxxxxxxxxxxxxx}" \ -d '{"query":"mutation add($createtodoinput: CreateTodoInput!) {\n createTodo(input: $createtodoinput) {\n id\n name\n where\n when\n description\n }\n}","variables":{"createtodoinput":{"name":"My first GraphQL task","when":"Friday Night","where":"Day 1","description":"Learn more about GraphQL"}}}'
Pengujian Operasi Mutasi — createTodo Respon
{ "data": { "createTodo": { "id": "<todo-id>", "name": "My first GraphQL task", "where": "Day 1", "when": "Friday Night", "description": "Learn more about GraphQL" } } }
Operasi Kueri Pengujian - listTodos Permintaan
curl https://{api_url_identifier}.appsync-api.{region}.amazonaws.com/graphql \ -H "Content-Type:application/graphql" \ -H "x-api-key:da2-{xxxxxxxxxxxxxxxxxxxxxxxxxx}" \ -d '{"query":"query ListTodos {\n listTodos {\n items {\n description\n id\n name\n when\n where\n }\n }\n}\n","variables":{"createtodoinput":{"name":"My first GraphQL task","when":"Friday Night","where":"Day 1","description":"Learn more about GraphQL"}}}'
Operasi Kueri Pengujian - listTodos Permintaan
{ "data": { "listTodos": { "items": [ { "description": "Learn more about GraphQL", "id": "<todo-id>", "name": "My first GraphQL task", "when": "Friday night", "where": "Day 1" } ] } } }
Menguji Operasi Langganan - Berlangganan mutasi createTodo
Untuk mengatur langganan GraphQL, lihat Membangun AWS AppSync klien waktu nyata. WebSocket Dari EC2 instans Amazon di VPC, Anda dapat menguji titik akhir langganan API AWS AppSync Pribadi menggunakan wscat.API
KEY untuk otorisasi.
$ header=`echo '{"host":"{api_url_identifier}.appsync-api.{region}.amazonaws.com","x-api-key":"da2-{xxxxxxxxxxxxxxxxxxxxxxxxxx}"}' | base64 | tr -d '\n'` $ wscat -p 13 -s graphql-ws -c "wss://{api_url_identifier}.appsync-realtime-api.us-west-2.amazonaws.com/graphql?header=$header&payload=e30=" Connected (press CTRL+C to quit) > {"type": "connection_init"} < {"type":"connection_ack","payload":{"connectionTimeoutMs":300000}} < {"type":"ka"} > {"id":"f7a49717","payload":{"data":"{\"query\":\"subscription onCreateTodo {onCreateTodo {description id name where when}}\",\"variables\":{}}","extensions":{"authorization":{"x-api-key":"da2-{xxxxxxxxxxxxxxxxxxxxxxxxxx}","host":"{api_url_identifier}.appsync-api.{region}.amazonaws.com"}}},"type":"start"} < {"id":"f7a49717","type":"start_ack"}
Atau, gunakan nama domain titik akhir VPC sambil memastikan untuk menentukan header Host dalam wscat perintah untuk membuat websocket:
$ header=`echo '{"host":"{api_url_identifier}.appsync-api.{region}.amazonaws.com","x-api-key":"da2-{xxxxxxxxxxxxxxxxxxxxxxxxxx}"}' | base64 | tr -d '\n'` $ wscat -p 13 -s graphql-ws -c "wss://{vpc_endpoint_id}-{endpoint_dns_identifier}.appsync-api.{region}.vpce.amazonaws.com/graphql?header=$header&payload=e30=" --header Host:{api_url_identifier}.appsync-realtime-api.us-west-2.amazonaws.com Connected (press CTRL+C to quit) > {"type": "connection_init"} < {"type":"connection_ack","payload":{"connectionTimeoutMs":300000}} < {"type":"ka"} > {"id":"f7a49717","payload":{"data":"{\"query\":\"subscription onCreateTodo {onCreateTodo {description id priority title}}\",\"variables\":{}}","extensions":{"authorization":{"x-api-key":"da2-{xxxxxxxxxxxxxxxxxxxxxxxxxx}","host":"{api_url_identifier}.appsync-api.{region}.amazonaws.com"}}},"type":"start"} < {"id":"f7a49717","type":"start_ack"}
Jalankan kode mutasi di bawah ini:
curl https://{api_url_identifier}.appsync-api.{region}.amazonaws.com/graphql \ -H "Content-Type:application/graphql" \ -H "x-api-key:da2-{xxxxxxxxxxxxxxxxxxxxxxxxxx}" \ -d '{"query":"mutation add($createtodoinput: CreateTodoInput!) {\n createTodo(input: $createtodoinput) {\n id\n name\n where\n when\n description\n }\n}","variables":{"createtodoinput":{"name":"My first GraphQL task","when":"Friday Night","where":"Day 1","description":"Learn more about GraphQL"}}}'
Setelah itu, langganan dipicu, dan pemberitahuan pesan muncul seperti yang ditunjukkan di bawah ini:
< {"id":"f7a49717","type":"data","payload":{"data":{"onCreateTodo":{"description":"Go to the shops","id":"169ce516-b7e8-4a6a-88c1-ab840184359f","priority":5,"title":"Go to the shops"}}}}
Contoh bidang kontrol
Dengan titik akhir VPC bidang kontrol yang dikonfigurasi, Anda dapat mengelola AWS AppSync sumber daya dari dalam VPC Anda menggunakan atau. AWS CLI SDKs Berikut adalah contoh operasi pesawat kontrol umum:
Membuat API menggunakan AWS CLI
aws appsync create-graphql-api \ --name "MyPrivateAPI" \ --authentication-type API_KEY \ --visibility PRIVATE
Memperbarui skema
aws appsync start-schema-creation \ --api-id {api-id} \ --definition file://schema.graphql
Membuat sumber data
aws appsync create-data-source \ --api-id {api-id} \ --name "MyDataSource" \ --type AWS_LAMBDA \ --lambda-config lambdaFunctionArn=arn:aws:lambda:{region}:{account}:function:MyFunction
Saat menggunakan titik akhir bidang kontrol dengan DNS pribadi diaktifkan, perintah ini akan secara otomatis merutekan melalui titik akhir VPC Anda. Jika DNS pribadi tidak diaktifkan, Anda dapat menentukan URL titik akhir:
aws appsync create-graphql-api \ --endpoint-url https://{vpc_endpoint_id}-{endpoint_dns_identifier}.appsync.{region}.vpce.amazonaws.com \ --name "MyPrivateAPI" \ --authentication-type API_KEY \ --visibility PRIVATE
Menggunakan kebijakan IAM untuk membatasi pembuatan API publik
AWS AppSync mendukung Conditionpernyataan IAM untuk digunakan dengan Private APIs. visibilityBidang ini dapat disertakan dengan pernyataan kebijakan IAM untuk appsync:CreateGraphqlApi operasi untuk mengontrol peran IAM dan pengguna mana yang dapat membuat pribadi dan publik. APIs Ini memberi administrator IAM kemampuan untuk menentukan kebijakan IAM yang hanya akan memungkinkan pengguna untuk membuat API GraphQL Pribadi. Pengguna yang mencoba membuat API publik akan menerima pesan yang tidak sah.
Misalnya, administrator IAM dapat membuat pernyataan kebijakan IAM berikut untuk memungkinkan pembuatan Private: APIs
{ "Sid": "AllowPrivateAppSyncApis", "Effect": "Allow", "Action": "appsync:CreateGraphqlApi", "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "appsync:Visibility": "PRIVATE" } } }
Administrator IAM juga dapat menambahkan kebijakan kontrol layanan berikut untuk memblokir semua pengguna dalam AWS organisasi agar tidak membuat AWS AppSync APIs selain Pribadi APIs:
{ "Sid": "BlockNonPrivateAppSyncApis", "Effect": "Deny", "Action": "appsync:CreateGraphqlApi", "Resource": "*", "Condition": { "ForAnyValue:StringNotEquals": { "appsync:Visibility": "PRIVATE" } } }
Dukungan VPC PrivateLink
Dukungan VPC Privatelink tersedia di. AWS AppSync PrivateLink memungkinkan Anda untuk menggunakan dan berinteraksi dengan AWS Layanan tanpa lalu lintas apa pun yang meninggalkan AWS jaringan.
AWS AppSync mendukung AWS PrivateLink untuk kedua bidang data dan operasi pesawat kontrol.
-
VPCE endpoint (
appsync.<region>.vpce.amazonaws.com): Menyediakan akses VPC ke bidang data dan operasi pesawat kontrol sebagai berikut:-
appsync untuk operasi pesawat kontrol
-
appsync-api untuk operasi pesawat data
-