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à.
Esegui carichi di lavoro pianificati e basati su eventi su larga scala con AWS Fargate
Creato da HARI OHM PRASATH RAJAGOPAL (AWS)
Riepilogo
Avviso: AWS non CodeCommit è più disponibile per i nuovi clienti. I clienti esistenti di AWS CodeCommit possono continuare a utilizzare il servizio normalmente. Ulteriori informazioni
Questo modello descrive come eseguire carichi di lavoro pianificati e basati su eventi su larga scala sul cloud Amazon Web Services (AWS) utilizzando AWS Fargate.
Nel caso d'uso impostato da questo modello, il codice viene scansionato alla ricerca di informazioni sensibili di AWS, come il numero di account e le credenziali AWS, ogni volta che viene inviata una pull request. La pull request avvia una funzione Lambda. La funzione Lambda richiama un'attività Fargate che si occupa della scansione del codice. Lambda viene avviata ogni volta che viene generata una nuova pull request. Se la scansione rileva informazioni sensibili, Amazon Simple Notification Service (Amazon SNS) invia i risultati della scansione in un messaggio e-mail.
Questo modello è utile nei seguenti casi d'uso aziendali:
Se la tua azienda deve eseguire molti carichi di lavoro pianificati e basati su eventi che non possono essere eseguiti da AWS Lambda a causa delle limitazioni relative al runtime (un limite di 15 minuti) o alla memoria
Se desideri che AWS gestisca le istanze fornite per questi carichi di lavoro
Quando si utilizza questo modello, è possibile creare un nuovo cloud privato virtuale (VPC). Questo modello utilizza AWS CodeCommit anche.
Prerequisiti e limitazioni
Prerequisiti
Un account AWS attivo
AWS CodeCommit per l'hosting della base di codice e la creazione di richieste pull
AWS Command Line Interface (AWS CLI) versione 1.7 o successiva, installata e configurata su macOS, Linux o Windows
Carichi di lavoro in esecuzione in contenitori
Eseguibile Apache Maven configurato in classpath
Architettura

