Tutorial: Membuat Aplikasi Amazon Rekognition Lambda - AWS Toolkit dengan Amazon Q

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

Tutorial: Membuat Aplikasi Amazon Rekognition Lambda

Tutorial ini menunjukkan cara membuat aplikasi Lambda yang menggunakan Amazon Rekognition untuk menandai objek Amazon S3 dengan label yang terdeteksi.

Untuk prasyarat dan informasi tentang pengaturan AWS Toolkit for Visual Studio, lihat Menggunakan Template AWS Lambda di Toolkit for Visual Studio. AWS

Buat Proyek Rekognition Gambar Lambda Inti Visual Studio .NET

Prosedur berikut menjelaskan cara membuat aplikasi Amazon Rekognition Lambda dari aplikasi. AWS Toolkit for Visual Studio

catatan

Setelah pembuatan, aplikasi Anda memiliki solusi dengan dua proyek: proyek sumber yang berisi kode fungsi Lambda Anda untuk diterapkan ke Lambda, dan proyek pengujian menggunakan XUnit untuk menguji fungsi Anda secara lokal.

Terkadang Visual Studio tidak dapat menemukan semua NuGet referensi untuk proyek Anda. Ini karena cetak biru memerlukan dependensi yang harus diambil dari. NuGet Ketika proyek baru dibuat, Visual Studio hanya menarik referensi lokal dan bukan referensi jarak jauh dari NuGet. Untuk memperbaiki NuGet kesalahan: klik kanan referensi Anda dan pilih Pulihkan Paket.

  1. Dari Visual Studio, perluas menu File, perluas Baru, lalu pilih Project.

  2. Di kotak dialog Proyek Baru, pastikan bahwa kotak drop-down Bahasa, Platform, dan Jenis Proyek diatur ke “Semua...” dan masukkan aws lambda di bidang Pencarian.

  3. Pilih template AWS Lambda with Tests (.NET Core - C #).

  4. Klik Berikutnya untuk membuka dialog Configure your new project.

  5. Dari dialog Konfigurasi proyek baru Anda, masukkan "ImageRekognition" untuk Nama, lalu lengkapi bidang yang tersisa sesuai preferensi Anda. Pilih Buat tombol untuk melanjutkan ke dialog Select Blueprint.

  6. Dari dialog Select Blueprint, pilih cetak biru Deteksi Label Gambar, lalu pilih Selesai untuk membuat proyek Visual Studio.

    catatan

    Cetak biru ini menyediakan kode untuk mendengarkan peristiwa Amazon S3 dan menggunakan Amazon Rekognition untuk mendeteksi label dan menambahkannya ke objek S3 sebagai tag.

Meninjau File Proyek

Bagian berikut memeriksa file-file proyek ini:

  1. Function.cs

  2. aws-lambda-tools-defaults.json

1. Function.cs

Di dalam Function.cs file, segmen kode pertama adalah atribut assembly, yang terletak di bagian atas file. Secara default, Lambda hanya menerima parameter input dan mengembalikan tipe tipe. System.IO.Stream Anda harus mendaftarkan serializer untuk menggunakan kelas yang diketik untuk parameter input dan tipe pengembalian. Atribut assembly mendaftarkan serializer Lambda JSON, yang Newtonsoft.Json digunakan untuk mengonversi aliran ke kelas yang diketik. Anda dapat mengatur serializer di tingkat perakitan atau metode.

Berikut ini adalah contoh atribut assembly:

// Assembly attribute to enable the Lambda function's JSON input to be converted into a .NET class. [assembly: LambdaSerializer(typeof(Amazon.Lambda.Serialization.SystemTextJson.DefaultLambdaJsonSerializer))]

Kelas ini memiliki dua konstruktor. Yang pertama adalah konstruktor default yang digunakan saat Lambda memanggil fungsi Anda. Konstruktor ini menciptakan klien layanan Amazon S3 dan Amazon Rekognition. Konstruktor juga mengambil AWS kredensi untuk klien ini dari peran IAM yang Anda tetapkan ke fungsi saat Anda menerapkannya. AWS Wilayah untuk klien diatur ke wilayah yang menjalankan fungsi Lambda Anda. Dalam cetak biru ini, Anda hanya ingin menambahkan tag ke objek Amazon S3 jika layanan Amazon Rekognition memiliki tingkat kepercayaan minimum tentang label tersebut. Konstruktor ini memeriksa variabel lingkungan MinConfidence untuk menentukan tingkat kepercayaan yang dapat diterima. Anda dapat mengatur variabel lingkungan ini saat Anda menerapkan fungsi Lambda.

Berikut ini adalah contoh konstruktor kelas pertama diFunction.cs:

public Function() { this.S3Client = new AmazonS3Client(); this.RekognitionClient = new AmazonRekognitionClient(); var environmentMinConfidence = System.Environment.GetEnvironmentVariable(MIN_CONFIDENCE_ENVIRONMENT_VARIABLE_NAME); if(!string.IsNullOrWhiteSpace(environmentMinConfidence)) { float value; if(float.TryParse(environmentMinConfidence, out value)) { this.MinConfidence = value; Console.WriteLine($"Setting minimum confidence to {this.MinConfidence}"); } else { Console.WriteLine($"Failed to parse value {environmentMinConfidence} for minimum confidence. Reverting back to default of {this.MinConfidence}"); } } else { Console.WriteLine($"Using default minimum confidence of {this.MinConfidence}"); } }

Contoh berikut menunjukkan bagaimana konstruktor kedua dapat digunakan untuk pengujian. Proyek pengujian mengonfigurasi klien S3 dan Rekognition sendiri dan meneruskannya di:

public Function(IAmazonS3 s3Client, IAmazonRekognition rekognitionClient, float minConfidence) { this.S3Client = s3Client; this.RekognitionClient = rekognitionClient; this.MinConfidence = minConfidence; }

Berikut ini adalah contoh FunctionHandler metode di dalam Function.cs file.

public async Task FunctionHandler(S3Event input, ILambdaContext context) { foreach(var record in input.Records) { if(!SupportedImageTypes.Contains(Path.GetExtension(record.S3.Object.Key))) { Console.WriteLine($"Object {record.S3.Bucket.Name}:{record.S3.Object.Key} is not a supported image type"); continue; } Console.WriteLine($"Looking for labels in image {record.S3.Bucket.Name}:{record.S3.Object.Key}"); var detectResponses = await this.RekognitionClient.DetectLabelsAsync(new DetectLabelsRequest { MinConfidence = MinConfidence, Image = new Image { S3Object = new Amazon.Rekognition.Model.S3Object { Bucket = record.S3.Bucket.Name, Name = record.S3.Object.Key } } }); var tags = new List(); foreach(var label in detectResponses.Labels) { if(tags.Count < 10) { Console.WriteLine($"\tFound Label {label.Name} with confidence {label.Confidence}"); tags.Add(new Tag { Key = label.Name, Value = label.Confidence.ToString() }); } else { Console.WriteLine($"\tSkipped label {label.Name} with confidence {label.Confidence} because maximum number of tags reached"); } } await this.S3Client.PutObjectTaggingAsync(new PutObjectTaggingRequest { BucketName = record.S3.Bucket.Name, Key = record.S3.Object.Key, Tagging = new Tagging { TagSet = tags } }); } return; }

FunctionHandleradalah metode yang dipanggil Lambda setelah membangun instance. Perhatikan bahwa parameter input adalah tipe S3Event dan bukan aStream. Anda dapat melakukan ini karena serializer Lambda JSON yang terdaftar. S3EventBerisi semua informasi tentang acara yang dipicu di Amazon S3. Fungsi loop melalui semua objek S3 yang merupakan bagian dari acara dan memberitahu Rekognition untuk mendeteksi label. Setelah label terdeteksi, mereka ditambahkan sebagai tag ke objek S3.

catatan

Kode berisi panggilan keConsole.WriteLine(). Saat fungsi berjalan di Lambda, semua panggilan untuk Console.WriteLine() mengalihkan ke Amazon Logs. CloudWatch

2. aws-lambda-tools-defaults.json

aws-lambda-tools-defaults.jsonFile berisi nilai default yang telah ditetapkan cetak biru untuk mengisi beberapa bidang di wizard penerapan. Ini juga membantu dalam mengatur opsi baris perintah untuk integrasi dengan.NET Core CLI.

Untuk mengakses integrasi.NET Core CLI, navigasikan ke direktori dan ketik proyek fungsi. dotnet lambda help

catatan

Penangan fungsi menunjukkan metode apa yang Lambda panggil sebagai respons terhadap fungsi yang dipanggil. Format bidang ini adalah:<assembly-name>::<full-type-name>::<method-name>. Namespace harus disertakan dengan nama tipe.

Menyebarkan Fungsi

Prosedur berikut menjelaskan cara menerapkan fungsi Lambda Anda.

  1. Dari Solution Explorer, klik kanan proyek Lambda dan pilih Publish to AWS Lambda untuk membuka jendela Upload to. AWS Lambda

    catatan

    Nilai preset diambil dari file. aws-lambda-tools-defaults.json

  2. Dari AWS Lambda jendela Upload to, masukkan nama ke bidang Function Name, lalu pilih tombol Next untuk maju ke jendela Advanced Function Details.

    catatan

    Contoh ini, menggunakan Nama FungsiImageRekognition.

  3. Dari jendela Detail Fungsi Lanjutan, pilih peran IAM yang memberikan izin bagi kode Anda untuk mengakses sumber daya Amazon S3 dan Amazon Rekognition Anda.

    catatan

    Jika Anda mengikuti contoh ini, pilih AWSLambda_FullAccess peran.

  4. Setel variabel lingkungan MinConfidence ke 60, lalu pilih Unggah untuk meluncurkan proses penerapan. Proses penerbitan selesai ketika tampilan Fungsi ditampilkan di AWS Explorer.

  5. Setelah penerapan berhasil, konfigurasikan Amazon S3 untuk mengirim peristiwanya ke fungsi baru Anda dengan menavigasi ke tab Sumber Peristiwa.

  6. Dari tab Sumber Acara, pilih tombol Tambah, lalu pilih bucket Amazon S3 untuk terhubung dengan fungsi Lambda Anda.

    catatan

    Bucket harus berada di AWS wilayah yang sama dengan fungsi Lambda Anda.

Uji Fungsinya

Sekarang setelah fungsi tersebut diterapkan dan bucket S3 dikonfigurasi sebagai sumber acara untuknya, buka browser bucket S3 dari AWS Explorer untuk bucket yang Anda pilih. Kemudian unggah beberapa gambar.

Ketika unggahan selesai, Anda dapat mengonfirmasi bahwa fungsi Anda berjalan dengan melihat log dari tampilan fungsi Anda. Atau, klik kanan gambar di browser bucket dan pilih Properties. Pada tab Tag, Anda dapat melihat tag yang diterapkan ke objek Anda.