AWS - Lambda Функции - Технология Serverless

แชร์
ฝัง
  • เผยแพร่เมื่อ 21 ส.ค. 2024
  • AWS - Lambda Функции - Технология Serverless
    Буду рад паре баксов, можно даже Канадских :) www.paypal.me/...

ความคิดเห็น • 92

  • @4optimistic
    @4optimistic 5 ปีที่แล้ว +20

    import boto3, os
    def lambda_handler(event, context):
    myS3 = boto3.client('s3')
    try:
    results = myS3.list_buckets()
    print(results)
    output = ""
    for bucket in results['Buckets']:
    output = output + bucket['Name'] + ""
    return ("S3 Bucket List:" + output)
    except:
    return ("

  • @j___ray
    @j___ray 4 ปีที่แล้ว +46

    Просто урок можно на цитаты:
    "Это я сам придумал! Круто, правда?"
    "Сервер как раб"))

    • @j___ray
      @j___ray 4 ปีที่แล้ว

      @@escapeagreement8941 я и не спорю, смотрю с удовольствием)

  • @roman8745
    @roman8745 5 ปีที่แล้ว +30

    Для создания Lambda Function в браузере должны быть включены и разрешены Cookies иначе будете получать 'Network error' которая абсолютно ни о чем не говорит.
    В инете вопросов по этой ошибке куча и все без ответов.

    • @user-bi3kx5uf6d
      @user-bi3kx5uf6d ปีที่แล้ว

      еще бывает из-за неправильной даты на локальной машине

  • @TheDfghdhg
    @TheDfghdhg 6 ปีที่แล้ว +16

    Крутой курс!

    • @ADV-IT
      @ADV-IT  6 ปีที่แล้ว

      Спасибо!

  • @4optimistic
    @4optimistic 5 ปีที่แล้ว +21

    import boto3, os, time
    AWS_DEFAULT_REGION = "eu-west-1" #Region where Lambda running
    os.environ['AWS_DEFAULT_REGION'] = AWS_DEFAULT_REGION
    bucketname = "lambda.create.me.on-" + str(time.time())
    def lambda_handler(event, context):
    myS3 = boto3.resource('s3')
    try:
    results = myS3.create_bucket(
    Bucket= bucketname,
    CreateBucketConfiguration = {'LocationConstraint':AWS_DEFAULT_REGION}
    )
    return ("S3 Bucket Created Successfully:" + str(results))
    except:
    return ("Error!")

    • @franc237
      @franc237 4 ปีที่แล้ว +1

      import boto3, os
      def lambda_handler(event, context):
      myS3 = boto3.client('s3')
      try:
      results = myS3.list_buckets()
      print(results)
      output = ""
      for bucket in results['Buckets']:
      output = output + bucket['Name'] + ""
      return ("S3 Bucket List:" + output)
      except:
      return ("Error!" )

  • @smokzpolski
    @smokzpolski 3 ปีที่แล้ว +4

    На Дженкинс дошел до последних уроков (равзёртывание в AWS) - пошел смотреть про AWS. И вот он тот самый момент, когда надо идти и смотреть/учить Питон.... Ё-маЁ!!! Хотя автору лютый респект =)

    • @ADV-IT
      @ADV-IT  3 ปีที่แล้ว +1

      Как бесконечная история учебы :)

    • @eus4376
      @eus4376 3 ปีที่แล้ว

      Знакомый путь, лол. С питоном ознакомился недели 3 назад, и с терраформ перескочил на авс курсы. Связать бы это все в голове - ансибл, дженкинс, авс..но тут только практика и реальные мелкие проекты =)

  • @bieliaievays
    @bieliaievays 5 ปีที่แล้ว +5

    Спасибо. Очень полезно.

  • @sergeydev8273
    @sergeydev8273 3 ปีที่แล้ว +1

    Неистово лайкаю, каждый выпуск :)

  • @MrSanlord77
    @MrSanlord77 4 ปีที่แล้ว +6

    Дополню. Очень очень часто lambda ф-ия связана со state machine типа Task Step Function, которая в свою очередь триггерится тупо по расписанию. При деплое в YAML файле кроме всего прочего указываем scheduled rules в формате, очень похожем на cron, но с небольшими отличиями

  • @124um
    @124um 4 ปีที่แล้ว +2

    Супер! Спасибо за урок.

  • @drfrei6501
    @drfrei6501 6 ปีที่แล้ว +5

    огромный респект как раз сейчас сижу с лямбдой )))) сенк юююююююю

    • @ADV-IT
      @ADV-IT  6 ปีที่แล้ว +3

      Lambda это большое будующее

  • @morningvega
    @morningvega 3 ปีที่แล้ว +2

    Моё уважению автору

  • @below_waterline
    @below_waterline 4 ปีที่แล้ว +2

    Спасибо за курсы )))

  • @maksimkovtun9517
    @maksimkovtun9517 ปีที่แล้ว +2

    Версия кода создания бакета из 2023 года (обратите внимание куда переехал region):
    import boto3, os, time
    AWS_DEFAULT_REGION = "us-east-1"
    os.environ['AWS_DEFAULT_REGION'] = AWS_DEFAULT_REGION
    bucket_name = "b.lambded." + str(time.time())
    def lambda_handler(event, context):
    s3_client = boto3.client("s3", region_name=AWS_DEFAULT_REGION)
    print(bucket_name)
    try:
    result = s3_client.create_bucket(Bucket=bucket_name)
    print(f"S3 Bucket Created with name {bucket_name}, {result=}")
    except Exception as ex:
    print(f"Error creating {str(ex)}")
    Кстати, есть ли смысл теперь в установке региона с помощью os.environ?

    • @ADV-IT
      @ADV-IT  ปีที่แล้ว +1

      Поидее если есть Environment variable AWS_DEFAULT_REGION, то его и использует boto3.client("s3")

  • @Xelamus
    @Xelamus 2 ปีที่แล้ว +1

    звучит круто =)

  • @dmitrytsmyh5971
    @dmitrytsmyh5971 3 ปีที่แล้ว +1

    ЗапусТкается, прикольно.)

  • @user-hr2ic7iv1j
    @user-hr2ic7iv1j 6 ปีที่แล้ว +2

    Спасибо огромное за этот урок! Жду API Gateway. Если можно показать еще работу с событиями и запуском Lambda с помощью них.

    • @ADV-IT
      @ADV-IT  6 ปีที่แล้ว

      Урок уже записан, скоро опубликуется, там я покажу как с помощю APIGateway запускать Lambda и еще как это дело защитить от нехороших людей :)

  • @samrybkin9184
    @samrybkin9184 ปีที่แล้ว +1

    Звук клавиатуры старого доброго ASUS просто огонь:)
    Кстати как клавиатура в MSI удобней чем в Asus?

    • @ADV-IT
      @ADV-IT  ปีที่แล้ว +1

      Да, кнопки больше так как нету кнопок калькулятора вправа, он нафиг не нужны

  • @user-zi8ep6tk1d
    @user-zi8ep6tk1d 6 ปีที่แล้ว +1

    Топ!

  • @emmakonstantynovska
    @emmakonstantynovska 2 ปีที่แล้ว +1

    Здравствуйте! Спасибо за ваши уроки! Вы сказали, что еще сделаете урок по DynamoDB, так он будет? Пока я его не заметила в вашем плейлисте. :)

    • @ADV-IT
      @ADV-IT  2 ปีที่แล้ว

      Всё как-нибудь :)

  • @fivaproldge
    @fivaproldge 5 ปีที่แล้ว +20

    не перестаю ОХУЕВАТЬ - насколько же AWS крутая штука

  • @maxsukhoparov3259
    @maxsukhoparov3259 4 ปีที่แล้ว +2

    когда запускал лямбду из aws cli и экспортировал html код в txt, а потом открывал в консоли , это зачем?)) если уж html то в Output.html и сохраняй )) а потом просто "iexplore output.html" например)) и не надо в блокноте строки переносить. А за урок спасибо! Всё супер!

  • @kriptossavant8797
    @kriptossavant8797 2 ปีที่แล้ว

    Ещё aot можете использовать, скомпилированный из любого языка, который поддерживает Ahead of Time компиляцию (например, Dart, Kotlin и т.д.).

  • @qweone123
    @qweone123 4 ปีที่แล้ว +5

    РЕСПЕКТ, быстрее чем читать нудную доку

  • @azizsadykov2652
    @azizsadykov2652 3 ปีที่แล้ว +1

    Привет из 2021.
    1 при создании Бакета не нужно выставлять Регион,
    CreateBucketConfiguration={'LocationConstraint': AWS_DEFAULT_REGION}
    S3 does not require region selection.
    Денис или я что то не так понял из твоего скрипта.

  • @Majkirsche
    @Majkirsche 5 ปีที่แล้ว +1

    Спасибо!!! Как всегда шикарный урок. Один вопрос - насколько Lambda дорогая? Можно ли для тренировки наделать всяких функций и сохранить их или они будут втихаря пожирать деньги и лучше не стоит?

    • @ADV-IT
      @ADV-IT  5 ปีที่แล้ว +1

      Очень дешевая, так что не парься

  • @dmitriimrcat
    @dmitriimrcat 4 ปีที่แล้ว +1

    То есть это SaaS? Очень круто! Спасибо.

  • @adilhasanov
    @adilhasanov 3 ปีที่แล้ว +2

    Добавить хрень!

  • @UAStriker
    @UAStriker ปีที่แล้ว +1

    Hello world использовал 21 мб памяти?)) 12:15 минута

    • @ADV-IT
      @ADV-IT  ปีที่แล้ว

      Операционной

  • @ttsrg
    @ttsrg 3 ปีที่แล้ว +2

    пляха/муха )))))

  • @dodokwak
    @dodokwak 3 ปีที่แล้ว

    Кто-то пытался реализовать lambda для re-sizing images? Не могу понять, почему получаю ошибку 403 Forbidden.
    Сценарий: у меня 2 bucket: 1-ая для загрузки картинок юзера, 2-ая для сохранения уже от-resized images. Лямбда функция срабатывает на создание нового объекта в 1-ой bucket, обрезает картинку и скидывает её во вторую.
    У обоих bucket :
    1. public access
    2. cross-origin resource sharing(CORS) c allow *
    3. permissions : bucket policy= action getObject.
    Картинка благополучно обрезается, перекидывается во вторую корзинку и по url я могу её скачать\помотреть. однако в этот момент(первый reload page) у меня в browser image не видно, а в dev tools = 403 Forbidden. Однако картинка появляется и ошибка изчезает при 2-ой перезагрузки страницы. backend(django).
    Спасибо.

    • @ADV-IT
      @ADV-IT  3 ปีที่แล้ว

      bucket policy= action getObject. ?
      А какже PutObject?

    • @dodokwak
      @dodokwak 3 ปีที่แล้ว

      @@ADV-IT спасибо. добавила getObject, putOject ,не помогает... пересистирует.
      Думала сначала,что может быть долго re-size-cя. увеличила Timeout y lambda. Но дело скорей всего в чём-то другом. А главное, почему image таки загружается со второго раза, если он уперся рогом и в первый раз отказался to render?
      update: скорее всего моя джанго делает запрос на картинку слишком быстро,когда от-resized картинка ещё не полностью залилась в новую корзинку.

  • @dmitriymovchan6563
    @dmitriymovchan6563 6 ปีที่แล้ว +1

    У меня тоже почему-то не все иконки сохраняются сверху консоли.

    • @ADV-IT
      @ADV-IT  6 ปีที่แล้ว +1

      У всех это, баг на Амазоне

    • @Em-iy7hb
      @Em-iy7hb 6 ปีที่แล้ว +3

      У меня такая же ситуация.
      Главное дома при использовании личного ноутбука, в консоли иконки сохранились.
      А на работе, иконки нет.
      Так же понял, что бага Амазона.

  • @qspor
    @qspor 5 ปีที่แล้ว

    Вопрос такой. Функция выполняется только 1 раз. Тоесть если я создал функцию, для создания bucket, прописал тригер, для создания уникальности имени бакета использую timestamp либо rand(), в итоге после сохранения функции она исполняется ровно 1 раз и больше не выполняется, и не важно стработал тригер или нет или выполнен invoke через CLI или SDK, такое ощущение, что по завершению функции она уходит во фриз и поля для timestamp к примеру не сбрасываются на null, короче стек полон мусора и функция не может создать такой же бакет с таким же именем, для этого нужно удалить старый бакет и тогда функция создаст новый но со старым timestamp, Как бороться с этим фризом ??? Пробовал писать и на Python и на Java SDK используя jar.

    • @ADV-IT
      @ADV-IT  5 ปีที่แล้ว

      Lambda это как Docker контейнер, он не сразу умирает после выполнения Lambda.
      Есть такая фигня как Execution Context docs.aws.amazon.com/lambda/latest/dg/running-lambda-code.html

    • @qspor
      @qspor 5 ปีที่แล้ว +1

      ADV-IT Насколько я понял Execution Context это не что иное как temporary env variables или другими словами пресловутая куча без сборщика мусора, я конечно понимаю что контейнер хранит данный контест для уменьшения времени исполнения(Latency), но опять таки мой метод должен каждый раз исполнять код который явно создаёт random, чтобы можно было создовать к примеру новые бакеты с новыми сепараторами имен и возможно сотни таких в секунду. Возможно ли как вариант передавать аргументы при вызове Lambda функции ? но как их передать если тригер к примеру не передает ?

    • @ADV-IT
      @ADV-IT  5 ปีที่แล้ว

      Попробуй передавать параметр названия бакета, а не генерировать его в функции

    • @qspor
      @qspor 5 ปีที่แล้ว

      ADV-IT
      Вот через API Gateway вроде получилось.
      import requests, json, random
      url = 'vy2rsd0twb.execute-api.us-east-1.amazonaws.com/DEV1'
      headers = {'x-api-key': 'rXUe5suLnt6is6Wrm6EAK12AWsdztlqZ76OXM40f'}
      counters = 1
      while counters < 4:
      randoms = str(random.randint(1000000000000, 9999999999999))
      payload = {'name': randoms}
      r = requests.post(url, data=json.dumps(payload), headers=headers)
      counters = counters + 1

    • @qspor
      @qspor 5 ปีที่แล้ว +1

      PS Api у ключ удален в целях безопасности

  • @dimajj1477
    @dimajj1477 2 ปีที่แล้ว

    По ходу и иврит проскальзует בגדול :-)

  • @gyladti
    @gyladti 6 ปีที่แล้ว

    Здравствуйте, какая у Вас специальность?

    • @ADV-IT
      @ADV-IT  6 ปีที่แล้ว +1

      DevOps Engineer

  • @slavkoslavko5229
    @slavkoslavko5229 5 ปีที่แล้ว

    А в чем отличия boto3.resource('s3') и boto3.client('s3')?

    • @ADV-IT
      @ADV-IT  5 ปีที่แล้ว

      Управление одними ресурсами требуют boto3.resource другими boto3.client
      boto3.amazonaws.com/v1/documentation/api/latest/reference/services/s3.html#client

  • @sergapon666
    @sergapon666 6 ปีที่แล้ว

    а сколько планируется уроков?

    • @ADV-IT
      @ADV-IT  6 ปีที่แล้ว +5

      Дахрена!
      честно, там столько всего, что капец просто.
      Но когда я закончу все темы для экзамена Solutions Architect Associate я конечно скажу, ну и продолжу дальше разные другие серсисы показвать как ими пользоваться.

  • @almasabdrazak5089
    @almasabdrazak5089 5 ปีที่แล้ว

    так подождите , Hello world 125 мб или я чего-то не понял?

    • @ADV-IT
      @ADV-IT  5 ปีที่แล้ว

      На 23:43 виден размер функций

    • @JohnHarmRussia
      @JohnHarmRussia 4 ปีที่แล้ว

      @@ADV-IT Дык по этому таймкоду размер кода выводит. А человек спрашивает, видимо, про потребляемую лямбдой память (за которую тоже платить надо, кстати, дополнительно или она уже входит в ценник лямбды?). Тоже, кстати, присоединяюсь к вопросу..

    • @ADV-IT
      @ADV-IT  4 ปีที่แล้ว

      @@JohnHarmRussia по умолчанию тебе дается 128Mb на выполнение функции.

    • @ADV-IT
      @ADV-IT  4 ปีที่แล้ว

      Ты платишь по моему за execution time

  • @dodokwak
    @dodokwak 3 ปีที่แล้ว

    раньше при сохранении изменений в ламбде мы использовали кнопку Save, что понятно-интуитивно. теперь вместо неё - Deploy. В чём разница? Спасибо заранее.

    • @ADV-IT
      @ADV-IT  3 ปีที่แล้ว +2

      В названии как помоему

  • @vadim-aleksandrovich
    @vadim-aleksandrovich 2 ปีที่แล้ว +1

    В таком виде работает
    import boto3, os, time
    AWS_DEFAULT_REGION = "eu-central-1"
    os.environ['AWS_DEFAULT_REGION'] = AWS_DEFAULT_REGION
    bucketname = "lambda.create.me.on-" + str(time.time())
    def lambda_handler(event, context):
    s3 = boto3.resource('s3')
    try:
    results = s3.Bucket(bucketname)
    results.create(CreateBucketConfiguration={ 'LocationConstraint': AWS_DEFAULT_REGION})
    print('Bucket Created Successfully' + str(results) + '')
    except:
    print('Bucket Error!')

  • @alexey7005
    @alexey7005 6 ปีที่แล้ว +1

    Как на нем можно заработать .???

    • @ADV-IT
      @ADV-IT  6 ปีที่แล้ว +1

      На нем можно сэкономить кучу денег не запуская серверы.

    • @alexey7005
      @alexey7005 6 ปีที่แล้ว

      спасибо , тут дело в том что я не понимая в принципе как и что этим делать , ну вот есть у меня сертификат , и что мне с ним делать ? я не айтишник , тока учусь , если не затруднит .Спасибо

    • @ADV-IT
      @ADV-IT  6 ปีที่แล้ว +9

      Что делать?
      Искать работу!

  • @sonny23ization
    @sonny23ization 3 ปีที่แล้ว

    а в чем отличие от cloudformation?

    • @ADV-IT
      @ADV-IT  3 ปีที่แล้ว +1

      В том же в чем отличие Холодильника от Телевизора. Тоесть совсем разные вещи.

    • @wamikgildiev6632
      @wamikgildiev6632 11 หลายเดือนก่อน +1

      @@ADV-IT замечательный ответ. А главное исчерпывающий

  • @sergapon666
    @sergapon666 6 ปีที่แล้ว

    а почему вы не создадите свою группу в вконтакте?

    • @ADV-IT
      @ADV-IT  6 ปีที่แล้ว +2

      А зачем она нужна, ей заниматься надо, а времени на это у меня не особо, все что я делаю чисто хобби.
      У меня в VK и facebook личные странички есть, я ими редно пользуюсь, и особо ничего там не выкладываю.

  • @wamikgildiev6632
    @wamikgildiev6632 11 หลายเดือนก่อน

    Чувак, несомненно, ты много знаешь. Но объясняешь ты откровенно хреново. Слушаю и уши кровоточат. Особенно порадовали такие перлы, как "Сервер стоит и бежит".

  • @fivaproldge
    @fivaproldge 5 ปีที่แล้ว

    кстати, почему мИсэдж? Ведь мЭсседж \\ тебе пох, понимаю, просто любопытно, неужели тебя твои англоязычные коллеги не поправляют?

    • @ADV-IT
      @ADV-IT  5 ปีที่แล้ว +3

      Они думают что это просто мой акцент. Никто не поправляет.

  • @israel14169
    @israel14169 3 ปีที่แล้ว +1

    Название конечно изумительное "Ламбда" (почти как Ламбада), но выражаясь простым языком это мудрёный Планировщик задач.