Pilih preferensi cookie Anda

Kami menggunakan cookie penting serta alat serupa yang diperlukan untuk menyediakan situs dan layanan. Kami menggunakan cookie performa untuk mengumpulkan statistik anonim sehingga kami dapat memahami cara pelanggan menggunakan situs dan melakukan perbaikan. Cookie penting tidak dapat dinonaktifkan, tetapi Anda dapat mengklik “Kustom” atau “Tolak” untuk menolak cookie performa.

Jika Anda setuju, AWS dan pihak ketiga yang disetujui juga akan menggunakan cookie untuk menyediakan fitur situs yang berguna, mengingat preferensi Anda, dan menampilkan konten yang relevan, termasuk iklan yang relevan. Untuk menerima atau menolak semua cookie yang tidak penting, klik “Terima” atau “Tolak”. Untuk membuat pilihan yang lebih detail, klik “Kustomisasi”.

Membuat fungsi Amazon Rekognition Lambda

Mode fokus
Membuat fungsi Amazon Rekognition Lambda - Amazon Rekognition

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

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

Tutorial ini menunjukkan bagaimana mendapatkan hasil dari operasi analisis video untuk pendeteksi label dengan menggunakan fungsi Java Lambda.

catatan

Tutorial ini menggunakan AWS SDK for Java 1.x. Untuk tutorial menggunakan Rekognition dan SDK AWS for Java versi 2, AWS lihat contoh repositori Documentation SDK. GitHub

Anda dapat menggunakan fungsi Lambda dengan operasi Amazon Rekognition Video. Misalnya, diagram berikut menunjukkan situs web yang menggunakan fungsi Lambda untuk secara otomatis memulai analisis video saat diunggah ke bucket Amazon S3. Ketika fungsi Lambda dipicu, fungsi Lambda memanggil StartLabelDetection untuk mulai mendeteksi label di video yang diunggah. Untuk informasi tentang penggunaan Lambda untuk memproses notifikasi peristiwa dari bucket Amazon S3, lihat Menggunakan AWS Lambda dengan Amazon S3 Events.

Fungsi Lambda kedua dipicu ketika status penyelesaian analisis dikirim ke topik Amazon SNS terdaftar. Fungsi Lambda kedua memanggil GetLabelDetection untuk mendapatkan hasil analisis. Hasilnya kemudian disimpan dalam basis data untuk persiapan menampilkannya pada halaman web. fokus dari tutorial ini ada pada Fungsi lambda kedua.

Diagram yang menunjukkan worfkflow pemrosesan video untuk Amazon Rekognition Video, dari mengunggah video hingga menyimpan hasil di Amazon DynamoDB untuk ditampilkan di situs web.

Dalam tutorial ini, fungsi Lambda dipicu ketika Amazon Rekognition Video mengirimkan status penyelesaian analisis video untuk topik Amazon SNS yang terdaftar. Amazon SNS yang terdaftar mengumpulkan hasil analisis video dengan menghubungi GetLabelDetection. Untuk tujuan demonstrasi, tutorial ini menulis hasil deteksi label ke CloudWatch log. Dalam fungsi Lambda aplikasi Anda, Anda harus menyimpan hasil analisis untuk digunakan nanti. Misalnya, Anda dapat menggunakan Amazon DynamoDB untuk menyimpan hasil analisis. Untuk informasi selengkapnya, lihat Bekerja dengan DynamoDB.

Prosedur berikut menunjukkan kepada Anda cara:

  • Buat topik Amazon SNS dan atur izin.

  • Buat fungsi Lambda dengan menggunakan AWS Management Console dan berlangganan ke topik Amazon SNS.

  • Konfigurasikan fungsi Lambda dengan menggunakan AWS Management Console.

  • Tambahkan kode sampel ke AWS Toolkit for Eclipse proyek dan unggah ke fungsi Lambda.

  • Uji fungsi Lambda dengan menggunakan AWS CLI.

catatan

Gunakan AWS Wilayah yang sama di seluruh tutorial.

Prasyarat

Tutorial ini mengasumsikan bahwa Anda sudah familier dengan AWS Toolkit for Eclipse. Untuk informasi selengkapnya, lihat AWS Toolkit for Eclipse.

Buat topik SNS

