Memproses pesan volume tinggi dari Amazon SQS dengan alur kerja Step Functions Express - AWS Step Functions

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

Memproses pesan volume tinggi dari Amazon SQS dengan alur kerja Step Functions Express

Proyek contoh ini menunjukkan cara menggunakan Alur Kerja AWS Step Functions Ekspres untuk memproses pesan atau data dari sumber peristiwa bervolume tinggi, seperti Amazon Simple Queue Service (Amazon). SQS Karena Alur Kerja Ekspres dapat dimulai dengan kecepatan yang sangat tinggi, Alur kerja tersebut ideal untuk pemrosesan peristiwa atau beban kerja streaming data volume tinggi.

Berikut adalah dua metode yang umum digunakan untuk menjalankan mesin status Anda dari sumber peristiwa:

  • Konfigurasikan aturan Amazon CloudWatch Events untuk memulai eksekusi mesin status setiap kali sumber peristiwa memancarkan peristiwa. Untuk informasi selengkapnya, lihat Membuat Aturan CloudWatch Peristiwa yang Memicu Peristiwa.

  • Petakan sumber peristiwa ke fungsi Lambda, dan tulis kode fungsi untuk mengeksekusi mesin status Anda. AWS Lambda Fungsi ini dipanggil setiap kali sumber acara Anda memancarkan peristiwa, pada gilirannya memulai eksekusi mesin status. Untuk informasi selengkapnya lihat Menggunakan AWS Lambda dengan Amazon SQS.

Proyek sampel ini menggunakan metode kedua untuk memulai eksekusi setiap kali SQS antrian Amazon mengirim pesan. Anda dapat menggunakan konfigurasi serupa untuk memicu eksekusi Alur Kerja Express dari sumber peristiwa lain, seperti Amazon Simple Storage Service (Amazon S3), Amazon DynamoDB, dan Amazon Kinesis.

Untuk informasi selengkapnya tentang Alur Kerja Express dan integrasi layanan Step Functions, lihat di bawah ini:

Langkah 1: Buat mesin negara bagian dan sumber daya penyediaan

  1. Buka Konsol Step Functions dan pilih Buat mesin status.

  2. Ketik Process high-volume messages from SQS di kotak pencarian, lalu pilih Proses pesan volume tinggi SQS dari hasil pencarian yang dikembalikan.

  3. Pilih Next untuk melanjutkan.

  4. Step Functions mencantumkan yang AWS layanan digunakan dalam proyek sampel yang Anda pilih. Ini juga menunjukkan grafik alur kerja untuk proyek sampel. Menyebarkan proyek ini ke Anda Akun AWS atau menggunakannya sebagai titik awal untuk membangun proyek Anda sendiri. Berdasarkan cara Anda ingin melanjutkan, pilih Jalankan demo atau Bangun di atasnya.

    Proyek contoh ini menyebarkan sumber daya berikut:

    • Empat fungsi Lambda

    • SQSAntrian Amazon

    • Mesin AWS Step Functions negara

    • Peran terkait AWS Identity and Access Management (IAM)

    Gambar berikut menunjukkan grafik alur kerja untuk Proses pesan volume tinggi dari proyek SQS sampel:

    Grafik alur kerja dari Proses pesan volume tinggi dari proyek SQS sampel.
  5. Pilih Gunakan templat untuk melanjutkan pilihan Anda.

  6. Lakukan salah satu hal berikut ini:

    • Jika Anda memilih Build on it, Step Functions akan membuat prototipe alur kerja, tetapi tidak menyebarkan sumber daya dalam definisi alur kerja, sehingga Anda dapat terus membangun prototipe alur kerja Anda.

      Di Workflow StudioMode desain, Anda dapat menambahkan status ke dalam prototipe alur kerja Anda. Atau, Anda dapat beralih ke Mode kode untuk menggunakan editor kode terintegrasi untuk mengedit definisi Amazon States Language (ASL) mesin status Anda dari konsol Step Functions.

      penting

      Anda mungkin perlu memperbarui placeholder Amazon Resource Name (ARN) untuk sumber daya yang digunakan dalam proyek sampel sebelum Anda dapat menjalankan alur kerja Anda.

    • Jika Anda memilih Jalankan demo, Step Functions akan membuat proyek hanya-baca yang menggunakan AWS CloudFormation templat untuk menyebarkan AWS sumber daya dalam templat tersebut ke templat Anda. Akun AWS Anda dapat melihat definisi mesin status dengan memilih mode Kode.

      Pilih Deploy dan jalankan untuk menyebarkan proyek dan membuat sumber daya.

      Perhatikan bahwa penerapan dapat memakan waktu hingga 10 menit untuk sumber daya dan IAM izin dibuat. Saat sumber daya Anda sedang digunakan, Anda dapat membuka tautan AWS CloudFormation Stack ID untuk melihat sumber daya mana yang sedang disediakan.

      Setelah semua sumber daya dibuat, Anda akan melihat proyek di halaman mesin Negara di konsol.

      penting

      Biaya standar mungkin berlaku untuk setiap layanan yang digunakan dalam CloudFormation templat.

