Tutorial: Buat REST API sebagai proxy Amazon Kinesis - APIGerbang Amazon

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:

  1. Daftar aliran yang tersedia pengguna di Kinesis

  2. Membuat, mendeskripsikan, atau menghapus aliran tertentu

  3. 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:

  1. ListStreamsTindakan dalam Kinesis

  2. , CreateStreamDescribeStream, atau DeleteStream tindakan

  3. Tindakan GetRecords atau PutRecords (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 pada ListStreams 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
  1. Masuk ke AWS Management Console dan buka konsol IAM di https://console.aws.amazon.com/iam/.

  2. Pilih Peran.

  3. Pilih Buat peran.

  4. Pilih AWS layanan di bawah Pilih jenis entitas tepercaya, lalu pilih API Gateway dan pilih Izinkan API Gateway untuk mendorong CloudWatch log ke Log.

  5. Pilih Berikutnya, lalu pilih Berikutnya.

  6. Untuk nama PeranAPIGatewayKinesisProxyPolicy, masukkan, lalu pilih Buat peran.

  7. Dalam daftar Peran, pilih peran yang baru saja Anda buat. Anda mungkin perlu menggulir atau menggunakan bilah pencarian untuk menemukan peran.

  8. Untuk peran yang dipilih, pilih tab Tambahkan izin.

  9. Pilih Lampirkan kebijakan dari daftar dropdown.

  10. 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.

  11. 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
  1. Masuk ke konsol API Gateway di https://console.aws.amazon.com/apigateway.

  2. 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.

  3. Pilih API Baru.

  4. Dalam nama API, masukkanKinesisProxy. Simpan nilai default untuk semua bidang lainnya.

  5. (Opsional) Untuk Deskripsi, masukkan deskripsi.

  6. 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
  1. Pilih / sumber daya, lalu pilih Buat sumber daya.

  2. Untuk Nama sumber daya, masukkan streams.

  3. Tetap nonaktifkan CORS (Cross Origin Resource Sharing).

  4. Pilih Buat sumber daya.

  5. Pilih /streams sumber daya, lalu pilih Create method, lalu lakukan hal berikut:

    1. 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.

    2. Untuk jenis Integrasi, pilih AWS layanan.

    3. Untuk Wilayah AWS, pilih Wilayah AWS tempat Anda membuat aliran Kinesis Anda.

    4. Untuk Layanan AWS, pilih Kinesis.

    5. Biarkan AWS subdomain kosong.

    6. Untuk metode HTTP, pilih POST.

      catatan

      Kami memilih POST di sini karena Kinesis mengharuskan ListStreams tindakan dipanggil dengannya.

    7. Untuk tipe Tindakan, pilih Gunakan nama tindakan.

    8. Untuk nama Action, masukkanListStreams.

    9. Untuk peran Eksekusi, masukkan ARN untuk peran eksekusi Anda.

    10. Pertahankan default Passthrough untuk Penanganan Konten.

    11. Pilih metode Buat.

  6. Pada tab Permintaan integrasi, di bawah Pengaturan permintaan integrasi, pilih Edit.

  7. Untuk Request body passthrough, pilih Bila tidak ada templat yang ditentukan (disarankan).

  8. Pilih parameter header permintaan URL, lalu lakukan hal berikut:

    1. Pilih Tambahkan parameter header permintaan.

    2. Untuk Nama, masukkan Content-Type.

    3. 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.

  9. Pilih Templat pemetaan, lalu pilih Tambahkan templat pemetaan, dan lakukan hal berikut:

    1. Untuk Content-Type, masukkan. application/json

    2. Untuk badan Template, masukkan{}.

    3. 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.

  10. 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 DescribeStreamCreateStream, 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}
  1. Pilih sumber daya /streams, lalu pilih Buat sumber daya.

  2. Matikan sumber daya Proxy.

  3. Untuk jalur Sumber Daya, pilih/streams.

  4. Untuk Nama sumber daya, masukkan {stream-name}.

  5. Tetap nonaktifkan CORS (Cross Origin Resource Sharing).

  6. Pilih Buat sumber daya.