Il flusso complessivo include i seguenti passaggi.
Ogni volta che viene inviata una nuova pull request CodeCommit, viene avviata una funzione Lambda. La funzione Lambda ascolta l'evento
CodeCommit Pull Request State Change
tramite Amazon. EventBridgeLa funzione Lambda invia una nuova attività Fargate con i seguenti parametri di ambiente per il controllo del codice e la scansione.
RUNNER → <<TaskARN>> SNS_TOPIC → <<SNSTopicARN>> SUBNET → <<Subnet in which Fargate task gets launched>>
Se la scansione rileva informazioni sensibili nel codice, Fargate invia un nuovo messaggio all'argomento Amazon SNS.
Un abbonato SNS legge il messaggio dall'argomento e invia un messaggio e-mail.
Tecnologia
AWS CodeCommit
Amazon Elastic Container Registry (Amazon ECR)
Amazon Elastic Container Service (Amazon ECS)
Amazon EventBridge
AWS Fargate
AWS Lambda
Amazon SNS
Docker
Strumenti
Strumenti
AWS CLI: AWS Command Line Interface (CLI) è uno strumento unificato per gestire i servizi AWS.
AWS CodeCommit
: AWS CodeCommit è un servizio di controllo del codice sorgente completamente gestito che ospita repository sicuri basati su Git. Utilizzando CodeCommit, i team possono collaborare sul codice in un ambiente sicuro e altamente scalabile. Amazon ECR — Amazon Elastic Container Registry (Amazon ECR) è un registro completamente gestito che gli sviluppatori possono utilizzare per archiviare, gestire e distribuire immagini di container Docker.
Amazon ECS — Amazon Elastic Container Service (Amazon ECS) è un servizio di gestione dei container veloce e altamente scalabile. Puoi usare Amazon ECS per eseguire, arrestare e gestire i contenitori su un cluster.
AWS Fargate — AWS Fargate è una tecnologia che puoi usare con Amazon ECS per eseguire container senza dover gestire server o cluster di istanze Amazon. EC2
AWS Lambda: AWS Lambda è un servizio di elaborazione che supporta l'esecuzione di codice senza effettuare il provisioning o la gestione di server. Lambda esegue il codice solo quando è necessario e si dimensiona automaticamente, da poche richieste al giorno a migliaia al secondo.
Amazon SNS — Amazon Simple Notification Service (Amazon SNS) è un servizio gestito che fornisce il recapito dei messaggi dagli editori agli abbonati (noti anche come produttori e consumatori). Gli editori comunicano in modo asincrono con gli abbonati creando e inviando messaggi a un argomento, che rappresenta un punto di accesso logico e un canale di comunicazione. I client che sottoscrivono l'argomento SNS ricevono messaggi pubblicati utilizzando un protocollo supportato, ad esempio Lambda, e-mail, notifiche push mobili e messaggi di testo mobili (SMS).
Docker
: Docker ti aiuta a creare, testare e distribuire applicazioni in pacchetti chiamati contenitori. Client Git
: riga di comando o strumento desktop per controllare gli artefatti richiesti Maven
— Apache Maven è uno strumento di gestione dei progetti per la gestione centralizzata della compilazione, del reporting e della documentazione di un progetto.
Epiche
Attività | Descrizione | Competenze richieste |
---|---|---|
Scarica il codice | Nella sezione Allegati, scarica il file.zip ed estrai i file. | Sviluppatore, amministratore di sistema AWS |
Configura il repository. | Esegui | Sviluppatore, amministratore di sistema AWS |
Attività | Descrizione | Competenze richieste |
---|---|---|
Crea un repository Amazon ECR e accedi. | Apri la console Amazon ECR. Nel riquadro di navigazione, scegli Repository, quindi scegli Crea repository. Per informazioni su questa e altre storie, consulta la sezione Risorse correlate. | Sviluppatore, amministratore di sistema AWS |
Invia l'immagine del conteiner. | Apri il repository, scegli Visualizza comandi push e accedi a Docker. Dopo aver effettuato l'accesso, esegui i comandi, con le sostituzioni richieste, che si trovano in Invia l'immagine del contenitore nella sezione Informazioni aggiuntive. Questo carica l'immagine del contenitore Docker che viene utilizzata per eseguire la scansione del codice. Una volta completato il caricamento, copia l'URL dell'ultima build nel repository Amazon ECR. | Sviluppatore, amministratore di sistema AWS |
Attività | Descrizione | Competenze richieste |
---|---|---|
Crea il CodeCommit repository. | Per creare un nuovo CodeCommit repository AWS, esegui il comando sotto Crea il CodeCommit repository nella sezione Informazioni aggiuntive. | Sviluppatore, amministratore di sistema AWS |
Attività | Descrizione | Competenze richieste |
---|---|---|
Crea un VPC. | Se desideri utilizzare un nuovo VPC anziché uno esistente, esegui i comandi in Crea un VPC nella sezione Informazioni aggiuntive. Lo script AWS Cloud Development Kit (AWS CDK) genererà il IDs VPC e la sottorete che sono stati creati. | Sviluppatore, amministratore di sistema AWS |
Attività | Descrizione | Competenze richieste |
---|---|---|
Crea il cluster e l'attività. | Per creare un cluster Amazon ECS e una definizione di attività Fargate, esegui i comandi in Crea cluster e attività nella sezione Informazioni aggiuntive. Assicurati che l'ID VPC e l'URI del repository Amazon ECR corretti vengano passati come parametro durante l'esecuzione dello script di shell. Lo script crea una definizione di attività Fargate che punta all'immagine Docker (responsabile della scansione). Lo script crea quindi un lavoro e un ruolo di esecuzione associato. | Sviluppatore, amministratore di sistema AWS |
Verifica il cluster Amazon ECS. | Apri la console Amazon ECS. Nel riquadro di navigazione, scegli Clusters e scegli il cluster Amazon ECS appena creato denominato Fargate-Job-Cluster. Dopodiché, scegli Definizione dell'attività nel riquadro di navigazione e conferma che sia presente una nuova definizione di attività con il prefisso. | Sviluppatore, amministratore di sistema AWS |
Attività | Descrizione | Competenze richieste |
---|---|---|
Creare un argomento SNS. | Per creare un argomento SNS, esegui il comando sotto Crea l'argomento SNS nella sezione Informazioni aggiuntive. Una volta completata la creazione, nota il | Sviluppatore, amministratore di sistema AWS |
Crea l'abbonato SNS. | Per creare un abbonato e-mail per l'argomento SNS, esegui il comando in Crea l'abbonato SNS nella sezione Informazioni aggiuntive. Assicurati di sostituirlo | Sviluppatore, amministratore di sistema AWS |
Attività | Descrizione | Competenze richieste |
---|---|---|
Crea la funzione e il trigger. | Per creare una funzione Lambda con un CodeCommit trigger, esegui il comando in Funzione Lambda e CodeCommit trigger nella sezione Informazioni aggiuntive. Assicurati di sostituire i parametri con i valori corrispondenti prima di eseguire il comando. Lo script crea la funzione Lambda e la configura per essere invocata quando viene effettuata una nuova richiesta pull. | Sviluppatore, amministratore di sistema AWS |
Attività | Descrizione | Competenze richieste |
---|---|---|
Testare l'applicazione. | Se si archiviano informazioni sensibili di AWS nel CodeCommit repository, è necessario avviare la funzione Lambda. La funzione Lambda avvia l'attività Fargate, che esegue la scansione del codice e invia i risultati della scansione in una notifica e-mail. | Sviluppatore, amministratore di sistema AWS |
Risorse correlate
Informazioni aggiuntive
Invia l'immagine del contenitore
> cd 1-ecr-image-push > ./run.sh <<ecr-repository>>
Crea il CodeCommit repository
aws codecommit create-repository --repository-name test-repo --repository-description "My Test repository"
Crea un VPC
> cd 2-create-vpc > ./run.sh
Output
aws-batch-cdk-vpc-efs-launch-template.privatesubnet = subnet-<<id>> aws-batch-cdk-vpc-efs-launch-template.publicsubnet = subnet-<<id>> aws-batch-cdk-vpc-efs-launch-template.vpcid = vpc-<<id>>
Crea il cluster e l'attività
> export CDK_DEFAULT_ACCOUNT = <<aws_account_id>> > export CDK_DEFAULT_REGION = <<aws_region>> > cd 3-create-ecs-task > ./run.sh <<vpc-id>> <<ecr-repo-uri>>
Output
aws-cdk-fargate-ecs.CLUSTERNAME = Fargate-Job-Cluster aws-cdk-fargate-ecs.ClusterARN = <<cluster_arn>> aws-cdk-fargate-ecs.ContainerARN = Fargate-Container aws-cdk-fargate-ecs.TaskARN = <<task_arn>> aws-cdk-fargate-ecs.TaskExecutionRole = <<execution_role_arn>> aws-cdk-fargate-ecs.TaskRole = <<task_role_arn>>
Crea l'argomento SNS
aws sns create-topic --name code-commit-topic
Crea l'abbonato SNS
aws sns subscribe \ --topic-arn <<topic_arn>> \ --protocol email \ --notification-endpoint <<email_address>>
Funzione Lambda e grilletto CodeCommit
> export CDK_DEFAULT_ACCOUNT = <<aws_account_id>> > export CDK_DEFAULT_REGION = <<aws_region>> > cd 5-Lambda-CodeCommit-Trigger > ./run.sh <<taskarn>> <<snstopicarn>> subnet-<<id>> <<codecommitarn>>
Output
aws-cdk-fargate-lambda-event.Cloudwatchrule = <<cloudwatchrule>> aws-cdk-fargate-lambda-event.CodeCommitLambda = AWS-Code-Scanner-Function aws-cdk-fargate-lambda-event.LambdaRole = <<lambdaiamrole>>