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 Fargate AWS
Creato HARI OHM PRASATH RAJAGOPAL da (AWS)
Ambiente: PoC o pilota | Tecnologie: modernizzazione; serverless; gestione e governance | Carico di lavoro: open source |
AWSservizi: Amazon EC2 Container Registry; Amazon ECS AWS CodeCommit; AWS Fargate; LambdaAWS; Amazon SNS |
Riepilogo
Avviso: non AWS 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 sugli eventi su larga scala su Amazon Web Services (AWS) Cloud utilizzando Fargate. AWS
Nel caso d'uso impostato da questo pattern, ogni volta che viene inviata una pull request, il codice viene scansionato alla ricerca di informazioni AWS sensibili, come il numero di AWS account e le credenziali. 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 (AmazonSNS) 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 gestire le istanze AWS predisposte per questi carichi di lavoro
Quando utilizzi questo modello, hai la possibilità di creare un nuovo cloud privato virtuale (). VPC Questo modello utilizza anche AWS CodeCommit.
Prerequisiti e limitazioni
Prerequisiti
Un AWS account attivo
AWS CodeCommit per ospitare la codebase e creare richieste pull
AWSCommand Line Interface (AWSCLI) 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 SNS abbonato legge il messaggio dall'argomento e invia un messaggio e-mail.
Tecnologia
AWS CodeCommit
Registro Amazon Elastic Container (AmazonECR)
Amazon Elastic Container Service (AmazonECS)
Amazon EventBridge
AWS Fargate
AWSLambda
Amazon SNS
Docker
Strumenti
Strumenti
AWSCLI— AWS Command Line Interface (CLI) è uno strumento unificato per gestire i tuoi AWS servizi.
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 (AmazonECR) è un registro completamente gestito che gli sviluppatori possono utilizzare per archiviare, gestire e distribuire immagini di container Docker.
Amazon ECS — Amazon Elastic Container Service (AmazonECS) è un servizio di gestione dei container veloce e altamente scalabile. Puoi usare Amazon ECS per eseguire, arrestare e gestire i container su un cluster.
AWSFargate — AWS Fargate è una tecnologia che puoi usare con Amazon ECS per eseguire container senza dover gestire server o cluster di istanze Amazon. EC2
AWSLambda: 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 (AmazonSNS) è 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'SNSargomento ricevono messaggi pubblicati utilizzando un protocollo supportato, ad esempio Lambda, e-mail, notifiche push per dispositivi 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, AWS amministratore di sistema |
Configura il repository. | Esegui | Sviluppatore, amministratore AWS di sistema |
Attività | Descrizione | Competenze richieste |
---|---|---|
Crea un ECR repository Amazon e accedi. | Apri la ECR console Amazon. Nel riquadro di navigazione, scegli Repository, quindi scegli Crea repository. Per informazioni su questa e altre storie, consulta la sezione Risorse correlate. | Sviluppatore, amministratore AWS di sistema |
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 URL la build più recente nell'ECRarchivio Amazon. | Sviluppatore, amministratore AWS di sistema |
Attività | Descrizione | Competenze richieste |
---|---|---|
Crea il CodeCommit repository. | Per creare un nuovo AWS CodeCommit repository, esegui il comando sotto Crea il CodeCommit repository nella sezione Informazioni aggiuntive. | Sviluppatore, AWS amministratore di sistema |
Attività | Descrizione | Competenze richieste |
---|---|---|
Crea unVPC. | Se desideri utilizzarne uno nuovo VPC anziché uno esistente, esegui i comandi in Crea a VPC nella sezione Informazioni aggiuntive. Lo script AWS Cloud Development Kit (AWSCDK) genererà IDs la sottorete VPC and che è stata creata. | Sviluppatore, amministratore AWS di sistema |
Attività | Descrizione | Competenze richieste |
---|---|---|
Crea il cluster e l'attività. | Per creare un ECS cluster Amazon e una definizione di attività Fargate, esegui i comandi in Crea cluster e attività nella sezione Informazioni aggiuntive. Assicurati che l'VPCID e il ECR repository Amazon corretti URI 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 AWS di sistema |
Verifica il ECS cluster Amazon. | Apri la ECS console Amazon. Nel riquadro di navigazione, scegli Clusters e scegli il cluster Amazon appena creato denominato ECS 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 AWS di sistema |
Attività | Descrizione | Competenze richieste |
---|---|---|
Creazione di un argomento SNS. | Per creare un SNS argomento, esegui il comando sotto Crea l'SNSargomento nella sezione Informazioni aggiuntive. Una volta completata la creazione, nota il | Sviluppatore, amministratore AWS di sistema |
Crea il SNS sottoscrittore. | Per creare un abbonato e-mail per l'SNSargomento, esegui il comando in Crea il SNS sottoscrittore nella sezione Informazioni aggiuntive. Assicurati di sostituirlo | Sviluppatore, amministratore AWS di sistema |
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 AWS sensibili 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'SNSargomento
aws sns create-topic --name code-commit-topic
Crea l'SNSabbonato
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>>