በአማዞን ድር አገልግሎቶች (AWS) ላይ አፕሊኬሽኖችን ስለመፍጠር አጋዥ ስልጠና

በአማዞን የድር አገልግሎቶች (AWS) ላይ አፕሊኬሽኖችን ስለመፍጠር አጋዥ ስልጠና

የአማዞን ድር አገልግሎቶች (AWS) በዓለም ላይ በጣም ታዋቂ ከሆኑ የደመና ማስላት መድረኮች አንዱ ነው። በAWS፣ አካላዊ አገልጋዮችን ሳይገዙ፣ የአገልጋይ ቦታ ሳያዘጋጁ ወይም የራስዎን መሠረተ ልማት ሳይጠብቁ መተግበሪያዎችን መገንባት እና ማስኬድ ይችላሉ። ይህ ጽሑፍ በAWS ላይ ቀላል መተግበሪያን በመፍጠር ረገድ ይረዳዎታል፡- የድር መተግበሪያን በኮምፒውተር አገልግሎቶች (EC2)፣ በአማራጭ የሚተዳደር የውሂብ ጎታ (RDS) በመጠቀም ማሰማራት፣ እና አስፈላጊ ከሆነ ማከማቻ እና ጎራ። የሚከተለው ምሳሌ አጠቃላይ ቢሆንም፣ ለብዙ አይነት መተግበሪያዎች መተግበር ይችላሉ።

-

1. የመጀመሪያ ዝግጅት፡- ሂሳቦች እና መሰረታዊ ፅንሰ ሀሳቦች

ከመጀመርዎ በፊት የAWS መለያ እንዳለዎት ያረጋግጡ። ብዙ የAWS አገልግሎቶች ለልምምድ ፍጹም የሆነ ነፃ ደረጃ (በተወሰነ ገደብ ውስጥ ነፃ) ያቀርባሉ።

መረዳት ያለብዎት አንዳንድ አስፈላጊ ፅንሰ ሀሳቦች፡-

– ክልል፡ የAWS የውሂብ ማዕከል አካባቢ (ለምሳሌ፡ ሲንጋፖር/ap-southeast-1)። ለዝቅተኛ መዘግየት በጣም ቅርብ የሆነውን ክልል ይምረጡ።
– IAM (የመታወቂያ እና የመዳረሻ አስተዳደር)፡ የመዳረሻ አስተዳደር ስርዓት። ምርጥ ልምምድ፡- ለዕለታዊ ስራ የስር አካውንቱን አይጠቀሙ።
– VPC (ቨርቹዋል ፕራይቬት ክላውድ): አገልግሎቶችዎ የሚሄዱበት ምናባዊ አውታረ መረብ።
– የደህንነት ቡድን፡- ከአገልጋዩ የሚመጣ/የሚወጣ መዳረሻን የሚቆጣጠር “ፋየርዎል”።

እነዚህን አራት ነገሮች በመረዳት፣ የAWS መሰረታዊ ነገሮችን ማሰስ በጣም ቀላል ይሆንልዎታል።

-

2. የአይኤኤም ተጠቃሚዎችን ይፍጠሩ እና መለያዎችን ይጠብቁ

ደህንነት ሁልጊዜም የእኛ ቁጥር አንድ ቅድሚያ የሚሰጠው ጉዳይ ነው። ወደ AWS ኮንሶል እንደ ስርወ ይግቡ፣ ከዚያ፦

1. የአይኤኤም አገልግሎትን ይክፈቱ።
2. አዲስ ተጠቃሚ ይፍጠሩ (ለምሳሌ `admin-dev`) እና ለAWS አስተዳደር ኮንሶል የተጠቃሚ መዳረሻ ይስጡን ያረጋግጡ።
3. ፈቃድ ይስጡ፡ ለተግባር AdministratorAccess ን መጠቀም ይችላሉ (ምንም እንኳን በእውነተኛ ፕሮጀክቶች ውስጥ የበለጠ ውስን መሆን አለበት)።
4. ደህንነትን ለመጨመር MFA (ባለብዙ-ፋክተር ማረጋገጫ) ን ያንቁ።

አንዴ ከጨረሱ በኋላ፣ ከስር ይውጡ እና አዲስ የተፈጠረውን የIAM ተጠቃሚ በመጠቀም ይግቡ።

-

3. የማመልከቻውን አወቃቀሩን ይወስኑ

