Како променити временско ограничење у АВС Ламбда

Ако желите да изградите архитектуру без сервера у АВС-у, или бар део тога, онда ће АВС Ламбда услуга бити најважнији део тога.

То је рачунарска функција без сервера (обично написана у програмском језику Ноде.ЈС или Питхон) коју можете развити и покренути без покретања позадинских кластера или сервера. Можете да повежете више АВС Ламбда функција да бисте формирали сложеније процесе.

Међутим, важно својство Ламбда функције је њено ограничење у смислу трајања времена обраде. Ово на крају дефинише када је права сврха коришћења АВС Ламбда функције.

Извор: авс.амазон.цом

Шта је временски интервал?

Функција временског ограничења АВС Ламбда функције је поставка која дефинише максимално време које функција може да ради пре него што буде прекинута.

Ламбда функције су дизајниране да буду краткотрајне и без држављанства, и овако их треба користити. Није редак изузетак видети како тимови покушавају да искористе Ламбда функцију за дуготрајне процесе. Они то раде само зато што желе да искористе предности природе АВС Ламбда без сервера. Увек је много јефтиније покренути код без потребе за покретањем сервера са специфичном конфигурацијом ЦПУ-а и меморије. Дакле, намеру је лако разумети.

Међутим, ако функција ради предуго, то може изазвати проблеме са коришћењем ресурса и перформансама. Ризикујете да се ресурси закључају, а пошто имате корист од дуготрајног процеса, највероватније вам није стало до оптимизације корака унутар процеса. Одједном, време чекања од пет минута није велики проблем. Можете себи приуштити да га оставите присутним чак и ако за сам процес може бити бескорисно.

Подразумевано, временско ограничење за Ламбда функцију је подешено на само 3 секунде. У том случају, требало би да рачунате на чињеницу да било који код који извршите унутар Ламбда функције мора да се заврши у року од три секунде. Ово је сјајно ако желите да изградите архитектуру са заиста брзим комуникацијама и временом одговора, потенцијално са милионима трансакција за веома кратко време. Али то би прилично значајно ограничило употребне случајеве коришћења Ламбда функције, тако да ово ограничење можете повећати до максимално 900 секунди (15 минута). Када се достигне ово временско ограничење, Ламбда ће прекинути функцију и вратити код грешке.

  7 најбољиһ ҺВАЦ софтвера за мање времена за управљање и више времена за раст

Како подесити функцију Тимеоут?

Извор: авс.амазон.цом

Можете да подесите временско ограничење за Ламбда функцију користећи АВС конзолу за управљање, АВС ЦЛИ или АВС СДК.

