Proses Pesan Bervolume Tinggi dari Amazon SQS (Alur Kerja Express) - AWS Step Functions

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

Proses Pesan Bervolume Tinggi dari Amazon SQS (Alur Kerja 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 antrean Amazon SQS 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 dari SQS dari hasil pencarian yang dikembalikan.

  3. Pilih Next untuk melanjutkan.

  4. Step Functions mencantumkan yang Layanan AWS 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

    • Antrean Amazon SQS

    • 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 sampel SQS:

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

  6. Lakukan salah satu dari cara berikut:

    • Jika Anda memilih Build on it, Step Functions akan membuat prototipe alur kerja untuk proyek sampel yang Anda pilih. Step Functions tidak menyebarkan sumber daya yang tercantum dalam definisi alur kerja.

      Di Workflow StudioMode desain, seret dan lepas status dari Peramban status untuk terus membangun prototipe alur kerja Anda. Atau beralih ke Mode kode yang menyediakan editor kode terintegrasi yang mirip dengan VS Code untuk memperbarui definisi Amazon States Language (ASL) mesin status Anda dalam konsol Step Functions. Untuk informasi selengkapnya tentang penggunaan Workflow Studio untuk membangun mesin status Anda, lihatMenggunakan Workflow Studio.

    • Jika Anda memilih Jalankan demo, Step Functions akan membuat proyek sampel hanya-baca yang menggunakan AWS CloudFormation templat untuk menyebarkan AWS sumber daya yang tercantum dalam templat tersebut ke templat Anda. Akun AWS

      Tip

      Untuk melihat definisi mesin status dari proyek sampel, pilih Kode.

      Saat Anda siap, pilih Deploy dan jalankan untuk menyebarkan proyek sampel dan membuat sumber daya.

      Tindakan ini dapat memakan waktu hingga 10 menit untuk membuat sumber daya dan izin IAM terkait. Saat sumber daya Anda sedang digunakan, Anda dapat membuka tautan CloudFormation Stack ID untuk melihat sumber daya mana yang sedang disediakan.

      Setelah semua sumber daya dalam proyek sampel dibuat, Anda dapat melihat proyek sampel baru yang tercantum di halaman mesin Negara.

      penting

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

Langkah 2: Memicu eksekusi mesin negara

  1. Buka konsol Amazon SQS.

  2. Pilih antrean yang dibuat oleh proyek sampel.

    Namanya akan sama dengan Example-SQSQueue-wJalrXUtnFEMI.

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

Contoh Kode Fungsi Lambda

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

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, lihatMenggunakan AWS Step Functions dengan layanan lain.

{ "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 } } }

Contoh IAM

Contoh kebijakan 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 merekomendasikan agar Anda hanya menyertakan izin yang diperlukan dalam kebijakan IAM 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, lihatKebijakan IAM untuk layanan terintegrasi.