DevOps

Ձեր առաջին առանց սերվերի գործառույթի տեղակայում AWS Lambda-ով

Դասընթաց՝ առանց սերվերների կառավարման, հաշվարկների ծավալը անսահման դարձնելու վերաբերյալ

Անսերվեր կուսակցությանը ուշացա։

Բայց այն բանից հետո, երբ ընկերը բացատրեց, որ դա նվազեցրեց իր ստարտափի ենթակառուցվածքի արժեքը գրեթե զրոյի՝ միաժամանակ բարելավելով արագությունը, ես ստիպված էի ստուգել այն:

Lambda-ն առանց սերվերի AWS տարբերակն է:

Մենք պատրաստվում ենք կոդը տեղակայել Lambda-ում, որպեսզի ավելի լավ հասկանանք, թե ինչպես է այն աշխատում:

Մուտք գործեք ձեր AWS վահանակ և հետևեք դրան:

Ինչ է առանց սերվերի

«Անսերվեր» (AWS-ում) հետևյալն է.

  • կոդը գործարկվում է ըստ պահանջի
  • ըստ նախապես սահմանված ձգանի
  • որը մեծանում է (ոչ թե բարձրանում)
  • առանց որևէ սերվերի կառավարման

Օրինակ: Գործառույթ, որը մուտքագրում է HTTP հարցումը, կատարում է հաշվարկներ և վերադարձնում պատասխան:

Վերոնշյալ օրինակում: Եթե դուք միաժամանակ ստացել եք 5000 տարբեր HTTP հարցումներ, խնդիր չկա: AWS-ը կկարգավորի դրանք բոլորը միաժամանակ:

Սա ավելի խելամիտ կլինի այն կարգավորելուց հետո:

Մեր Lambda ֆունկցիան

Մեր առանց սերվերի ֆունկցիան մուտք է ընդունում, այն բազմապատկում 5-ով և կվերադարձնի պատասխան:

Մենք կօգտագործենք API Gateway-ը՝ հարցումներ ստանալու համար, հարցման մարմինը փոխանցելու ենք Lambda-ին, այնուհետև lambda-ի արտադրանքը կվերադարձնենք հաճախորդին:

Գնացի՜նք!

Ստեղծեք Լամբդան

AWS-ում անցեք Lambda ծառայություն, այնուհետև կտտացրեք «Ստեղծել գործառույթը»:

Այժմ՝

  • Ընտրեք «Հեղինակ զրոյից»:
  • Մուտքագրեք անուն ձեր ֆունկցիայի համար: «myFunction»-ը կամ որևէ այլ բան լավ է:
  • Ընտրեք ծրագրավորման լեզուն: Ես ընտրել եմ «Python 3.7»:
  • Ընտրեք «Ստեղծեք նոր դեր հիմնական Lambda թույլտվություններով»:
  • Եվ սեղմեք «Ստեղծել գործառույթը»:

Այժմ մենք ունենք Lambda լռելյայն կոդով: Մենք պետք է թարմացնենք այն:

Ոլորեք ներքև դեպի «Ֆունկցիայի կոդը» բաժինը և թարմացրեք ստորև նշված կոդը:

import json
def lambda_handler(event, context):
    initial_value = int( json.loads(event['body'])['value'] )
    new_value = str( initial_value * 5 )
    
    return {
        'statusCode': 200,
        'body': json.dumps( new_value )
    }

Այն պետք է այսպիսի տեսք ունենա.

Այնուհետև համոզվեք, որ սեղմեք «Պահպանել» վերևի աջ կողմում:

Փորձեք մեր գործառույթը Lambda-ում

Lambda-ն ունի ներկառուցված փորձարկման հատկություն: Եկեք ստուգենք, որ մեր գործառույթը իրականում աշխատում է:

Սեղմեք բացվող սլաքը Lambda վահանակի վերևի մոտ, այնուհետև ընտրեք «Կարգավորել թեստային իրադարձությունները»:

