Memproses rekaman Amazon Kinesis Data Streams dengan Lambda - AWS Lambda

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

Memproses rekaman Amazon Kinesis Data Streams dengan Lambda

Untuk memproses rekaman Amazon Kinesis Data Streams dengan Lambda, buat konsumen untuk streaming Anda, lalu buat pemetaan sumber peristiwa Lambda.

Mengonfigurasi aliran data dan fungsi Anda

Fungsi Lambda Anda adalah aplikasi konsumen untuk aliran data Anda. Itu memproses satu batch rekaman pada satu waktu dari setiap shard. Anda dapat memetakan fungsi Lambda ke konsumen dengan throughput bersama (iterator standar), atau ke konsumen dengan throughput khusus dengan keluaran yang ditingkatkan.

  • Iterator standar: Lambda polling setiap pecahan dalam aliran Kinesis Anda untuk catatan dengan kecepatan dasar sekali per detik. Saat tersedia lebih banyak rekaman, Lambda melanjutkan pemrosesan batch sampai fungsi dapat menyusul aliran. Pemetaan sumber kejadian berbagi throughput baca dengan konsumen lain dari shard tersebut.

  • Peningkatan fan-out: Untuk meminimalkan latensi dan memaksimalkan throughput baca, buat konsumen aliran data dengan fan-out yang disempurnakan. Konsumen dengan keluaran yang ditingkatkan mendapatkan koneksi khusus ke setiap shard yang tidak memengaruhi pembacaan aplikasi lain dari aliran tersebut. Konsumen aliran menggunakan HTTP/2 untuk mengurangi latensi dengan mendorong rekaman ke Lambda melalui koneksi yang sudah berlangsung lama dan dengan mengompresi header permintaan. Anda dapat membuat konsumen streaming dengan Kinesis RegisterStreamConsumer API.

aws kinesis register-stream-consumer \ --consumer-name con1 \ --stream-arn arn:aws:kinesis:us-east-2:123456789012:stream/lambda-stream

Anda akan melihat output berikut:

{ "Consumer": { "ConsumerName": "con1", "ConsumerARN": "arn:aws:kinesis:us-east-2:123456789012:stream/lambda-stream/consumer/con1:1540591608", "ConsumerStatus": "CREATING", "ConsumerCreationTimestamp": 1540591608.0 } }

Untuk meningkatkan kecepatan proses fungsi Anda merekam, tambahkan pecahan ke aliran data Anda. Lambda memproses rekaman dalam setiap shard secara berurutan. Lambda menghentikan pemrosesan rekaman tambahan dalam shard jika fungsi Anda mengembalikan kesalahan. Makin banyak shard, makin banyak batch yang diproses sekaligus sehingga mengurangi dampak kesalahan terhadap konkurensi.

Apabila fungsi Anda tidak dapat menskalakan naik untuk menangani jumlah total batch yang bersamaan, mintalah kenaikan kuota atau cadangkan konkurensi untuk fungsi Anda.

Buat pemetaan sumber acara untuk menjalankan fungsi Lambda

Untuk menjalankan fungsi Lambda Anda dengan catatan dari aliran data Anda, buat pemetaan sumber peristiwa. Anda dapat membuat beberapa pemetaan sumber kejadian untuk memproses data yang sama dengan beberapa fungsi Lambda, atau untuk memproses item dari beberapa aliran data dengan satu fungsi. Saat memproses item dari beberapa aliran, setiap batch berisi catatan hanya dari satu pecahan atau aliran.

Anda dapat mengonfigurasi pemetaan sumber peristiwa untuk memproses catatan dari aliran yang berbeda. Akun AWS Untuk mempelajari selengkapnya, lihat Membuat pemetaan sumber peristiwa lintas akun.

Sebelum Anda membuat pemetaan sumber peristiwa, Anda perlu memberikan izin fungsi Lambda Anda untuk membaca dari aliran data Kinesis. Lambda memerlukan izin berikut untuk mengelola sumber daya yang terkait dengan aliran data Kinesis Anda:

Kebijakan AWS terkelola AWSLambdaKinesisExecutionRolemencakup izin ini. Tambahkan kebijakan terkelola ini ke fungsi Anda seperti yang dijelaskan dalam prosedur berikut.

AWS Management Console
Untuk menambahkan izin Kinesis ke fungsi Anda
  1. Buka halaman Fungsi konsol Lambda dan pilih fungsi Anda.

  2. Di tab Konfigurasi, pilih Izin.

  3. Di panel Peran eksekusi, di bawah Nama peran, pilih tautan ke peran eksekusi fungsi Anda. Tautan ini membuka halaman untuk peran itu di konsol IAM.

  4. Di panel Kebijakan izin, pilih Tambahkan izin, lalu pilih Lampirkan kebijakan.

  5. Di bidang pencarian, masukkanAWSLambdaKinesisExecutionRole.

  6. Pilih kotak centang di samping kebijakan dan pilih Tambah izin.

AWS CLI
Untuk menambahkan izin Kinesis ke fungsi Anda
  • Jalankan perintah CLI berikut untuk menambahkan AWSLambdaKinesisExecutionRole kebijakan ke peran eksekusi fungsi Anda:

    aws iam attach-role-policy \ --role-name MyFunctionRole \ --policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaKinesisExecutionRole
