Size: a a a

2020 September 07

LK

L K in AWS_RU
Alexander Valkov
У меня тут задача:

1. По графику запускать импорт данных скриптом.
2. Запускать тесты на импортированных данных.
3. а. Fail тестов -> отчёт в SNS
3. b. Success тестов -> отчёт в SNS (?)
4. При 3.b. запускать другой импорт данных.

Оба импорта проходят за ~5 минут.

Думаю, как сделать.

Варианты:

1. CloudWatch Events Rule по графику -> Lambda импорт -> SNS -> тесты -> SNS -> On Success Lambda import #2

2. Комбинация AWS Batch, AWS Step Functions, ... ?

AWS Batch для быстрых заданий выходит, кажется, очень дорого, даже со спотом. 7 запусков hello world на спотах обошлись мне в $0,13
И непонятно, может ли SNS запускать Batch Jobs? И если нет, это значит Step Functions?
сегодня смотрел на step functions
вызывать разные лямбды можно взависимости от результата другой лямбды
лучше подходит step functions

а если можно разбить импорт на несколько обработчиков то есть параллельная обработка - https://stackoverflow.com/questions/54105792/parallel-states-merge-the-output-in-step-function
источник

AP

Alexander Patrushev in AWS_RU
Alexander Valkov
У меня тут задача:

1. По графику запускать импорт данных скриптом.
2. Запускать тесты на импортированных данных.
3. а. Fail тестов -> отчёт в SNS
3. b. Success тестов -> отчёт в SNS (?)
4. При 3.b. запускать другой импорт данных.

Оба импорта проходят за ~5 минут.

Думаю, как сделать.

Варианты:

1. CloudWatch Events Rule по графику -> Lambda импорт -> SNS -> тесты -> SNS -> On Success Lambda import #2

2. Комбинация AWS Batch, AWS Step Functions, ... ?

AWS Batch для быстрых заданий выходит, кажется, очень дорого, даже со спотом. 7 запусков hello world на спотах обошлись мне в $0,13
И непонятно, может ли SNS запускать Batch Jobs? И если нет, это значит Step Functions?
Batch это бесплатный оркестратор, который использует бесплатный ecs для запуска контейнеров на платном ec2.
Ec2 практически всегда дешевле lambda при сравнении в лоб.

Мне больше нравится lambda + step function.
Из плюсов то что падение лямбды будет автоматически обработано step function.

Event rule хороший вариант и может дёргать lambda.
источник

AP

Alexander Patrushev in AWS_RU
Главное!
Не забывайте что архитектурные особенности внутри cloud watch events не позволяют гарантировать исполнение единственный раз, те запуск может произойти несколько раз. У вас есть два варианта:
1. Если это не страшно и не влияет на результат, то просто ничего не делать.
2. Если это влияет на результат, то сделайте табличку на динамке чтобы отслеживать взятые в обработку id запросов и обновлять ее при начале обработки.
источник

N

NB in AWS_RU
Alexander Valkov
У меня тут задача:

1. По графику запускать импорт данных скриптом.
2. Запускать тесты на импортированных данных.
3. а. Fail тестов -> отчёт в SNS
3. b. Success тестов -> отчёт в SNS (?)
4. При 3.b. запускать другой импорт данных.

Оба импорта проходят за ~5 минут.

Думаю, как сделать.

Варианты:

1. CloudWatch Events Rule по графику -> Lambda импорт -> SNS -> тесты -> SNS -> On Success Lambda import #2

2. Комбинация AWS Batch, AWS Step Functions, ... ?

AWS Batch для быстрых заданий выходит, кажется, очень дорого, даже со спотом. 7 запусков hello world на спотах обошлись мне в $0,13
И непонятно, может ли SNS запускать Batch Jobs? И если нет, это значит Step Functions?
Вообще codepipeline и code build напрашиваются
источник

AP

Alexander Patrushev in AWS_RU
Alexander Valkov
У меня тут задача:

1. По графику запускать импорт данных скриптом.
2. Запускать тесты на импортированных данных.
3. а. Fail тестов -> отчёт в SNS
3. b. Success тестов -> отчёт в SNS (?)
4. При 3.b. запускать другой импорт данных.

Оба импорта проходят за ~5 минут.

Думаю, как сделать.

Варианты:

1. CloudWatch Events Rule по графику -> Lambda импорт -> SNS -> тесты -> SNS -> On Success Lambda import #2

2. Комбинация AWS Batch, AWS Step Functions, ... ?

AWS Batch для быстрых заданий выходит, кажется, очень дорого, даже со спотом. 7 запусков hello world на спотах обошлись мне в $0,13
И непонятно, может ли SNS запускать Batch Jobs? И если нет, это значит Step Functions?
Можно ещё как вариант вместо step function сделать несколько sqs топиков.
источник

