Utilizzo della valutazione lato client con tecnologia AWS AppConfig - Amazon CloudWatch

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Utilizzo della valutazione lato client con tecnologia AWS AppConfig

È possibile utilizzare la valutazione lato client - powered by AWS AppConfig (valutazione lato client) in un progetto, che consente all'applicazione di assegnare variazioni alle sessioni utente localmente anziché assegnare variazioni richiamando l'operazione. EvaluateFeature In questo modo si riducono i rischi di latenza e disponibilità associati a una chiamata. API

Per utilizzare la valutazione lato client, collega l'estensione AWS AppConfig Lambda come livello alle funzioni Lambda e configura le variabili di ambiente. La valutazione lato client viene eseguita come processo secondario sull'host locale. Quindi, puoi richiamare le operazioni and. EvaluationFeaturePutProjectEventlocalhost Il processo di valutazione lato client gestisce l'assegnazione delle varianti, l'archiviazione nella cache e la sincronizzazione dei dati. Per ulteriori informazioni su AWS AppConfig, consulta How AWS AppConfig works.

Quando esegui l'integrazione con AWS AppConfig, specifichi un ID AWS AppConfig dell'applicazione e un ID di AWS AppConfig ambiente su Evidently. Puoi utilizzare lo stesso ID applicazione e lo stesso ID ambiente in tutti i progetti Evidently.

Quando crei un progetto con la valutazione lato client abilitata, Evidently crea un profilo di AWS AppConfig configurazione per quel progetto. Il profilo di configurazione sarà diverso per ogni progetto.

Controllo degli accessi per la valutazione lato client

La valutazione lato client di Evidently utilizza un meccanismo di controllo degli accessi diverso rispetto alle altre funzionalità di Evidently. Ti consigliamo di acquisire familiarità con questo meccanismo in modo da poter implementare le misure di sicurezza adeguate.

Con Evidently, puoi creare IAM politiche che limitano le azioni che un utente può eseguire sulle singole risorse. Ad esempio, puoi creare un ruolo utente che impedisca a un utente di eseguire l'azione EvaluateFeature. Per ulteriori informazioni sulle azioni Evidently che possono essere controllate con IAM le policy, consulta Azioni definite da Amazon CloudWatch Evidently.

Il modello di valutazione lato client consente valutazioni locali delle funzionalità di Evidently che utilizzano i metadati del progetto. Un utente di un progetto con la valutazione lato client abilitata può chiamarlo su un EvaluateFeatureAPIendpoint host locale, ma questa API chiamata non raggiunge Evidently e non è autenticata dalle policy del servizio Evidently. IAM Questa chiamata ha esito positivo anche se l'utente non dispone dell'autorizzazione per utilizzare l'azioneIAM. EvaluateFeature Tuttavia, un utente necessita comunque dell'PutProjectEventsautorizzazione dell'agente per memorizzare nel buffer gli eventi di valutazione o gli eventi personalizzati e per scaricare i dati su Evidently in modo asincrono.

L'utente deve inoltre disporre dell'autorizzazione evidently:ExportProjectAsConfiguration per poter creare un progetto che utilizza la valutazione lato client. Ciò consente di controllare l'accesso alle EvaluateFeatureazioni richiamate durante la valutazione lato client.

Se non si procede con attenzione, il modello di sicurezza della valutazione lato client può sovvertire le policy impostate sul resto di Evidently. Un utente che dispone dell'evidently:ExportProjectAsConfigurationautorizzazione può creare un progetto con la valutazione lato client abilitata e quindi utilizzare l'EvaluateFeatureazione per la valutazione lato client con quel progetto anche se gli viene espressamente negata l'azione in una politica. EvaluateFeatureIAM

Inizia a usare Lambda

Evidently attualmente supporta la valutazione lato client utilizzando un ambiente AWS Lambda . Per iniziare, decidi innanzitutto quale AWS AppConfig applicazione e ambiente utilizzare. Scegli un'applicazione e un ambiente esistenti o creane di nuovi.

I seguenti AWS AppConfig AWS CLI comandi di esempio creano un'applicazione e un ambiente.

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

Quindi, crea un progetto Evidently utilizzando queste AWS AppConfig risorse. Per ulteriori informazioni, consulta Crea un nuovo progetto.