Untuk mengonfigurasi dan menguji metode GET pada sumber daya aliran
  1. Pilih sumber daya/{stream-name}, lalu pilih Create method.

  2. Untuk tipe Metode, pilih GET.

  3. Untuk jenis Integrasi, pilih AWS layanan.

  4. Untuk Wilayah AWS, pilih Wilayah AWS tempat Anda membuat aliran Kinesis Anda.

  5. Untuk Layanan AWS, pilih Kinesis.

  6. Biarkan AWS subdomain kosong.

  7. Untuk metode HTTP, pilih POST.

  8. Untuk tipe Tindakan, pilih Gunakan nama tindakan.

  9. Untuk nama Action, masukkanDescribeStream.

  10. Untuk peran Eksekusi, masukkan ARN untuk peran eksekusi Anda.

  11. Pertahankan default Passthrough untuk Penanganan Konten.

  12. Pilih metode Buat.

  13. 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.

  14. Tambahkan template pemetaan badan berikut untuk memetakan data dari permintaan GET /streams/{stream-name} metode ke permintaan POST /?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 permintaan stream-name metode.

  15. Untuk menguji GET /stream/{stream-name} metode untuk menjalankan DescribeStream tindakan di Kinesis, pilih tab Uji.

  16. Untuk Path, di bawah nama aliran, masukkan nama aliran Kinesis yang ada.

  17. 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
  1. Pilih sumber daya/{stream-name}, lalu pilih Create method.

  2. Untuk jenis Metode, pilih POST.

  3. Untuk jenis Integrasi, pilih AWS layanan.

  4. Untuk Wilayah AWS, pilih Wilayah AWS tempat Anda membuat aliran Kinesis Anda.

  5. Untuk Layanan AWS, pilih Kinesis.

  6. Biarkan AWS subdomain kosong.

  7. Untuk metode HTTP, pilih POST.

  8. Untuk tipe Tindakan, pilih Gunakan nama tindakan.

  9. Untuk nama Action, masukkanCreateStream.

  10. Untuk peran Eksekusi, masukkan ARN untuk peran eksekusi Anda.

  11. Pertahankan default Passthrough untuk Penanganan Konten.

  12. Pilih metode Buat.

  13. 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.

  14. Tambahkan template pemetaan badan berikut untuk memetakan data dari permintaan POST /streams/{stream-name} metode ke permintaan POST /?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.

  15. Untuk menguji POST /stream/{stream-name} metode untuk menjalankan CreateStream tindakan di Kinesis, pilih tab Uji.

  16. Untuk Path, di bawah nama aliran, masukkan nama aliran Kinesis baru.

  17. 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
  1. Pilih sumber daya/{stream-name}, lalu pilih Create method.

  2. Untuk jenis Metode, pilih DELETE.

  3. Untuk jenis Integrasi, pilih AWS layanan.

  4. Untuk Wilayah AWS, pilih Wilayah AWS tempat Anda membuat aliran Kinesis Anda.

  5. Untuk Layanan AWS, pilih Kinesis.

  6. Biarkan AWS subdomain kosong.

  7. Untuk metode HTTP, pilih POST.

  8. Untuk tipe Tindakan, pilih Gunakan nama tindakan.

  9. Untuk nama Action, masukkanDeleteStream.

  10. Untuk peran Eksekusi, masukkan ARN untuk peran eksekusi Anda.

  11. Pertahankan default Passthrough untuk Penanganan Konten.

  12. Pilih metode Buat.

  13. 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.

  14. 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

  15. Untuk menguji DELETE /stream/{stream-name} metode untuk menjalankan DeleteStream tindakan di Kinesis, pilih tab Uji.

  16. Untuk Path, di bawah nama aliran, masukkan nama aliran Kinesis yang ada.

  17. 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
  1. Pilih sumber daya/{stream-name}, lalu pilih Buat sumber daya.

  2. Matikan sumber daya Proxy.

  3. Untuk jalur Sumber Daya, pilih/{stream-name}.

  4. Untuk Nama sumber daya, masukkan record.

  5. Tetap nonaktifkan CORS (Cross Origin Resource Sharing).

  6. Pilih Buat sumber daya.

  7. Ulangi langkah sebelumnya untuk membuat /records dan sumber daya /sharditerator. API final akan terlihat seperti berikut:

    Buat metode Records:get|put|put|get untuk API.

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:
  1. Pilih /record, lalu pilih Create method.

  2. Untuk jenis Metode, pilih PUT.

  3. Untuk jenis Integrasi, pilih AWS layanan.

  4. Untuk Wilayah AWS, pilih Wilayah AWS tempat Anda membuat aliran Kinesis Anda.

  5. Untuk Layanan AWS, pilih Kinesis.

  6. Biarkan AWS subdomain kosong.

  7. Untuk metode HTTP, pilih POST.

  8. Untuk tipe Tindakan, pilih Gunakan nama tindakan.

  9. Untuk nama Action, masukkanPutRecord.

  10. Untuk peran Eksekusi, masukkan ARN untuk peran eksekusi Anda.

  11. Pertahankan default Passthrough untuk Penanganan Konten.

  12. Pilih metode Buat.

  13. 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.

  14. 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.

  15. Untuk menguji PUT /streams/{stream-name}/record metode, atur variabel stream-name jalur ke nama aliran yang ada, berikan muatan format yang diperlukan, lalu kirimkan permintaan metode. Hasil yang berhasil adalah 200 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
  1. Pilih sumber daya /records, lalu pilih Create method.

  2. Untuk jenis Metode, pilih PUT.

  3. Untuk jenis Integrasi, pilih AWS layanan.

  4. Untuk Wilayah AWS, pilih Wilayah AWS tempat Anda membuat aliran Kinesis Anda.

  5. Untuk Layanan AWS, pilih Kinesis.

  6. Biarkan AWS subdomain kosong.

  7. Untuk metode HTTP, pilih POST.

  8. Untuk tipe Tindakan, pilih Gunakan nama tindakan.

  9. Untuk nama Action, masukkanPutRecords.

  10. Untuk peran Eksekusi, masukkan ARN untuk peran eksekusi Anda.

  11. Pertahankan default Passthrough untuk Penanganan Konten.

  12. Pilih metode Buat.

  13. 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.

  14. 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 untuk PUT /streams/{stream-name}/record metode (dalam prosedur sebelumnya). Dalam lingkungan produksi, Anda harus menjaga kedua format tetap konsisten.

  15. Untuk menguji PUT /streams/{stream-name}/records metode, atur variabel stream-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}/sharditeratorMetode ini adalah metode pembantu untuk memperoleh iterator shard yang diperlukan sebelum memanggil metode. GET /streams/{stream-name}/records

  1. Pilih sumber daya /sharditerator, lalu pilih Create method.

  2. Untuk tipe Metode, pilih GET.

  3. Untuk jenis Integrasi, pilih AWS layanan.

  4. Untuk Wilayah AWS, pilih Wilayah AWS tempat Anda membuat aliran Kinesis Anda.

  5. Untuk Layanan AWS, pilih Kinesis.

  6. Biarkan AWS subdomain kosong.

  7. Untuk metode HTTP, pilih POST.

  8. Untuk tipe Tindakan, pilih Gunakan nama tindakan.

  9. Untuk nama Action, masukkanGetShardIterator.

  10. Untuk peran Eksekusi, masukkan ARN untuk peran eksekusi Anda.

  11. Pertahankan default Passthrough untuk Penanganan Konten.

  12. Pilih parameter string kueri URL.

    GetShardIteratorTindakan tersebut membutuhkan masukan dari suatu ShardId nilai. Untuk meneruskan ShardId nilai yang disediakan klien, kami menambahkan parameter shard-id kueri ke permintaan metode, seperti yang ditunjukkan pada langkah berikut.

  13. Pilih Tambahkan string kueri.

  14. Untuk Nama, masukkan shard-id.

  15. Tetap Diperlukan dan Caching dimatikan.

  16. Pilih metode Buat.

  17. Di bagian Permintaan integrasi, tambahkan template pemetaan berikut untuk menghasilkan input yang diperlukan (ShardIddanStreamName) ke GetShardIterator tindakan dari shard-id dan stream-name parameter permintaan metode. Selain itu, template pemetaan juga ditetapkan ShardIteratorType TRIM_HORIZON sebagai default.

    { "ShardId": "$input.params('shard-id')", "ShardIteratorType": "TRIM_HORIZON", "StreamName": "$input.params('stream-name')" }
  18. Menggunakan opsi Uji di konsol API Gateway, masukkan nama aliran yang ada sebagai nilai variabel stream-name Path, setel string shard-id Kueri ke ShardId 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
  1. Pilih sumber daya /records, lalu pilih Create method.

  2. Untuk tipe Metode, pilih GET.

  3. Untuk jenis Integrasi, pilih AWS layanan.

  4. Untuk Wilayah AWS, pilih Wilayah AWS tempat Anda membuat aliran Kinesis Anda.

  5. Untuk Layanan AWS, pilih Kinesis.

  6. Biarkan AWS subdomain kosong.

  7. Untuk metode HTTP, pilih POST.

  8. Untuk tipe Tindakan, pilih Gunakan nama tindakan.

  9. Untuk nama Action, masukkanGetRecords.

  10. Untuk peran Eksekusi, masukkan ARN untuk peran eksekusi Anda.

  11. Pertahankan default Passthrough untuk Penanganan Konten.

  12. Pilih header permintaan HTTP.

    GetRecordsTindakan tersebut membutuhkan masukan dari suatu ShardIterator nilai. Untuk meneruskan ShardIterator nilai yang disediakan klien, kami menambahkan parameter Shard-Iterator header ke permintaan metode.

  13. Pilih Tambahkan header.

  14. Untuk Nama, masukkan Shard-Iterator.

  15. Tetap Diperlukan dan Caching dimatikan.

  16. Pilih metode Buat.

  17. Di bagian Permintaan integrasi, tambahkan template pemetaan badan berikut untuk memetakan nilai parameter Shard-Iterator header ke nilai ShardIterator properti payload JSON untuk tindakan GetRecords di Kinesis.

    { "ShardIterator": "$input.params('Shard-Iterator')" }
  18. Menggunakan opsi Uji di konsol API Gateway, masukkan nama aliran yang ada sebagai nilai variabel stream-name Path, setel Shard-Iterator Header ke ShardIterator nilai yang diperoleh dari uji coba GET /streams/{stream-name}/sharditerator metode (di atas), dan pilih Uji.

    Muatan respons yang berhasil mirip dengan output berikut:

    { "MillisBehindLatest": 0, "NextShardIterator": "AAAAAAAAAAF...", "Records": [ ... ] }