I denne artikel vil jeg diskutere, hvordan man opsætter en MySQL-instans på AWS RDS ved hjælp af Cloud Formation-skabeloner. I min tidligere artikel, Sådan konfigurerer du et Amazon RDS-miljø til MySQL, har jeg givet en detaljeret gennemgang af, hvordan du opsætter en MySQL-instans på Amazon. Du kan bruge AWS-konsollen til at give alle de oplysninger, der kræves for at konfigurere forekomsten og derefter bruge den. Men i denne artikel vil vi diskutere en automatiseret måde at opnå de samme funktionaliteter ved hjælp af Cloud Formation-skabeloner.
Hvad er en CloudFormation-skabelon?
For at begynde at skrive skabelonerne skal vi først forstå, hvad skydannelse handler om. AWS tilbyder Cloud Formation som en cloud-tjeneste, der gør det muligt for AWS-kunder at skrive den ønskede tilstand af enhver infrastruktur som en kode og derefter bruge den til at implementere ressourcer til AWS. Det giver os mulighed for at oprette en ressource eller en gruppe af ressourcer ved at følge simple konfigurationsskabeloner. For eksempel, hvis du ønsker at implementere en webapplikation på en EC2-instans, der også vil bruge en RDS-database, kan du blot kombinere begge ressourcer i én stak og skrive koden til opsætning af instanserne. Når du har kørt, vil den oprette både EC2- og RDS-forekomsten og også implementere din webapplikation.
Figur 1 – CloudFormation-skabelon på AWS-konsol
Komponenterne i en skyformationsskabelon er som følger:
- En JSON eller YAML fil, hvori ressourcerne vil blive defineret som en skabelon
- En stak kan være en kombination af flere ressourcer, der skulle konfigureres som en del af applikationen. For f.eks. EC2 og RDS
- Et ændringssæt kan bruges til at se en liste over handlinger, der skal udføres af stakken
- Et stak sæt kan også betragtes som en administreret gruppe af stakke, der reproduceres eller replikeres
Ud af ovenstående vil vi hovedsageligt fokusere på JSON/YAML-skabelonen og stakken i denne artikel. Skabelonerne understøtter en lang række ressourcer på AWS. Følg dette link for at få en udtømmende liste.
Skrivning af JSON- eller YAML-skabelonfilen
En af de største udfordringer, vi står over for, når vi skriver en skabelon for første gang, er, hvilket indhold der skal inkluderes i den. For at lette, at AWS leverer en masse skabeloneksempler som nemt kan findes i den officielle dokumentation. Når du har fundet den skabelon, der kræves for at oprette en nødvendig ressource, kan du bruge den til at oprette din egen skabelon. Skabelonen kan enten oprettes ved hjælp af JSON eller YAML og også konverteres fra den ene til den anden. På en personlig note foretrækker jeg at skrive skabelonerne ved hjælp af YAML, da det hjælper mig med at holde mig væk fra de krøllede seler og kommaer og holder dokumentet renere. Du kan dog frit vælge enhver mulighed mellem JSON og YAML.
Til denne øvelse, lad os prøve at spinne en MySQL-instans op på RDS, og vi vil skrive koden i YAML. For at opsætte en MySQL-database ved hjælp af cloud-formation, skal vi bruge følgende elementer.
- Ressourcenavn – Navnet på den ressource, du vil konfigurere.
- Ressourcetype – Typen af ressource.
- Ressourceegenskaber – Databasenavnet, brugernavnet og adgangskoden, der skal oprettes forbindelse til.
- Databasemotoren – MySQL, SQL Server, PostgreSQL osv.
- Opbevaringstype – Den lagertype, der skal bruges.
- Offentlig tilgængelighed – Om databasen skal have offentlig adgang eller ej.
- Tildelt hukommelse – Den hukommelse, der skal allokeres til databaseinstansen.
- AWS-region – Den region, hvor instansen skal oprettes.
Nu hvor vi har nogle punkter med os, lad os gå videre og starte med at skrive skabelonfilen.
https://gist.github.com/aveek22/a188b02abde65479bbba2deba5ec90d6
Figur 2 – Skabelonfilen til oprettelse af MySQL-instans på RDS
Som du kan se på figuren ovenfor, er strukturen af filen opdelt i to dele. I den første del har vi defineret nogle få parametre, som vil blive brugt af ressourcedefinitionerne i den anden del, mens ressourcerne oprettes på AWS. Du kan bruge det samme script på din maskine til at oprette en instans på din AWS-konto.
Opsætning af stakken på konsollen
Nu hvor vi har lavet vores skabelon til MySQL, er det på tide, at vi sætter den op for at se, om alt kører godt. Gå over til AWS-konsollen og søg efter Cloud Formation på søgelinjen. Klik på Opret stak og upload skabelonfilen fra din lokale. Klik på Næste når det er gjort.
Figur 3 – Oprettelse af stakken fra skabelonen
På næste side bliver du bedt om at angive de parametre, der blev defineret i skyformationsskabelonen. Gå videre og angiv de nødvendige oplysninger, og klik på Næste .
Figur 4 – Stak-parametre angivet
Gennemgå stakændringerne og parametrene, og klik på Opret stak på sidste side. Oprettelsen af stakken starter. Det kan tage lidt tid at oprette alle ressourcerne, før de er tilgængelige til brug. I mellemtiden kan du klikke på Genindlæs knappen for at kontrollere, om alle begivenhederne er blevet oprettet.
Figur 5 – Stakoprettelse i gang
Som du kan se på tidsstemplerne, tog det mig omkring 6 minutter, hvorefter ressourcerne var tilgængelige og også var synlige på konsollen. Naviger til Ressourcer fanen og klik på Fysisk ID af ressourcen. Dette fører dig til RDS-konsollen.
Figur 6 – Stak oprettet med succes
Tilslutning af MySQL-databasen
Når du er i RDS-konsollen, kan du få værtsnavnet for databaseforekomsten og bruge det til at oprette forbindelse til databasen. Grib slutpunktet fra konsollen og brug den til at oprette forbindelse.
Figur 7 – MySQL-instansdetaljer på RDS
Lad os nu gå over til MySQL Workbench og prøve at oprette forbindelse til værtsnavnet med de legitimationsoplysninger, som vi har givet tidligere. Brug værtsnavnet, brugernavnet og adgangskoden til at oprette forbindelse til forekomsten.
Figur 8 – Tilslutning til MySQL-instansen ved hjælp af MySQL Workbench
Som du kan se i figuren ovenfor, har vi med succes oprettet forbindelse til databaseinstansen på RDS. Lad os nu køre nogle forespørgsler og se, om det virker.
Figur 9 – Udførelse af scripts i MySQL Workbench
Som du kan se i figuren ovenfor, har vi været i stand til at oprette forbindelse til databaseinstansen og udføre forespørgsler. Med dette er du i stand til at skrive din egen skyformationsskabelon og spinne andre ressourcer op som SQL Server eller PostgreSQL-databasen.
Fjernelse af ressourcerne
Hvis du udfører dette som en øvelse, vil jeg anbefale at fjerne de ressourcer, vi har oprettet, da det vil medføre nogle gebyrer. Du kan navigere til RDS-konsollen og derefter vælge forekomsten og klikke på Slet for at fjerne ressourcerne permanent.
Figur 10 – Sletning af de oprettede ressourcer
Når ressourcerne er blevet slettet, kan du igen tjekke i konsollen, om der er nogen forekomster, der kører bare for at undgå at tilføje unødvendige faktureringsomkostninger.
Konklusion
I denne artikel har vi diskuteret i detaljer, hvordan man opsætter en MySQL-databaseinstans i et AWS RDS-miljø og automatiserer det ved hjælp af Cloud Formation-skabelonen. På denne måde, hvis opsætning af ressourcer på skyen er også kendt som infrastruktur-som-kode-tjeneste, hvor du kan opsætte hele infrastrukturen som kode og derefter bruge den i forskellige miljøer. Disse skabeloner kan ikke kun bruges til at implementere databaseforekomster, men også andre infrastrukturer inden for AWS, såsom EC2, Lambda, RedShift osv. For at lære mere om skyformationsskabelonerne kan du se eksempler på skabeloner, der er tilgængelige på det officielle websted.