Для создания Lambda Function в браузере должны быть включены и разрешены Cookies иначе будете получать 'Network error' которая абсолютно ни о чем не говорит. В инете вопросов по этой ошибке куча и все без ответов.
Дополню. Очень очень часто lambda ф-ия связана со state machine типа Task Step Function, которая в свою очередь триггерится тупо по расписанию. При деплое в YAML файле кроме всего прочего указываем scheduled rules в формате, очень похожем на cron, но с небольшими отличиями
На Дженкинс дошел до последних уроков (равзёртывание в AWS) - пошел смотреть про AWS. И вот он тот самый момент, когда надо идти и смотреть/учить Питон.... Ё-маЁ!!! Хотя автору лютый респект =)
Знакомый путь, лол. С питоном ознакомился недели 3 назад, и с терраформ перескочил на авс курсы. Связать бы это все в голове - ансибл, дженкинс, авс..но тут только практика и реальные мелкие проекты =)
Версия кода создания бакета из 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?
Привет из 2021. 1 при создании Бакета не нужно выставлять Регион, CreateBucketConfiguration={'LocationConstraint': AWS_DEFAULT_REGION} S3 does not require region selection. Денис или я что то не так понял из твоего скрипта.
когда запускал лямбду из aws cli и экспортировал html код в txt, а потом открывал в консоли , это зачем?)) если уж html то в Output.html и сохраняй )) а потом просто "iexplore output.html" например)) и не надо в блокноте строки переносить. А за урок спасибо! Всё супер!
Спасибо!!! Как всегда шикарный урок. Один вопрос - насколько Lambda дорогая? Можно ли для тренировки наделать всяких функций и сохранить их или они будут втихаря пожирать деньги и лучше не стоит?
Кто-то пытался реализовать 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 спасибо. добавила getObject, putOject ,не помогает... пересистирует. Думала сначала,что может быть долго re-size-cя. увеличила Timeout y lambda. Но дело скорей всего в чём-то другом. А главное, почему image таки загружается со второго раза, если он уперся рогом и в первый раз отказался to render? update: скорее всего моя джанго делает запрос на картинку слишком быстро,когда от-resized картинка ещё не полностью залилась в новую корзинку.
У меня такая же ситуация. Главное дома при использовании личного ноутбука, в консоли иконки сохранились. А на работе, иконки нет. Так же понял, что бага Амазона.
Управление одними ресурсами требуют boto3.resource другими boto3.client boto3.amazonaws.com/v1/documentation/api/latest/reference/services/s3.html#client
Вопрос такой. Функция выполняется только 1 раз. Тоесть если я создал функцию, для создания bucket, прописал тригер, для создания уникальности имени бакета использую timestamp либо rand(), в итоге после сохранения функции она исполняется ровно 1 раз и больше не выполняется, и не важно стработал тригер или нет или выполнен invoke через CLI или SDK, такое ощущение, что по завершению функции она уходит во фриз и поля для timestamp к примеру не сбрасываются на null, короче стек полон мусора и функция не может создать такой же бакет с таким же именем, для этого нужно удалить старый бакет и тогда функция создаст новый но со старым timestamp, Как бороться с этим фризом ??? Пробовал писать и на Python и на Java SDK используя jar.
Lambda это как Docker контейнер, он не сразу умирает после выполнения Lambda. Есть такая фигня как Execution Context docs.aws.amazon.com/lambda/latest/dg/running-lambda-code.html
ADV-IT Насколько я понял Execution Context это не что иное как temporary env variables или другими словами пресловутая куча без сборщика мусора, я конечно понимаю что контейнер хранит данный контест для уменьшения времени исполнения(Latency), но опять таки мой метод должен каждый раз исполнять код который явно создаёт random, чтобы можно было создовать к примеру новые бакеты с новыми сепараторами имен и возможно сотни таких в секунду. Возможно ли как вариант передавать аргументы при вызове Lambda функции ? но как их передать если тригер к примеру не передает ?
Дахрена! честно, там столько всего, что капец просто. Но когда я закончу все темы для экзамена Solutions Architect Associate я конечно скажу, ну и продолжу дальше разные другие серсисы показвать как ими пользоваться.
@@ADV-IT Дык по этому таймкоду размер кода выводит. А человек спрашивает, видимо, про потребляемую лямбдой память (за которую тоже платить надо, кстати, дополнительно или она уже входит в ценник лямбды?). Тоже, кстати, присоединяюсь к вопросу..
раньше при сохранении изменений в ламбде мы использовали кнопку Save, что понятно-интуитивно. теперь вместо неё - Deploy. В чём разница? Спасибо заранее.
спасибо , тут дело в том что я не понимая в принципе как и что этим делать , ну вот есть у меня сертификат , и что мне с ним делать ? я не айтишник , тока учусь , если не затруднит .Спасибо
А зачем она нужна, ей заниматься надо, а времени на это у меня не особо, все что я делаю чисто хобби. У меня в VK и facebook личные странички есть, я ими редно пользуюсь, и особо ничего там не выкладываю.
Чувак, несомненно, ты много знаешь. Но объясняешь ты откровенно хреново. Слушаю и уши кровоточат. Особенно порадовали такие перлы, как "Сервер стоит и бежит".
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 ("
Для создания Lambda Function в браузере должны быть включены и разрешены Cookies иначе будете получать 'Network error' которая абсолютно ни о чем не говорит.
В инете вопросов по этой ошибке куча и все без ответов.
еще бывает из-за неправильной даты на локальной машине
Крутой курс!
Спасибо!
Просто урок можно на цитаты:
"Это я сам придумал! Круто, правда?"
"Сервер как раб"))
@@escapeagreement8941 я и не спорю, смотрю с удовольствием)
Дополню. Очень очень часто lambda ф-ия связана со state machine типа Task Step Function, которая в свою очередь триггерится тупо по расписанию. При деплое в YAML файле кроме всего прочего указываем scheduled rules в формате, очень похожем на cron, но с небольшими отличиями
Супер! Спасибо за урок.
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!")
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!" )
Неистово лайкаю, каждый выпуск :)
На Дженкинс дошел до последних уроков (равзёртывание в AWS) - пошел смотреть про AWS. И вот он тот самый момент, когда надо идти и смотреть/учить Питон.... Ё-маЁ!!! Хотя автору лютый респект =)
Как бесконечная история учебы :)
Знакомый путь, лол. С питоном ознакомился недели 3 назад, и с терраформ перескочил на авс курсы. Связать бы это все в голове - ансибл, дженкинс, авс..но тут только практика и реальные мелкие проекты =)
Спасибо. Очень полезно.
Версия кода создания бакета из 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?
Поидее если есть Environment variable AWS_DEFAULT_REGION, то его и использует boto3.client("s3")
Моё уважению автору
Спасибо за курсы )))
огромный респект как раз сейчас сижу с лямбдой )))) сенк юююююююю
Lambda это большое будующее
Привет из 2021.
1 при создании Бакета не нужно выставлять Регион,
CreateBucketConfiguration={'LocationConstraint': AWS_DEFAULT_REGION}
S3 does not require region selection.
Денис или я что то не так понял из твоего скрипта.
ЗапусТкается, прикольно.)
звучит круто =)
Спасибо огромное за этот урок! Жду API Gateway. Если можно показать еще работу с событиями и запуском Lambda с помощью них.
Урок уже записан, скоро опубликуется, там я покажу как с помощю APIGateway запускать Lambda и еще как это дело защитить от нехороших людей :)
Ещё aot можете использовать, скомпилированный из любого языка, который поддерживает Ahead of Time компиляцию (например, Dart, Kotlin и т.д.).
Здравствуйте! Спасибо за ваши уроки! Вы сказали, что еще сделаете урок по DynamoDB, так он будет? Пока я его не заметила в вашем плейлисте. :)
Всё как-нибудь :)
Звук клавиатуры старого доброго ASUS просто огонь:)
Кстати как клавиатура в MSI удобней чем в Asus?
Да, кнопки больше так как нету кнопок калькулятора вправа, он нафиг не нужны
когда запускал лямбду из aws cli и экспортировал html код в txt, а потом открывал в консоли , это зачем?)) если уж html то в Output.html и сохраняй )) а потом просто "iexplore output.html" например)) и не надо в блокноте строки переносить. А за урок спасибо! Всё супер!
То есть это SaaS? Очень круто! Спасибо.
Спасибо!!! Как всегда шикарный урок. Один вопрос - насколько Lambda дорогая? Можно ли для тренировки наделать всяких функций и сохранить их или они будут втихаря пожирать деньги и лучше не стоит?
Очень дешевая, так что не парься
Кто-то пытался реализовать 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).
Спасибо.
bucket policy= action getObject. ?
А какже PutObject?
@@ADV-IT спасибо. добавила getObject, putOject ,не помогает... пересистирует.
Думала сначала,что может быть долго re-size-cя. увеличила Timeout y lambda. Но дело скорей всего в чём-то другом. А главное, почему image таки загружается со второго раза, если он уперся рогом и в первый раз отказался to render?
update: скорее всего моя джанго делает запрос на картинку слишком быстро,когда от-resized картинка ещё не полностью залилась в новую корзинку.
не перестаю ОХУЕВАТЬ - насколько же AWS крутая штука
תודה רבה ! 2024
Hello world использовал 21 мб памяти?)) 12:15 минута
Операционной
У меня тоже почему-то не все иконки сохраняются сверху консоли.
У всех это, баг на Амазоне
У меня такая же ситуация.
Главное дома при использовании личного ноутбука, в консоли иконки сохранились.
А на работе, иконки нет.
Так же понял, что бага Амазона.
А в чем отличия boto3.resource('s3') и boto3.client('s3')?
Управление одними ресурсами требуют boto3.resource другими boto3.client
boto3.amazonaws.com/v1/documentation/api/latest/reference/services/s3.html#client
Топ!
Вопрос такой. Функция выполняется только 1 раз. Тоесть если я создал функцию, для создания bucket, прописал тригер, для создания уникальности имени бакета использую timestamp либо rand(), в итоге после сохранения функции она исполняется ровно 1 раз и больше не выполняется, и не важно стработал тригер или нет или выполнен invoke через CLI или SDK, такое ощущение, что по завершению функции она уходит во фриз и поля для timestamp к примеру не сбрасываются на null, короче стек полон мусора и функция не может создать такой же бакет с таким же именем, для этого нужно удалить старый бакет и тогда функция создаст новый но со старым timestamp, Как бороться с этим фризом ??? Пробовал писать и на Python и на Java SDK используя jar.
Lambda это как Docker контейнер, он не сразу умирает после выполнения Lambda.
Есть такая фигня как Execution Context docs.aws.amazon.com/lambda/latest/dg/running-lambda-code.html
ADV-IT Насколько я понял Execution Context это не что иное как temporary env variables или другими словами пресловутая куча без сборщика мусора, я конечно понимаю что контейнер хранит данный контест для уменьшения времени исполнения(Latency), но опять таки мой метод должен каждый раз исполнять код который явно создаёт random, чтобы можно было создовать к примеру новые бакеты с новыми сепараторами имен и возможно сотни таких в секунду. Возможно ли как вариант передавать аргументы при вызове Lambda функции ? но как их передать если тригер к примеру не передает ?
Попробуй передавать параметр названия бакета, а не генерировать его в функции
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
PS Api у ключ удален в целях безопасности
РЕСПЕКТ, быстрее чем читать нудную доку
Здравствуйте, какая у Вас специальность?
DevOps Engineer
а сколько планируется уроков?
Дахрена!
честно, там столько всего, что капец просто.
Но когда я закончу все темы для экзамена Solutions Architect Associate я конечно скажу, ну и продолжу дальше разные другие серсисы показвать как ими пользоваться.
так подождите , Hello world 125 мб или я чего-то не понял?
На 23:43 виден размер функций
@@ADV-IT Дык по этому таймкоду размер кода выводит. А человек спрашивает, видимо, про потребляемую лямбдой память (за которую тоже платить надо, кстати, дополнительно или она уже входит в ценник лямбды?). Тоже, кстати, присоединяюсь к вопросу..
@@JohnHarmRussia по умолчанию тебе дается 128Mb на выполнение функции.
Ты платишь по моему за execution time
В таком виде работает
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!')
а в чем отличие от cloudformation?
В том же в чем отличие Холодильника от Телевизора. Тоесть совсем разные вещи.
@@ADV-IT замечательный ответ. А главное исчерпывающий
раньше при сохранении изменений в ламбде мы использовали кнопку Save, что понятно-интуитивно. теперь вместо неё - Deploy. В чём разница? Спасибо заранее.
В названии как помоему
По ходу и иврит проскальзует בגדול :-)
Как на нем можно заработать .???
На нем можно сэкономить кучу денег не запуская серверы.
спасибо , тут дело в том что я не понимая в принципе как и что этим делать , ну вот есть у меня сертификат , и что мне с ним делать ? я не айтишник , тока учусь , если не затруднит .Спасибо
Что делать?
Искать работу!
Добавить хрень!
а почему вы не создадите свою группу в вконтакте?
А зачем она нужна, ей заниматься надо, а времени на это у меня не особо, все что я делаю чисто хобби.
У меня в VK и facebook личные странички есть, я ими редно пользуюсь, и особо ничего там не выкладываю.
пляха/муха )))))
Название конечно изумительное "Ламбда" (почти как Ламбада), но выражаясь простым языком это мудрёный Планировщик задач.
кстати, почему мИсэдж? Ведь мЭсседж \\ тебе пох, понимаю, просто любопытно, неужели тебя твои англоязычные коллеги не поправляют?
Они думают что это просто мой акцент. Никто не поправляет.
Чувак, несомненно, ты много знаешь. Но объясняешь ты откровенно хреново. Слушаю и уши кровоточат. Особенно порадовали такие перлы, как "Сервер стоит и бежит".