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.
-
Dari Visual Studio, perluas menu File, perluas Baru, lalu pilih Project.
-
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. -
Pilih template AWS Lambda with Tests (.NET Core - C #).
-
Klik Berikutnya untuk membuka dialog Configure your new project.
-
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.
-
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:
-
Function.cs
-
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; }
FunctionHandler
adalah 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. S3Event
Berisi 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.json
File 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.
-
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
-
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 Fungsi
ImageRekognition
. -
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. -
Setel variabel lingkungan
MinConfidence
ke 60, lalu pilih Unggah untuk meluncurkan proses penerapan. Proses penerbitan selesai ketika tampilan Fungsi ditampilkan di AWS Explorer. -
Setelah penerapan berhasil, konfigurasikan Amazon S3 untuk mengirim peristiwanya ke fungsi baru Anda dengan menavigasi ke tab Sumber Peristiwa.
-
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.