Հարցմանը անուն տվեք: Ես իմն անվանել եմ «MyTestRequest»:

Այնուհետև պատճենեք այս կոդում՝ որպես հարցման մարմին:

{
  "body": "{\"value\": \"5\"}"
}

Ես միտումնավոր ստեղծել եմ հետևյալ օրինակը, որպեսզի այն լինի նույն ձևաչափով, ինչ API gateway-ից ուղարկված հարցումները:

Այն պետք է նման լինի ստորև:

Սեղմեք «Ստեղծել»:

Այժմ սեղմեք փորձարկման կոճակը:

Եթե ​​դա հաջողվի, դուք կտեսնեք հաջող պատասխան ձեր գործառույթի կոդի տակ: Եթե ​​ոչ, կանգ առեք այստեղ և պարզեք, թե ինչն է սխալվել, նախքան շարունակելը:

Ստեղծեք Lambda ձգան

Գործարկիչը լամբդա ֆունկցիային ասում է, թե երբ պետք է գործարկվի:

Մեր դեպքում մենք կաշխատենք մեր lambda-ն ամեն անգամ, երբ API դարպասը HTTP հարցում է ստանում:

Սեղմեք «Ավելացնել ձգան»:

Այնուհետև ընտրեք «API Gateway»:

Կան բազմաթիվ իրադարձություններ, որոնք կարող են օգտագործվել որպես գործարկիչներ: Դրանք ներառում են S3-ում վերբեռնված ֆայլերը, DynamoDB-ում տեղադրված գրառումները կամ Alexa-ին տրված հրամանը:

Ընտրեք «REST API» և դրեք «Անվտանգությունը» որպես «Բաց»:

Արտադրական իրավիճակում երբեք մի օգտագործեք «Open»-ը, բայց մենք, այնուամենայնիվ, կջնջենք այս API-ն այն ստեղծելուց հետո:

Սեղմեք «Ավելացնել»:

Տեղական հարցում կատարեք

Նախ, «API Gateway» սեղմելուց հետո ձեր վահանակից վերցրեք «API վերջնակետը»:

Այնուհետև կատարեք գանգրացման հարցում:

Իմ URL-ով այն կարծես սա է.

curl -XPOST -H '{"Content-Type: application/json"}' -d '{"value":"7"}' https://n...amazonaws.com/default/myFunction

Եվ վերադառնում է:

"35"

Հաջողություն:

Եզրակացություն

Մենք այստեղ հազիվ քերծեցինք Լամբդայի մակերեսը։

Թեև մենք տրամադրել ենք միայն մեկ գործառույթ, բայց Lambda-ն կարող է նաև գործարկել թեթև մեքենայական ուսուցման մոդելներ կամ մի ամբողջ վեբ հավելված:

Դրա հիմնական առավելությունը միաժամանակյա հարցումների հսկայական քանակի մշակումն է՝ առանց որևէ սերվերի կառավարման: Այն նաև էժան է՝ 0,20 ԱՄՆ դոլար 1 միլիոն խնդրանքի համար:

Եթե ​​այս ձեռնարկում որևէ խնդրի հանդիպեք, տեղեկացրեք ինձ մեկնաբանություններում, և ես կփորձեմ օգնել:

Բաժանորդագրվեք FAUN թեմաներին և ստացեք ձեր ամենշաբաթյա ընտրված էլփոստը պարտադիր ընթերցվող տեխնոլոգիական պատմությունների, նորությունների և ձեռնարկների մասին🗞️

Հետևեք մեզ Twitter-ում🐦և Facebook-ում👥և Instagram-ում » Խմբեր💬

Եթե ​​այս գրառումն օգտակար էր, խնդրում ենք սեղմել ներքևում գտնվող ծափ 👏 կոճակը մի քանի անգամ՝ հեղինակին ձեր աջակցությունը ցույց տալու համար: ⬇