ለዚህ አጋዥ ስልጠና፣ ቀላል የሆነ አርክቴክቸር እንገነባለን፡

– EC2፡ የድር መተግበሪያዎችን ማሄድ (ለምሳሌ Node.js/Express፣ Python Flask ወይም PHP)።
– አማራጭ RDS፡- MySQL/PostgreSQL ዳታቤዝ የሚተዳደር ሲሆን ይህም ውሂቡ በንጽህና እንዲከማች ያደርጋል።
- S3 (አማራጭ): እንደ ምስሎች፣ ሰነዶች ወይም ምትኬዎች ያሉ የማይንቀሳቀሱ ፋይሎችን ያከማቻል።
– መንገድ 53 (አማራጭ): ጎራዎችን ያቀናብሩ።
– CloudWatch፡ መሰረታዊ ክትትል።

ገና እየጀመሩ ከሆነ፣ አፕሊኬሽኖችዎን መጀመሪያ ለማስኬድ በEC2 ላይ ያተኩሩ።

-

4. የ EC2 አገልጋይ ይፍጠሩ

ሀ) ምሳሌ ይፍጠሩ
1. ወደ EC2 አገልግሎት ይግቡ።
2. የLaunch Instance ን ጠቅ ያድርጉ።
3. ስርዓተ ክወና ይምረጡ፣ ለምሳሌ የኡቡንቱ አገልጋይ 22.04 LTS።
4. የምሳሌውን አይነት ይምረጡ፡ ለነፃ ደረጃ `t2.micro` ወይም `t3.micro` (እንደ አቅርቦቱ ሁኔታ) ይጠቀሙ።
5. የቁልፍ ጥንድ ይፍጠሩ ወይም ይምረጡ (ለምሳሌ `aws-key.pem`)። የ`.pem` ፋይሉን ደህንነቱ በተጠበቀ ሁኔታ ያስቀምጡት ምክንያቱም ለSSH ጥቅም ላይ ይውላል።

ለ) የኔትወርክ እና የፋየርዎል ውቅር
- ምሳሌው በነባሪው VPC ውስጥ መሆኑን ያረጋግጡ (ለተግባር ብቻ)።
- የደህንነት ቡድን ያዘጋጁ:
– ወደብ 22 (SSH) ከእርስዎ አይፒ (ለምሳሌ `የእኔ አይፒ`) ብቻ
– የ`0.0.0.0/0` ወደብ 80 (HTTP) (ይፋዊ)
– በኋላ ላይ SSLን የሚጠቀሙ ከሆነ ከ`0.0.0.0/0` ወደብ 443 (HTTPS)

ማሳሰቢያ፡ SSHን ለሕዝብ መክፈት አደገኛ ነው። ሁልጊዜ የአይፒ አድራሻዎችን ይገድቡ።

አስጀምርን ጠቅ ያድርጉ እና ኢንሳዩ እስኪሰራ ድረስ ይጠብቁ።

-

5. በSSH በኩል ወደ አገልጋይ ይግቡ

በዊንዶውስ ላይ WSL ወይም PuTTY መጠቀም ይችላሉ። በማክሮስ/ሊኑክስ ላይ፣ በቀጥታ ከተርሚናል ማድረግ ይችላሉ።

1. የፈቃድ ቁልፍን ይቀይሩ፡
"`ባሽ
chmod 400 aws-key.pem
“
2. ወደ አገልጋዩ SSH (ከ EC2 የህዝብ IPv4 ይጠቀሙ):
"`ባሽ
ssh -i aws-key.pem ubuntu@PUBLIC_IP
“

ከተሳካ፣ በAWS Ubuntu አገልጋይ ላይ ነዎት።

-

6. የድር አገልጋይ እና የመተግበሪያ አሂድ ጊዜን ይጫኑ

ለዘመናዊው ድር በስፋት ጥቅም ላይ ስለሚውል የNode.js መተግበሪያ ምሳሌ ይኸውና።

ሀ) ጥገኛዎችን ማዘመን እና መጫን
"`ባሽ
sudo apt update && sudo apt ማላቅ -ይ
sudo apt install -y curl git
“

ለ) Node.js (የLTS ስሪት) ጫን
"`ባሽ
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash –
sudo apt install -y nodejs
ኖድ -ቪ
npm -v
“

-

