AWS CLI-serie - Hoe CloudFormation te gebruiken (2024)

We werken allemaal graag met de opdrachtregel toch? Ik hou tenminste van het gemak van het openen van een console en het schrijven van een opdracht om een ​​taak uit te voeren. Ik ben het ermee eens dat het in het begin misschien overweldigend lijkt, maar als we er eenmaal aan gewend zijn, is een opdrachtregel onze vriend. Om daarop voort te borduren, bedenk ik meerdere berichten om enkele veelgebruikte basisopdrachten te doorlopen waarmee verschillende AWS-services kunnen worden bestuurd of beheerd. Ja, AWS biedt een volledige opdrachtregelervaring waarmee alle AWS-services kunnen worden beheerd. Toen ik AWS begon te leren en de CLI-opdrachten wilde uitvoeren, had ik moeite om de opdrachten uit de documentatie te begrijpen en moest ik veel vallen en opstaan ​​​​om ze eindelijk te laten werken. Dus ik ben van plan om deze reeks berichten te schrijven voor zulke beginners die proberen de CLI-manier te leren om dingen op AWS te doen.

Dit bericht is de eerste van nog veel meer berichten waarin ik zal beschrijven hoe u enkele basisbeheerfuncties op verschillende AWS-services kunt uitvoeren. In elk bericht zal ik een AWS-service oppikken en een stapsgewijze handleiding geven om te laten zien hoe de service kan worden beheerd vanaf de opdrachtregel.

De hele codebasis is beschikbaar op mijn Github Repo:Hier

Wat is CLI

Een cli(CbevelLineInterface) is een manier om toegang te krijgen tot een service met slechts enkele opdrachten op een opdrachtregel. U kunt verschillende opdrachten op de console uitvoeren om een ​​specifieke taak uit te voeren. AWS biedt een vergelijkbare interface die een alternatieve manier is om de services rechtstreeks vanaf de opdrachtregelconsole te openen en te beheren. Het biedt een mate van gemak om gewoon de opdrachtregel te openen en de opdracht uit te voeren om een ​​AWS-service te beheren.

AWS CLI is een open source-tool die u op een machine kunt installeren en waarmee u verschillende opdrachten op de console kunt uitvoeren. Met behulp van de CLI en via een minimale configuratie kunt u een simplistische interface hebben en dezelfde functionaliteit hebben als de webconsole. CLI blijkt erg handig voor CI/CD-pijplijnen waar de pijplijn de CLI-opdrachten kan uitvoeren om verschillende taken op AWS uit te voeren. Het is beschikbaar op verschillende terminalprogramma's en kan dienovereenkomstig worden gebruikt op basis van het besturingssysteem dat u gebruikt:

  • Linux-terminal
  • Windows-opdrachtregel

Vereisten

Om de opdrachten te volgen, zijn er een paar vereisten die u zeker moet hebben:

  • Een AWS-account
  • Een opdrachtregelterminal. Op basis van welk besturingssysteem u gebruikt, is de bijbehorende opdrachtregelterminal voldoende
  • Een editor voor de Cloudformation-sjabloon

In dit bericht

In dit bericht zal ik enkele basiscommando's uitleggen om sommige Cloudformation-functionaliteiten te besturen. Er zijn momenten waarop we snel wat bronnen in AWS moeten gebruiken om iets te testen. Cloudformation biedt het gemak om vooraf gedefinieerde sjablonen te hebben voor verschillende bronnen die we kunnen gebruiken om die services snel op AWS te lanceren. CLI biedt nog een niveau van eenvoud om alle Cloudformation-functionaliteiten rechtstreeks vanaf de opdrachtregel op ons lokale systeem te besturen. Cloudformation is gebaseerd op het concept van infrastructuur als een code waarmee we ons hele AWS-ecosysteem kunnen converteren naar een sjabloonbestand dat kan worden gebruikt om herhaaldelijk dezelfde set bronnen te starten. Met CLI en Cloudformation zien de stappen om een ​​service te lanceren er als volgt uit:

  • Bereid de Cloudformation-sjablonen naar behoefte voor
  • Wanneer nodig om een ​​nieuwe service te starten of een service te wijzigen, opent u de opdrachtregel en navigeert u naar de CF-sjabloonmap
  • Voer de respectieve CLI-opdracht uit om met AWS te communiceren en de respectieve Cloudformation-taak uit te voeren


