Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Pengaturan cache untuk REST APIs di API Gateway
Anda dapat mengaktifkan caching API di API Gateway untuk men-cache respons titik akhir Anda. Dengan caching, Anda dapat mengurangi jumlah panggilan yang dilakukan ke titik akhir Anda dan juga meningkatkan latensi permintaan ke API Anda.
Saat Anda mengaktifkan caching untuk suatu tahap, API Gateway menyimpan respons dari titik akhir Anda untuk periode tertentu time-to-live (TTL), dalam hitungan detik. API Gateway kemudian merespons permintaan dengan mencari respons titik akhir dari cache alih-alih membuat permintaan ke titik akhir Anda. Nilai TTL default untuk caching API adalah 300 detik. Nilai TTL maksimum adalah 3600 detik. TTL = 0 berarti caching dinonaktifkan.
catatan
Caching adalah upaya terbaik. Anda dapat menggunakan CacheMissCount
metrik CacheHitCount
dan di Amazon CloudWatch untuk memantau permintaan yang disajikan API Gateway dari cache API.
Ukuran maksimum respons yang dapat di-cache adalah 1048576 byte. Enkripsi data cache dapat meningkatkan ukuran respons saat sedang di-cache.
Ini adalah Layanan yang Memenuhi Syarat HIPAA. Untuk informasi lebih lanjut tentang AWS, Undang-Undang Portabilitas dan Akuntabilitas Asuransi Kesehatan AS tahun 1996 (HIPAA), dan menggunakan AWS layanan untuk memproses, menyimpan, dan mengirimkan informasi kesehatan yang dilindungi (PHI), lihat Ikhtisar HIPAA.
penting
Saat Anda mengaktifkan caching untuk suatu tahap, hanya GET
metode yang mengaktifkan caching secara default. Ini membantu memastikan keamanan dan ketersediaan API Anda. Anda dapat mengaktifkan caching untuk metode lain dengan mengganti pengaturan metode.
penting
Caching dibebankan per jam berdasarkan ukuran cache yang Anda pilih. Caching tidak memenuhi syarat untuk Tingkat AWS Gratis. Untuk informasi selengkapnya, lihat Harga API Gateway
Aktifkan caching Amazon API Gateway
Di API Gateway, Anda dapat mengaktifkan caching untuk tahap tertentu.
Ketika Anda mengaktifkan caching, Anda harus memilih kapasitas cache. Secara umum, kapasitas yang lebih besar memberikan kinerja yang lebih baik, tetapi juga lebih mahal. Untuk ukuran cache yang didukung, lihat cacheClusterSizedi Referensi API Gateway API.
API Gateway memungkinkan caching dengan membuat instance cache khusus. Proses ini bisa memakan waktu hingga 4 menit.
API Gateway mengubah kapasitas caching dengan menghapus instance cache yang ada dan membuat yang baru dengan kapasitas yang dimodifikasi. Semua data cache yang ada dihapus.
catatan
Kapasitas cache mempengaruhi CPU, memori, dan bandwidth jaringan dari instance cache. Akibatnya, kapasitas cache dapat memengaruhi kinerja cache Anda.
API Gateway merekomendasikan agar Anda menjalankan uji pemuatan 10 menit untuk memverifikasi bahwa kapasitas cache sesuai dengan beban kerja Anda. Pastikan bahwa lalu lintas selama uji beban mencerminkan lalu lintas produksi. Misalnya, sertakan ramp up, lalu lintas konstan, dan lonjakan lalu lintas. Tes beban harus mencakup respons yang dapat disajikan dari cache, serta respons unik yang menambahkan item ke cache. Pantau metrik latensi, 4xx, 5xx, cache hit, dan cache miss selama uji beban. Sesuaikan kapasitas cache sesuai kebutuhan berdasarkan metrik ini. Untuk informasi selengkapnya tentang pengujian beban, lihat Bagaimana cara memilih kapasitas cache API Gateway terbaik agar tidak mencapai batas laju?
catatan
Membuat atau menghapus cache membutuhkan waktu sekitar 4 menit agar API Gateway selesai.
Ketika cache dibuat, nilai cluster Cache berubah dari Create in progress
keActive
. Ketika penghapusan cache selesai, nilai cluster Cache berubah dari Delete in progress
ke. Inactive
Saat Anda mengaktifkan caching tingkat metode untuk semua metode di panggung Anda, nilai caching tingkat metode Default berubah menjadi. Active
Jika Anda menonaktifkan caching tingkat metode untuk semua metode di panggung Anda, nilai caching tingkat metode Default akan berubah menjadi. Inactive
Jika Anda memiliki setelan yang ada untuk cache tingkat metode, mengubah status cache tidak memengaruhi pengaturan tersebut.
Saat Anda mengaktifkan caching dalam pengaturan Cache tahap, hanya GET
metode yang di-cache. Untuk memastikan keamanan dan ketersediaan API Anda, sebaiknya jangan mengubah setelan ini. Namun, Anda dapat mengaktifkan caching untuk metode lain dengan mengganti pengaturan metode.
Jika Anda ingin memverifikasi apakah caching berfungsi seperti yang diharapkan, Anda memiliki dua opsi umum:
-
Periksa CloudWatch metrik CacheHitCountdan CacheMissCountuntuk API dan panggung Anda.
-
Masukkan stempel waktu dalam respons.
catatan
Jangan gunakan X-Cache
header dari CloudFront respons untuk menentukan apakah API Anda sedang dilayani dari instance cache API Gateway Anda.
Ganti caching tingkat tahap API Gateway untuk caching tingkat metode
Anda dapat mengganti pengaturan cache tingkat tahap dengan mengaktifkan atau mematikan caching untuk metode tertentu. Anda juga dapat memodifikasi periode TTL atau mengaktifkan atau menonaktifkan enkripsi untuk respons yang di-cache.
Jika Anda mengantisipasi bahwa metode yang Anda caching akan menerima data sensitif dalam tanggapannya, enkripsi data cache Anda. Anda mungkin perlu melakukan ini untuk mematuhi berbagai kerangka kerja kepatuhan. Untuk informasi selengkapnya, lihat kontrol Amazon API Gateway di Panduan AWS Security Hub Pengguna.
Gunakan metode atau parameter integrasi sebagai kunci cache untuk mengindeks respons yang di-cache
Anda dapat menggunakan metode atau parameter integrasi sebagai kunci cache untuk mengindeks respons yang di-cache. Ini termasuk header khusus, jalur URL, atau string kueri. Anda dapat menentukan beberapa atau semua parameter ini sebagai kunci cache, tetapi Anda harus menentukan setidaknya satu nilai. Bila Anda memiliki kunci cache, API Gateway menyimpan respons dari setiap nilai kunci secara terpisah, termasuk saat kunci cache tidak ada.
catatan
Kunci cache diperlukan saat mengatur caching pada sumber daya.
Misalnya, Anda memiliki permintaan dalam format berikut:
GET /users?type=... HTTP/1.1 host: example.com ...
Dalam permintaan ini, type
dapat mengambil nilai admin
atauregular
. Jika Anda menyertakan type
parameter sebagai bagian dari kunci cache, respons dari di-cache GET /users?type=admin
secara terpisah dari yang dariGET /users?type=regular
.
Ketika sebuah metode atau permintaan integrasi mengambil lebih dari satu parameter, Anda dapat memilih untuk menyertakan beberapa atau semua parameter untuk membuat kunci cache. Misalnya, Anda hanya dapat menyertakan type
parameter dalam kunci cache untuk permintaan berikut, dibuat dalam urutan yang tercantum dalam periode TTL:
GET /users?type=admin&department=A HTTP/1.1 host: example.com ...
Respons dari permintaan ini di-cache dan digunakan untuk melayani permintaan berikut:
GET /users?type=admin&department=B HTTP/1.1 host: example.com ...
Siram cache tahap API di API Gateway
Saat caching API diaktifkan, Anda dapat membersihkan cache tahap API Anda untuk memastikan bahwa klien API Anda mendapatkan respons terbaru dari titik akhir integrasi Anda.
catatan
Setelah cache dimatikan, respons dilayani dari titik akhir integrasi hingga cache dibangun kembali. Selama periode ini, jumlah permintaan yang dikirim ke titik akhir integrasi dapat meningkat. Ini dapat meningkatkan latensi keseluruhan API untuk sementara waktu.
Membatalkan entri cache API Gateway
Klien API Anda dapat membatalkan entri cache yang ada dan memuatnya kembali dari titik akhir integrasi untuk permintaan individual. Klien harus mengirim permintaan yang berisi Cache-Control: max-age=0
header. Klien menerima respons langsung dari titik akhir integrasi alih-alih cache, asalkan klien berwenang untuk melakukannya. Ini menggantikan entri cache yang ada dengan respons baru, yang diambil dari titik akhir integrasi.
Untuk memberikan izin kepada klien, lampirkan kebijakan format berikut ke peran eksekusi IAM bagi pengguna.
catatan
Pembatalan cache lintas akun tidak didukung.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "execute-api:InvalidateCache" ], "Resource": [ "arn:aws:execute-api:
region
:account-id
:api-id
/stage-name
/GET/resource-path-specifier
" ] } ] }
Kebijakan ini memungkinkan layanan eksekusi API Gateway membatalkan cache untuk permintaan pada sumber daya tertentu (atau sumber daya). Untuk menentukan sekelompok sumber daya yang ditargetkan, gunakan karakter wildcard (*) untuk account-id
api-id
, dan entri lain dalam nilai ARN. Resource
Untuk informasi selengkapnya tentang cara menyetel izin untuk layanan eksekusi API Gateway, lihatKontrol akses ke REST API dengan izin IAM.
Jika Anda tidak memaksakan InvalidateCache
kebijakan (atau memilih kotak centang Memerlukan otorisasi di konsol), klien mana pun dapat membatalkan cache API. Jika sebagian besar atau semua klien membatalkan cache API, ini dapat meningkatkan latensi API Anda secara signifikan.
Saat kebijakan diberlakukan, caching diaktifkan dan otorisasi diperlukan.
Anda dapat menentukan cara API Gateway menangani permintaan yang tidak sah dengan memilih dari opsi berikut:
- Gagal permintaan dengan kode status 403
API Gateway mengembalikan
403 Unauthorized
respons.Untuk mengatur opsi ini menggunakan API, gunakan
FAIL_WITH_403
.- Abaikan header kontrol cache; Tambahkan peringatan di header respons
API Gateway memproses permintaan dan menambahkan header peringatan dalam respons.
Untuk mengatur opsi ini menggunakan API, gunakan
SUCCEED_WITH_RESPONSE_HEADER
.- Abaikan header kontrol cache
API Gateway memproses permintaan dan tidak menambahkan header peringatan dalam respons.
Untuk mengatur opsi ini menggunakan API, gunakan
SUCCEED_WITHOUT_RESPONSE_HEADER
.
Anda dapat menyetel perilaku penanganan permintaan yang tidak sah menggunakan konsol API Gateway atau AWS CLI.
AWS CloudFormation contoh tahap dengan cache
AWS CloudFormation Template berikut membuat contoh API, menyediakan cache 0.5
GB untuk Prod
panggung, dan mengaktifkan caching tingkat metode untuk semua metode. GET
penting
Caching dibebankan per jam berdasarkan ukuran cache yang Anda pilih. Caching tidak memenuhi syarat untuk Tingkat AWS Gratis. Untuk informasi selengkapnya, lihat Harga API Gateway
AWSTemplateFormatVersion: 2010-09-09 Resources: Api: Type: 'AWS::ApiGateway::RestApi' Properties: Name: cache-example PetsResource: Type: 'AWS::ApiGateway::Resource' Properties: RestApiId: !Ref Api ParentId: !GetAtt Api.RootResourceId PathPart: 'pets' PetsMethodGet: Type: 'AWS::ApiGateway::Method' Properties: RestApiId: !Ref Api ResourceId: !Ref PetsResource HttpMethod: GET ApiKeyRequired: true AuthorizationType: NONE Integration: Type: HTTP_PROXY IntegrationHttpMethod: GET Uri: http://petstore-demo-endpoint.execute-api.com/petstore/pets/ ApiDeployment: Type: 'AWS::ApiGateway::Deployment' DependsOn: - PetsMethodGet Properties: RestApiId: !Ref Api ApiStage: Type: 'AWS::ApiGateway::Stage' Properties: StageName: Prod Description: Prod Stage with a cache RestApiId: !Ref Api DeploymentId: !Ref ApiDeployment CacheClusterEnabled: True CacheClusterSize: 0.5 MethodSettings: - ResourcePath: /* HttpMethod: '*' CachingEnabled: True