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 үүссэн түүх нь өөрсдийн шинэ бүтээгдэхүүнээ хурдан гаргах, хурдацтай ТОМРОХ зэрэг дахин дахин гарч байсан асуудалтай шууд холбоотой байдаг. Өөрсдийн асуудлуудаа шийдэх гэж хийсэн зүйл нь нэг л өдөр дэлхийг тэр чигээр нь өөрчлөх юм гэж тухайн үедээ хэн ч санаагүй гэдэг.

AWS-ийн гол давуу талуудаас дурдвал :

  • Хэрэглэхэд хялбар (хөгжүүлэгчийн зүгээс)
  • Ямар нэг серверийг байнга хянах, арчлах шаардлагагүй (cloud)
  • Өртөг бага + зөвхөн хэрэглээний хэмжээгээр төлдөг (pay as you go)
  • Хурдан тэлэх боломж (scalability)
  • БЭЛЭН ЗАГВАР-уудаас сонгож ашиглах боломж
The internal teams at Amazon required a set of common infrastructure services everyone could access without reinventing the wheel every time (зураг)

Анх 2002 оноос туршиж оролдож эхэлсэн Amazon Web Services (AWS) 2006 онд S3-аар албан ёсоор олон нийтэд нээлтээ хийж байсан бол одоо 1400+ боломжуудтай, нийт зах зээлийн 30 гаран хувийг эзэлсэн үүлэн технологийн хамгийн том АКУЛ нь болоод байгаа билээ.

10 years anniversary (зураг)

Эхний хэсэгт 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 үүсгэх & тохируулах

1. PRIVATE subnet үүсгэх (илүү ихийг эндээс)

Хамгийн эхлээд AWS хэрэглэгчээр нэвтэрч ороод VPC гэсэн хайлт хийж сонгож орно. Энэ дотор л бидний өнөөдрийн хийх ажлууд өрнөх болно.

1.1 AWS console

Өнөөдрийн жишээ дээр хэрэглэх ‘Development’ VPC болон ‘rtb-21xxxx’ Route Table харагдаж байна. Одоогийн байдлаар энэ VPC маань 1 Route Table, 2 Public Subnets, 1 Internet Gateway тохируулсан байгаа.

1.2 AWS : VPC dashboard

Тухайн VPC-д харьяалагдах subnet-үүд харагдаж байна. Найдвартай байдлыг илүүд үзвэл нэг бүс нутагт (Region) хоёроос илүү өөр өөр боломжит бүсийн (AZ) subnet-тэй байх нь зүгээр.

1.3 AWS : VPC : Subnets

Create subnet сонголтыг дарж шинээр PRIVATE subnet үүсгэцгээе. ‘Development’ VPC, болон боломжит бүс, IPv4 CIDR block-ийг бөглөн шинээр үүсгэнэ. (IPv4 CIDR block тохируулах)

1.4 AWS : VPC : Subnets : Create subnet

Амжилттай үүссэн бол дараах хуудас гарч ирнэ.

1.5 AWS : VPC : Subnets : Create subnet : SUCCESS

Шинээр үүсгэсэн subnet маань нэгэн ижил VPC дотор байгааг дараах цонхноос нэрээр нь харж шалгаарай. (Development 1a - private)

1.6 AWS : VPC : Subnets : UPDATED

2. NAT Gateway үүсгэх (илүү ихийг эндээс)

Дараачийн хийх зүйл маань NAT Gateway үүсгэх байгаа. Private болон Public subnet-үүдээ хооронд нь холбогдуулж ажиллуулахын тулд хэрэглэх учиртай.

2.1 AWS : NAT Gateways

Create NAT Gateway сонголтыг дарж шинээр NAT Gateway үүсгэцгээе. 1-р хэсэгт үүсгэсэн ‘subnet-09xxxx’-ээ сонгоод, дараа нь шинээр EIP үүсгэх сонголтыг дараарай. (Elastic IP — a static, public IPv4 address)

2.2 AWS : NAT Gateways : Create NAT Gateway

Амжилттай үүссэн бол дараах хуудас гарч ирнэ. Энэ үүсгэсэн NAT Gateway-ээ дараачийн 3-р алхамд үүсгэх Route Table дээр ашиглах болохоор одоохондоо ингээд орхичихъё.

2.3 AWS : NAT Gateways : Create NAT Gateway : SUCCESS

3. Route table үүсгэх & тохируулах

Дараачийн хийх зүйл маань Route Table үүсгэх байгаа. ‘nat-0exxxxx’-ээр тохируулсан ‘subnet-09xxxx’-ийгээ интернет холбоостой болгохын тулд хэрэглэнэ.

3.1 AWS : Route Tables

Create Route Table сонголтыг дарж шинээр Route Table үүсгэцгээе. VPC сонголт нь ‘Development’ байх бөгөөд харин нэрийг нь ойлгоход хялбар байх үүднээс ‘Development Route Table - Private’ гэж өглөө.

3.2 AWS : Route Tables : Create Route Table

Амжилттай үүссэн ‘Development Route Table - Private’-ийг сонгон Subnet Associations хэсгийг идэвхжүүлээрэй. Эндээс бид нар шинээр үүсгэсэн ‘subnet-09xxxxx’-ээ сонгох хэрэгтэй.

3.3 AWS : Route Tables : Subnet Associations

Сүүлчийн шат болох 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’-ийг шинээр нэмэн хадгалах.

3.4 AWS : Route Tables : Routes (Private subnet)

Хуучин байсан ‘Development Route Table’ доторх Internet Gateway‘nat-0exxxxxx’ NAT Gateway-ээр солих.

3.5 AWS : Route Tables : Routes (Public subnet)

Энэ хүрээд өнөөдрийн нийтлэл маань дуусаж байна. Дээрх 3 ажлыг зурагт үзүүлсэнтэй адил хийж чадвал таны Ламбда функц VPC болон интернет холбоосыг хоёуланг нь зэрэг хэрэглэх боломжтой болсон байх ёстой. :D

Энэхүү шийдэл маань хэдий анхны шаардлагыг маань хангасан боловч NAT Gateway-г ашиглах нь сарын төлбөр дээр нэмэгдэх, мөн дамжин явах траффикийн асуудал зэрэг шалтгаануудаас болж өөр нэг шийдэл ашиглахаар болсон юм. Тэр нь RDS өгөгдлийн сантай IAM Authentication-ийг ашиглан холбогдож тухайн ламбда-г VPC дотор биш интернет холбоос ашиглахаар тохируулсан. Энэ талаараа дараачийн нийтлэлээр оруулна аа :D

--

--

Билигүн.Б (Програмч аав)
Unimedia Solutions

I am who I am... || өөрийнхөөрөө байхаас ичихгүй