In dit bericht zal ik de laatste twee stappen doorlopen met een vooraf gedefinieerde CF-sjabloon die ik heb gemaakt. Dit bericht is bedoeld om te helpen met enkele basisstappen voor beginners om CLI voor Cloudformation te gaan gebruiken. Ik ben niet in detail ingegaan op alle Cloudformation-commando's, want dat wordt een erg lange post.

Wat gaan we bouwen

Om de methode voor het besturen van Cloudformation-functies met CLI uit te leggen, ga ik een eenvoudige architectuur in AWS bouwen. Onderstaande afbeelding laat zien welke architectuur we gaan lanceren op AWS met behulp van Cloudformation en CLI.


Onderstaande componenten worden gelanceerd als onderdeel van de architectuur:

  • VPC:Er zal een nieuw virtueel netwerk worden gemaakt om alle andere componenten te huisvesten en de architectuur in zijn eigen netwerk te isoleren.
  • Openbaar subnet:Binnen de VPC wordt een openbaar subnet gebruikt. Dit subnet is toegankelijk via internet en instanties binnen het subnet hebben toegang tot internet.
  • Internetgateway:Deze wordt gecreëerd om internettoegankelijkheid voor de VPC mogelijk te maken
  • Routetabel:Een routetabel om netwerkverzoeken binnen de VPC en externe verzoeken te routeren
  • Beveiligingsgroep:Om het verkeer naar EC2-instanties te regelen, wordt een beveiligingsgroep gemaakt en worden enkele basispoorten geopend om verkeer toe te staan

Al deze zullen worden gelanceerd als een nieuwe Cloudformation-stack. Een Cloudformation-stack is een set bronnen die samen worden gelanceerd vanuit een Cloudformation-sjabloon. Die bronnen kunnen worden beheerd door de sjabloon te wijzigen.

Voorbereidingsstap

Voordat we de CLI kunnen gebruiken, moeten we de CLI installeren en configureren op ons systeem of op elk systeem waarop u van plan bent de CLI te gebruiken. Het moet zo worden geconfigureerd dat het verbinding kan maken met de juiste AWS-omgeving om de taken uit te voeren. Volg de onderstaande stappen om de CLI voor te bereiden voor verder gebruik:

IAM-gebruiker maken:We hebben een specifieke gebruiker nodig die door de CLI wordt gebruikt om verbinding te maken met AWS. Deze kan apart vanuit de webconsole worden aangemaakt. Om de gebruiker aan te maken:

  • Log in op de console en navigeer naar de IAM-service

  • Maak een nieuwe gebruiker aan en voeg de vereiste machtigingen toe aan de gebruiker. De machtigingen zijn afhankelijk van wat u probeert uit te voeren met behulp van de CLI. Voor dit bericht zal ik beheerderstoegang aan de gebruiker toevoegen.


  • Noteer de toegangstoetsen van de bevestigingspagina Opslaan. Dit is nodig om de CLI te configureren

Maak een SSH-sleutel aan:Maak een nieuwe SSH-sleutel aan vanaf de EC2-pagina op de webconsole. Download en bewaar de sleutel om later te gebruiken.

CLI installeren:
Zodra we de gebruiker hebben, gaan we verder met het installeren van de CLI op ons systeem. Afhankelijk van of u op een lokale computer of op een VM gebruikt, logt u in op het systeem om de CLI te configureren. De installatiestappen verschillen afhankelijk van het besturingssysteem dat u gebruikt. Er zijn verschillende OS-opties beschikbaar in officiële documenten van AWSHier.
Aangezien ik Windows gebruik, zal ik de installatieoptie voor Windows doorlopen:

  • Download het installatieprogrammaDownload het installatieprogramma vanHier
  • Voer de MSI uit om de CLI te installeren. Standaard wordt het hier geïnstalleerd: C:\Program Files\Amazon\AWSCLIV2
  • Om de installatie te bevestigen, opent u een opdrachtregel en voert u de onderstaande opdracht uit. Het zou de versie moeten uitvoeren

    aws --versie


