Domande generali

Amazon CodeGuru è uno strumento per sviluppatori che fornisce suggerimenti intelligenti per migliorare la qualità del codice e identificare le righe di codice più costose di un'applicazione.

Amazon CodeGuru è ora generalmente disponibile. Puoi iniziare a utilizzarlo subito nella console di Amazon CodeGuru.

Per iniziare a utilizzare Amazon CodeGuru Reviewer, accedi alla console di Amazon CodeGuru Reviewer. Qui potrai associare un repository di codice esistente su GitHub, GitHub Enterprise, Bitbucket o AWS CodeCommit. Dopo una fase di configurazione singola, Amazon CodeGuru Reviewer inizia ad analizzare il codice e a fornire consigli su come migliorarlo direttamente all'interno della richiesta pull o del repository del codice.

Puoi anche avviare la profilatura delle tue applicazioni in pochi minuti. Per iniziare ad utilizzare Amazon CodeGuru Profiler, accedi alla console di CodeGuru Profiler. Qui è possibile configurare un gruppo di profiling per la tua applicazione. Avvia l'applicazione con l'agente di profilatura sulla riga di comando o segui i passaggi per utilizzare uno dei metodi personalizzati descritti. È possibile consentire l'esecuzione continua di Amazon CodeGuru Profiler così da poter rilevare in maniera proattiva i problemi di prestazione nelle applicazioni attive.

Per le Regioni AWS supportate, consulta la tabella delle Regioni AWS per l'infrastruttura globale AWS. Per ulteriori informazioni, consulta Regioni ed endpoint in Riferimenti generali AWS.

Amazon CodeGuru Security

Sicurezza di CodeGuru è uno strumento di scansione del codice basato sul machine learning e sull'analisi dei programmi che rileva le vulnerabilità di sicurezza nel codice.

CodeGuru Security supporta attualmente la scansione di codice Java, Python e JavaScript.
 

CodeGuru Security rileva i dieci problemi principali di OWASP (Open Worldwide Application Security Project), i 25 problemi principali CWE (Common Weakness Enumeration), l'iniezione di log, i segreti e l'uso sicuro delle API e degli SDK AWS. Consulta Amazon CodeGuru Detector Library per maggiori dettagli sulle vulnerabilità rilevate da CodeGuru Security.
 

Visita la console di CodeGuru per integrare CodeGuru Security nel tuo ciclo di vita da sviluppatore. Puoi integrarlo in strumenti di integrazione e distribuzione continua (CI/CD), nella scansione dei repository e negli ambienti di sviluppo integrati (IDE).
 

CodeGuru Security richiede l'accesso in sola lettura al tuo codice allo scopo di generare i suggerimenti. La tua fiducia, la tua privacy e la sicurezza dei tuoi contenuti rappresentano la nostra massima priorità. Implementiamo controlli adeguati, tra cui la crittografia durante i trasferimenti, per impedire l'accesso o la divulgazione non autorizzati dei tuoi contenuti e per garantire che l'utilizzo da parte nostra sia conforme ai nostri impegni nei tuoi confronti. Supportiamo anche le chiavi KMS del gestore clienti (CMCMK) per la crittografia. Per ulteriori informazioni, consulta le Domande frequenti sulla privacy dei dati.

No, CodeGuru Security non archivia il tuo codice sorgente.
 

CodeGuru Security viene addestrato utilizzando rule mining e modelli di machine learning supervisionati che utilizzano una combinazione di regressione logistica e reti neurali. Ad esempio, durante la fase di addestramento per la perdita di dati sensibili, il servizio esegue un'analisi completa del codice in cerca dei percorsi che utilizzano la risorsa o i dati sensibili, crea funzioni che li rappresentano e le utilizza come input per i modelli di regressione logistica e per le reti neurali convoluzionali.

CodeGuru Security è integrato con la scansione del codice Amazon Inspector per Lambda. Presto saranno disponibili ulteriori integrazioni con repository e strumenti CI/CD.
 

Amazon CodeGuru Profiler

Amazon CodeGuru Profiler aiuta gli sviluppatori e gli operatori IT a comprendere in modo semplice il comportamento in runtime delle proprie applicazioni, a migliorare le prestazioni e a diminuire i costi di elaborazione. Amazon CodeGuru Profiler analizza il profilo di runtime dell'applicazione e fornisce suggerimenti intelligenti e visualizzazioni che guidano gli sviluppatori al miglioramento delle prestazioni delle parti più pertinenti del codice.

Un gruppo di profiling è un raggruppamento logico creato da te. Rappresenta i limiti di un'applicazione. Ad esempio, in un'architettura di microservizi, un gruppo di profiling aggrega i profili dei microservizi assegnati e ne produce un profilo unico

