What the AWS? (VPC + λ function + IGW)
2B | +1% better 2day | aws.001
Өнөөдөр хөгжүүлэгч нарын дунд AWS ( монголчилбол “авс” эсвэл “эй-дабл юу-эс”) -ийн талаар сонсоогүй, хэрэглэж үзээгүй хүн үлдээгүй байх. AWS нь хэдий хэрэглэхэд хялбар, бүх боломжуудынх нь талаарх тайлбар (documentation) болон маш олон зааварчилгаа (tutorial) байдаг ч заримдаа хөгжүүлэгч бид нарт ГАЦАХ үе бий.
Энэ тал дээр өөрийн хувь нэмрээ оруулахын тулд надад болон манай багт тулгарсан асуудал, түүний шийдлийн талаар бичиж эхлэхээр сэтгэл шулуудсан би бээр анхны “aws.001” нийтлэлээ та бүхэнд хүргэж байна.
Өнөөдрийн нийтлэлдээ Ламбда функцээс (Lambda Function) RDS өгөгдлийн сантай харилцах болон Алхамт Функцийг (Step Function) дуудах гэсэн даалгаврыг хийх явцад ямар асуудал гарсан, яаж шийдсэн талаар ярих болно. Гэхдээ асуудал болон шийдлийнхээ талаар ярихаасаа өмнө AWS-ийн талаарх ерөнхий ойлголтыг өгөхийг хичээе. Мэддэг нэг нь шууд алгассан ч болно доо :)
Амазон Веб Үйлчилгээ (AWS) нь найдвартай, тэлэх боломжтой, өртөг багатай үүлэн технологи дээр суурилсан үйлчилгээ юм.
Анх AWS үүссэн түүх нь өөрсдийн шинэ бүтээгдэхүүнээ хурдан гаргах, хурдацтай ТОМРОХ зэрэг дахин дахин гарч байсан асуудалтай шууд холбоотой байдаг. Өөрсдийн асуудлуудаа шийдэх гэж хийсэн зүйл нь нэг л өдөр дэлхийг тэр чигээр нь өөрчлөх юм гэж тухайн үедээ хэн ч санаагүй гэдэг.
AWS-ийн гол давуу талуудаас дурдвал :
- Хэрэглэхэд хялбар (хөгжүүлэгчийн зүгээс)
- Ямар нэг серверийг байнга хянах, арчлах шаардлагагүй (cloud)
- Өртөг бага + зөвхөн хэрэглээний хэмжээгээр төлдөг (pay as you go)
- Хурдан тэлэх боломж (scalability)
- БЭЛЭН ЗАГВАР-уудаас сонгож ашиглах боломж
Анх 2002 оноос туршиж оролдож эхэлсэн Amazon Web Services (AWS) 2006 онд S3-аар албан ёсоор олон нийтэд нээлтээ хийж байсан бол одоо 1400+ боломжуудтай, нийт зах зээлийн 30 гаран хувийг эзэлсэн үүлэн технологийн хамгийн том АКУЛ нь болоод байгаа билээ.
Эхний хэсэгт AWS-ын талаар анхан шатны ойлголт өгсөн байх гэж найдаж байна. Одоо харин өнөөдрийн гол сэдвийнхээ яриандаа оръё. Саяхан манай төсөл дээр гарсан VPC болон ламбда функц-тай холбоотой асуудлыг хэрхэн шийдсэнийгээ жишээ болгон орууллаа.
Шаардлага : Ламбда функц нь дараах 2 үйлдлийг хийх
1. RDS өгөгдлийн сантай холбогдох
2. Step Function-ийг дуудан ажиллуулахАсуудал : (VPC + Internet Gateway)
- Step Function-ийг дуудаж ажиллуулахад интернет холбоос хэрэгтэй
- Ламбда функцийн хувьд VPC доторх өгөгдлийн сан болон бусад нөөцүүдээс (resources) гадна интернет холбоосыг (Internet Gateway) НЭГЭН ЗЭРЭГ ашиглах шаардлагатайШийдэл 1 : Public болон Private subnet үүсгэн NAT Gateway, Internet Gateway-ийн тусламжтайгаар ламбда функцийг ажиллуулах
Ламбда нь VPC ашигласан үед интернет холбоосны эрх нь хаагддаг. Тиймээс ламбда нь VPC болон интернет холбоосыг хоёуланг нь ашиглахын тулд Public
гадна Private subnet
хэрэг болно. ЭхлээдPrivate subnet
үүсгэх түүнийгээ NAT Gateway
-р холбох мөн Route Table
дээр тохиргоо хийх гэсэн үндсэн 3 ажил хийх шаардлагатай.
— PRIVATE Subnet үүсгэх
— NAT Gateway үүсгэх
— Route Table үүсгэх & тохируулах
Зарим нэрсийн тайлбар :
- Subnet : дэд сүлжээ - дэлгэрэнгүй
- Gateway : гарц - дэлгэрэнгүй
- Route Table : Чиглэлийн хүснэгт - дэлгэрэнгүй
- Lambda function : ламбда функц - дэлгэрэнгүй
- NAT : Network Address Translation - дэлгэрэнгүй
- AZ : Availability Zone : Боломжит бүс - дэлгэрэнгүй
1. PRIVATE subnet үүсгэх (илүү ихийг эндээс)
Хамгийн эхлээд AWS хэрэглэгчээр нэвтэрч ороод VPC гэсэн хайлт хийж сонгож орно. Энэ дотор л бидний өнөөдрийн хийх ажлууд өрнөх болно.
Өнөөдрийн жишээ дээр хэрэглэх ‘Development’ VPC болон ‘rtb-21xxxx’ Route Table
харагдаж байна. Одоогийн байдлаар энэ VPC маань 1 Route Table
, 2 Public Subnets
, 1 Internet Gateway
тохируулсан байгаа.
Тухайн VPC-д харьяалагдах subnet
-үүд харагдаж байна. Найдвартай байдлыг илүүд үзвэл нэг бүс нутагт (Region) хоёроос илүү өөр өөр боломжит бүсийн (AZ) subnet
-тэй байх нь зүгээр.
Create subnet
сонголтыг дарж шинээр PRIVATE subnet
үүсгэцгээе. ‘Development’ VPC, болон боломжит бүс, IPv4 CIDR block-ийг бөглөн шинээр үүсгэнэ. (IPv4 CIDR block тохируулах)
Амжилттай үүссэн бол дараах хуудас гарч ирнэ.
Шинээр үүсгэсэн subnet
маань нэгэн ижил VPC дотор байгааг дараах цонхноос нэрээр нь харж шалгаарай. (Development 1a - private)
2. NAT Gateway үүсгэх (илүү ихийг эндээс)
Дараачийн хийх зүйл маань NAT Gateway
үүсгэх байгаа. Private болон Public subnet
-үүдээ хооронд нь холбогдуулж ажиллуулахын тулд хэрэглэх учиртай.
Create NAT Gateway
сонголтыг дарж шинээр NAT Gateway
үүсгэцгээе. 1-р хэсэгт үүсгэсэн ‘subnet-09xxxx’-ээ сонгоод, дараа нь шинээр EIP үүсгэх сонголтыг дараарай. (Elastic IP — a static, public IPv4 address)
Амжилттай үүссэн бол дараах хуудас гарч ирнэ. Энэ үүсгэсэн NAT Gateway
-ээ дараачийн 3-р алхамд үүсгэх Route Table
дээр ашиглах болохоор одоохондоо ингээд орхичихъё.
3. Route table үүсгэх & тохируулах
Дараачийн хийх зүйл маань Route Table
үүсгэх байгаа. ‘nat-0exxxxx’-ээр тохируулсан ‘subnet-09xxxx’-ийгээ интернет холбоостой болгохын тулд хэрэглэнэ.
Create Route Table
сонголтыг дарж шинээр Route Table
үүсгэцгээе. VPC сонголт нь ‘Development’ байх бөгөөд харин нэрийг нь ойлгоход хялбар байх үүднээс ‘Development Route Table - Private’ гэж өглөө.
Амжилттай үүссэн ‘Development Route Table - Private’-ийг сонгон Subnet Associations
хэсгийг идэвхжүүлээрэй. Эндээс бид нар шинээр үүсгэсэн ‘subnet-09xxxxx’-ээ сонгох хэрэгтэй.
Сүүлчийн шат болох Route Table-ийн тохиргоог хийх.
— ‘Development Route Table - Private’ : Internet Gateway
тохируулах
— ‘Development Route Table : NAT Gateway
тохируулах
‘Development Route Table - Private’-ийн Routes
хэсгийг идэвхжүүлэн ‘Internet Gateway’-г тохируулж харин эсрэгээр нь ‘Development Route Table’ дээр NAT Gateway-г тохируулж өгөх хэрэгтэй.
Шинээр үүсгэсэн ‘Development Route Table - Private’ дотор 0.0.0.0/0
‘igw-2bxxxx’-ийг шинээр нэмэн хадгалах.
Хуучин байсан ‘Development Route Table’ доторх Internet Gateway
-г ‘nat-0exxxxxx’ NAT Gateway
-ээр солих.
Энэ хүрээд өнөөдрийн нийтлэл маань дуусаж байна. Дээрх 3 ажлыг зурагт үзүүлсэнтэй адил хийж чадвал таны Ламбда функц VPC болон интернет холбоосыг хоёуланг нь зэрэг хэрэглэх боломжтой болсон байх ёстой. :D
Энэхүү шийдэл маань хэдий анхны шаардлагыг маань хангасан боловч NAT Gateway-г ашиглах нь сарын төлбөр дээр нэмэгдэх, мөн дамжин явах траффикийн асуудал зэрэг шалтгаануудаас болж өөр нэг шийдэл ашиглахаар болсон юм. Тэр нь RDS өгөгдлийн сантай IAM Authentication-ийг ашиглан холбогдож тухайн ламбда-г VPC дотор биш интернет холбоос ашиглахаар тохируулсан. Энэ талаараа дараачийн нийтлэлээр оруулна аа :D