Buat pribadi API - APIGerbang Amazon

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

Buat pribadi API

Sebelum membuat privateAPI, Anda terlebih dahulu membuat VPC endpoint untuk API Gateway. Selanjutnya Anda membuat pribadi Anda API dan melampirkan kebijakan sumber daya untuk itu. Secara opsional, Anda dapat mengaitkan VPC titik akhir Anda dengan pribadi Anda API untuk menyederhanakan cara Anda memanggil Anda. API Akhirnya, Anda API menyebarkan.

Prosedur berikut menjelaskan bagaimana mencapai hal ini. Anda dapat membuat pribadi REST API menggunakan AWS Management Console, AWS CLI atau AWS SDK.

Prasyarat

Untuk mengikuti langkah-langkah ini, Anda harus memiliki konfigurasi penuhVPC. Untuk mempelajari cara membuatVPC, lihat Membuat VPC hanya di Panduan VPC Pengguna Amazon. Untuk mengikuti semua langkah rekomendasi saat Anda membuatVPC, aktifkan pribadiDNS. Dengan cara ini Anda dapat memanggil Anda API dalam a VPC tanpa harus melewati Host atau x-apigw-api-id header.

Untuk mengaktifkan privatDNS, enableDnsHostnames atribut enableDnsSupport dan atribut Anda VPC harus diatur ketrue. Untuk informasi selengkapnya, lihat DNSSupport in Your VPC and Update DNS Support for Your VPC.

Langkah 1: Buat VPC titik akhir untuk API Gateway di VPC

Prosedur berikut menunjukkan cara membuat VPC endpoint untuk API Gateway. Untuk membuat VPC titik akhir untuk API Gateway, Anda menentukan execute-api domain untuk Wilayah AWS tempat Anda membuat pribadi API Anda. execute-apiDomain adalah layanan komponen API Gateway untuk API eksekusi.

Saat Anda membuat VPC titik akhir untuk API Gateway, Anda menentukan DNS pengaturan. Jika Anda mematikan pribadiDNS, Anda hanya dapat mengakses API penggunaan publik AndaDNS. Untuk informasi selengkapnya, lihat Masalah: Saya tidak dapat terhubung ke publik saya API dari titik VPC akhir API Gateway.

AWS Management Console
Untuk membuat VPC titik akhir antarmuka untuk API Gateway
  1. Masuk ke AWS Management Console dan buka VPC konsol Amazon di https://console.aws.amazon.com/vpc/.

  2. Di panel navigasi, di bawah Virtual private cloud, pilih Endpoints.

  3. Pilih Buat Titik Akhir.

  4. (Opsional) Untuk tag Nama, masukkan nama untuk membantu mengidentifikasi VPC titik akhir Anda.

  5. Untuk kategori Layanan, pilih AWS layanan.

  6. Di bawah Layanan, di bilah pencarian, masukkanexecute-api. Kemudian, pilih titik akhir layanan API Gateway di Wilayah AWS tempat Anda akan membuat. API Nama layanan akan terlihat seperti com.amazonaws.us-east-1.execute-api dan Type harus Interface.

  7. Untuk VPC, pilih titik akhir VPC yang ingin Anda buat.

  8. (Opsional) Untuk menonaktifkan Aktifkan DNS Nama Pribadi, pilih Pengaturan tambahan dan kemudian hapus Aktifkan DNS Nama Pribadi.

  9. Untuk Subnet, pilih Availability Zones tempat Anda membuat antarmuka jaringan endpoint. Untuk meningkatkan ketersediaan AndaAPI, pilih beberapa subnet.

  10. Untuk grup Keamanan, pilih grup keamanan untuk dikaitkan dengan antarmuka jaringan VPC titik akhir.

    Grup keamanan yang Anda pilih harus diatur untuk memungkinkan HTTPS lalu lintas masuk TCP Port 443 dari rentang IP di grup keamanan Anda VPC atau grup keamanan lain di Anda. VPC

  11. Untuk Kebijakan, lakukan salah satu hal berikut:

    • Jika Anda belum membuat pribadi API atau tidak ingin mengonfigurasi kebijakan VPC titik akhir kustom, pilih Akses penuh.

    • Jika Anda telah membuat private API dan ingin mengonfigurasi kebijakan VPC endpoint kustom, Anda dapat memasukkan kebijakan VPC endpoint kustom. Untuk informasi selengkapnya, lihat Gunakan kebijakan VPC titik akhir untuk pribadi APIs di API Gateway.

    Anda dapat memperbarui kebijakan VPC endpoint setelah membuat VPC endpoint. Untuk informasi selengkapnya, lihat Memperbarui kebijakan VPC titik akhir.

  12. Pilih Buat Titik Akhir.

  13. Salin ID VPC endpoint yang dihasilkan, karena Anda mungkin menggunakannya di langkah masa depan.