Ево конкретних корака како то постићи:

  • Отворите АВС Манагемент Цонсоле и идите на Ламбда услугу.
  • Изаберите Ламбда функцију коју желите да измените.
  • На картици „Конфигурација“ померите се надоле до одељка „Општа конфигурација“ и пронађите поставку „Тимеоут“.
  • Кликните на дугме „Уреди“ поред њега.
  • Унесите нову вредност временског ограничења у секундама (између 1 и 900) и кликните на дугме „Сачувај“.
  • Кликните на дугме „Сачувај“ на врху странице да бисте сачували промене у Ламбда функцији.
  • Такође можете да користите АВС ЦЛИ командну линију да ажурирате временско ограничење Ламбда функције. Ево примера команде:

    <code>aws lambda update-function-configuration --function-name [My_Lambda_Function_Name] --timeout 900

    Ова команда поставља временско ограничење за [My_Lambda_Function_Name] до 15 минута. Само унесите своје право име функције и жељену вредност временског ограничења у секундама.

    Нека разматрања

    Поставка временског ограничења се примењује на целу функцију, а не само на појединачне блокове кода или операције унутар функције. Дакле, ако ваша функција обавља дуготрајну операцију, као што је обрада велике датотеке или постављање мрежног захтева, мораћете да обезбедите да је временско ограничење и даље довољно да се операција заврши, чак и у најгорем случају .

    Вреди напоменути да су Ламбда функције дизајниране да буду краткотрајне и без држављанства. Намењени су за обављање малих, дискретних задатака. Ако установите да је потребно много времена да се ваша Ламбда функција заврши, можда би било добро да размислите о томе да је поделите на неколико мањих функција. Затим их можете позвати један по један помоћу окидача. На пример, ако је излаз претходне Ламбда функције ускладиштен на одређеном С3 сегменту.

    Поред тога, ако треба да покренете дуготрајан процес који премашује ограничење од 15 минута, можете размислити о коришћењу АВС функција корака да бисте оркестрирали низ Ламбда функција или других АВС услуга да бисте постигли жељени резултат.

    Најбоље праксе

    Чини се да радни интервал самог тајмаута није довољно велик за неке опсежне разговоре. Већину времена програмери на крају постављају директно на 15 минута за све Ламбда функције. Чак и ако ће се функција завршити много раније, нема негативних нуспојава тога.

    Ипак, још увек постоје неке најбоље праксе које треба приметити.

      Шта је Т-Мобиле ТВисион и колико кошта?

    #1. Дефинишите одговарајућу вредност

    Требало би да подесите вредност временског ограничења на основу очекиваног времена извршења функције. Ово у основи значи да поставите вредност која није прекратка, али ни непотребно дуга.

    Можда бисте желели да се уверите да укупно време једне Ламбда функције није дуже од три минута, на пример, само због архитектонских или укупних разлога перформанси ваше апликације.

    Слично томе, можда бисте желели да се уверите да се Ламбда функција неће прекинути пре, рецимо, три минута. Један од разлога може бити да желите да унесете одређени број поновних покушаја унутар Ламбда кода. На пример, у случају да су неки од ресурса потребних за довршавање кода заузети или закључани.

    Дакле, пре него што наставите и подесите временско ограничење на 15 минута, размислите о томе која би могла бити оптимална вредност времена извршења. Дефинисање прецизнијих вредности је само још један алат за постављање граница целом развојном тиму.

    #2. Праћење током времена

    Када поставите ограничења временског ограничења, потрудите се да пратите време извршавања ваших Ламбда функција. Ово ће вам дати важан увид у то да ли је првобитна одлука била исправна или су потребна нека прилагођавања.

    Можете да користите ЦлоудВатцх метрике и евиденције да бисте пратили време извршавања функција. Затим идентификујте оне за које је потребно дуже него што се очекивало, као и оне за које је потребно много брже од очекиваног.

    #3. Асинхрони позив

    Ако је ваша Ламбда функција покренута догађајем који не захтева тренутни одговор, на пример, отпремање датотеке или порука из реда, користите асинхроно позивање да бисте смањили ризик од временских ограничења. Ово ће учинити да функција ради у позадини без чекања на одговор. Ово, наравно, може довести до смањеног броја тајм-аута. То је једноставно зато што не морате у укупно време извршавања Ламбда укључити време чекања које је потребно функцији за тај ресурс.

    #4. Користите функције корака за сложене процесе

    Ако треба да покренете дуготрајан процес који премашује ограничење од 15 минута, можете да користите функције АВС корака да бисте оркестрирали низ Ламбда функција или других АВС услуга да бисте постигли тај исход. Функција корака ће разбити процес на мање задатке којима је лакше управљати које можете извршити у оквиру временског ограничења.

    Можете чак и да покренете неколико ламбда функција паралелно у оквиру функције корака. Затим, нека функција корак сачека све паралелне ламбда функције пре него што настави даље. Ово је облик хоризонталног скалирања где неколико ламбда функција може поделити један проблем и заједно га делимично решити.

      Како да искључите постове са картицама на Фејсбуку

    На крају, само треба да прикупите делимичне резултате и изградите коначну резолуцију, за коју може бити довољна самостална ламбда функција.

    #5. Оптимизујте код

    Можете да оптимизујете свој код Ламбда функције да бисте смањили време извршавања и побољшали перформансе. Ово је корисно ако временски интервал није довољан само повремено. У том случају, можда би било вредно тражити оптимизацију кода да бисте уклонили такве случајеве неуспеха.

    Како временско ограничење утиче на наплату?

    Извор: авс.амазон.цом

    Поставка временског ограничења за АВС Ламбда функцију не утиче директно на наплату за функцију. АВС Ламбда рачуни на основу броја захтева и трајања времена извршења функције.

    Ако повећате поставку временског ограничења за Ламбда функцију, то може довести до дужег времена извршавања. Али само ако је функцији заиста потребно то додатно време. Ако то комбинујете са већом фреквенцијом функције којој је потребно дуже да се изврши, онда да, могли бисте очекивати веће трошкове.

    Међутим, ако се функција не позива често или ако заврши процес пре него што се достигне вредност временског ограничења, утицај на наплату може бити минималан.

    Због тога подешавање свих Ламбда функција на подразумевано временско ограничење од 15 минута можда није главни разлог за повећање трошкова ваше укупне обраде.

    Међутим, то свакако доводи до индиректног повећања укупних трошкова. Програмери ће осетити да имају резерву за коришћење и можда не би оптимизовали код у толикој мери у којој би то вероватно урадили да су временска ограничења рестриктивнија, али ипак реална.

    Друга ствар је да АВС Ламбда пружа бесплатни ниво који укључује 1 милион бесплатних захтева и 400.000 ГБ-секунди рачунарског времена месечно. Ако употреба ваше Ламбда функције спада у границе слободног нивоа, нећете платити време извршавања функције без обзира на поставку временског ограничења.

    Завршне речи

    АВС Ламбда функција је моћан алат, посебно за обраду без сервера у АВС облаку. Има своју сврху и границе којих треба да будемо свесни. Хајде да не покушавамо да га користимо за случајеве употребе за које није дизајниран.

    Савршен је за једноставне, асинхроне и идеално покренуте радње које не захтевају време извршења дуже од 15 минута. Ако вам треба нешто сложеније, користите АВС Степ Фунцтионс да бисте комбиновали неколико Ламбда функција у један оркестрирани процес. Или одустаните од јефтиније обраде без сервера и користите сервере са одговарајућом конфигурацијом и рачунарском снагом да бисте извршили свој задатак.

    Затим погледајте увод у АВС Ламбда за почетнике.