7. ቀላል መተግበሪያ ይፍጠሩ

የፕሮጀክት አቃፊ ይፍጠሩ፡

"`ባሽ
mkdir myapp && cd myapp
npm init -y
npm install ኤክስፕረስ
“

የ`index.js` ፋይል ይፍጠሩ፦

“`js
ኮንስት ኤክስፕረስ = ያስፈልጋል("ኤክስፕረስ");
const መተግበሪያ = ኤክስፕረስ ();

app.get(“/”, (req, res) => {
res.send(“ሰላም! መተግበሪያዎ በAWS EC2 ላይ እየሰራ ነው።”)፤
});

app.listen(3000, () => console.log(“በፖርት 3000 ላይ የሚሰራ አገልጋይ”));
“

መተግበሪያውን ያሂዱ፦

"`ባሽ
ኖድ ኢንዴክስ.ጄኤስ
“

ከአሳሽ ለመድረስ ይሞክሩ፦
– `http://PUBLIC_IP:3000`

ሆኖም ግን፣ ወደብ 3000 በአሁኑ ጊዜ በደህንነት ቡድን ውስጥ ክፍት አይደለም። የሚከተሉትን ማድረግ ይችላሉ፦
1) በደህንነት ቡድን ውስጥ ወደብ 3000 ክፍት ነው፣ ወይም
2) አፕሊኬሽኑ በውስጣዊ ወደብ ላይ እንዲቆይ ነገር ግን በፖርት 80/443 በኩል እንዲደረስበት የተገላቢጦሽ ፕሮክሲ (ይበልጥ የሚመከር) ይጠቀሙ።

-

8. Nginxን እንደ ተገላቢጦሽ ፕሮክሲ መጠቀም (በፖርት 80 በኩል መድረስ)

Nginx ን ጫን
"`ባሽ
sudo apt install -y nginx
sudo systemctl nginx ን አንቃ
sudo systemctl ጅምር nginx
“

የNginx ውቅር ያዋቅሩ፦
"`ባሽ
sudo nano /etc/nginx/sites-available/myapp
“

የውቅር ይዘት፡
"`nginx
ሰርቨር {
አዳምጥ 80;
የአገልጋይ_ስም _;

አካባቢ / {
የፕሮክሲ_ማለፊያ http://127.0.0.1:3000፤
ፕሮክሲ_http_ስሪት 1.1;
proxy_set_header አሻሽል $http_upgrade;
የ proxy_set_header ግንኙነት 'ማሻሻያ'፤
proxy_set_header አስተናጋጅ $ አስተናጋጅ;
የፕሮክሲ_ካሼ_ባይፓስ $http_upgrade;
}
}
“

ውቅርን አንቃ፦
"`ባሽ
sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl ዳግም ይጫኑ nginx
“

አሁን ይድረሱበት፦
– `http://PUBLIC_IP/`

አፕሊኬሽኑ በፖርት 3000 ላይ ይሰራል ነገር ግን ህዝቡ በፖርት 80 በኩል ይደርስበታል።

-

9. መተግበሪያዎችን በPM2 ያለማቋረጥ ማስኬድ

ኤስኤስኤች ሲቋረጥ አፕሊኬሽኑ እንዳይበላሽ ለመከላከል PM2 ን ይጠቀሙ፡

"`ባሽ
sudo npm install -g pm2
pm2 start index.js –name myapp
pm2 አስቀምጥ
pm2 ጅምር
“

የ`pm2 ጅምር` ትዕዛዝ ተጨማሪ መመሪያዎችን ይሰጣል። አገልጋዩ እንደገና ሲጀምር አፕሊኬሽኑ በራስ-ሰር እንዲሄድ የሚታየውን ትዕዛዝ ያሂዱ።

-

10. (አማራጭ) ከ RDS ጋር የውሂብ ጎታ ማከል

መተግበሪያዎ የውሂብ ጎታ የሚፈልግ ከሆነ፣ AWS ምትኬዎችን፣ ጥገናዎችን እና ልኬትን ስለሚያስተዳድር RDS ቀላል ያደርገዋል።