Langkah 2: Memicu eksekusi mesin negara

  1. Buka SQSkonsol Amazon.

  2. Pilih antrean yang dibuat oleh proyek sampel.

    Namanya akan mirip dengan Contoh- SQSQueue - wJalr XUtnFEMI.

  3. Di daftar Tindakan antrean, pilih Kirim pesan.

  4. Gunakan tombol salin untuk menyalin pesan berikut, dan pada jendela Kirim pesan, masukkan pesan tersebut, dan pilih Kirim pesan.

    catatan

    Dalam pesan sampel ini, baris input: telah diformat dengan jeda baris agar sesuai dengan halaman. Gunakan tombol salin atau memastikan bahwa pesan dimasukkan sebagai satu baris tanpa jeda.

    { "input": "QW5kIGxpa2UgdGhlIGJhc2VsZXNzIGZhYnJpYyBvZiB0aGlzIHZpc2lvbiwgVGhlIGNsb3VkLWNhcHBlZCB0b3dlcnMsIHRoZSBnb3JnZW 91cyBwYWxhY2VzLCBUaGUgc29sZW1uIHRlbXBsZXMsIHRoZSBncmVhdCBnbG9iZSBpdHNlbGbigJQgWWVhLCBhbGwgd2hpY2ggaXQgaW5o ZXJpdOKAlHNoYWxsIGRpc3NvbHZlLCBBbmQgbGlrZSB0aGlzIGluc3Vic3RhbnRpYWwgcGFnZWFudCBmYWRlZCwgTGVhdmUgbm90IGEgcm FjayBiZWhpbmQuIFdlIGFyZSBzdWNoIHN0dWZmIEFzIGRyZWFtcyBhcmUgbWFkZSBvbiwgYW5kIG91ciBsaXR0bGUgbGlmZSBJcyByb3Vu ZGVkIHdpdGggYSBzbGVlcC4gU2lyLCBJIGFtIHZleGVkLiBCZWFyIHdpdGggbXkgd2Vha25lc3MuIE15IG9sZCBicmFpbiBpcyB0cm91Ym xlZC4gQmUgbm90IGRpc3R1cmJlZCB3aXRoIG15IGluZmlybWl0eS4gSWYgeW91IGJlIHBsZWFzZWQsIHJldGlyZSBpbnRvIG15IGNlbGwg QW5kIHRoZXJlIHJlcG9zZS4gQSB0dXJuIG9yIHR3byBJ4oCZbGwgd2FsayBUbyBzdGlsbCBteSBiZWF0aW5nIG1pbmQu" }
  5. Pilih Tutup.

  6. Buka Konsol Step Functions.

  7. Buka grup CloudWatch log Amazon Logs Anda dan periksa log. Nama grup log akan terlihat seperti contoh- ExpressLogGroup - wJalr XUtnFEMI.

