I den här artikeln kommer jag att diskutera hur man ställer in en MySQL-instans på AWS RDS med hjälp av Cloud Formation-mallar. I min tidigare artikel, Hur man konfigurerar en Amazon RDS-miljö för MySQL, har jag gett en detaljerad genomgång av hur man ställer in en MySQL-instans på Amazon. Du kan använda AWS-konsolen för att tillhandahålla all information som krävs för att ställa in instansen och sedan använda den. Men i den här artikeln kommer vi att diskutera ett automatiserat sätt att uppnå samma funktioner med hjälp av molnformationsmallar.
Vad är en CloudFormation-mall?
För att börja skriva mallarna måste vi först förstå vad molnbildning handlar om. AWS erbjuder Cloud Formation som en molntjänst som gör det möjligt för AWS-kunder att skriva önskat tillstånd för vilken infrastruktur som helst som en kod och sedan använda den för att distribuera resurser till AWS. Det låter oss skapa en resurs eller en grupp av resurser genom att följa enkla konfigurationsmallar. Om du till exempel vill distribuera en webbapplikation på en EC2-instans som också kommer att använda en RDS-databas, kan du helt enkelt kombinera båda resurserna i en stack och skriva koden för att ställa in instanserna. När du väl kört kommer den att skapa både EC2- och RDS-instansen och även distribuera din webbapplikation.
Figur 1 – CloudFormation-mall på AWS-konsolen
Komponenterna i en molnformationsmall är följande:
- En JSON eller YAML fil där resurserna kommer att definieras som en mall
- En stack kan vara en kombination av flera resurser som måste ställas in som en del av programmet. För t.ex. EC2 och RDS
- En ändringsuppsättning kan användas för att se en lista över operationer som ska utföras av stacken
- En stackuppsättning kan också betraktas som en hanterad grupp av stackar som reproduceras eller replikeras
Av ovanstående kommer vi främst att fokusera på JSON/YAML-mallen och stacken i den här artikeln. Mallarna stöder ett brett utbud av resurser på AWS. Följ den här länken för att få en uttömmande lista.
Skriver JSON- eller YAML-mallfilen
En av de största utmaningarna som vi står inför när vi skriver en mall för första gången är vilket innehåll som ska ingå i den. För att underlätta att AWS tillhandahåller många mallprover som enkelt kan hittas i den officiella dokumentationen. När du har hittat mallen som krävs för att skapa en nödvändig resurs kan du använda den för att skapa din egen mall. Mallen kan antingen skapas med JSON eller YAML och konverteras från en till en annan också. På ett personligt sätt föredrar jag att skriva mallarna med YAML eftersom det hjälper mig att hålla mig borta från lockiga hängslen och kommatecken och håller dokumentet renare. Du är dock fri att välja valfritt alternativ mellan JSON och YAML.
För den här övningen, låt oss försöka snurra upp en MySQL-instans på RDS och vi kommer att skriva koden i YAML. För att sätta upp en MySQL-databas med hjälp av molnbildning skulle vi behöva följande artiklar.
- Resursnamn – Namnet på resursen du ska ställa in.
- Resurstyp – Typen av resurs.
- Resursegenskaper – Databasnamnet, användarnamnet och lösenordet att ansluta till.
- Databasmotorn – MySQL, SQL Server, PostgreSQL, etc.
- Lagringstyp – Lagringstypen som ska användas.
- Allmän tillgänglighet – Om databasen ska ha allmän tillgång eller inte.
- Tilldelat minne – Minnet som ska allokeras till databasinstansen.
- AWS-region – Regionen där instansen ska skapas.
Nu när vi har några poäng med oss, låt oss gå vidare och börja med att skriva mallfilen.
https://gist.github.com/aveek22/a188b02abde65479bbba2deba5ec90d6
Figur 2 – Mallfilen för att skapa MySQL-instanser på RDS
Som du kan se i figuren ovan är filens struktur uppdelad i två delar. I den första delen har vi definierat några parametrar som kommer att användas av resursdefinitionerna i den andra delen när vi skapar resurserna på AWS. Du kan använda samma skript på din dator för att skapa en instans på ditt AWS-konto.
Ställa in stacken på konsolen
Nu när vi har skapat vår mall för MySQL är det dags att vi ställer in den för att se om allt fungerar som det ska. Gå över till AWS-konsolen och sök efter Cloud Formation i sökfältet. Klicka på Skapa stack och ladda upp mallfilen från din lokala. Klicka på Nästa en gång gjort.
Figur 3 – Skapa stacken från mallen
På nästa sida kommer du att bli ombedd att ange parametrarna som definierades i molnformationsmallen. Fortsätt och ange nödvändig information och klicka på Nästa .
Figur 4 – Stackparametrar tillhandahålls
Granska stackändringarna och parametrarna och klicka på Skapa stack på sista sidan. Skapandet av högen börjar. Det kan ta lite tid att skapa alla resurser innan de är tillgängliga att använda. Under tiden kan du klicka på knappen Ladda om för att kontrollera om alla händelser har skapats framgångsrikt.
Figur 5 – Stackskapande pågår
Som du kan se på tidsstämplarna tog det mig cirka 6 minuter varefter resurserna var tillgängliga och även synliga på konsolen. Navigera till Resurser fliken och klicka på Fysiskt ID av resursen. Detta tar dig till RDS-konsolen.
Figur 6 – Stack skapad framgångsrikt
Ansluta MySQL-databasen
När du väl är i RDS-konsolen kan du få värdnamnet för databasinstansen och använda det för att ansluta till databasen. Ta tag i slutpunkten från konsolen och använd den för att ansluta.
Figur 7 – MySQL-instansdetaljer på RDS
Låt oss nu gå över till MySQL Workbench och försöka ansluta till värdnamnet med de referenser som vi har tillhandahållit tidigare. Använd värdnamnet, användarnamnet och lösenordet för att ansluta till instansen.
Figur 8 – Ansluta till MySQL-instansen med MySQL Workbench
Som du kan se i figuren ovan har vi framgångsrikt kopplat till databasinstansen på RDS. Låt oss nu köra några frågor och se om det fungerar.
Figur 9 – Exekvera skript i MySQL Workbench
Som du kan se i figuren ovan har vi kunnat ansluta till databasinstansen och köra frågor. Med detta kan du skriva din egen mall för molnbildning och skapa andra resurser som SQL Server eller PostgreSQL-databasen.
Ta bort resurserna
Om du utför detta som en övning rekommenderar jag att du tar bort resurserna som vi har skapat eftersom det kommer att medföra vissa avgifter. Du kan navigera till RDS-konsolen och sedan välja instansen och klicka på Ta bort för att ta bort resurserna permanent.
Figur 10 – Ta bort de skapade resurserna
När resurserna har raderats framgångsrikt kan du kontrollera i konsolen igen om det finns några instanser som körs bara för att undvika att lägga till onödiga faktureringskostnader.
Slutsats
I den här artikeln har vi diskuterat i detalj hur man ställer in en MySQL-databasinstans i en AWS RDS-miljö och automatiserar den med hjälp av mallen Cloud Formation. På det här sättet kallas det även för infrastruktur-som-kod-tjänst att sätta upp resurser på molnet, där du kan ställa in hela infrastrukturen som kod och sedan använda den i olika miljöer. Dessa mallar kan användas inte bara för att distribuera databasinstanser utan även andra infrastrukturer inom AWS som EC2, Lambda, RedShift, etc. För att lära dig mer om molnformationsmallarna kan du se exempelmallarna som finns tillgängliga på den officiella webbplatsen.