አጭር ደረጃዎች:
1. የRDS አገልግሎትን ይክፈቱ → የውሂብ ጎታ ይፍጠሩ።
2. MySQL ወይም PostgreSQL ይምረጡ (ነፃ የደረጃ ህጎች በተወሰኑ ውቅሮች ላይ ይገኛሉ)።
3. የተጠቃሚ ስም/የይለፍ ቃል ያዘጋጁ።
4. የ RDS ምሳሌ ከ EC2 ጋር በተመሳሳይ VPC ውስጥ መሆኑን ያረጋግጡ።
5. የ RDS የደህንነት ቡድን ከ EC2 የደህንነት ቡድን (ከህዝብ ሳይሆን) ግንኙነቶችን ብቻ እንዲቀበል ያቀናብሩ።

የውሂብ ጎታው በቀጥታ ከተለቀቀ በኋላ የ RDS የመጨረሻ ነጥብን ይያዙ እና የውሂብ ጎታ ነጂውን በመጠቀም ከመተግበሪያዎ ጋር ያገናኙት።

-

11. (አማራጭ) HTTPSን በSSL ሰርተፊኬት ያንቁ

ለምርት፣ HTTPS ግዴታ ነው። የተለመደ ዘዴ፦
– ጎራ ይጠቀሙ (ለምሳሌ ከ Route 53 ወይም ከሌላ መዝጋቢ)።
– በEC2 ላይ በLet's Encrypt (Certbot) በኩል SSL ን ይጫኑ።

ባጭሩ፦
"`ባሽ
sudo apt install -y certbot python3-certbot-nginx
sudo certbot –nginx
“

ጎራ ለመምረጥ እና የHTTPS አቅጣጫ ማዞርን ለማንቃት ጠንቋዩን ይከተሉ።

-

12. ክትትል እና ወጪዎች

AWS እንደ ሲፒዩ፣ ኔትወርክ እና የተወሰኑ ምዝግብ ማስታወሻዎች ያሉ መለኪያዎችን ለማየት CloudWatchን ያቀርባል። እንዲሁም ወጪዎችዎን እንዳያመልጡ መከታተል ያስፈልግዎታል።

አስፈላጊ ምክሮች፡
- በ CloudWatch ውስጥ የክፍያ ማንቂያን ያንቁ (ለምሳሌ ክፍያው ከ $5 በላይ ከሆነ ማንቂያ)።
- ጥቅም ላይ በማይውልበት ጊዜ አብነቱን ያጥፉ።
- ጥቅም ላይ ያልዋሉ ሀብቶችን ያስወግዱ (የጭነት ሚዛን መቆጣጠሪያዎች፣ EBS፣ የመለጠጥ አይፒዎች፣ ቅጽበታዊ ገጽ እይታዎች) ምክንያቱም አሁንም ወጪዎችን ሊያስከትሉ ይችላሉ።

-

መዝጊያ

እንኳን ደስ አላችሁ! በAWS ላይ EC2ን በመጠቀም መተግበሪያን መገንባት፣ የድር መተግበሪያን ማስኬድ፣ የNginx ተገላቢጦሽ ፕሮክሲ ማዘጋጀት እና ሁልጊዜ በPM2 መስራትን መሰረታዊ ነገሮችን ተምረዋል ። ​​እንዲሁም እንደ የውሂብ ጎታ RDS፣ የማከማቻ S3 እና የHTTPS የምስክር ወረቀቶች ያሉ ተጨማሪ አገልግሎቶችን አጠቃላይ እይታ አግኝተዋል።

ደረጃውን ከፍ ማድረግ ከፈለጉ፣ የሚከተሉት እርምጃዎች ብዙውን ጊዜ የሚከተሉት ናቸው፡
- በCI/CD (GitHub Actions + SSH፣ ወይም AWS CodeDeploy) በራስ-ሰር ማሰማራት፣
– ከዶከር ጋር ኮንቴይነሮችን እና እንደ ECS ወይም EKS ያሉ ኦርኬስትራዎችን መጠቀም፣
- ከ Lambda + API Gateway ጋር አገልጋይ አልባ አርክቴክቸር መጠቀም።

ከፈለጉ፣ እባክዎ እየገነቡት ያለውን የመተግበሪያ አይነት (Node.js፣ Laravel፣ Django፣ React፣ ወዘተ) እና የታሰበውን ዓላማ (ማሳያ፣ ፕሮዳክሽን፣ ትልቅ ደረጃ) ይግለጹ። አጋዥ ስልጠናውን በተለዩ ደረጃዎች ማበጀት እችላለሁ።

አስተያየት ይስጡ