Menggunakan evaluasi sisi klien - didukung oleh AWS AppConfig - Amazon CloudWatch

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

Menggunakan evaluasi sisi klien - didukung oleh AWS AppConfig

Anda dapat menggunakan evaluasi sisi klien - didukung oleh AWS AppConfig (evaluasi sisi klien) dalam proyek, yang memungkinkan aplikasi Anda menetapkan variasi ke sesi pengguna secara lokal alih-alih menetapkan variasi dengan memanggil operasi. EvaluateFeature Hal ini akan mengurangi risiko latensi dan ketersediaan yang menyertai sebuah panggilan API.

Untuk menggunakan evaluasi sisi klien, lampirkan ekstensi AWS AppConfig Lambda sebagai lapisan ke fungsi Lambda Anda dan konfigurasikan variabel lingkungan. Evaluasi sisi klien ini akan berjalan sebagai proses sampingan pada host lokal. Kemudian, Anda dapat memanggil EvaluationFeaturedan PutProjectEventoperasi melawanlocalhost. Proses evaluasi sisi klien tersebut akan menangani penugasan variasi, caching, dan sinkronisasi data. Untuk informasi selengkapnya AWS AppConfig, lihat Cara AWS AppConfig kerja.

Saat Anda berintegrasi dengan AWS AppConfig, Anda menentukan ID AWS AppConfig aplikasi dan ID AWS AppConfig lingkungan ke Evidently. Anda dapat menggunakan ID aplikasi dan ID lingkungan yang sama di seluruh proyek-proyek Evidently.

Saat Anda membuat proyek dengan evaluasi sisi klien diaktifkan, Terbukti membuat profil AWS AppConfig konfigurasi untuk proyek itu. Profil konfigurasi untuk masing-masing proyek akan berbeda.

Kontrol akses evaluasi sisi klien

Evaluasi sisi klien Evidently menggunakan mekanisme kontrol akses yang berbeda dari yang dilakukan untuk Evidently lainnya. Kami sangat menyarankan agar Anda memahami hal ini sehingga Anda dapat menerapkan langkah-langkah keamanan yang semestinya.

Dengan Evidently, Anda dapat membuat kebijakan IAM yang membatasi tindakan-tindakan yang dapat dilakukan pengguna pada sumber daya individu. Misalnya, Anda dapat membuat peran pengguna yang melarang pengguna melakukan EvaluateFeaturetindakan. Untuk informasi selengkapnya tentang tindakan Terbukti yang dapat dikontrol dengan kebijakan IAM, lihat Tindakan yang didefinisikan oleh Amazon CloudWatch dengan jelas.

Model evaluasi sisi klien ini akan memungkinkan evaluasi secara lokal atas fitur-fitur yang dimiliki Evidently yang menggunakan metadata proyek. Pengguna proyek dengan evaluasi sisi klien diaktifkan dapat memanggil EvaluateFeatureAPI terhadap titik akhir host lokal, dan panggilan API ini tidak mencapai Terbukti dan tidak diautentikasi oleh kebijakan IAM layanan Evidently. Panggilan ini berhasil bahkan jika pengguna tidak memiliki izin IAM untuk menggunakan EvaluateFeaturetindakan. Namun, pengguna masih memerlukan PutProjectEventsizin bagi agen untuk menyangga peristiwa evaluasi atau peristiwa khusus dan untuk membongkar data ke Terbukti secara asinkron.

Selain itu, seorang pengguna harus memiliki izin evidently:ExportProjectAsConfiguration untuk dapat membuat sebuah proyek yang menggunakan evaluasi sisi klien. Ini membantu Anda mengontrol akses ke EvaluateFeaturetindakan yang dipanggil selama evaluasi sisi klien.

Jika Anda tidak berhati-hati, model keamanan evaluasi sisi klien dapat menumbangkan kebijakan yang telah Anda tetapkan pada Evidently lainnya. Pengguna yang memiliki evidently:ExportProjectAsConfiguration izin dapat membuat proyek dengan evaluasi sisi klien diaktifkan, dan kemudian menggunakan EvaluateFeaturetindakan untuk evaluasi sisi klien dengan proyek itu bahkan jika mereka secara tegas ditolak tindakan dalam EvaluateFeaturekebijakan IAM.