AV

Alexander Valkov in AWS_RU
Alexander Valkov
У меня тут задача:

1. По графику запускать импорт данных скриптом.
2. Запускать тесты на импортированных данных.
3. а. Fail тестов -> отчёт в SNS
3. b. Success тестов -> отчёт в SNS (?)
4. При 3.b. запускать другой импорт данных.

Оба импорта проходят за ~5 минут.

Думаю, как сделать.

Варианты:

1. CloudWatch Events Rule по графику -> Lambda импорт -> SNS -> тесты -> SNS -> On Success Lambda import #2

2. Комбинация AWS Batch, AWS Step Functions, ... ?

AWS Batch для быстрых заданий выходит, кажется, очень дорого, даже со спотом. 7 запусков hello world на спотах обошлись мне в $0,13
И непонятно, может ли SNS запускать Batch Jobs? И если нет, это значит Step Functions?
Вопрос - в чём преимущество по сравнению с первым вариантом?
источник

AV

Alexander Valkov in AWS_RU
Alexander Patrushev
Batch это бесплатный оркестратор, который использует бесплатный ecs для запуска контейнеров на платном ec2.
Ec2 практически всегда дешевле lambda при сравнении в лоб.

Мне больше нравится lambda + step function.
Из плюсов то что падение лямбды будет автоматически обработано step function.

Event rule хороший вариант и может дёргать lambda.
> Ec2 практически всегда дешевле lambda при сравнении в лоб.

Ну я думаю 7 запусков hello world на лямбде точно не будут стоить $0.13
источник

AV

Alexander Valkov in AWS_RU
Alexander Patrushev
Можно ещё как вариант вместо step function сделать несколько sqs топиков.
SNS, может быть?
источник

AP

Alexander Patrushev in AWS_RU
Alexander Valkov
> Ec2 практически всегда дешевле lambda при сравнении в лоб.

Ну я думаю 7 запусков hello world на лямбде точно не будут стоить $0.13
Я бы тут попробовал разобраться. Было утверждение что это стоимость batch, который бесплатный. Что именно стоило 0.13$ можно понять только из разбивки billing которая нам с вами не известна.
источник

DS

Dmitriy Solodukha in AWS_RU
Alexander Valkov
> Ec2 практически всегда дешевле lambda при сравнении в лоб.

Ну я думаю 7 запусков hello world на лямбде точно не будут стоить $0.13
1M вызовов в месяц бесплатно. Далее $0.2 за 1М вызовов
источник

DS

Dmitriy Solodukha in AWS_RU
Если уж прям позанудствовать))
источник

AV

Alexander Valkov in AWS_RU
Alexander Patrushev
Я бы тут попробовал разобраться. Было утверждение что это стоимость batch, который бесплатный. Что именно стоило 0.13$ можно понять только из разбивки billing которая нам с вами не известна.
Это стоимость спотов, конечно же.
источник

AP

Alexander Patrushev in AWS_RU
Alexander Valkov
SNS, может быть?
Нет, именно sqs.
Идея step function это определение конкретных шагов и контроль их исполнения. Вы можете создать несколько топиков в sqs и передавать задачу из одного в другой в конце каждого шага. При плавлении задачи в очередь ее возьмёт обработчик и после выполнения в зависимости от результата положит в другую очередь где ее уже возьмёт ещё кто-то.
источник

AV

Alexander Valkov in AWS_RU
Alexander Patrushev
Нет, именно sqs.
Идея step function это определение конкретных шагов и контроль их исполнения. Вы можете создать несколько топиков в sqs и передавать задачу из одного в другой в конце каждого шага. При плавлении задачи в очередь ее возьмёт обработчик и после выполнения в зависимости от результата положит в другую очередь где ее уже возьмёт ещё кто-то.
SQS - это же очереди, а не топики.
источник

AP

Alexander Patrushev in AWS_RU
Очередь, да. Просто не всегда терминология совпадает у всех. Я имел в виду под топиком именно прост название очереди.
источник

AP

Alexander Patrushev in AWS_RU
Alexander Valkov
Это стоимость спотов, конечно же.
Те это прям строчка ec2 spot? А что был за инстанс?
источник

i

inqfen in AWS_RU
Alexander Valkov
Это стоимость спотов, конечно же.
Хм, ну не за час же
источник

i

inqfen in AWS_RU
Споты посекундно тарифицируются, на 0.13 должен быть жирный батч
источник

i

inqfen in AWS_RU
Который на лямбде или вообще не запустится или будет работать до ослиной пасхи
источник

AV

Alexander Valkov in AWS_RU
Alexander Patrushev
Те это прям строчка ec2 spot? А что был за инстанс?
Это в Savings Summary в Spot Requests
Инстанс по умолчанию с optimal был какой - c4.x4large
источник