CLI configureren:De volgende stap is het configureren van de CLI om deze te kunnen gebruiken met een AWS-omgeving. Ik ga een aangepast profiel configureren voor de CLI. U kunt meerdere profielen voor de CLI hebben om verbinding te maken met verschillende omgevingen of gebruikers van hetzelfde systeem. Voer de onderstaande opdrachten uit om de CLI te configureren. Voer desgevraagd de respectieve toegangssleutels in die in een eerdere stap van de IAM-gebruiker zijn genoteerd.

aws configure --profile blogprofiel


Dat voltooit de configuratie van de CLI op uw systeem. Nu is de CLI klaar om verbinding te maken met de AWS-instantie om resources te beheren.

CloudFormation-stappen

We zullen enkele stappen uitvoeren via CLI om verschillende Cloudformation-functies uit te voeren:

  • Start een nieuwe Cloudformation Stack om de bronnen in AWS te maken
  • Controleer de status en lees uitvoer van de stapel
  • Werk de stapel bij om een ​​van de resources bij te werken
  • Controleer de Drift-status voor de stapel
  • Verwijder de stapel om de hele architectuur naar beneden te halen

Voordat u begint, kloont u mijn Github-repo op uw lokale computer en navigeert u naar de map. Dat zou het voorbeeld Cloudformation-sjabloon moeten bevatten.

Start de stapel

Voer de onderstaande opdracht uit om de stapel te starten:

aws cloudformation create-stack --stack-name myteststack --template-body file://deploy_ec2_network_v1.json --parameters ParameterKey=KeyP,ParameterValue=key1 ParameterKey=InstanceType,ParameterValue=t2.micro --profile blogprofile

Hiermee wordt het maken van de stapel gestart en wordt de stapel-ID uitgevoerd. Noteer de Stack-ID voor de volgende opdrachten:


Dit zijn de parameters die worden doorgegeven met de opdracht:

  • Stapel naam: De naam van de aan te maken stapel
  • Sjabloon lichaam: De bestandsnaam van het CF-sjabloon wordt doorgegeven. Als het zich in een andere map bevindt dan de huidige, geef dan het absolute bestandspad van dat bestand op
  • Parameters: Hier geven we twee parameters door: SSH-sleutelnaam en het instantietype. Dit zijn de parameters die zijn geconfigureerd in de Cloudformation-sjabloon en dienen als invoerparameters voor de stapel. De parameters die hier worden doorgegeven, zijn afhankelijk van de id die is gedefinieerd in de CF-sjabloon en veranderen dienovereenkomstig.
  • Profiel: Het aangepaste AWS-profiel dat we hierboven hebben gemaakt

Dit zijn de meest elementaire parameters die moeten worden doorgegeven met de opdracht voor het maken van de stapel. Er zijn ook enkele andere parameters die kunnen worden doorgegeven om andere aspecten van het maken van de stapel te regelen, zoals wat te doen bij fouten, time-outconfiguratie enz. Maar voor dit voorbeeld zal ik deze basisopties gebruiken.

Controleer de status van de stapel

Voer de onderstaande opdracht uit om de status van de creatie te controleren. Geef de Stack-ID door die we eerder hebben gekopieerd als invoer:

aws cloudformation description-stacks --stack-name  --profile blogprofile

Dit zal de status van het maken van de stapel uitvoeren

Controleer de AWS-webconsole om te bevestigen dat de bronnen zijn gemaakt.

Stapel creatie

Instantie gemaakt

Haal het IP-exemplaar op dat door de CloudFormation-stack is gelanceerd

Voer de onderstaande opdracht uit om het IP-adres van de instantie op te halen dat is gelanceerd als onderdeel van de Cloudformation-stack. Geef de Stack ID die we eerder hebben gekopieerd door als invoer. De uitvoerstap was al gespecificeerd in de Cloudformation-stacksjabloon, dus het IP-adres wordt als uitvoer verzonden.

aws cloudformation description-stacks --stack-name  --query Stacks[0].Outputs[1].OutputValue --profile blogprofile


In de CF-sjabloon is de uitvoerstap gespecificeerd om het IP-adres te retourneren na het maken van de stapel:

