Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Tutorial: Buat REST API sebagai proxy Amazon Kinesis
Halaman ini menjelaskan cara membuat dan mengonfigurasi REST API dengan integrasi AWS
tipe untuk mengakses Kinesis.
catatan
Untuk mengintegrasikan API Gateway API Anda dengan Kinesis, Anda harus memilih wilayah di mana layanan API Gateway dan Kinesis tersedia. Untuk ketersediaan wilayah, lihat Titik Akhir Layanan dan Kuota.
Untuk tujuan ilustrasi, kami membuat contoh API untuk memungkinkan klien melakukan hal berikut:
-
Daftar aliran yang tersedia pengguna di Kinesis
-
Membuat, mendeskripsikan, atau menghapus aliran tertentu
-
Membaca catatan data dari atau menulis catatan data ke dalam aliran yang ditentukan
Untuk menyelesaikan tugas-tugas sebelumnya, API mengekspos metode pada berbagai sumber daya untuk menjalankan yang berikut ini, masing-masing:
-
ListStreams
Tindakan dalam Kinesis -
,
CreateStream
DescribeStream
, atauDeleteStream
tindakan -
Tindakan
GetRecords
atauPutRecords
(termasukPutRecord
) dalam Kinesis
Secara khusus, kami membangun API sebagai berikut:
-
Paparkan metode HTTP GET pada
/streams
sumber daya API dan integrasikan metode tersebut dengan ListStreamstindakan di Kinesis untuk mencantumkan aliran di akun pemanggil. -
Paparkan metode HTTP POST pada
/streams/{stream-name}
sumber daya API dan integrasikan metode tersebut dengan CreateStreamtindakan di Kinesis untuk membuat aliran bernama di akun pemanggil. -
Paparkan metode HTTP GET pada
/streams/{stream-name}
sumber daya API dan integrasikan metode tersebut dengan DescribeStreamtindakan di Kinesis untuk mendeskripsikan aliran bernama di akun pemanggil. -
Paparkan metode HTTP DELETE pada
/streams/{stream-name}
sumber daya API dan integrasikan metode tersebut dengan DeleteStreamtindakan di Kinesis untuk menghapus aliran di akun pemanggil. -
Paparkan metode HTTP PUT pada
/streams/{stream-name}/record
sumber daya API dan integrasikan metode dengan PutRecordtindakan di Kinesis. Ini memungkinkan klien untuk menambahkan catatan data tunggal ke aliran bernama. -
Paparkan metode HTTP PUT pada
/streams/{stream-name}/records
sumber daya API dan integrasikan metode dengan PutRecordstindakan di Kinesis. Ini memungkinkan klien untuk menambahkan daftar catatan data ke aliran bernama. -
Paparkan metode HTTP GET pada
/streams/{stream-name}/records
sumber daya API dan integrasikan metode tersebut dengan GetRecordstindakan di Kinesis. Hal ini memungkinkan klien untuk daftar catatan data dalam aliran bernama, dengan iterator shard tertentu. Sebuah iterator shard menentukan posisi shard dari mana untuk mulai membaca catatan data secara berurutan. -
Paparkan metode HTTP GET pada
/streams/{stream-name}/sharditerator
sumber daya API dan integrasikan metode tersebut dengan GetShardIteratortindakan di Kinesis. Metode pembantu ini harus diberikan padaListStreams
tindakan di Kinesis.
Anda dapat menerapkan instruksi yang disajikan di sini untuk tindakan Kinesis lainnya. Untuk daftar lengkap tindakan Kinesis, lihat Referensi API Amazon Kinesis.
Alih-alih menggunakan konsol API Gateway untuk membuat API sampel, Anda dapat mengimpor API sampel ke API Gateway menggunakan API Gateway Import API. Untuk informasi tentang cara menggunakan API Impor, lihatKembangkan REST APIs menggunakan Open API in API Gateway.
Membuat peran dan kebijakan IAM untuk API untuk mengakses Kinesis
Untuk mengizinkan API menjalankan tindakan Kinesis, Anda harus memiliki kebijakan IAM yang sesuai yang dilampirkan ke peran IAM.
Untuk membuat peran eksekusi proxy AWS layanan
Masuk ke AWS Management Console dan buka konsol IAM di https://console.aws.amazon.com/iam/.
-
Pilih Peran.
-
Pilih Buat peran.
-
Pilih AWS layanan di bawah Pilih jenis entitas tepercaya, lalu pilih API Gateway dan pilih Izinkan API Gateway untuk mendorong CloudWatch log ke Log.
-
Pilih Berikutnya, lalu pilih Berikutnya.
-
Untuk nama Peran
APIGatewayKinesisProxyPolicy
, masukkan, lalu pilih Buat peran. -
Dalam daftar Peran, pilih peran yang baru saja Anda buat. Anda mungkin perlu menggulir atau menggunakan bilah pencarian untuk menemukan peran.
-
Untuk peran yang dipilih, pilih tab Tambahkan izin.
-
Pilih Lampirkan kebijakan dari daftar dropdown.
-
Di bilah pencarian, masukkan
AmazonKinesisFullAccess
dan pilih Tambahkan izin.catatan
Tutorial ini menggunakan kebijakan terkelola untuk kesederhanaan. Sebagai praktik terbaik, Anda harus membuat kebijakan IAM Anda sendiri untuk memberikan izin minimum yang diperlukan.
-
Perhatikan ARN Peran yang baru dibuat, Anda akan menggunakannya nanti.
Buat API sebagai proxy Kinesis
Gunakan langkah-langkah berikut untuk membuat API di konsol API Gateway.
Untuk membuat API sebagai proxy AWS layanan untuk Kinesis
-
Masuk ke konsol API Gateway di https://console.aws.amazon.com/apigateway
. -
Jika ini adalah pertama kalinya Anda menggunakan API Gateway, Anda akan melihat halaman yang memperkenalkan Anda ke fitur layanan. Di bawah REST API, pilih Build. Saat munculan Create Example API muncul, pilih OK.
Jika ini bukan pertama kalinya Anda menggunakan API Gateway, pilih Buat API. Di bawah REST API, pilih Build.
-
Pilih API Baru.
-
Dalam nama API, masukkan
KinesisProxy
. Simpan nilai default untuk semua bidang lainnya. -
(Opsional) Untuk Deskripsi, masukkan deskripsi.
-
Pilih Buat API.
Setelah API dibuat, konsol API Gateway menampilkan halaman Resources, yang hanya berisi sumber daya root (/
) API.
Daftar aliran dalam Kinesis
Kinesis mendukung ListStreams
tindakan dengan panggilan REST API berikut:
POST /?Action=ListStreams HTTP/1.1 Host: kinesis.<region>.<domain> Content-Length: <PayloadSizeBytes> User-Agent: <UserAgentString> Content-Type: application/x-amz-json-1.1 Authorization: <AuthParams> X-Amz-Date: <Date> { ... }
Dalam permintaan REST API di atas, tindakan ditentukan dalam parameter Action
kueri. Atau, Anda dapat menentukan tindakan di X-Amz-Target
header, sebagai gantinya:
POST / HTTP/1.1 Host: kinesis.<region>.<domain> Content-Length: <PayloadSizeBytes> User-Agent: <UserAgentString> Content-Type: application/x-amz-json-1.1 Authorization: <AuthParams> X-Amz-Date: <Date> X-Amz-Target: Kinesis_20131202.ListStreams { ... }
Dalam tutorial ini, kita menggunakan parameter query untuk menentukan tindakan.
Untuk mengekspos tindakan Kinesis di API, tambahkan /streams
resource ke root API. Kemudian atur GET
metode pada sumber daya dan integrasikan metode dengan ListStreams
aksi Kinesis.
Prosedur berikut menjelaskan cara membuat daftar aliran Kinesis dengan menggunakan konsol API Gateway.
Untuk membuat daftar aliran Kinesis dengan menggunakan konsol API Gateway
-
Pilih
/
sumber daya, lalu pilih Buat sumber daya. Untuk Nama sumber daya, masukkan
streams
.Tetap nonaktifkan CORS (Cross Origin Resource Sharing).
Pilih Buat sumber daya.
-
Pilih
/streams
sumber daya, lalu pilih Create method, lalu lakukan hal berikut:Untuk tipe Metode, pilih GET.
catatan
Kata kerja HTTP untuk metode yang dipanggil oleh klien mungkin berbeda dari kata kerja HTTP untuk integrasi yang diperlukan oleh backend. Kami memilih
GET
di sini, karena aliran daftar secara intuitif merupakan operasi BACA.Untuk jenis Integrasi, pilih AWS layanan.
Untuk Wilayah AWS, pilih Wilayah AWS tempat Anda membuat aliran Kinesis Anda.
Untuk Layanan AWS, pilih Kinesis.
-
Biarkan AWS subdomain kosong.
-
Untuk metode HTTP, pilih POST.
catatan
Kami memilih
POST
di sini karena Kinesis mengharuskanListStreams
tindakan dipanggil dengannya. -
Untuk tipe Tindakan, pilih Gunakan nama tindakan.
-
Untuk nama Action, masukkan
ListStreams
. -
Untuk peran Eksekusi, masukkan ARN untuk peran eksekusi Anda.
-
Pertahankan default Passthrough untuk Penanganan Konten.
-
Pilih metode Buat.
-
Pada tab Permintaan integrasi, di bawah Pengaturan permintaan integrasi, pilih Edit.
Untuk Request body passthrough, pilih Bila tidak ada templat yang ditentukan (disarankan).
-
Pilih parameter header permintaan URL, lalu lakukan hal berikut:
-
Pilih Tambahkan parameter header permintaan.
-
Untuk Nama, masukkan
Content-Type
. -
Untuk Dipetakan dari, masukkan
'application/x-amz-json-1.1'
.
Kami menggunakan pemetaan parameter permintaan untuk mengatur
Content-Type
header ke nilai statis'application/x-amz-json-1.1'
untuk menginformasikan Kinesis bahwa input adalah versi tertentu dari JSON. -
-
Pilih Templat pemetaan, lalu pilih Tambahkan templat pemetaan, dan lakukan hal berikut:
-
Untuk Content-Type, masukkan.
application/json
-
Untuk badan Template, masukkan
{}
. -
Pilih Simpan.
ListStreamsPermintaan mengambil muatan dari format JSON berikut:
{ "ExclusiveStartStreamName": "string", "Limit": number }
Namun, propertinya opsional. Untuk menggunakan nilai default, kami memilih payload JSON kosong di sini.
-
-
Uji metode GET pada sumber daya /streams untuk menjalankan tindakan
ListStreams
di Kinesis:Pilih tab Uji. Anda mungkin perlu memilih tombol panah kanan untuk menampilkan tab.
Pilih Tes untuk menguji metode Anda.
Jika Anda telah membuat dua aliran bernama “MyStream” dan “YourStream” di Kinesis, pengujian yang berhasil mengembalikan respons 200 OK yang berisi muatan berikut:
{ "HasMoreStreams": false, "StreamNames": [ "myStream", "yourStream" ] }
Buat, jelaskan, dan hapus aliran di Kinesis
Membuat, mendeskripsikan, dan menghapus aliran di Kinesis melibatkan pembuatan permintaan Kinesis REST API berikut, masing-masing:
POST /?Action=CreateStream HTTP/1.1 Host: kinesis.
region
.domain
... Content-Type: application/x-amz-json-1.1 Content-Length:PayloadSizeBytes
{ "ShardCount": number, "StreamName": "string" }
POST /?Action=DescribeStream HTTP/1.1 Host: kinesis.
region
.domain
... Content-Type: application/x-amz-json-1.1 Content-Length:PayloadSizeBytes
{ "StreamName": "string" }
POST /?Action=DeleteStream HTTP/1.1 Host: kinesis.
region
.domain
... Content-Type: application/x-amz-json-1.1 Content-Length:PayloadSizeBytes
{ "StreamName":"string" }
Kita dapat membangun API untuk menerima input yang diperlukan sebagai payload JSON dari permintaan metode dan meneruskan payload ke permintaan integrasi. Namun, untuk memberikan lebih banyak contoh pemetaan data antara permintaan metode dan integrasi, serta respons metode dan integrasi, kami membuat API kami agak berbeda.
Kami mengeksposGET
,POST
, dan metode Delete
HTTP pada to-be-named Stream
sumber daya. Kami menggunakan variabel {stream-name}
jalur sebagai pengganti sumber daya aliran dan mengintegrasikan metode API ini dengan Kinesis,, dan tindakan DescribeStream
CreateStream
, masing-masing. DeleteStream
Kami mengharuskan klien meneruskan data input lain sebagai header, parameter kueri, atau muatan permintaan metode. Kami menyediakan template pemetaan untuk mengubah data ke payload permintaan integrasi yang diperlukan.
Untuk membuat sumber daya {stream-name}
-
Pilih sumber daya /streams, lalu pilih Buat sumber daya.
Matikan sumber daya Proxy.
Untuk jalur Sumber Daya, pilih
/streams
.Untuk Nama sumber daya, masukkan
{stream-name}
.Tetap nonaktifkan CORS (Cross Origin Resource Sharing).
Pilih Buat sumber daya.
Untuk mengonfigurasi dan menguji metode GET pada sumber daya aliran
-
Pilih sumber daya/{stream-name}, lalu pilih Create method.
Untuk tipe Metode, pilih GET.
Untuk jenis Integrasi, pilih AWS layanan.
Untuk Wilayah AWS, pilih Wilayah AWS tempat Anda membuat aliran Kinesis Anda.
Untuk Layanan AWS, pilih Kinesis.
-
Biarkan AWS subdomain kosong.
-
Untuk metode HTTP, pilih POST.
-
Untuk tipe Tindakan, pilih Gunakan nama tindakan.
-
Untuk nama Action, masukkan
DescribeStream
. -
Untuk peran Eksekusi, masukkan ARN untuk peran eksekusi Anda.
-
Pertahankan default Passthrough untuk Penanganan Konten.
-
Pilih metode Buat.
-
Di bagian Permintaan integrasi, tambahkan parameter header permintaan URL berikut:
Content-Type: 'x-amz-json-1.1'
Tugas mengikuti prosedur yang sama untuk mengatur pemetaan parameter permintaan untuk
GET /streams
metode tersebut. -
Tambahkan template pemetaan badan berikut untuk memetakan data dari permintaan
GET /streams/{stream-name}
metode ke permintaanPOST /?Action=DescribeStream
integrasi:{ "StreamName": "$input.params('stream-name')" }
Template pemetaan ini menghasilkan payload permintaan integrasi yang diperlukan untuk
DescribeStream
tindakan Kinesis dari nilai parameter jalur permintaanstream-name
metode. -
Untuk menguji
GET /stream/{stream-name}
metode untuk menjalankanDescribeStream
tindakan di Kinesis, pilih tab Uji. -
Untuk Path, di bawah nama aliran, masukkan nama aliran Kinesis yang ada.
-
Pilih Uji. Jika tes berhasil, respons 200 OK dikembalikan dengan muatan yang mirip dengan berikut ini:
{ "StreamDescription": { "HasMoreShards": false, "RetentionPeriodHours": 24, "Shards": [ { "HashKeyRange": { "EndingHashKey": "68056473384187692692674921486353642290", "StartingHashKey": "0" }, "SequenceNumberRange": { "StartingSequenceNumber": "49559266461454070523309915164834022007924120923395850242" }, "ShardId": "shardId-000000000000" }, ... { "HashKeyRange": { "EndingHashKey": "340282366920938463463374607431768211455", "StartingHashKey": "272225893536750770770699685945414569164" }, "SequenceNumberRange": { "StartingSequenceNumber": "49559266461543273504104037657400164881014714369419771970" }, "ShardId": "shardId-000000000004" } ], "StreamARN": "arn:aws:kinesis:us-east-1:12345678901:stream/myStream", "StreamName": "myStream", "StreamStatus": "ACTIVE" } }
Setelah menerapkan API, Anda dapat membuat permintaan REST terhadap metode API ini:
GET https://
your-api-id
.execute-api.region
.amazonaws.com/stage
/streams/myStream
HTTP/1.1 Host:your-api-id
.execute-api.region
.amazonaws.com Content-Type: application/json Authorization: ... X-Amz-Date: 20160323T194451Z
Untuk mengkonfigurasi dan menguji metode POST pada sumber daya aliran
-
Pilih sumber daya/{stream-name}, lalu pilih Create method.
Untuk jenis Metode, pilih POST.
Untuk jenis Integrasi, pilih AWS layanan.
Untuk Wilayah AWS, pilih Wilayah AWS tempat Anda membuat aliran Kinesis Anda.
Untuk Layanan AWS, pilih Kinesis.
-
Biarkan AWS subdomain kosong.
-
Untuk metode HTTP, pilih POST.
-
Untuk tipe Tindakan, pilih Gunakan nama tindakan.
-
Untuk nama Action, masukkan
CreateStream
. -
Untuk peran Eksekusi, masukkan ARN untuk peran eksekusi Anda.
-
Pertahankan default Passthrough untuk Penanganan Konten.
-
Pilih metode Buat.
-
Di bagian Permintaan integrasi, tambahkan parameter header permintaan URL berikut:
Content-Type: 'x-amz-json-1.1'
Tugas mengikuti prosedur yang sama untuk mengatur pemetaan parameter permintaan untuk
GET /streams
metode tersebut. -
Tambahkan template pemetaan badan berikut untuk memetakan data dari permintaan
POST /streams/{stream-name}
metode ke permintaanPOST /?Action=CreateStream
integrasi:{ "ShardCount": #if($input.path('$.ShardCount') == '') 5 #else $input.path('$.ShardCount') #end, "StreamName": "$input.params('stream-name')" }
Dalam template pemetaan sebelumnya, kami menetapkan
ShardCount
ke nilai tetap 5 jika klien tidak menentukan nilai dalam payload permintaan metode. -
Untuk menguji
POST /stream/{stream-name}
metode untuk menjalankanCreateStream
tindakan di Kinesis, pilih tab Uji. -
Untuk Path, di bawah nama aliran, masukkan nama aliran Kinesis baru.
-
Pilih Uji. Jika tes berhasil, respons 200 OK dikembalikan tanpa data.
Setelah menerapkan API, Anda juga dapat membuat permintaan REST API terhadap metode POST pada sumber daya Stream untuk menjalankan
CreateStream
tindakan di Kinesis:POST https://
your-api-id
.execute-api.region
.amazonaws.com/stage
/streams/yourStream
HTTP/1.1 Host:your-api-id
.execute-api.region
.amazonaws.com Content-Type: application/json Authorization: ... X-Amz-Date: 20160323T194451Z { "ShardCount": 5 }
Konfigurasikan dan uji metode DELETE pada sumber daya aliran
-
Pilih sumber daya/{stream-name}, lalu pilih Create method.
Untuk jenis Metode, pilih DELETE.
Untuk jenis Integrasi, pilih AWS layanan.
Untuk Wilayah AWS, pilih Wilayah AWS tempat Anda membuat aliran Kinesis Anda.
Untuk Layanan AWS, pilih Kinesis.
-
Biarkan AWS subdomain kosong.
-
Untuk metode HTTP, pilih POST.
-
Untuk tipe Tindakan, pilih Gunakan nama tindakan.
-
Untuk nama Action, masukkan
DeleteStream
. -
Untuk peran Eksekusi, masukkan ARN untuk peran eksekusi Anda.
-
Pertahankan default Passthrough untuk Penanganan Konten.
-
Pilih metode Buat.
-
Di bagian Permintaan integrasi, tambahkan parameter header permintaan URL berikut:
Content-Type: 'x-amz-json-1.1'
Tugas mengikuti prosedur yang sama untuk mengatur pemetaan parameter permintaan untuk
GET /streams
metode tersebut. -
Tambahkan template pemetaan badan berikut untuk memetakan data dari permintaan
DELETE /streams/{stream-name}
metode ke permintaan integrasi yang sesuai dariPOST /?Action=DeleteStream
:{ "StreamName": "$input.params('stream-name')" }
Template pemetaan ini menghasilkan input yang diperlukan untuk
DELETE /streams/{stream-name}
tindakan dari nama jalur URL yang disediakan klien.stream-name
-
Untuk menguji
DELETE /stream/{stream-name}
metode untuk menjalankanDeleteStream
tindakan di Kinesis, pilih tab Uji. -
Untuk Path, di bawah nama aliran, masukkan nama aliran Kinesis yang ada.
-
Pilih Uji. Jika tes berhasil, respons 200 OK dikembalikan tanpa data.
Setelah menerapkan API, Anda juga dapat membuat permintaan REST API berikut terhadap metode DELETE pada sumber daya Stream untuk memanggil
DeleteStream
tindakan di Kinesis:DELETE https://
your-api-id
.execute-api.region
.amazonaws.com/stage
/streams/yourStream
HTTP/1.1 Host:your-api-id
.execute-api.region
.amazonaws.com Content-Type: application/json Authorization: ... X-Amz-Date: 20160323T194451Z {}
Dapatkan catatan dari dan tambahkan catatan ke aliran di Kinesis
Setelah Anda membuat aliran di Kinesis, Anda dapat menambahkan catatan data ke aliran dan membaca data dari aliran. Menambahkan catatan data melibatkan pemanggilan PutRecordsatau PutRecordtindakan dalam Kinesis. Yang pertama menambahkan beberapa catatan sedangkan yang terakhir menambahkan satu catatan ke aliran.
POST /?Action=PutRecords HTTP/1.1 Host: kinesis.
region
.domain
Authorization: AWS4-HMAC-SHA256 Credential=..., ... ... Content-Type: application/x-amz-json-1.1 Content-Length:PayloadSizeBytes
{ "Records": [ { "Data": blob, "ExplicitHashKey": "string", "PartitionKey": "string" } ], "StreamName": "string" }
atau
POST /?Action=PutRecord HTTP/1.1 Host: kinesis.
region
.domain
Authorization: AWS4-HMAC-SHA256 Credential=..., ... ... Content-Type: application/x-amz-json-1.1 Content-Length:PayloadSizeBytes
{ "Data":blob
, "ExplicitHashKey":"string"
, "PartitionKey":"string"
, "SequenceNumberForOrdering":"string"
, "StreamName": "string" }
Di sini, StreamName
mengidentifikasi aliran target untuk menambahkan catatan. StreamName
,Data
, dan PartitionKey
diperlukan data input. Dalam contoh kita, kita menggunakan nilai default untuk semua data input opsional dan tidak akan secara eksplisit menentukan nilai untuk mereka dalam input ke permintaan metode.
Membaca data dalam Kinesis sama dengan memanggil tindakan: GetRecords
POST /?Action=GetRecords HTTP/1.1 Host: kinesis.
region
.domain
Authorization: AWS4-HMAC-SHA256 Credential=..., ... ... Content-Type: application/x-amz-json-1.1 Content-Length:PayloadSizeBytes
{ "ShardIterator":"string"
, "Limit":number
}
Di sini, aliran sumber dari mana kita mendapatkan catatan ditentukan dalam ShardIterator
nilai yang diperlukan, seperti yang ditunjukkan dalam tindakan Kinesis berikut untuk mendapatkan iterator pecahan:
POST /?Action=GetShardIterator HTTP/1.1 Host: kinesis.
region
.domain
Authorization: AWS4-HMAC-SHA256 Credential=..., ... ... Content-Type: application/x-amz-json-1.1 Content-Length:PayloadSizeBytes
{ "ShardId":"string"
, "ShardIteratorType":"string"
, "StartingSequenceNumber":"string"
, "StreamName":"string"
}
Untuk PutRecords
tindakan GetRecords
dan, kami mengekspos PUT
metode GET
dan, masing-masing, pada /records
sumber daya yang ditambahkan ke sumber daya aliran bernama ()/{stream-name}
. Demikian pula, kami mengekspos PutRecord
tindakan sebagai PUT
metode pada /record
sumber daya.
Karena GetRecords
tindakan mengambil sebagai input ShardIterator
nilai, yang diperoleh dengan memanggil aksi GetShardIterator
helper, kami mengekspos metode GET
helper pada ShardIterator
resource (). /sharditerator
Untuk membuat sumber daya /record, /records, dan /sharditerator
-
Pilih sumber daya/{stream-name}, lalu pilih Buat sumber daya.
Matikan sumber daya Proxy.
Untuk jalur Sumber Daya, pilih
/{stream-name}
.Untuk Nama sumber daya, masukkan
record
.Tetap nonaktifkan CORS (Cross Origin Resource Sharing).
Pilih Buat sumber daya.
Ulangi langkah sebelumnya untuk membuat /records dan sumber daya /sharditerator. API final akan terlihat seperti berikut:
Empat prosedur berikut menjelaskan cara mengatur masing-masing metode, cara memetakan data dari permintaan metode ke permintaan integrasi, dan cara menguji metode.
Untuk mengatur dan menguji PUT /streams/{stream-name}/record
metode yang akan dipanggil PutRecord
di Kinesis:
-
Pilih /record, lalu pilih Create method.
Untuk jenis Metode, pilih PUT.
Untuk jenis Integrasi, pilih AWS layanan.
Untuk Wilayah AWS, pilih Wilayah AWS tempat Anda membuat aliran Kinesis Anda.
Untuk Layanan AWS, pilih Kinesis.
-
Biarkan AWS subdomain kosong.
-
Untuk metode HTTP, pilih POST.
-
Untuk tipe Tindakan, pilih Gunakan nama tindakan.
-
Untuk nama Action, masukkan
PutRecord
. -
Untuk peran Eksekusi, masukkan ARN untuk peran eksekusi Anda.
-
Pertahankan default Passthrough untuk Penanganan Konten.
-
Pilih metode Buat.
-
Di bagian Permintaan integrasi, tambahkan parameter header permintaan URL berikut:
Content-Type: 'x-amz-json-1.1'
Tugas mengikuti prosedur yang sama untuk mengatur pemetaan parameter permintaan untuk
GET /streams
metode tersebut. -
Tambahkan template pemetaan badan berikut untuk memetakan data dari permintaan
PUT /streams/{stream-name}/record
metode ke permintaan integrasi yang sesuai dariPOST /?Action=PutRecord
:{ "StreamName": "$input.params('stream-name')", "Data": "$util.base64Encode($input.json('$.Data'))", "PartitionKey": "$input.path('$.PartitionKey')" }
Template pemetaan ini mengasumsikan bahwa payload permintaan metode adalah dari format berikut:
{ "Data": "some data", "PartitionKey": "some key" }
Data ini dapat dimodelkan dengan skema JSON berikut:
{ "$schema": "http://json-schema.org/draft-04/schema#", "title": "PutRecord proxy single-record payload", "type": "object", "properties": { "Data": { "type": "string" }, "PartitionKey": { "type": "string" } } }
Anda dapat membuat model untuk menyertakan skema ini dan menggunakan model untuk memfasilitasi pembuatan template pemetaan. Namun, Anda dapat membuat template pemetaan tanpa menggunakan model apa pun.
-
Untuk menguji
PUT /streams/{stream-name}/record
metode, atur variabelstream-name
jalur ke nama aliran yang ada, berikan muatan format yang diperlukan, lalu kirimkan permintaan metode. Hasil yang berhasil adalah200 OK
respons dengan muatan format berikut:{ "SequenceNumber": "49559409944537880850133345460169886593573102115167928386", "ShardId": "shardId-000000000004" }
Untuk mengatur dan menguji PUT /streams/{stream-name}/records
metode yang akan dipanggil PutRecords
di Kinesis
-
Pilih sumber daya /records, lalu pilih Create method.
Untuk jenis Metode, pilih PUT.
Untuk jenis Integrasi, pilih AWS layanan.
Untuk Wilayah AWS, pilih Wilayah AWS tempat Anda membuat aliran Kinesis Anda.
Untuk Layanan AWS, pilih Kinesis.
-
Biarkan AWS subdomain kosong.
-
Untuk metode HTTP, pilih POST.
-
Untuk tipe Tindakan, pilih Gunakan nama tindakan.
-
Untuk nama Action, masukkan
PutRecords
. -
Untuk peran Eksekusi, masukkan ARN untuk peran eksekusi Anda.
-
Pertahankan default Passthrough untuk Penanganan Konten.
-
Pilih metode Buat.
-
Di bagian Permintaan integrasi, tambahkan parameter header permintaan URL berikut:
Content-Type: 'x-amz-json-1.1'
Tugas mengikuti prosedur yang sama untuk mengatur pemetaan parameter permintaan untuk
GET /streams
metode tersebut. -
Tambahkan template pemetaan berikut untuk memetakan data dari permintaan
PUT /streams/{stream-name}/records
metode ke permintaan integrasi yang sesuai dariPOST /?Action=PutRecords
:{ "StreamName": "$input.params('stream-name')", "Records": [ #foreach($elem in $input.path('$.records')) { "Data": "$util.base64Encode($elem.data)", "PartitionKey": "$elem.partition-key" }#if($foreach.hasNext),#end #end ] }
Template pemetaan ini mengasumsikan bahwa payload permintaan metode dapat dimodelkan oleh skema JSON berikut:
{ "$schema": "http://json-schema.org/draft-04/schema#", "title": "PutRecords proxy payload data", "type": "object", "properties": { "records": { "type": "array", "items": { "type": "object", "properties": { "data": { "type": "string" }, "partition-key": { "type": "string" } } } } } }
Anda dapat membuat model untuk menyertakan skema ini dan menggunakan model untuk memfasilitasi pembuatan template pemetaan. Namun, Anda dapat membuat template pemetaan tanpa menggunakan model apa pun.
Dalam tutorial ini, kami menggunakan dua format payload yang sedikit berbeda untuk menggambarkan bahwa pengembang API dapat memilih untuk mengekspos format data backend ke klien atau menyembunyikannya dari klien. Satu format adalah untuk
PUT /streams/{stream-name}/records
metode (di atas). Format lain digunakan untukPUT /streams/{stream-name}/record
metode (dalam prosedur sebelumnya). Dalam lingkungan produksi, Anda harus menjaga kedua format tetap konsisten. -
Untuk menguji
PUT /streams/{stream-name}/records
metode, atur variabelstream-name
jalur ke aliran yang ada, berikan payload berikut, dan kirimkan permintaan metode.{ "records": [ { "data": "some data", "partition-key": "some key" }, { "data": "some other data", "partition-key": "some key" } ] }
Hasil yang berhasil adalah respons 200 OK dengan muatan yang mirip dengan output berikut:
{ "FailedRecordCount": 0, "Records": [ { "SequenceNumber": "49559409944537880850133345460167468741933742152373764162", "ShardId": "shardId-000000000004" }, { "SequenceNumber": "49559409944537880850133345460168677667753356781548470338", "ShardId": "shardId-000000000004" } ] }
Untuk mengatur dan menguji GET /streams/{stream-name}/sharditerator
metode yang dipanggil GetShardIterator
di Kinesis
GET /streams/{stream-name}/sharditerator
Metode ini adalah metode pembantu untuk memperoleh iterator shard yang diperlukan sebelum memanggil metode. GET
/streams/{stream-name}/records
-
Pilih sumber daya /sharditerator, lalu pilih Create method.
Untuk tipe Metode, pilih GET.
Untuk jenis Integrasi, pilih AWS layanan.
Untuk Wilayah AWS, pilih Wilayah AWS tempat Anda membuat aliran Kinesis Anda.
Untuk Layanan AWS, pilih Kinesis.
-
Biarkan AWS subdomain kosong.
-
Untuk metode HTTP, pilih POST.
-
Untuk tipe Tindakan, pilih Gunakan nama tindakan.
-
Untuk nama Action, masukkan
GetShardIterator
. -
Untuk peran Eksekusi, masukkan ARN untuk peran eksekusi Anda.
-
Pertahankan default Passthrough untuk Penanganan Konten.
-
Pilih parameter string kueri URL.
GetShardIterator
Tindakan tersebut membutuhkan masukan dari suatu ShardId nilai. Untuk meneruskanShardId
nilai yang disediakan klien, kami menambahkan parametershard-id
kueri ke permintaan metode, seperti yang ditunjukkan pada langkah berikut. Pilih Tambahkan string kueri.
Untuk Nama, masukkan
shard-id
.Tetap Diperlukan dan Caching dimatikan.
-
Pilih metode Buat.
-
Di bagian Permintaan integrasi, tambahkan template pemetaan berikut untuk menghasilkan input yang diperlukan (
ShardId
danStreamName
) keGetShardIterator
tindakan darishard-id
danstream-name
parameter permintaan metode. Selain itu, template pemetaan juga ditetapkanShardIteratorType
TRIM_HORIZON
sebagai default.{ "ShardId": "$input.params('shard-id')", "ShardIteratorType": "TRIM_HORIZON", "StreamName": "$input.params('stream-name')" }
-
Menggunakan opsi Uji di konsol API Gateway, masukkan nama aliran yang ada sebagai nilai variabel
stream-name
Path, setel stringshard-id
Kueri keShardId
nilai yang ada (mis.,shard-000000000004
), dan pilih Uji.Muatan respons yang berhasil mirip dengan output berikut:
{ "ShardIterator": "AAAAAAAAAAFYVN3VlFy..." }
Catat
ShardIterator
nilainya. Anda membutuhkannya untuk mendapatkan catatan dari aliran.
Untuk mengkonfigurasi dan menguji GET /streams/{stream-name}/records
metode untuk menjalankan GetRecords
tindakan di Kinesis
-
Pilih sumber daya /records, lalu pilih Create method.
Untuk tipe Metode, pilih GET.
Untuk jenis Integrasi, pilih AWS layanan.
Untuk Wilayah AWS, pilih Wilayah AWS tempat Anda membuat aliran Kinesis Anda.
Untuk Layanan AWS, pilih Kinesis.
-
Biarkan AWS subdomain kosong.
-
Untuk metode HTTP, pilih POST.
-
Untuk tipe Tindakan, pilih Gunakan nama tindakan.
-
Untuk nama Action, masukkan
GetRecords
. -
Untuk peran Eksekusi, masukkan ARN untuk peran eksekusi Anda.
-
Pertahankan default Passthrough untuk Penanganan Konten.
-
Pilih header permintaan HTTP.
GetRecords
Tindakan tersebut membutuhkan masukan dari suatuShardIterator
nilai. Untuk meneruskanShardIterator
nilai yang disediakan klien, kami menambahkan parameterShard-Iterator
header ke permintaan metode. Pilih Tambahkan header.
Untuk Nama, masukkan
Shard-Iterator
.Tetap Diperlukan dan Caching dimatikan.
Pilih metode Buat.
-
Di bagian Permintaan integrasi, tambahkan template pemetaan badan berikut untuk memetakan nilai parameter
Shard-Iterator
header ke nilaiShardIterator
properti payload JSON untuk tindakanGetRecords
di Kinesis.{ "ShardIterator": "$input.params('Shard-Iterator')" }
-
Menggunakan opsi Uji di konsol API Gateway, masukkan nama aliran yang ada sebagai nilai variabel
stream-name
Path, setelShard-Iterator
Header keShardIterator
nilai yang diperoleh dari uji cobaGET /streams/{stream-name}/sharditerator
metode (di atas), dan pilih Uji.Muatan respons yang berhasil mirip dengan output berikut:
{ "MillisBehindLatest": 0, "NextShardIterator": "AAAAAAAAAAF...", "Records": [ ... ] }