La valutazione lato client è supportata in Lambda tramite un livello Lambda. Questo è un livello pubblico che fa parte di AWS-AppConfig-Extension un' AWS AppConfig estensione pubblica creata dal AWS AppConfig servizio. Per ulteriori informazioni sui livelli Lambda, consulta la sezione Livello.

Per utilizzare la valutazione lato client, devi aggiungere questo livello alla funzione Lambda e configurare le autorizzazioni e le variabili di ambiente.

Aggiunta e configurazione del livello Lambda per la valutazione lato client di Evidently alla funzione Lambda
  1. Se non lo hai già fatto, crea una funzione Lambda.

  2. Aggiungi il livello per la valutazione lato client alla tua funzione. Puoi specificarlo ARN o selezionarlo dall'elenco dei AWS livelli se non l'hai già fatto. Per ulteriori informazioni, consulta Configurazione delle funzioni per l'uso dei livelli e Versioni disponibili dell'estensione AWS AppConfig Lambda.

  3. Create una IAM policy denominata EvidentlyAppConfigCachingAgentPolicycon il seguente contenuto e collegatela al ruolo di esecuzione della funzione. Per ulteriori informazioni, consulta Ruolo di esecuzione Lambda.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "appconfig:GetLatestConfiguration", "appconfig:StartConfigurationSession", "evidently:PutProjectEvents" ], "Resource": "*" } ] }
  4. Aggiungi la variabile di ambiente AWS_APPCONFIG_EXTENSION_EVIDENTLY_CONFIGURATIONS richiesta alla funzione Lambda. Questa variabile di ambiente specifica la mappatura tra il progetto Evidently e le risorse. AWS AppConfig

    Se stai usando questa funzione per un progetto Evidently, imposta il valore della variabile di ambiente su applications/APP_ID/environments/ENVIRONMENT_ID/configurations/PROJECT_NAME.

    Se stai usando questa funzione per più progetti Evidently, usa una virgola per separare i valori, come nell'esempio seguente: 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. (Facoltativo) Imposta altre variabili di ambiente. Per ulteriori informazioni, consulta Configurazione dell'estensione AWS AppConfig Lambda.

  6. Nella tua applicazione, ottieni le valutazioni di Evidently a livello locale inviando EvaluateFeature a localhost.

    Esempio di 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)

    Esempio di 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; };

    Esempio di 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);

Configurazione della frequenza con cui il client invia i dati a Evidently

Per specificare la frequenza con cui la valutazione lato client invia i dati a Evidently, puoi facoltativamente configurare due variabili di ambiente.

  • AWS_APPCONFIG_EXTENSION_EVIDENTLY_EVENT_BATCH_SIZE specifica il numero di eventi per progetto da raggruppare in batch prima di inviarli a Evidently. I valori validi sono numeri interi compresi tra 1 e 50 e il valore predefinito è 40.

  • AWS_APPCONFIG_EXTENSION_EVIDENTLY_BATCH_COLLECTION_DURATION specifica il tempo di attesa in secondi prima dell'invio degli eventi a Evidently. Il valore predefinito è 30.

Risoluzione dei problemi

Utilizza le seguenti informazioni per risolvere i problemi relativi all'utilizzo di CloudWatch Evidently con la valutazione lato client, fornita da. AWS AppConfig

Si è verificato un errore (BadRequestException) durante la chiamata all' EvaluateFeature operazione: HTTP metodo non supportato per il percorso fornito

Le variabili di ambiente potrebbero essere configurate in modo errato. Ad esempio, potresti aver usato EVIDENTLY_CONFIGURATIONS come nome della variabile di ambiente invece di AWS_APPCONFIG_EXTENSION_EVIDENTLY_CONFIGURATIONS.

ResourceNotFoundException: Distribuzione non trovata

L'aggiornamento dei metadati del progetto non è stato implementato su AWS AppConfig. Verifica la presenza di una distribuzione attiva nell' AWS AppConfig ambiente utilizzato per la valutazione lato client.

ValidationException: Nessuna configurazione evidentemente per il progetto

La variabile di ambiente AWS_APPCONFIG_EXTENSION_EVIDENTLY_CONFIGURATIONS potrebbe essere configurata con il nome del progetto errato.