Status penyelesaian operasi analisis Amazon Rekognition Video dikirim ke topik Amazon SNS. Prosedur ini menciptakan topik Amazon SNS dan peran layanan IAM yang memberikan akses Amazon Rekognition Video ke topik Amazon SNS Anda. Untuk informasi selengkapnya, lihat Memanggil operasi Amazon Rekognition Video.

Untuk membuat topik Amazon SNS
  1. Jika belum, buat peran layanan IAM untuk memberikan akses Amazon Rekognition Video ke topik Amazon SNS Anda. Perhatikan Amazon Resource Name (ARN). Untuk informasi selengkapnya, lihat Memberikan akses ke beberapa topik Amazon SNS.

  2. Buat topik Amazon SNS dengan menggunakan Konsol Amazon SNS Anda hanya perlu menentukan nama topik. Tambahkan nama topik dengan. AmazonRekognition Perhatikan topik ARN.

Buat fungsi Lambda

Anda membuat fungsi Lambda dengan menggunakan AWS Management Console. Kemudian Anda menggunakan proyek AWS Toolkit for Eclipse untuk mengunggah paket fungsi Lambda ke AWS Lambda. Hal ini juga memungkinkan untuk membuat fungsi Lambda dengan AWS Toolkit for Eclipse. Untuk informasi selengkapnya, lihat Tutorial: Cara Membuat, Mengunggah, dan Memanggil Fungsi AWS Lambda.

Untuk membuat fungsi Lambda
  1. Masuk ke AWS Management Console, dan buka konsol AWS Lambda di. https://console.aws.amazon.com/lambda/

  2. Pilih Buat fungsi.

  3. Pilih Penulis dari scratch.

  4. Di Nama fungsi, ketikkan nama untuk fungsi Anda.

  5. Di Waktu aktif, pilih Java 8.

  6. Pilih Memilih atau membuat peran eksekusi.

  7. Dalam Peran eksekusi, pilih Membuat peran baru dengan izin Lambda dasar.

  8. Perhatikan nama peran baru yang ditampilkan di bagian bawah bagian Informasi dasar.

  9. Pilih Buat fungsi.

Konfigurasikan fungsi Lambda

Setelah Anda membuat fungsi Lambda, Anda mengonfigurasi fungsi Lambda yang dipicu oleh topik Amazon SNS yang Anda buat di Buat topik SNS. Anda juga dapat menyesuaikan persyaratan memori dan batas waktu untuk fungsi Lambda.

Untuk mengonfigurasi fungsi Lambda
  1. Dalam Kode fungsi, ketik com.amazonaws.lambda.demo.JobCompletionHandler untuk Handler.

  2. Dalam Pengaturan dasar, pilih Edit. Parameter Edit pengaturan dasar akan ditampilkan.

    1. Pilih 1024 untuk Memori.

    2. Pilih 10 detik untuk Waktu habis.

    3. Pilih Simpan.

  3. Di bawah Desainer, pilih + Tambahkan pemicu. Tambah dialog pemicu yang ditampilkan.

  4. Dalam Konfigurasi pemicu pilih SNS.

    Dalam Topik SNS, pilih topik Amazon SNS yang Anda buat di Buat topik SNS.

  5. Pilih Aktifkan pemicu.

  6. Untuk menambahkan pemicu, pilih Tambahkan.

  7. Pilih Simpan untuk menyimpan fungsi Lambda.

Konfigurasikan peran IAM Lambda

Untuk memanggil operasi Video Rekognition Amazon, Anda menambahkan kebijakan terkelola AmazonRekognitionFullAccessAWS ke peran Lambda IAM. Mulai operasi, seperti StartLabelDetection, yang juga memerlukan izin peran lewat untuk peran layanan IAM yang digunakan Amazon Rekognition Video untuk mengakses topik Amazon SNS.

Untuk mengonfigurasi peran
  1. Masuk ke AWS Management Console dan buka konsol IAM di https://console.aws.amazon.com/iam/.

  2. Di panel navigasi, pilih Peran.

  3. Dalam daftar, pilih nama peran eksekusi yang Anda buat di Buat fungsi Lambda.

  4. Pilih tab Izin.

  5. Pilih Pasang kebijakan.

  6. Pilih AmazonRekognitionFullAccessdari daftar kebijakan.

  7. Pilih Lampirkan kebijakan.

  8. Sekali lagi, pilih peran eksekusi.

  9. Pilih Tambahkan kebijakan inline.

  10. Pilih tab JSON.

  11. Ganti kebijakan yang sudah ada dengan kebijakan berikut. Ganti servicerole dengan peran layanan IAM yang Anda buat di Buat topik SNS.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "mysid", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:servicerole" } ] }
  12. Pilih Tinjau kebijakan.

  13. Pada Nama*, ketik nama kebijakan.

  14. Pilih Buat kebijakan.