Registrare il tempo di esecuzione funziona solo in un numero limitato di casi perché la registrazione è solo in grado di monitorare la latenza (non l'utilizzo della CPU) e implementarlo richiede molto tempo perché gli sviluppatori devono registrare ogni funzione in un'applicazione (senza alcun impatto sulla prestazione dell'applicazione), rimanendo senza gli strumenti necessari per monitorare ed eseguire efficacemente la risoluzione dei problemi di applicazioni in produzione. Ecco dove entra in gioco la profilatura: Amazon CodeGuru Profiler è stato progettato per raccogliere i dati su qualsiasi evento che si verifica nel comportamento dell'applicazione, indipendentemente dalla situazione. CodeGuru Profiler utilizza una knowledge base di inefficienze di prestazione riscontrate più di frequente al fine di rilevare automaticamente le sequenze di codice nell'applicazione attiva che compromettono le sue prestazioni. Dunque, gli sviluppatori possono seguire i suggerimenti forniti per risolvere i problemi riscontrati.

Le APM tradizionali forniscono dati utili sul monitoraggio, sulla tracciatura e sulle prestazioni delle applicazioni. Amazon CodeGuru Profiler integra queste funzionalità APM offrendo visualizzazioni dei dati di runtime dell'applicazione e suggerimenti eseguibili per i problemi di prestazione riscontrati. Utilizza inoltre il machine learning per rilevare e avvisare riguardo ad anomalie nel profilo dell'applicazione, indicando le righe di codice anomale. Amazon CodeGuru Profiler ti consente di individuare facilmente le parti di codice che offrono le migliori opportunità di ottimizzazione delle prestazioni, nonché potenziali risparmi e ricevere indicazioni su come procedere senza dover contare su competenze specializzate in ambito tecnico. Amazon CodeGuru Profiler esegue la profilatura delle istanze EC2, dei container e delle piattaforme di calcolo serverless inclusa AWS Lambda anche in locale. Inoltre, alcuni profiler autonomi sono progettati per essere eseguiti solo in ambienti di test, mentre Amazon CodeGuru Profiler è stato progettato per l'esecuzione continua in produzione, con carichi di traffico di produzione e senza interferire con l'applicazione. Si tratta di un aspetto utile durante la fase di risoluzione dei problemi operativi in produzione, anche in caso di esecuzione su host bare metal.

Amazon CodeGuru Profiler funziona con le applicazioni ospitate da Amazon EC2, le applicazioni in container eseguite su Amazon ECS e Amazon EKS, nonché le applicazioni serverless in esecuzione su AWS Fargate e AWS Lambda. Inoltre, puoi eseguire il profilatore Amazon CodeGuru on-premise

L'agente di Amazon CodeGuru Profiler utilizza le risorse (CPU, memoria) allocate alle funzioni di AWS Lambda. È stato messo a punto per avere un impatto minimo sulla prestazione dell'applicazione mentre viene eseguito in quanto thread in-process. Se l'applicazione consuma la maggior parte delle risorse nella funzione AWS Lambda, considera l'aumento delle risorse per abilitare il funzionamento adeguato dell'agente.

Sicurezza di CodeGuru attualmente supporta la scansione di Java, Python, JavaScript, TypeScript, C#, CloudFormation, Terraform, Go e Ruby.

Amazon CodeGuru Profiler è composto da tre parti: un agente, il servizio profiler e i suggerimenti intelligenti. L'agente viene avviato con l'applicazione sulla riga di comando e viene eseguito in forma di thread in-process come parte dell'applicazione. Raccoglie dati da ognuna delle istanze del servizio in cui l'agente è in esecuzione e li invia ogni cinque minuti al servizio profiler, dove vengono aggregati. A questo punto, Amazon CodeGuru Profiler pubblica i dati del profilo in grafici a fiamma interattivi che consentono la visualizzazione delle prestazioni della tua applicazione. Inoltre, Amazon CodeGuru Profiler analizza di continuo i dati profilati e li confronta alle best practice di Amazon e dell'ingegneria delle prestazioni. Il servizio ti invia anche suggerimenti intelligenti quando vengono rilevati problemi di prestazioni. Utilizza inoltre il machine learning per analizzare di continuo i dati del runtime dell'applicazione e allerta quando rileva anomalie nel profilo dell'applicazione e indica le righe di codice anomale.

Il profilatore CodeGuru profila CPU (CPU attiva e tempo reale) e memoria (riepilogo dell'heap) per Java e altri linguaggi JVM e CPU (tempo reale) per le applicazioni Python.

Sì, una volta abilitata la profilazione della memoria e la avvii, CodeGuru Profiler raccoglierà le informazioni sia sulla memoria sia sulla CPU per l'applicazione. È necessario solo un gruppo di profiling per ottenere dati della CPU e della memoria di un'applicazione specifica.

CodeGuru Profiler offre informazioni sul riepilogo dell'heap. Il riepilogo dell'heap fornisce una vista consolidata dell'utilizzo della memoria per tipo di oggetto (ad esempio, String, int, char[]) e tipi personalizzati, in un determinato arco di tempo (in genere 5 minuti). Il profilatore CodeGuru tiene traccia sia delle dimensioni totali degli oggetti che del loro numero. Questi parametri vengono presentati in un grafico cronologico, in modo da poter individuare facilmente tendenze e picchi dell'utilizzo della memoria per tipo di oggetto.

Il riepilogo dell'heap è utile in due scenari. Nel primo, puoi individuare potenziali perdite di memoria. Una curva di utilizzo della memoria in costante crescita per uno o più tipi di oggetti può indicare una perdita, con possibili conseguenti errori di memoria e arresti dell'applicazione. Nel secondo scenario è necessario ottimizzare la capacità della memoria dell'applicazione. In questo caso la suddivisione dell'utilizzo della memoria per tipo di oggetto ti aiuterà a sapere dove focalizzare l'attenzione. Ad esempio, sapendo che un'elevata quantità di memoria imprevista è stata associata a un tipo di oggetto specifico, puoi focalizzare l'analisi e le attività di ottimizzazione sulle parti dell'applicazione responsabili dell'allocazione degli oggetti di quel tipo e cui fanno riferimento.