Buat API pribadi - Amazon API Gateway

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

Buat API pribadi

Sebelum membuat API pribadi, Anda terlebih dahulu membuat titik akhir VPC untuk API Gateway. Selanjutnya Anda membuat API pribadi Anda dan melampirkan kebijakan sumber daya ke dalamnya. Secara opsional, Anda dapat mengaitkan titik akhir VPC Anda dengan API pribadi untuk menyederhanakan cara Anda menjalankan API. Terakhir, Anda menerapkan API Anda.

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

Prasyarat

Untuk mengikuti langkah-langkah ini, Anda harus memiliki VPC yang sepenuhnya dikonfigurasi. Untuk mempelajari cara membuat VPC, lihat Membuat VPC hanya di Panduan Pengguna Amazon VPC. Untuk mengikuti semua langkah rekomendasi saat Anda membuat VPC, aktifkan DNS pribadi. Dengan cara ini Anda dapat menjalankan API Anda dalam VPC tanpa harus melewati Host x-apigw-api-id atau header.

Untuk mengaktifkan DNS pribadi, enableDnsHostnames atribut enableDnsSupport dan VPC Anda harus disetel ke. true Untuk informasi selengkapnya, lihat Dukungan DNS di VPC Anda dan Memperbarui Dukungan DNS untuk VPC Anda.

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

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

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

AWS Management Console
Untuk membuat antarmuka VPC endpoint untuk API Gateway
  1. Masuk ke AWS Management Console dan buka konsol VPC 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 titik akhir VPC 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 Anda. Nama layanan akan terlihat seperti com.amazonaws.us-east-1.execute-api dan Type harus Interface.

  7. Untuk VPC, pilih VPC tempat Anda ingin membuat endpoint.

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

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

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

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

  11. Untuk Kebijakan, lakukan salah satu hal berikut:

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

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

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

  12. Pilih Buat Titik Akhir.

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

AWS CLI

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

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 titik akhir VPC yang dihasilkan, karena Anda mungkin menggunakannya di langkah-langkah masa depan.

Langkah 2: Buat API pribadi

Setelah membuat titik akhir VPC, Anda membuat REST API pribadi. Prosedur berikut menunjukkan cara membuat API pribadi.

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

  2. Pilih Buat API.

  3. Di bawah REST API, pilih Build.

  4. Untuk Nama, masukkan nama.

  5. (Opsional) Untuk Deskripsi, masukkan deskripsi.

  6. Untuk jenis endpoint API, pilih Private.

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

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

  8. Pilih Buat API.

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

AWS CLI

update-rest-apiPerintah berikut menunjukkan cara membuat API pribadi:

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 petunjuk Tutorial: Buat API yang dioptimalkan tepi menggunakan AWS SDK atau AWS CLI untuk menyiapkan metode dan integrasi untuk API ini, tetapi Anda tidak dapat menerapkan API Anda. Untuk menerapkan API Anda, ikuti langkah 3 dan lampirkan kebijakan sumber daya ke API Anda.

SDK JavaScript v3

Contoh berikut menunjukkan cara membuat API pribadi dengan menggunakan AWS SDK untuk 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 petunjuk Tutorial: Buat API yang dioptimalkan tepi menggunakan AWS SDK atau AWS CLI untuk menyiapkan metode dan integrasi untuk API ini, tetapi Anda tidak dapat menerapkan API Anda. Untuk menerapkan API Anda, ikuti langkah 3 dan lampirkan kebijakan sumber daya ke API Anda.

Python SDK

Contoh berikut menunjukkan cara membuat API pribadi 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 petunjuk Tutorial: Buat API yang dioptimalkan tepi menggunakan AWS SDK atau AWS CLI untuk menyiapkan metode dan integrasi untuk API ini, tetapi Anda tidak dapat menerapkan API Anda. Untuk menerapkan API Anda, ikuti langkah 3 dan lampirkan kebijakan sumber daya ke API Anda.

Langkah 3: Siapkan kebijakan sumber daya untuk API pribadi

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

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

Prosedur berikut menunjukkan cara melampirkan kebijakan sumber daya ke API Anda.

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

  2. Pilih REST API.

  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 akhir VPC Anda.

  7. Pilih Simpan perubahan.

AWS CLI

update-rest-apiPerintah berikut menunjukkan cara melampirkan kebijakan sumber daya ke API yang ada:

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 titik akhir VPC Anda. Untuk mengontrol sumber daya mana yang memiliki akses ke titik akhir VPC Anda, lampirkan kebijakan titik akhir ke titik akhir VPC Anda. Untuk informasi selengkapnya, lihat Menggunakan kebijakan titik akhir VPC untuk API pribadi di API Gateway.

(Opsional) Kaitkan atau lepaskan titik akhir VPC dengan API pribadi

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

URL dasar 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 titik akhir VPC dengan API pribadi saat membuatnya, atau setelah dibuat. Prosedur berikut menunjukkan cara mengaitkan titik akhir VPC dengan API yang dibuat sebelumnya.

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

  2. Pilih API pribadi Anda.

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

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

  5. Di panel navigasi utama, pilih pengaturan API.

  6. Di bagian detail API, pilih Edit.

  7. Untuk ID titik akhir VPC, pilih ID titik akhir VPC tambahan.

  8. Pilih Simpan.

  9. Menerapkan ulang API Anda agar perubahan diterapkan.

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

  2. Pilih API pribadi Anda.

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

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

  5. Di panel navigasi utama, pilih pengaturan API.

  6. Di bagian detail API, pilih Edit.

  7. Untuk ID titik akhir VPC, pilih X untuk memisahkan titik akhir VPC.

  8. Pilih Simpan.

  9. Menerapkan ulang API Anda agar perubahan diterapkan.

Associate a VPC endpoint (AWS CLI)

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

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 titik akhir VPC ke API yang sudah 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" }

Menerapkan ulang API Anda agar perubahan diterapkan.

Disassociate a VPC endpoint (AWS CLI)

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

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" }

Menerapkan ulang API Anda agar perubahan diterapkan.

Langkah 4: Menerapkan API pribadi

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

AWS Management Console
Untuk menerapkan API pribadi
  1. Pilih API Anda.

  2. Pilih Deploy API.

  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 API pribadi:

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

Memecahkan masalah API pribadi Anda

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

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

Saat Anda membuat VPC, Anda dapat mengonfigurasi pengaturan DNS. Kami menyarankan Anda mengaktifkan DNS pribadi untuk VPC Anda. Jika Anda memilih mematikan DNS pribadi, Anda hanya dapat mengakses API Anda melalui DNS publik.

Jika Anda mengaktifkan DNS pribadi, Anda tidak dapat mengakses titik akhir default API Gateway API publik dari titik akhir VPC 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 API publik ini dengan DNS pribadi diaktifkan. Untuk informasi selengkapnya, lihat Masalah: Saya terhubung ke API publik saya dari titik akhir VPC API Gateway.

Masalah: API saya kembali {"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 di API Anda, atau API Anda mengembalikan pesan kesalahan sebelumnya. Untuk petunjuk selengkapnya tentang cara mengaktifkan AWS_IAM otorisasi untuk suatu metode, lihatMetode untuk REST API di API Gateway.

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

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