AWS SAM
Untuk menambahkan izin Kinesis ke fungsi Anda
  • Dalam definisi fungsi Anda, tambahkan Policies properti seperti yang ditunjukkan pada contoh berikut:

    Resources: MyFunction: Type: AWS::Serverless::Function Properties: CodeUri: ./my-function/ Handler: index.handler Runtime: nodejs20.x Policies: - AWSLambdaKinesisExecutionRole

Setelah mengonfigurasi izin yang diperlukan, buat pemetaan sumber acara.

AWS Management Console
Untuk membuat pemetaan sumber peristiwa Kinesis
  1. Buka halaman Fungsi konsol Lambda dan pilih fungsi Anda.

  2. Di panel Ikhtisar fungsi, pilih Tambah pemicu.

  3. Di bawah Konfigurasi pemicu, untuk sumbernya, pilih Kinesis.

  4. Pilih aliran Kinesis yang ingin Anda buat pemetaan sumber acara dan, secara opsional, konsumen aliran Anda.

  5. (Opsional) edit ukuran Batch, Posisi awal, dan jendela Batch untuk pemetaan sumber acara Anda.

  6. Pilih Tambahkan.

Saat membuat pemetaan sumber peristiwa dari konsol, peran IAM Anda harus memiliki izin kinesis: ListStreams dan kinesis: Konsumen. ListStream

AWS CLI
Untuk membuat pemetaan sumber peristiwa Kinesis
  • Jalankan perintah CLI berikut untuk membuat pemetaan sumber peristiwa Kinesis. Pilih ukuran batch Anda sendiri dan posisi awal sesuai dengan kasus penggunaan Anda.

    aws lambda create-event-source-mapping \ --function-name MyFunction \ --event-source-arn arn:aws:kinesis:us-east-2:123456789012:stream/lambda-stream \ --starting-position LATEST \ --batch-size 100

Untuk menentukan jendela batching, tambahkan --maximum-batching-window-in-seconds opsi. Untuk informasi selengkapnya tentang penggunaan parameter ini dan parameter lainnya, lihat create-event-source-mapping di Referensi Perintah.AWS CLI

AWS SAM
Untuk membuat pemetaan sumber peristiwa Kinesis
  • Dalam definisi fungsi Anda, tambahkan KinesisEvent properti seperti yang ditunjukkan pada contoh berikut:

    Resources: MyFunction: Type: AWS::Serverless::Function Properties: CodeUri: ./my-function/ Handler: index.handler Runtime: nodejs20.x Policies: - AWSLambdaKinesisExecutionRole Events: KinesisEvent: Type: Kinesis Properties: Stream: !GetAtt MyKinesisStream.Arn StartingPosition: LATEST BatchSize: 100 MyKinesisStream: Type: AWS::Kinesis::Stream Properties: ShardCount: 1

Untuk mempelajari selengkapnya tentang membuat pemetaan sumber peristiwa untuk Kinesis Data Streams di AWS SAM, lihat Kinesis dalam Panduan Pengembang.AWS Serverless Application Model

Posisi awal polling dan streaming

Ketahuilah bahwa polling streaming selama pembuatan dan pembaruan pemetaan sumber acara pada akhirnya konsisten.

  • Selama pembuatan pemetaan sumber acara, mungkin diperlukan beberapa menit untuk memulai acara polling dari aliran.

  • Selama pembaruan pemetaan sumber acara, mungkin diperlukan beberapa menit untuk menghentikan dan memulai kembali acara pemungutan suara dari aliran.

Perilaku ini berarti bahwa jika Anda menentukan LATEST sebagai posisi awal untuk aliran, pemetaan sumber peristiwa dapat melewatkan peristiwa selama pembuatan atau pembaruan. Untuk memastikan bahwa tidak ada peristiwa yang terlewatkan, tentukan posisi awal aliran sebagai TRIM_HORIZON atauAT_TIMESTAMP.

Membuat pemetaan sumber peristiwa lintas akun

Amazon Kinesis Data Streams mendukung kebijakan berbasis sumber daya. Karena itu, Anda dapat memproses data yang dicerna ke dalam aliran dalam satu Akun AWS dengan fungsi Lambda di akun lain.

Untuk membuat pemetaan sumber peristiwa untuk fungsi Lambda Anda menggunakan aliran Kinesis yang Akun AWS berbeda, Anda harus mengonfigurasi aliran menggunakan kebijakan berbasis sumber daya untuk memberikan izin fungsi Lambda Anda untuk membaca item. Untuk mempelajari cara mengonfigurasi streaming agar memungkinkan akses lintas akun, lihat Berbagi akses dengan AWS Lambda fungsi lintas akun di panduan Pengembang Amazon Kinesis Streams.

Setelah mengonfigurasi aliran Anda dengan kebijakan berbasis sumber daya yang memberi fungsi Lambda Anda izin yang diperlukan, buat pemetaan sumber peristiwa menggunakan salah satu metode yang dijelaskan di bagian sebelumnya.

Jika Anda memilih untuk membuat pemetaan sumber acara menggunakan konsol Lambda, tempelkan ARN aliran Anda langsung ke bidang input. Jika Anda ingin menentukan konsumen untuk streaming Anda, menempelkan ARN konsumen secara otomatis mengisi bidang aliran.