AWS CLI

create-vpc-endpointPerintah berikut dapat digunakan untuk membuat VPC titik akhir:

aws ec2 create-vpc-endpoint \ --vpc-id vpc-1a2b3c4d \ --vpc-endpoint-type Interface \ --service-name com.amazonaws.us-east-1.execute-api \ --subnet-ids subnet-7b16de0c \ --security-group-id sg-1a2b3c4d

Salin ID VPC endpoint yang dihasilkan, karena Anda mungkin menggunakannya di langkah masa depan.

Langkah 2: Buat pribadi API

Setelah Anda membuat VPC endpoint, Anda membuat private RESTAPI. Prosedur berikut menunjukkan cara membuat pribadiAPI.

AWS Management Console
Untuk membuat pribadi API
  1. Masuk ke konsol API Gateway di https://console.aws.amazon.com/apigateway.

  2. Pilih Buat API.

  3. Di bawah RESTAPI, pilih Build.

  4. Untuk Nama, masukkan nama.

  5. (Opsional) Untuk Deskripsi, masukkan deskripsi.

  6. Untuk tipe API endpoint, pilih Private.

  7. (Opsional) Untuk VPCtitik akhir IDs, masukkan ID VPC titik akhir.

    Jika Anda mengaitkan ID VPC titik akhir dengan pribadi AndaAPI, Anda dapat memanggil API dari dalam VPC tanpa mengganti Host header atau meneruskan x-apigw-api-id header Untuk informasi selengkapnya, lihat. (Opsional) Mengaitkan atau memisahkan VPC titik akhir dengan pribadi API

  8. Pilih Buat API.

Setelah menyelesaikan langkah-langkah sebelumnya, Anda dapat mengikuti instruksi Memulai dengan REST API konsol untuk menyiapkan metode dan integrasi untuk iniAPI, tetapi Anda tidak dapat menerapkan. API Untuk menerapkanAPI, ikuti langkah 3 dan lampirkan kebijakan sumber daya ke kebijakan AndaAPI.

AWS CLI

create-rest-apiPerintah berikut menunjukkan cara membuat pribadiAPI:

aws apigateway create-rest-api \ --name 'Simple PetStore (AWS CLI, Private)' \ --description 'Simple private PetStore API' \ --region us-west-2 \ --endpoint-configuration '{ "types": ["PRIVATE"] }'

Panggilan yang berhasil mengembalikan output yang mirip dengan berikut ini:

{ "createdDate": "2017-10-13T18:41:39Z", "description": "Simple private PetStore API", "endpointConfiguration": { "types": "PRIVATE" }, "id": "0qzs2sy7bh", "name": "Simple PetStore (AWS CLI, Private)" }

Setelah menyelesaikan langkah-langkah sebelumnya, Anda dapat mengikuti instruksi Tutorial: Membuat REST API menggunakan AWS SDK atau AWS CLI untuk menyiapkan metode dan integrasi untuk iniAPI, tetapi Anda tidak dapat menerapkan. API Untuk menerapkanAPI, ikuti langkah 3 dan lampirkan kebijakan sumber daya ke kebijakan AndaAPI.

SDK JavaScript v3

Contoh berikut menunjukkan cara membuat private API dengan menggunakan AWS SDK for JavaScript v3:

import {APIGatewayClient, CreateRestApiCommand} from "@aws-sdk/client-api-gateway"; const apig = new APIGatewayClient({region:"us-east-1"}); const input = { // CreateRestApiRequest name: "Simple PetStore (JavaScript v3 SDK, private)", // required description: "Demo private API created using the AWS SDK for JavaScript v3", version: "0.00.001", endpointConfiguration: { // EndpointConfiguration types: [ "PRIVATE"], }, }; export const handler = async (event) => { const command = new CreateRestApiCommand(input); try { const result = await apig.send(command); console.log(result); } catch (err){ console.error(err) } };

Panggilan yang berhasil mengembalikan output yang mirip dengan berikut ini:

{ apiKeySource: 'HEADER', createdDate: 2024-04-03T17:56:36.000Z, description: 'Demo private API created using the AWS SDK for JavaScript v3', disableExecuteApiEndpoint: false, endpointConfiguration: { types: [ 'PRIVATE' ] }, id: 'abcd1234', name: 'Simple PetStore (JavaScript v3 SDK, private)', rootResourceId: 'efg567', version: '0.00.001' }

Setelah menyelesaikan langkah-langkah sebelumnya, Anda dapat mengikuti instruksi Tutorial: Membuat REST API menggunakan AWS SDK atau AWS CLI untuk menyiapkan metode dan integrasi untuk iniAPI, tetapi Anda tidak dapat menerapkan. API Untuk menerapkanAPI, ikuti langkah 3 dan lampirkan kebijakan sumber daya ke kebijakan AndaAPI.

Python SDK

Contoh berikut menunjukkan cara membuat pribadi API dengan menggunakan AWS SDK untuk Python:

import json import boto3 import logging logger = logging.getLogger() apig = boto3.client('apigateway') def lambda_handler(event, context): try: result = apig.create_rest_api( name='Simple PetStore (Python SDK, private)', description='Demo private API created using the AWS SDK for Python', version='0.00.001', endpointConfiguration={ 'types': [ 'PRIVATE', ], }, ) except botocore.exceptions.ClientError as error: logger.exception("Couldn't create private API %s.", error) raise attribute=["id", "name", "description", "createdDate", "version", "apiKeySource", "endpointConfiguration"] filtered_data ={key:result[key] for key in attribute} result = json.dumps(filtered_data, default=str, sort_keys='true') return result

Panggilan yang berhasil mengembalikan output yang mirip dengan berikut ini:

"{\"apiKeySource\": \"HEADER\", \"createdDate\": \"2024-04-03 17:27:05+00:00\", \"description\": \"Demo private API created using the AWS SDK for \", \"endpointConfiguration\": {\"types\": [\"PRIVATE\"]}, \"id\": \"abcd1234\", \"name\": \"Simple PetStore (Python SDK, private)\", \"version\": \"0.00.001\"}"

Setelah menyelesaikan langkah-langkah sebelumnya, Anda dapat mengikuti instruksi Tutorial: Membuat REST API menggunakan AWS SDK atau AWS CLI untuk menyiapkan metode dan integrasi untuk iniAPI, tetapi Anda tidak dapat menerapkan. API Untuk menerapkanAPI, ikuti langkah 3 dan lampirkan kebijakan sumber daya ke kebijakan AndaAPI.

Langkah 3: Siapkan kebijakan sumber daya untuk pribadi API

Pribadi Anda saat ini API tidak dapat diakses oleh semua VPCs orang. Gunakan kebijakan sumber daya untuk memberi Anda VPCs dan VPC titik akhir akses ke pribadi APIs Anda. Anda dapat memberikan akses ke VPC titik akhir di AWS akun apa pun.

Kebijakan sumber daya Anda harus berisi aws:SourceVpc atau aws:SourceVpce ketentuan untuk membatasi akses. Kami menyarankan Anda mengidentifikasi spesifik VPCs dan VPC titik akhir dan tidak membuat kebijakan sumber daya yang memungkinkan akses untuk semua VPCs dan titik VPC akhir.

Prosedur berikut menunjukkan cara melampirkan kebijakan sumber daya ke AndaAPI.

AWS Management Console
  1. Masuk ke konsol API Gateway di https://console.aws.amazon.com/apigateway.

  2. Pilih a RESTAPI.

  3. Di panel navigasi utama, pilih Kebijakan sumber daya.

  4. Pilih Buat kebijakan.

  5. Pilih Pilih template dan kemudian pilih Sumber VPC.

  6. Ganti {{vpceID}} (termasuk kurung kurawal) dengan ID titik VPC akhir Anda.

  7. Pilih Simpan perubahan.

AWS CLI

update-rest-apiPerintah berikut menunjukkan cara melampirkan kebijakan sumber daya ke yang sudah adaAPI:

aws apigateway update-rest-api \ --rest-api-id a1b2c3 \ --patch-operations op=replace,path=/policy,value='"{\"jsonEscapedPolicyDocument\"}"'

Anda mungkin juga ingin mengontrol sumber daya mana yang memiliki akses ke VPC titik akhir Anda. Untuk mengontrol sumber daya mana yang memiliki akses ke VPC titik akhir Anda, lampirkan kebijakan titik akhir ke titik akhir AndaVPC. Untuk informasi selengkapnya, lihat Gunakan kebijakan VPC titik akhir untuk pribadi APIs di API Gateway.

(Opsional) Mengaitkan atau memisahkan VPC titik akhir dengan pribadi API

Saat Anda mengaitkan VPC titik akhir dengan private AndaAPI, API Gateway menghasilkan catatan alias DNS Route 53 baru. Anda dapat menggunakan catatan ini untuk memanggil pribadi Anda APIs seperti yang Anda lakukan publik Anda APIs tanpa mengganti Host header atau meneruskan header. x-apigw-api-id

Basis URL yang dihasilkan dalam format berikut:

https://{rest-api-id}-{vpce-id}.execute-api.{region}.amazonaws.com/{stage}
Associate a VPC endpoint (AWS Management Console)

Anda dapat mengaitkan VPC titik akhir dengan pribadi Anda API saat membuatnya, atau setelah dibuat. Prosedur berikut menunjukkan bagaimana mengaitkan VPC titik akhir dengan yang dibuat API sebelumnya.

Untuk mengaitkan VPC titik akhir dengan pribadi API
  1. Masuk ke konsol API Gateway di https://console.aws.amazon.com/apigateway.

  2. Pilih pribadi AndaAPI.

  3. Di panel navigasi utama, pilih Kebijakan sumber daya.

  4. Edit kebijakan sumber daya Anda untuk mengizinkan panggilan dari VPC titik akhir tambahan Anda.

  5. Di panel navigasi utama, pilih APIpengaturan.

  6. Di bagian APIdetail, pilih Edit.

  7. Untuk VPCendpoint IDs, pilih VPC IDs endpoint tambahan.

  8. Pilih Simpan.

  9. Tempatkan ulang Anda API agar perubahan diterapkan.

Dissociate a VPC endpoint (AWS Management Console)
Untuk memisahkan VPC titik akhir dari pribadi REST API
  1. Masuk ke konsol API Gateway di https://console.aws.amazon.com/apigateway.

  2. Pilih pribadi AndaAPI.

  3. Di panel navigasi utama, pilih Kebijakan sumber daya.

  4. Edit kebijakan sumber daya Anda untuk menghapus penyebutan VPC titik akhir yang ingin Anda pisahkan dari pribadi Anda. API

  5. Di panel navigasi utama, pilih APIpengaturan.

  6. Di bagian APIdetail, pilih Edit.

  7. Untuk VPCtitik akhir IDs, pilih X untuk memisahkan titik akhir. VPC

  8. Pilih Simpan.

  9. Tempatkan ulang Anda API agar perubahan diterapkan.

Associate a VPC endpoint (AWS CLI)

create-rest-apiPerintah berikut menunjukkan cara mengaitkan VPC titik akhir pada saat API pembuatan:

aws apigateway create-rest-api \ --name Petstore \ --endpoint-configuration '{ "types": ["PRIVATE"], "vpcEndpointIds" : ["vpce-0212a4ababd5b8c3e", "vpce-0393a628149c867ee"] }' \ --region us-west-2

Outputnya akan terlihat seperti berikut:

{ "apiKeySource": "HEADER", "endpointConfiguration": { "types": [ "PRIVATE" ], "vpcEndpointIds": [ "vpce-0212a4ababd5b8c3e", "vpce-0393a628149c867ee" ] }, "id": "u67n3ov968", "createdDate": 1565718256, "name": "Petstore" }

update-rest-apiPerintah berikut menunjukkan cara mengaitkan VPC titik akhir dengan yang sudah API Anda buat:

aws apigateway update-rest-api \ --rest-api-id u67n3ov968 \ --patch-operations "op='add',path='/endpointConfiguration/vpcEndpointIds',value='vpce-01d622316a7df47f9'" \ --region us-west-2

Outputnya akan terlihat seperti berikut:

{ "name": "Petstore", "apiKeySource": "1565718256", "tags": {}, "createdDate": 1565718256, "endpointConfiguration": { "vpcEndpointIds": [ "vpce-0212a4ababd5b8c3e", "vpce-0393a628149c867ee", "vpce-01d622316a7df47f9" ], "types": [ "PRIVATE" ] }, "id": "u67n3ov968" }

Tempatkan ulang Anda API agar perubahan diterapkan.

Disassociate a VPC endpoint (AWS CLI)

update-rest-apiPerintah berikut menunjukkan cara memisahkan VPC titik akhir dari pribadi: API

aws apigateway update-rest-api \ --rest-api-id u67n3ov968 \ --patch-operations "op='remove',path='/endpointConfiguration/vpcEndpointIds',value='vpce-0393a628149c867ee'" \ --region us-west-2

Outputnya akan terlihat seperti berikut:

{ "name": "Petstore", "apiKeySource": "1565718256", "tags": {}, "createdDate": 1565718256, "endpointConfiguration": { "vpcEndpointIds": [ "vpce-0212a4ababd5b8c3e", "vpce-01d622316a7df47f9" ], "types": [ "PRIVATE" ] }, "id": "u67n3ov968" }

Tempatkan ulang Anda API agar perubahan diterapkan.

Langkah 4: Menyebarkan pribadi API

Untuk menyebarkanAPI, Anda membuat API penerapan dan mengaitkannya dengan panggung. Prosedur berikut menunjukkan cara menyebarkan pribadi API Anda.

AWS Management Console
Untuk menyebarkan pribadi API
  1. Pilih AndaAPI.

  2. Pilih DeployAPI.

  3. Untuk Stage, pilih New stage.

  4. Untuk nama Panggung, masukkan nama panggung.

  5. (Opsional) Untuk Deskripsi, masukkan deskripsi.

  6. Pilih Deploy.

AWS CLI

Perintah create-deployment berikut menunjukkan cara menerapkan private: API

aws apigateway create-deployment --rest-api-id a1b2c3 \ --stage-name test \ --stage-description 'Private API test stage' \ --description 'First deployment'

Memecahkan masalah pribadi Anda API

Berikut ini memberikan saran pemecahan masalah untuk kesalahan dan masalah yang mungkin Anda temui saat membuat pribadi. API

Masalah: Saya tidak dapat terhubung ke publik saya API dari titik VPC akhir API Gateway

Saat Anda membuatVPC, Anda dapat mengonfigurasi DNS pengaturan. Kami menyarankan Anda mengaktifkan pribadi DNS untuk AndaVPC. Jika Anda memilih mematikan pribadiDNS, Anda hanya dapat mengakses Anda API melalui publikDNS.

Jika Anda mengaktifkan privatDNS, Anda tidak dapat mengakses titik akhir default API Gateway publik API dari titik VPC akhir Anda. Anda dapat mengakses API dengan nama domain khusus.

Jika Anda membuat nama domain kustom Regional, gunakan catatan alias tipe A, jika Anda membuat nama domain kustom yang dioptimalkan tepi, tidak ada batasan untuk jenis rekaman Anda. Anda dapat mengakses publik ini APIs dengan DNS mengaktifkan pribadi. Untuk informasi selengkapnya, lihat Masalah: Saya terhubung ke publik saya API dari VPC titik akhir API Gateway.

Masalah: API Pengembalian saya {"Message":"User: anonymous is not authorized to perform: execute-api:Invoke on resource: arn:aws:execute-api:us-east-1:********/****/****/"}

Dalam kebijakan sumber daya Anda, jika Anda menetapkan Principal ke AWS prinsipal, seperti berikut ini:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", ""Principal": { "AWS": [ "arn:aws:iam::account-id:role/developer", "arn:aws:iam::account-id:role/Admin" ] }, "Action": "execute-api:Invoke", "Resource": [ "execute-api:/*" ] }, ... }

Anda harus menggunakan AWS_IAM otorisasi untuk setiap metode dalam AndaAPI, atau Anda API mengembalikan pesan kesalahan sebelumnya. Untuk petunjuk selengkapnya tentang cara mengaktifkan AWS_IAM otorisasi untuk suatu metode, lihatMetode untuk REST APIs di API Gateway.

Masalah: Saya tidak tahu apakah VPC titik akhir saya dikaitkan dengan titik akhir saya API

Jika Anda mengaitkan atau memisahkan VPC titik akhir dengan pribadi AndaAPI, Anda perlu menerapkan ulang. API Operasi pembaruan mungkin memakan waktu beberapa menit untuk diselesaikan karena DNS propagasi. Selama waktu ini, Anda API tersedia, tetapi DNS propagasi untuk yang baru dibuat DNS URLs mungkin masih berlangsung. Jika setelah beberapa menit, URLs yang baru Anda tidak terselesaikanDNS, kami sarankan Anda menerapkan ulang. API