Memulai Lambda

Evidently saat ini mendukung evaluasi sisi klien dengan menggunakan lingkungan AWS Lambda . Untuk memulai, pertama-tama tentukan AWS AppConfig aplikasi dan lingkungan mana yang akan digunakan. Pilih sebuah aplikasi dan lingkungan yang ada, atau Anda bisa membuat yang baru.

Contoh AWS AppConfig AWS CLI perintah berikut membuat aplikasi dan lingkungan.

aws appconfig create-application --name YOUR_APP_NAME
aws appconfig create-environment --application-id YOUR_APP_ID --name YOUR_ENVIRONMENT_NAME

Selanjutnya, buat proyek Evidently dengan menggunakan AWS AppConfig sumber daya ini. Untuk informasi selengkapnya, lihat Membuat sebuah proyek baru.

Evaluasi sisi klien didukung di Lambda dengan menggunakan sebuah lapisan Lambda. Ini adalah lapisan publik yang merupakan bagian dariAWS-AppConfig-Extension, AWS AppConfig ekstensi publik yang dibuat oleh AWS AppConfig layanan. Untuk informasi selengkapnya tentang lapisan Lambda, silakan lihat Lapisan.

Cara menggunakan evaluasi sisi klien, Anda harus menambahkan lapisan ini ke fungsi Lambda Anda dan kemudian melakukan konfigurasi izin dan variabel lingkungan.

Untuk menambahkan lapisan Lambda evaluasi sisi klien Evidently ke fungsi Lambda Anda dan mengonfigurasikannya
  1. Buatlah sebuah fungsi Lambda, jika Anda belum membuatnya.

  2. Tambahkan lapisan evaluasi sisi klien ke fungsi Anda. Anda dapat menentukan ARN atau memilihnya dari daftar AWS lapisan jika Anda belum melakukannya. Untuk informasi selengkapnya, lihat Mengkonfigurasi fungsi untuk menggunakan lapisan dan Versi ekstensi AWS AppConfig Lambda yang tersedia.

  3. Buat kebijakan IAM bernama EvidentlyAppConfigCachingAgentPolicydengan konten berikut, dan lampirkan ke peran eksekusi fungsi. Untuk informasi selengkapnya, silakan lihat Peran eksekusi Lambda.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "appconfig:GetLatestConfiguration", "appconfig:StartConfigurationSession", "evidently:PutProjectEvents" ], "Resource": "*" } ] }
  4. Menambahkan variabel lingkungan yang diperlukan AWS_APPCONFIG_EXTENSION_EVIDENTLY_CONFIGURATIONS ke fungsi Lambda Anda. Variabel lingkungan ini menentukan pemetaan antara proyek Evidently dan sumber daya. AWS AppConfig

    Jika Anda menggunakan fungsi ini untuk satu proyek Evidently, Anda harus menetapkan nilai variabel lingkungan dengan: applications/APP_ID/environments/ENVIRONMENT_ID/configurations/PROJECT_NAME

    Jika Anda menggunakan fungsi ini untuk beberapa proyek Evidently, maka Anda harus menggunakan koma untuk memisahkan nilai, seperti pada contoh berikut: applications/APP_ID_1/environments/ENVIRONMENT_ID_1/configurations/PROJECT_NAME_1, applications/APP_ID_2/environments/ENVIRONMENT_ID_2/configurations/PROJECT_NAME_2

  5. (Opsional) Tetapkan variabel-variabel lingkungan lainnya. Untuk informasi selengkapnya, lihat Mengonfigurasi ekstensi AWS AppConfig Lambda.

  6. Dalam aplikasi Anda, Anda harus mendapatkan evaluasi Evidently secara lokal dengan mengirim EvaluateFeature ke localhost.

    Contoh Python:

    import boto3 from botocore.config import Config def lambda_handler(event, context): local_client = boto3.client( 'evidently', endpoint_url="http://localhost:2772", config=Config(inject_host_prefix=False) ) response = local_client.evaluate_feature( project=event['project'], feature=event['feature'], entityId=event['entityId'] ) print(response)

    Contoh Node.js:

    const AWS = require('aws-sdk'); const evidently = new AWS.Evidently({ region: "us-west-2", endpoint: "http://localhost:2772", hostPrefixEnabled: false }); exports.handler = async (event) => { const evaluation = await evidently.evaluateFeature({ project: 'John_ETCProject_Aug2022', feature: 'Feature_IceCreamFlavors', entityId: 'John' }).promise() console.log(evaluation) const response = { statusCode: 200, body: evaluation, }; return response; };

    Contoh Kotlin:

    String localhostEndpoint = "http://localhost:2772/" public AmazonCloudWatchEvidentlyClient getEvidentlyLocalClient() { return AmazonCloudWatchEvidentlyClientBuilder.standard() .withEndpointConfiguration(AwsClientBuilder.EndpointConfiguration(localhostEndpoint, region)) .withClientConfiguration(ClientConfiguration().withDisableHostPrefixInjection(true)) .withCredentials(credentialsProvider) .build(); } AmazonCloudWatchEvidentlyClient evidently = getEvidentlyLocalClient(); // EvaluateFeature via local client. EvaluateFeatureRequest evaluateFeatureRequest = new EvaluateFeatureRequest().builder() .withProject(${YOUR_PROJECT}) //Required. .withFeature(${YOUR_FEATURE}) //Required. .withEntityId(${YOUR_ENTITY_ID}) //Required. .withEvaluationContext(${YOUR_EVAL_CONTEXT}) //Optional: a JSON object of attributes that you can optionally pass in as part of the evaluation event sent to Evidently. .build(); EvaluateFeatureResponse evaluateFeatureResponse = evidently.evaluateFeature(evaluateFeatureRequest); // PutProjectEvents via local client. PutProjectEventsRequest putProjectEventsRequest = new PutProjectEventsRequest().builder() .withData(${YOUR_DATA}) .withTimeStamp(${YOUR_TIMESTAMP}) .withType(${YOUR_TYPE}) .build(); PutProjectEvents putProjectEventsResponse = evidently.putProjectEvents(putProjectEventsRequest);