Buat proyek AWS Toolkit for Eclipse Lambda

Ketika fungsi Lambda dipicu, kode berikut menerima status penyelesaian dari topik Amazon SNS, dan memanggil GetLabelDetection untuk mendapatkan hasil analisis. Hitungan label yang terdeteksi, dan daftar label yang terdeteksi ditulis ke CloudWatch log. Fungsi Lambda Anda perlu menyimpan hasil analisis video untuk digunakan nanti.

Untuk membuat proyek AWS Toolkit for Eclipse Lambda
  1. Buat proyek AWS Toolkit for EclipseAWS Lambda.

    • Untuk Nama proyek:, ketik nama proyek yang Anda pilih.

    • Untuk Nama Kelas:, masukkan JobCompletionHandler.

    • Untuk tipe input:, pilih Peristiwa SNS.

    • Tidak perlu mengubah bidang lain.

  2. Di Eclipse Project explorer, buka metode handler Lambda yang dihasilkan (JobCompletionHandler.java) dan ganti isinya dengan yang berikut:

    //Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. //PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.) package com.amazonaws.lambda.demo; import com.amazonaws.services.lambda.runtime.Context; import com.amazonaws.services.lambda.runtime.LambdaLogger; import com.amazonaws.services.lambda.runtime.RequestHandler; import com.amazonaws.services.lambda.runtime.events.SNSEvent; import java.util.List; import com.amazonaws.regions.Regions; import com.amazonaws.services.rekognition.AmazonRekognition; import com.amazonaws.services.rekognition.AmazonRekognitionClientBuilder; import com.amazonaws.services.rekognition.model.GetLabelDetectionRequest; import com.amazonaws.services.rekognition.model.GetLabelDetectionResult; import com.amazonaws.services.rekognition.model.LabelDetection; import com.amazonaws.services.rekognition.model.LabelDetectionSortBy; import com.amazonaws.services.rekognition.model.VideoMetadata; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; public class JobCompletionHandler implements RequestHandler<SNSEvent, String> { @Override public String handleRequest(SNSEvent event, Context context) { String message = event.getRecords().get(0).getSNS().getMessage(); LambdaLogger logger = context.getLogger(); // Parse SNS event for analysis results. Log results try { ObjectMapper operationResultMapper = new ObjectMapper(); JsonNode jsonResultTree = operationResultMapper.readTree(message); logger.log("Rekognition Video Operation:========================="); logger.log("Job id: " + jsonResultTree.get("JobId")); logger.log("Status : " + jsonResultTree.get("Status")); logger.log("Job tag : " + jsonResultTree.get("JobTag")); logger.log("Operation : " + jsonResultTree.get("API")); if (jsonResultTree.get("API").asText().equals("StartLabelDetection")) { if (jsonResultTree.get("Status").asText().equals("SUCCEEDED")){ GetResultsLabels(jsonResultTree.get("JobId").asText(), context); } else{ String errorMessage = "Video analysis failed for job " + jsonResultTree.get("JobId") + "State " + jsonResultTree.get("Status"); throw new Exception(errorMessage); } } else logger.log("Operation not StartLabelDetection"); } catch (Exception e) { logger.log("Error: " + e.getMessage()); throw new RuntimeException (e); } return message; } void GetResultsLabels(String startJobId, Context context) throws Exception { LambdaLogger logger = context.getLogger(); AmazonRekognition rek = AmazonRekognitionClientBuilder.standard().withRegion(Regions.US_EAST_1).build(); int maxResults = 1000; String paginationToken = null; GetLabelDetectionResult labelDetectionResult = null; String labels = ""; Integer labelsCount = 0; String label = ""; String currentLabel = ""; //Get label detection results and log them. do { GetLabelDetectionRequest labelDetectionRequest = new GetLabelDetectionRequest().withJobId(startJobId) .withSortBy(LabelDetectionSortBy.NAME).withMaxResults(maxResults).withNextToken(paginationToken); labelDetectionResult = rek.getLabelDetection(labelDetectionRequest); paginationToken = labelDetectionResult.getNextToken(); VideoMetadata videoMetaData = labelDetectionResult.getVideoMetadata(); // Add labels to log List<LabelDetection> detectedLabels = labelDetectionResult.getLabels(); for (LabelDetection detectedLabel : detectedLabels) { label = detectedLabel.getLabel().getName(); if (label.equals(currentLabel)) { continue; } labels = labels + label + " / "; currentLabel = label; labelsCount++; } } while (labelDetectionResult != null && labelDetectionResult.getNextToken() != null); logger.log("Total number of labels : " + labelsCount); logger.log("labels : " + labels); } }
  3. Namespace Rekognition belum terselesaikan. Untuk mengoreksi ini:

    • Hentikan sejenak mouse Anda di atas bagian garis import com.amazonaws.services.rekognition.AmazonRekognition; yang digaris bawahi.

    • Pilih Perbaiki pengaturan proyek....

    • Pilih versi terbaru dari arsip Amazon Rekognition.

    • Pilih OKE untuk menambahkan arsip ke proyek.

  4. Simpan file.

  5. Klik kanan di jendela kode Eclipse Anda, pilih AWS Lambda, lalu pilih Fungsi unggah ke AWS Lambda.

  6. Pada halaman Pilih Target Fungsi Lambda, pilih Wilayah AWS untuk digunakan.

  7. Pilih Pilih fungsi lambda yang sudah ada, dan pilih fungsi Lambda yang Anda buat di Buat fungsi Lambda.

  8. Pilih Berikutnya. Parameter kotak dialog Konfigurasi fungsi akan ditampilkan.

  9. Dalam IAM Role Pilih IAM role yang Anda buat di Buat fungsi Lambda.

  10. Pilih Selesai, dan fungsi Lambda diunggah ke AWS.