Voer deze opdracht uit om de hele uitvoer te zien met verschillende informatie over de stapel:

aws cloudformation description-stacks --stack-name  --profile blogprofile

Het zou de volledige informatie over de stapel moeten tonen:

Controleer de driftstatus van de stapel

Er zijn gevallen waarin iemand de stackbronnen van de AWS-webconsole of buiten Cloudformation kan wijzigen. Deze wijzigingen maken het moeilijk om bij te houden wanneer en hoe de bronnen zijn gewijzigd, omdat ze niet via de Cloudformation-stack zijn gedaan. Voor dergelijke scenario's biedt Cloudformation een functie genaamd Drift Status. Indien aangevinkt, wordt weergegeven of de bronnen zich in een andere staat bevinden dan de staat die in de stapel is gedefinieerd. Om de driftstatus te controleren, moeten we eerst een bron bijwerken vanaf de webconsole. Werk de beveiligingsgroep bij die deel uitmaakt van de stapel en voeg er een nieuwe poortregel aan toe (open poort 5000).

Voer de onderstaande opdracht uit om de driftstatus te controleren:

aws cloudformation detect-stack-drift --stack-name  --profile blogprofile

Dit initieert het Drift-detectieproces. Voer de onderstaande opdracht uit om de statusuitvoer te controleren:

aws cloudformatie description-stack-resource-drifts --stack-name  --profile blogprofile

Dit zal de driftstatus van alle stackresources uitvoeren. Het veld 'StackResourceDriftStatus' toont de status. Voor elke gedrifte bron wordt dienovereenkomstig weergegeven. In dit geval wordt de beveiligingsgroep als gedrift weergegeven.

Verwijder de stapel

Voer de onderstaande opdracht uit om de stapel te verwijderen en alle bronnen van AWS te verwijderen:

aws cloudformation delete-stack --stack-name  --profile blogprofile

Dit initieert het verwijderen van de stapel en de bronnen worden verwijderd:


Hiermee zijn alle stappen afgerond die ik wilde behandelen om het proces van het gebruik van Cloudformation met behulp van CLI te beschrijven.

Conclusie

In dit bericht heb ik zojuist het oppervlak bekrast over de Cloudformation CLI-opdrachten. Er zijn heel veel andere commando's waarmee elk aspect van Cloudformation kan worden bestuurd met behulp van CLI. De commando's die ik heb uitgelegd, zijn enkele nuttige basiscommando's die zullen helpen bij het opbouwen van de kennis van CLI-gebruik van Cloudformation. Ik hoop dat dit bericht iemand helpt om zijn reis met AWS CLI te beginnen. Ik zal hierna een nieuwe AWS-service en het CLI-gebruik ervan bedenken. Als je tot die tijd vragen hebt, neem dan rechtstreeks contact met mij op via de contactpagina.

AWS CLI-serie - Hoe CloudFormation te gebruiken (2024)

FAQs

Why does CloudFormation take so long? ›

AWS CloudFormation is S-L-O-W. CloudFormation can seem slow because it tries very hard not to get into a state where your infrastructure is broken. Both CloudFormation and Terraform try to execute as much in parallel as possible (keeping dependencies between resources in mind).

How to create CloudFormation stack from CLI? ›

Creating a stack

To create a stack you run the [aws cloudformation create\-stack](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/create-stack.html) command. You must provide the stack name, the location of a valid template, and any input parameters.

Which is easier to code Terraform or CloudFormation? ›

1) Code Syntax

The syntax between Terraform and CloudFormation is probably the most apparent major differentiator, as many users are already familiar with writing YAML and JSON-based templates compared to Terraform's HCL syntax. Granted, many users find HCL reasonably straightforward to learn.

How do I find out why CloudFormation failed? ›

Log in to the AWS CloudFormation console (which is part of the AWS Management Console) and open the Events tab to find information on stack creation, updates, and deletions. If the stack fails to create, information on the Events tab usually gives you a general idea what has gone wrong.

How can I make CloudFormation faster? ›

Stack Dependencies

CloudFormation deploys resources in a specific order, considering dependencies between resources. If your stack has a large number of resources or complex interdependencies, it can significantly impact the deployment time. Analyzing and optimizing these dependencies can help speed up deployments.