Mengonfigurasikan seberapa sering klien mengirim data ke Evidently

Untuk menentukan seberapa sering evaluasi sisi klien mengirim data ke Evidently, Anda dapat secara opsional mengonfigurasi dua variabel lingkungan.

  • AWS_APPCONFIG_EXTENSION_EVIDENTLY_EVENT_BATCH_SIZE menentukan jumlah peristiwa per proyek untuk batch sebelum mengirimnya ke Evidently. Nilai yang valid adalah bilangan bulat antara 1 dan 50, dan default-nya adalah 40.

  • AWS_APPCONFIG_EXTENSION_EVIDENTLY_BATCH_COLLECTION_DURATION menentukan durasi dalam hitungan detik untuk menunggu peristiwa sebelum mengirimnya ke Evidently. Bawaannya adalah 30.

Pemecahan Masalah

Gunakan informasi berikut untuk membantu memecahkan masalah dengan menggunakan CloudWatch Evidently dengan evaluasi sisi klien - didukung oleh. AWS AppConfig

Terjadi kesalahan (BadRequestException) saat memanggil EvaluateFeature operasi: Metode HTTP tidak didukung untuk jalur yang disediakan

Variabel lingkungan Anda mungkin tidak dikonfigurasi dengan benar. Sebagai contoh, Anda mungkin telah menggunakan EVIDENTLY_CONFIGURATIONS sebagai nama variabel lingkungan, bukan AWS_APPCONFIG_EXTENSION_EVIDENTLY_CONFIGURATIONS.

ResourceNotFoundException: Penerapan tidak ditemukan

Pembaruan Anda ke metadata proyek belum diterapkan ke AWS AppConfig. Periksa penerapan aktif di AWS AppConfig lingkungan yang Anda gunakan untuk evaluasi sisi klien.

ValidationException: Tidak Jelas konfigurasi untuk proyek

Variabel lingkungan AWS_APPCONFIG_EXTENSION_EVIDENTLY_CONFIGURATIONS Anda mungkin dikonfigurasi dengan nama proyek yang salah.