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 Anda untuk menyederhanakan cara Anda memanggil API Anda. Akhirnya, Anda menerapkan API Anda.
Prosedur berikut menjelaskan cara mencapai ini. Anda dapat membuat REST API pribadi menggunakan Konsol Manajemen AWS, 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 memanggil API Anda dalam VPC tanpa harus melewati Host atau x-apigw-api-id header.
Untuk mengaktifkan DNS pribadi, enableDnsHostnames atribut enableDnsSupport dan VPC Anda harus disetel ketrue. Untuk informasi selengkapnya, lihat Dukungan DNS di VPC Anda dan Memper barui Dukungan DNS untuk V PC 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 Gateway API.
- Konsol Manajemen AWS
Untuk membuat titik akhir VPC antarmuka untuk API Gateway
-
Masuk ke Konsol Manajemen AWS dan buka konsol Amazon VPC di https://console.aws.amazon.com/vpc/.
-
Di panel navigasi, di bawah Virtual private cloud, pilih Endpoints.
-
Pilih Buat titik akhir.
-
(Opsional) Untuk Tag Nama, masukkan nama untuk membantu mengidentifikasi titik akhir VPC Anda.
-
Untuk kategori Layanan, pilih AWS
layanan.
-
Di bawah Layanan, di bilah pencarian, masukkanexecute-api. Kemudian, pilih titik akhir layanan API Gateway di Wilayah AWS mana Anda akan membuat API Anda. Nama layanan harus terlihat seperti com.amazonaws.us-east-1.execute-api dan Tipenya harus Interface.
-
Untuk VPC, pilih VPC tempat Anda ingin membuat titik akhir.
-
(Opsional) Untuk menonaktifkan Aktifkan Nama DNS Pri badi, pilih Pengaturan tambahan lalu hapus Aktifkan Nama DNS Pribadi.
-
Untuk Subnet, pilih Availability Zone tempat Anda membuat antarmuka jaringan titik akhir. Untuk meningkatkan ketersediaan API Anda, pilih beberapa subnet.
-
Untuk grup keamanan, pilih grup keamanan yang akan diasosiasikan dengan antarmuka jaringan titik akhir VPC.
Grup keamanan yang Anda pilih harus diatur untuk mengizinkan lalu lintas HTTPS masuk TCP Port 443 baik dari rentang IP di VPC Anda atau grup keamanan lain di VPC Anda.
-
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 Gunakan 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.
-
Pilih Buat titik akhir.
Salin ID titik akhir VPC yang dihasilkan, karena Anda mungkin menggunakannya di langkah selanjutnya.
- AWS CLI
Perintah create-vpc-endpoint berikut 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 selanjutnya.
Langkah 2: Buat API pribadi
Setelah membuat titik akhir VPC, Anda membuat REST API pribadi. Prosedur berikut menunjukkan cara membuat API pribadi.
- Konsol Manajemen AWS
Untuk membuat API pribadi
-
Masuk ke konsol API Gateway di https://console.aws.amazon.com/apigateway.
-
Pilih Buat API.
-
Di bawah REST API, pilih Bangun.
-
Untuk Nama, masukkan nama.
(Opsional) Untuk Deskripsi, masukkan deskripsi.
-
Untuk tipe titik akhir API, pilih Pri badi.
-
(Opsional) Untuk ID titik akhir VPC, masukkan ID titik akhir VPC.
Jika Anda mengaitkan ID titik akhir VPC dengan API pribadi Anda, Anda dapat memanggil API dari dalam VPC tanpa mengganti Host header atau meneruskan Untuk informasi selengkapnya, x-apigw-api-id header lihat. (Opsional) Mengaitkan atau memisahkan titik akhir VPC dengan API pribadi
-
Untuk jenis alamat IP, pilih Dualstack.
-
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
Perintah create-rest-api berikut 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"], "ipAddressType": "dualstack" }'
Panggilan yang berhasil mengembalikan output yang mirip dengan berikut ini:
{
"createdDate": "2017-10-13T18:41:39Z",
"description": "Simple private PetStore API",
"endpointConfiguration": {
"types": [
"PRIVATE"
],
"ipAddressType": "dualstack"
},
"id": "0qzs2sy7bh",
"name": "Simple PetStore (AWS CLI, Private)"
}
Setelah menyelesaikan langkah-langkah sebelumnya, Anda dapat mengikuti petunjuk Tutorial: Buat REST API menggunakan AWS SDKs 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 REST API menggunakan AWS SDKs 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 REST API menggunakan AWS SDKs 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: Menyiapkan 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 ke API pribadi Anda. Anda dapat memberikan akses ke titik akhir VPC di AWS akun apa pun.
Kebijakan sumber daya Anda harus berisi aws:SourceVpc atau aws:SourceVpce ketentuan untuk membatasi akses. Sebaiknya 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.
- Konsol Manajemen AWS
-
Masuk ke konsol API Gateway di https://console.aws.amazon.com/apigateway.
Pilih REST API.
-
Di panel navigasi utama, pilih Kebijakan sumber daya.
-
Pilih Buat kebijakan.
-
Pilih Pilih template dan kemudian pilih Sumber VPC.
-
Ganti {{vpcID}} (termasuk kurung kurung keriting) dengan ID VPC Anda.
-
Pilih Simpan perubahan.
- AWS CLI
Perintah update-rest-api berikut 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 Gunakan kebijakan titik akhir VPC untuk API pribadi di API Gateway.
(Opsional) Mengaitkan atau memisahkan 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 memanggil API pribadi Anda seperti yang Anda lakukan API publik tanpa mengesampingkan 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 (Konsol Manajemen AWS)
-
Anda dapat mengaitkan titik akhir VPC dengan API pribadi Anda saat Anda 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
Masuk ke konsol API Gateway di https://console.aws.amazon.com/apigateway.
-
Pilih API pribadi Anda.
-
Di panel navigasi utama, pilih Kebijakan sumber daya.
-
Edit kebijakan sumber daya Anda untuk mengizinkan panggilan dari titik akhir VPC tambahan Anda.
-
Di panel navigasi utama, pilih pengaturan API.
-
Di bagian detail API, pilih Edit.
-
Untuk ID titik akhir VPC, pilih ID titik akhir VPC tambahan.
-
Pilih Simpan.
-
Gunakan kembali API Anda agar perubahan berlaku.
- Dissociate a VPC endpoint (Konsol Manajemen AWS)
-
Untuk memisahkan titik akhir VPC dari REST API pribadi
Masuk ke konsol API Gateway di https://console.aws.amazon.com/apigateway.
-
Pilih API pribadi Anda.
-
Di panel navigasi utama, pilih Kebijakan sumber daya.
-
Edit kebijakan sumber daya Anda untuk menghapus sebutan titik akhir VPC yang ingin Anda pisahkan dari API pribadi Anda.
-
Di panel navigasi utama, pilih pengaturan API.
-
Di bagian detail API, pilih Edit.
-
Untuk ID titik akhir VPC, pilih X untuk memisahkan titik akhir VPC.
-
Pilih Simpan.
-
Gunakan kembali API Anda agar perubahan berlaku.
- Associate a VPC endpoint (AWS CLI)
-
Perintah create-rest-api berikut mengait kan 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"
}
Perintah update-rest-api berikut 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"
}
Gunakan kembali API Anda agar perubahan berlaku.
- Disassociate a VPC endpoint (AWS CLI)
-
Perintah update-rest-api berikut memis ahkan 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"
}
Gunakan kembali API Anda agar perubahan berlaku.
Langkah 4: Menyebarkan API pribadi
Untuk menerapkan API Anda, Anda membuat penyebaran API dan mengaitkannya dengan stage. Prosedur berikut menunjukkan cara menerapkan API pribadi Anda.
- Konsol Manajemen AWS
Untuk menyebarkan API pribadi
Pilih API Anda.
Pilih De ploy API.
Untuk T aha p, pilih T ahap baru.
Untuk Nama pang gung, masukkan nama panggung.
(Opsional) Untuk Deskripsi, masukkan deskripsi.
Pilih Deploy.
- AWS CLI
Perintah create-deployment berikut 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 Gateway API
Saat Anda membuat VPC Anda, Anda dapat mengonfigurasi pengaturan DNS. Sebaiknya aktifkan 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 mengembalikan {"Pesan” :"Pengguna: anonymous tidak berwenang untuk melakukan: execute-api:invoke pada resource: arn:aws:execute-api:us-east-1: ********/****/****/ "}
Dalam kebijakan sumber daya Anda, jika Anda menetapkan Prinsipal ke AWS prinsipal, seperti berikut ini:
- JSON
-
-
{
"Version":"2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::111122223333:role/developer",
"arn:aws:iam::111122223333:role/Admin"
]
},
"Action": "execute-api:Invoke",
"Resource": [
"execute-api:/stage/GET/pets"
]
}
]
}
Anda harus menggunakan AWS_IAM otorisasi untuk setiap metode di API Anda, jika tidak API Anda mengembalikan pesan kesalahan sebelumnya. Untuk petunjuk lebih lanjut tentang cara mengaktifkan AWS_IAM otorisasi untuk suatu metode, lihatMetode untuk REST APIs di API Gateway.
Masalah: Saya tidak tahu apakah titik akhir VPC saya terkait dengan API saya
Jika Anda mengaitkan atau memisahkan titik akhir VPC dengan API pribadi Anda, 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 berlangsung. Jika setelah beberapa menit, URL baru Anda tidak terselesaikan di DNS, sebaiknya gunakan kembali API Anda.