How long does CloudFormation take to time out? ›

The stack essentially just stays in the UPDATE_IN_PROGRESS state until it hits the default timeout (~3 hours), or you trigger a Cancel the update.

Does CloudFormation use AWS CLI? ›

Throughout the series we'll use the AWS CLI to verify and deploy our CloudFormation templates, check the progress and output of our stack, delete the stack, and wait for transitions in its state so we can easily chain commands.

How do I increase my CloudFormation stack limit? ›

Maximum number of stack instances you can create per stack set. To create more stack instances, delete stack instances that you don't need or request an increase in the maximum number of stack instances in your AWS account. For more information, see AWS service quotas in the AWS General Reference.

What are the disadvantages of CloudFormation? ›

Cons of AWS CloudFormation

It is poor at handling traffic. Due to increased traffic, you sometimes have to remove the stacks manually. Its documentation is quite ardent to understand for amateurs or beginners. With AWS CFT, you can delete all the resources of a stack but it does not delete the S3 bucket.

Why choose Terraform over CloudFormation? ›

In CloudFormation, it is possible to manage so-called “custom resources” by using an AWS Lambda function of your own creation as a back end. For Terraform, extensions are much easier to write and form part of the code. So there is an advantage for Terraform in this case. Terraform can handle many cloud vendors.

Should I learn Terraform or CloudFormation? ›

If you are looking to provision services on multiple cloud platforms, Terraform is your go-to option. While Terraform supports all cloud vendors like AWS, GCP, Azure, and many others, CloudFormation is confined only to AWS. So, in case your environment involves multiple cloud deployments, Cloudformation is not for you.

What happens if CloudFormation fails? ›

CloudFormation will continue to provision the resources until completion or stop on a different failure. Remediate any issues to continue the deployment process. CloudFormation performs the necessary updates before retrying provisioning actions on resources that couldn't be successfully provisioned earlier.

What happens when CloudFormation stack creation fails? ›

CloudFormation automatically rolls back on unsuccessful creation or update of a resource. Since there is no state before a stack is created, rolling back a stack on a failed creation results in the stack existing with no state. A non-existent state cannot be updated.

What happens when a CloudFormation stack fails? ›

If, during the creation or update of a CloudFormation Stack a failure occurs, rather than rolling back the creation or update of the stack, the current state is maintained.

Is Terraform or CloudFormation faster? ›

Scope. CloudFormation covers most parts of AWS and needs some time to support new service capabilities. Terraform covers most AWS resources as well and is often faster than CloudFormation when it comes to supporting new AWS features. On top of that, Terraform supports other cloud providers as well as 3rd party services ...

How long does it take to complete AWS cloud? ›

How long does it take to become AWS certified? With a full-time job and other commitments, investing 80 hours of study usually takes two months. If you are entirely new to AWS, we recommend approximately 120 hours or three months to prepare.

Is CloudFormation better than Terraform? ›

A benefit of Terraform is increased flexibility over CloudFormation with regards to modularity. Terraform modules can be pulled in for any provider supported, or organizations can roll their own.

Why Terraform instead of CloudFormation? ›

If you are looking to provision services on multiple cloud platforms, Terraform is your go-to option. While Terraform supports all cloud vendors like AWS, GCP, Azure, and many others, CloudFormation is confined only to AWS. So, in case your environment involves multiple cloud deployments, Cloudformation is not for you.

References

Top Articles
Latest Posts
Article information

Author: Barbera Armstrong

Last Updated:

Views: 5677

Rating: 4.9 / 5 (59 voted)

Reviews: 82% of readers found this page helpful

Author information

Name: Barbera Armstrong

Birthday: 1992-09-12

Address: Suite 993 99852 Daugherty Causeway, Ritchiehaven, VT 49630

Phone: +5026838435397

Job: National Engineer

Hobby: Listening to music, Board games, Photography, Ice skating, LARPing, Kite flying, Rugby

Introduction: My name is Barbera Armstrong, I am a lovely, delightful, cooperative, funny, enchanting, vivacious, tender person who loves writing and wants to share my knowledge and understanding with you.