Для создания Lambda Function в браузере должны быть включены и разрешены Cookies иначе будете получать 'Network error' которая абсолютно ни о чем не говорит. В инете вопросов по этой ошибке куча и все без ответов.
На Дженкинс дошел до последних уроков (равзёртывание в AWS) - пошел смотреть про AWS. И вот он тот самый момент, когда надо идти и смотреть/учить Питон.... Ё-маЁ!!! Хотя автору лютый респект =)
Знакомый путь, лол. С питоном ознакомился недели 3 назад, и с терраформ перескочил на авс курсы. Связать бы это все в голове - ансибл, дженкинс, авс..но тут только практика и реальные мелкие проекты =)
Дополню. Очень очень часто lambda ф-ия связана со state machine типа Task Step Function, которая в свою очередь триггерится тупо по расписанию. При деплое в YAML файле кроме всего прочего указываем scheduled rules в формате, очень похожем на cron, но с небольшими отличиями
Версия кода создания бакета из 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?
когда запускал лямбду из aws cli и экспортировал html код в txt, а потом открывал в консоли , это зачем?)) если уж html то в Output.html и сохраняй )) а потом просто "iexplore output.html" например)) и не надо в блокноте строки переносить. А за урок спасибо! Всё супер!
Привет из 2021. 1 при создании Бакета не нужно выставлять Регион, CreateBucketConfiguration={'LocationConstraint': AWS_DEFAULT_REGION} S3 does not require region selection. Денис или я что то не так понял из твоего скрипта.
Спасибо!!! Как всегда шикарный урок. Один вопрос - насколько 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 картинка ещё не полностью залилась в новую корзинку.
У меня такая же ситуация. Главное дома при использовании личного ноутбука, в консоли иконки сохранились. А на работе, иконки нет. Так же понял, что бага Амазона.
Вопрос такой. Функция выполняется только 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 функции ? но как их передать если тригер к примеру не передает ?
Управление одними ресурсами требуют boto3.resource другими boto3.client boto3.amazonaws.com/v1/documentation/api/latest/reference/services/s3.html#client
Дахрена! честно, там столько всего, что капец просто. Но когда я закончу все темы для экзамена 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 ("
Просто урок можно на цитаты:
"Это я сам придумал! Круто, правда?"
"Сервер как раб"))
@@escapeagreement8941 я и не спорю, смотрю с удовольствием)
Для создания Lambda Function в браузере должны быть включены и разрешены Cookies иначе будете получать 'Network error' которая абсолютно ни о чем не говорит.
В инете вопросов по этой ошибке куча и все без ответов.
еще бывает из-за неправильной даты на локальной машине
Крутой курс!
Спасибо!
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 назад, и с терраформ перескочил на авс курсы. Связать бы это все в голове - ансибл, дженкинс, авс..но тут только практика и реальные мелкие проекты =)
Спасибо. Очень полезно.
Неистово лайкаю, каждый выпуск :)
Дополню. Очень очень часто lambda ф-ия связана со state machine типа Task Step Function, которая в свою очередь триггерится тупо по расписанию. При деплое в YAML файле кроме всего прочего указываем scheduled rules в формате, очень похожем на cron, но с небольшими отличиями
Супер! Спасибо за урок.
огромный респект как раз сейчас сижу с лямбдой )))) сенк юююююююю
Lambda это большое будующее
Моё уважению автору
Спасибо за курсы )))
Версия кода создания бакета из 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")
звучит круто =)
ЗапусТкается, прикольно.)
Спасибо огромное за этот урок! Жду API Gateway. Если можно показать еще работу с событиями и запуском Lambda с помощью них.
Урок уже записан, скоро опубликуется, там я покажу как с помощю APIGateway запускать Lambda и еще как это дело защитить от нехороших людей :)
Звук клавиатуры старого доброго ASUS просто огонь:)
Кстати как клавиатура в MSI удобней чем в Asus?
Да, кнопки больше так как нету кнопок калькулятора вправа, он нафиг не нужны
Топ!
Здравствуйте! Спасибо за ваши уроки! Вы сказали, что еще сделаете урок по DynamoDB, так он будет? Пока я его не заметила в вашем плейлисте. :)
Всё как-нибудь :)
не перестаю ОХУЕВАТЬ - насколько же AWS крутая штука
когда запускал лямбду из aws cli и экспортировал html код в txt, а потом открывал в консоли , это зачем?)) если уж html то в Output.html и сохраняй )) а потом просто "iexplore output.html" например)) и не надо в блокноте строки переносить. А за урок спасибо! Всё супер!
Ещё aot можете использовать, скомпилированный из любого языка, который поддерживает Ahead of Time компиляцию (например, Dart, Kotlin и т.д.).
РЕСПЕКТ, быстрее чем читать нудную доку
Привет из 2021.
1 при создании Бакета не нужно выставлять Регион,
CreateBucketConfiguration={'LocationConstraint': AWS_DEFAULT_REGION}
S3 does not require region selection.
Денис или я что то не так понял из твоего скрипта.
Спасибо!!! Как всегда шикарный урок. Один вопрос - насколько Lambda дорогая? Можно ли для тренировки наделать всяких функций и сохранить их или они будут втихаря пожирать деньги и лучше не стоит?
Очень дешевая, так что не парься
То есть это SaaS? Очень круто! Спасибо.
Добавить хрень!
Hello world использовал 21 мб памяти?)) 12:15 минута
Операционной
пляха/муха )))))
Кто-то пытался реализовать 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 картинка ещё не полностью залилась в новую корзинку.
У меня тоже почему-то не все иконки сохраняются сверху консоли.
У всех это, баг на Амазоне
У меня такая же ситуация.
Главное дома при использовании личного ноутбука, в консоли иконки сохранились.
А на работе, иконки нет.
Так же понял, что бага Амазона.
Вопрос такой. Функция выполняется только 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
А в чем отличия boto3.resource('s3') и boto3.client('s3')?
Управление одними ресурсами требуют boto3.resource другими boto3.client
boto3.amazonaws.com/v1/documentation/api/latest/reference/services/s3.html#client
а сколько планируется уроков?
Дахрена!
честно, там столько всего, что капец просто.
Но когда я закончу все темы для экзамена Solutions Architect Associate я конечно скажу, ну и продолжу дальше разные другие серсисы показвать как ими пользоваться.
так подождите , Hello world 125 мб или я чего-то не понял?
На 23:43 виден размер функций
@@ADV-IT Дык по этому таймкоду размер кода выводит. А человек спрашивает, видимо, про потребляемую лямбдой память (за которую тоже платить надо, кстати, дополнительно или она уже входит в ценник лямбды?). Тоже, кстати, присоединяюсь к вопросу..
@@JohnHarmRussia по умолчанию тебе дается 128Mb на выполнение функции.
Ты платишь по моему за execution time
раньше при сохранении изменений в ламбде мы использовали кнопку Save, что понятно-интуитивно. теперь вместо неё - Deploy. В чём разница? Спасибо заранее.
В названии как помоему
В таком виде работает
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 замечательный ответ. А главное исчерпывающий
а почему вы не создадите свою группу в вконтакте?
А зачем она нужна, ей заниматься надо, а времени на это у меня не особо, все что я делаю чисто хобби.
У меня в VK и facebook личные странички есть, я ими редно пользуюсь, и особо ничего там не выкладываю.
Чувак, несомненно, ты много знаешь. Но объясняешь ты откровенно хреново. Слушаю и уши кровоточат. Особенно порадовали такие перлы, как "Сервер стоит и бежит".
кстати, почему мИсэдж? Ведь мЭсседж \\ тебе пох, понимаю, просто любопытно, неужели тебя твои англоязычные коллеги не поправляют?
Они думают что это просто мой акцент. Никто не поправляет.
Название конечно изумительное "Ламбда" (почти как Ламбада), но выражаясь простым языком это мудрёный Планировщик задач.