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à.
Creazione di ECS risorse Amazon utilizzando il AWS CDK
AWS Cloud Development Kit (AWS CDK) Si tratta di un framework Infrastructure-as-Code (IAC) che puoi utilizzare per definire l'infrastruttura AWS cloud utilizzando un linguaggio di programmazione a tua scelta. Per definire la tua infrastruttura cloud, devi prima scrivere un'app (in uno dei linguaggi supportati) che CDK contenga uno o più stack. Quindi, la sintetizzi in un AWS CloudFormation modello e distribuisci le tue risorse su. Account AWS Segui i passaggi descritti in questo argomento per distribuire un server Web containerizzato con Amazon Elastic Container Service (AmazonECS) e su AWS CDK Fargate.
La AWS Construct Library, inclusa inCDK, fornisce moduli che puoi usare per modellare le risorse fornite. AWS servizi Per i servizi più diffusi, la libreria fornisce costrutti curati con impostazioni predefinite intelligenti e best practice. Uno di questi moduli, aws-ecs-patterns
, fornisce astrazioni di alto livello che possono essere utilizzate per definire il servizio containerizzato e tutte le risorse di supporto necessarie in poche righe di codice.
In questo argomento viene utilizzato il costrutto ApplicationLoadBalancedFargateService
. Questo costrutto implementa un ECS servizio Amazon su Fargate con un sistema di bilanciamento del carico delle applicazioni. Il aws-ecs-patterns
modulo include anche costrutti che utilizzano un sistema di bilanciamento del carico di rete e vengono eseguiti su Amazon. EC2
Prima di iniziare questa attività, configura il tuo ambiente di AWS CDK sviluppo e installalo AWS CDK eseguendo il comando seguente. Per istruzioni su come configurare l'ambiente di AWS CDK sviluppo, consulta Getting Started With the AWS CDK - Prerequisiti.
npm install -g aws-cdk
Nota
Queste istruzioni presuppongono che tu stia usando AWS CDK v2.
Argomenti
Passaggio 1: configura il tuo progetto AWS CDK
Crea una directory per la tua nuova AWS CDK app e inizializza il progetto.
Nota
Il modello di AWS CDK applicazione utilizza il nome della directory del progetto per generare nomi per file e classi sorgente. In questo esempio, la directory è denominata hello-ecs
. Se utilizzi un nome di directory del progetto diverso, l'app non corrisponderà a queste istruzioni.
AWS CDK v2 include costrutti stabili per tutti AWS servizi in un unico pacchetto chiamato. aws-cdk-lib
Questo pacchetto viene installato come dipendenza quando inizializzi il progetto. Quando lavori con determinati linguaggi di programmazione, il pacchetto viene installato quando crei il progetto per la prima volta. Questo argomento spiega come utilizzare un costrutto Amazon ECS Patterns, che fornisce astrazioni di alto livello per lavorare con Amazon. ECS Questo modulo si basa su ECS costrutti Amazon e altri costrutti per fornire le risorse necessarie alla tua applicazione AmazonECS.
I nomi che usi per importare queste librerie nella tua CDK applicazione potrebbero differire leggermente a seconda del linguaggio di programmazione utilizzato. A titolo di riferimento, i seguenti sono i nomi utilizzati in ogni linguaggio CDK di programmazione supportato.
Passaggio 2: utilizzare il AWS CDK per definire un server Web containerizzato su Fargate
Usa l'immagine del contenitore da. amazon-ecs-sample
Nel AWS CDK progetto che hai creato, modifica il file che contiene la definizione dello stack in modo che sia simile a uno dei seguenti esempi.
Nota
Uno stack è un'unità di implementazione. Tutte le risorse devono trovarsi in uno stack e tutte le risorse in uno stack vengono implementate contemporaneamente. Se una risorsa non viene implementata, verrà eseguito il rollback di tutte le altre risorse già implementate. Un' AWS CDK app può contenere più stack e le risorse in uno stack possono fare riferimento a risorse in un altro stack.
Il frammento breve precedente include quanto segue:
-
Il nome logico del servizio,
MyWebServer
. -
L'immagine del contenitore che è stata ottenuta da:. DockerHub
amazon/amazon-ecs-sample
-
Altre informazioni pertinenti, ad esempio il fatto che il load balancer ha un indirizzo pubblico ed è accessibile da Internet.
AWS CDK Creerà tutte le risorse necessarie per distribuire il server Web, incluse le seguenti risorse. Queste risorse sono state omesse in questo esempio.
-
ECSCluster Amazon
-
EC2Istanze Amazon VPC e Amazon
-
Gruppo con scalabilità automatica
-
Application Load Balancer
-
Ruoli e policy IAM
Alcune risorse fornite automaticamente sono condivise da tutti i ECS servizi Amazon definiti nello stack.
Salva il file di origine, quindi esegui il comando cdk synth
nella directory principale dell'applicazione. AWS CDK Esegue l'app e sintetizza un AWS CloudFormation modello a partire da essa, quindi visualizza il modello. Il modello è un file di circa 600 YAML righe. L'inizio del file è mostrato di seguito. Il modello potrebbe differire da questo esempio.
Resources: MyWebServerLB3B5FD3AB: Type: AWS::ElasticLoadBalancingV2::LoadBalancer Properties: LoadBalancerAttributes: - Key: deletion_protection.enabled Value: "false" Scheme: internet-facing SecurityGroups: - Fn::GetAtt: - MyWebServerLBSecurityGroup01B285AA - GroupId Subnets: - Ref: EcsDefaultClusterMnL3mNNYNVpcPublicSubnet1Subnet3C273B99 - Ref: EcsDefaultClusterMnL3mNNYNVpcPublicSubnet2Subnet95FF715A Type: application DependsOn: - EcsDefaultClusterMnL3mNNYNVpcPublicSubnet1DefaultRouteFF4E2178 - EcsDefaultClusterMnL3mNNYNVpcPublicSubnet2DefaultRouteB1375520 Metadata: aws:cdk:path: HelloEcsStack/MyWebServer/LB/Resource MyWebServerLBSecurityGroup01B285AA: Type: AWS::EC2::SecurityGroup Properties: GroupDescription: Automatically created Security Group for ELB HelloEcsStackMyWebServerLB06757F57 SecurityGroupIngress: - CidrIp: 0.0.0.0/0 Description: Allow from anyone on port 80 FromPort: 80 IpProtocol: tcp ToPort: 80 VpcId: Ref: EcsDefaultClusterMnL3mNNYNVpc7788A521 Metadata: aws:cdk:path: HelloEcsStack/MyWebServer/LB/SecurityGroup/Resource # and so on for another few hundred lines
Per distribuire il servizio nella tua Account AWS, esegui il cdk deploy
comando nella directory principale dell'applicazione. Ti viene chiesto di approvare le IAM politiche che hanno generato. AWS CDK
La distribuzione richiede diversi minuti, durante i quali vengono AWS CDK create diverse risorse. Le ultime righe dell'output della distribuzione includono il nome host pubblico del sistema di bilanciamento del carico e quello del nuovo server Web. URL Sono i seguenti:
Outputs: HelloEcsStack.MyWebServerLoadBalancerDNSXXXXXXX = Hello-MyWeb-ZZZZZZZZZZZZZ-ZZZZZZZZZZ.us-west-2.elb.amazonaws.com HelloEcsStack.MyWebServerServiceURLYYYYYYYY = http://Hello-MyWeb-ZZZZZZZZZZZZZ-ZZZZZZZZZZ.us-west-2.elb.amazonaws.com
Fase 3: Test del server Web
Copia l'URLoutput dell'implementazione e incollalo nel tuo browser web. Viene visualizzato il seguente messaggio di benvenuto dal server Web.
![Schermata dell'applicazione di ECS esempio Amazon. L'output indica che «La tua applicazione è ora in esecuzione su AmazonECS».](images/simple-php-app-congrats.png)
Fase 4: pulizia
Dopo aver finito con il server web, termina il servizio utilizzando il comando CDK eseguendo il cdk destroy
comando nella directory principale dell'applicazione. In questo modo si evita di incorrere in addebiti non intenzionali in futuro.
Passaggi successivi
Per ulteriori informazioni su come sviluppare AWS un'infrastruttura utilizzando la AWS CDK, consulta la Guida per gli AWS CDK sviluppatori.
Per informazioni sulla scrittura di AWS CDK app nella lingua che preferisci, consulta quanto segue:
Per ulteriori informazioni sui moduli AWS Construct Library utilizzati in questo argomento, consultate le seguenti panoramiche AWS CDK API di riferimento.