Contoh Kode Fungsi Lambda

Berikut ini adalah kode fungsi Lambda yang menunjukkan bagaimana fungsi Lambda memulai eksekusi mesin status menggunakan. AWS SDK

import boto3 def lambda_handler(event, context): message_body = event['Records'][0]['body'] client = boto3.client('stepfunctions') response = client.start_execution( stateMachineArn='${ExpressStateMachineArn}', input=message_body )

Contoh Kode Mesin Status

Alur Kerja Express dalam proyek sampel ini terdiri dari satu set fungsi Lambda untuk pemrosesan teks.

Untuk informasi selengkapnya tentang AWS Step Functions cara mengontrol AWS layanan lain, lihatMengintegrasikan layanan lain dengan Step Functions.

{ "Comment": "An example of using Express workflows to run text processing for each message sent from an SQS queue.", "StartAt": "Decode base64 string", "States": { "Decode base64 string": { "Type": "Task", "Resource": "arn:<PARTITION>:states:::lambda:invoke", "OutputPath": "$.Payload", "Parameters": { "FunctionName": "<BASE64_DECODER_LAMBDA_FUNCTION_NAME>", "Payload.$": "$" }, "Next": "Generate statistics" }, "Generate statistics": { "Type": "Task", "Resource": "arn:<PARTITION>:states:::lambda:invoke", "OutputPath": "$.Payload", "Parameters": { "FunctionName": "<TEXT_STATS_GENERATING_LAMBDA_FUNCTION_NAME>", "Payload.$": "$" }, "Next": "Remove special characters" }, "Remove special characters": { "Type": "Task", "Resource": "arn:<PARTITION>:states:::lambda:invoke", "OutputPath": "$.Payload", "Parameters": { "FunctionName": "<STRING_CLEANING_LAMBDA_FUNCTION_NAME>", "Payload.$": "$" }, "Next": "Tokenize and count" }, "Tokenize and count": { "Type": "Task", "Resource": "arn:<PARTITION>:states:::lambda:invoke", "OutputPath": "$.Payload", "Parameters": { "FunctionName": "<TOKENIZING_AND_WORD_COUNTING_LAMBDA_FUNCTION_NAME>", "Payload.$": "$" }, "End": true } } }

IAMContoh

Kebijakan contoh AWS Identity and Access Management (IAM) yang dihasilkan oleh proyek sampel ini mencakup hak istimewa paling sedikit yang diperlukan untuk mengeksekusi mesin negara dan sumber daya terkait. Kami menyarankan Anda hanya menyertakan izin yang diperlukan dalam IAM kebijakan Anda.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "lambda:InvokeFunction" ], "Resource": [ "arn:aws:lambda:us-east-1:123456789012:function:example-Base64DecodeLambda-wJalrXUtnFEMI", "arn:aws:lambda:us-east-1:123456789012:function:example-StringCleanerLambda-je7MtGbClwBF", "arn:aws:lambda:us-east-1:123456789012:function:example-TokenizerCounterLambda-wJalrXUtnFEMI", "arn:aws:lambda:us-east-1:123456789012:function:example-GenerateStatsLambda-je7MtGbClwBF" ], "Effect": "Allow" } ] }

Kebijakan berikut memastikan bahwa ada izin yang cukup untuk CloudWatch Log.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "logs:CreateLogDelivery", "logs:GetLogDelivery", "logs:UpdateLogDelivery", "logs:DeleteLogDelivery", "logs:ListLogDeliveries", "logs:PutResourcePolicy", "logs:DescribeResourcePolicies", "logs:DescribeLogGroups" ], "Resource": [ "*" ], "Effect": "Allow" } ] }

Untuk informasi tentang cara mengonfigurasi IAM saat menggunakan Step Functions dengan AWS layanan lain, lihatBagaimana Step Functions menghasilkan IAM kebijakan untuk layanan terintegrasi.