Uji fungsi Lambda

Gunakan AWS CLI perintah berikut untuk menguji fungsi Lambda dengan memulai analisis deteksi label video. Setelah analisis selesai, fungsi Lambda dipicu. Konfirmasikan bahwa analisis berhasil dengan memeriksa CloudWatch log Log.

Untuk menguji fungsi Lambda
  1. Unggah file video format MOV atau MPEG-4 ke bucket S3 Anda. Untuk pengujian, unggah video yang panjangnya tidak lebih dari 30 detik.

    Untuk petunjuk, lihat Mengunggah Objek ke Amazon S3 di Panduan Pengguna Layanan Penyimpanan Sederhana Amazon.

  2. Jalankan AWS CLI perintah berikut untuk mulai mendeteksi label dalam video.

    aws rekognition start-label-detection --video "S3Object={Bucket="bucketname",Name="videofile"}" \ --notification-channel "SNSTopicArn=TopicARN,RoleArn=RoleARN" \ --region Region

    Perbarui nilai berikut:

    • Ubah bucketname dan videofile ke nama bucket Amazon S3 dan nama file video yang Anda ingin labelnya dideteksi.

    • Ubah TopicARN untuk ARN dari topik Amazon SNS yang Anda buat di Buat topik SNS.

    • Ubah RoleARN untuk ARN dari IAM role yang Anda buat di Buat topik SNS.

    • Ubah Region ke AWS Wilayah yang Anda gunakan.

  3. Perhatikan nilai dari JobId dalam respons. Respons tersebut serupa dengan contoh JSON berikut ini.

    { "JobId": "547089ce5b9a8a0e7831afa655f42e5d7b5c838553f1a584bf350ennnnnnnnnn" }
  4. Buka konsol https://console.aws.amazon.com/cloudwatch/.

  5. Ketika analisis selesai, entri log untuk fungsi Lambda muncul di Grup log.

  6. Pilih fungsi Lambda untuk melihat aliran log.

  7. Pilih aliran log terbaru untuk melihat entri log yang dibuat oleh fungsi Lambda. Jika operasi berhasil, tampilannya mirip dengan output berikut, yang menunjukkan detail operasi pengenalan video, termasuk ID pekerjaan, jenis operasi "StartLabelDetection“, dan daftar kategori label yang terdeteksi seperti Botol, Pakaian, Kerumunan, dan Makanan:

    Keluaran log yang menunjukkan detail operasi pengenalan video.

    Nilai dari ID tugas harus sesuai dengan nilai JobId yang Anda catat di langkah 3.

PrivasiSyarat situsPreferensi cookie
© 2025, Amazon Web Services, Inc. atau afiliasinya. Semua hak dilindungi undang-undang.