mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2025-12-27 05:03:31 -08:00
Translated ['src/banners/hacktricks-training.md', 'src/pentesting-ci-cd/
This commit is contained in:
@@ -4,20 +4,20 @@
|
||||
|
||||
## Step Functions
|
||||
|
||||
AWS Step Functions - це сервіс робочих процесів, який дозволяє вам координувати та організовувати кілька сервісів AWS у безсерверні робочі процеси. Використовуючи AWS Step Functions, ви можете проектувати та виконувати робочі процеси, які з'єднують різні сервіси AWS, такі як AWS Lambda, Amazon S3, Amazon DynamoDB та багато інших, у послідовності кроків. Цей сервіс оркестрації надає візуальний інтерфейс робочого процесу та пропонує можливості **машини станів**, що дозволяє вам визначати кожен крок робочого процесу декларативним чином, використовуючи JSON-формат **Amazon States Language** (ASL).
|
||||
AWS Step Functions - це сервіс робочих процесів, який дозволяє вам координувати та організовувати кілька сервісів AWS у безсерверні робочі процеси. Використовуючи AWS Step Functions, ви можете проектувати та виконувати робочі процеси, які з'єднують різні сервіси AWS, такі як AWS Lambda, Amazon S3, Amazon DynamoDB та багато інших, у послідовності кроків. Цей сервіс оркестрації надає візуальний інтерфейс робочого процесу та пропонує можливості **state machine**, що дозволяє вам визначати кожен крок робочого процесу декларативним чином, використовуючи JSON-формат **Amazon States Language** (ASL).
|
||||
|
||||
## Key concepts
|
||||
|
||||
### Standard vs. Express Workflows
|
||||
|
||||
AWS Step Functions пропонує два типи **робочих процесів машини станів**: Standard та Express.
|
||||
AWS Step Functions пропонує два типи **state machine workflows**: Standard та Express.
|
||||
|
||||
- **Standard Workflow**: Цей тип робочого процесу за замовчуванням призначений для тривалих, надійних та аудиторських процесів. Він підтримує **точне виконання один раз**, забезпечуючи виконання завдань лише один раз, якщо не вказані повторні спроби. Ідеально підходить для робочих процесів, які потребують детальної історії виконання, і може працювати до одного року.
|
||||
- **Express Workflow**: Цей тип ідеально підходить для завдань з високим обсягом та короткою тривалістю, що тривають до п'яти хвилин. Вони підтримують **виконання принаймні один раз**, що підходить для ідемпотентних завдань, таких як обробка даних. Ці робочі процеси оптимізовані для витрат та продуктивності, стягуючи плату на основі виконань, тривалості та використання пам'яті.
|
||||
- **Standard Workflow**: Цей тип робочого процесу за замовчуванням призначений для тривалих, надійних та аудиторських процесів. Він підтримує **exactly-once execution**, забезпечуючи виконання завдань лише один раз, якщо не вказані повторні спроби. Ідеально підходить для робочих процесів, які потребують детальної історії виконання, і може працювати до одного року.
|
||||
- **Express Workflow**: Цей тип ідеально підходить для завдань з високим обсягом та короткою тривалістю, що тривають до п'яти хвилин. Вони підтримують **at-least-once execution**, підходять для ідемпотентних завдань, таких як обробка даних. Ці робочі процеси оптимізовані для витрат та продуктивності, стягуючи плату на основі виконань, тривалості та використання пам'яті.
|
||||
|
||||
### States
|
||||
|
||||
Стан є основними одиницями машин станів. Вони визначають окремі кроки в робочому процесі, здатні виконувати різноманітні функції в залежності від їх типу:
|
||||
States - це основні одиниці state machines. Вони визначають окремі кроки в робочому процесі, здатні виконувати різноманітні функції в залежності від їх типу:
|
||||
|
||||
- **Task:** Виконує завдання, часто використовуючи сервіс AWS, такий як Lambda.
|
||||
- **Choice:** Приймає рішення на основі вхідних даних.
|
||||
@@ -29,16 +29,16 @@ AWS Step Functions пропонує два типи **робочих проце
|
||||
|
||||
### Task
|
||||
|
||||
Стан **Task** представляє собою єдину одиницю роботи, виконувану машиною станів. Завдання можуть викликати різні ресурси, включаючи активності, функції Lambda, сервіси AWS або сторонні API.
|
||||
Стан **Task** представляє собою єдину одиницю роботи, виконувану state machine. Завдання можуть викликати різні ресурси, включаючи активності, функції Lambda, сервіси AWS або сторонні API.
|
||||
|
||||
- **Activities**: Користувацькі працівники, які ви керуєте, підходять для тривалих процесів.
|
||||
- Ресурс: **`arn:aws:states:region:account:activity:name`**.
|
||||
- Resource: **`arn:aws:states:region:account:activity:name`**.
|
||||
- **Lambda Functions**: Виконує функції AWS Lambda.
|
||||
- Ресурс: **`arn:aws:lambda:region:account:function:function-name`**.
|
||||
- Resource: **`arn:aws:lambda:region:account:function:function-name`**.
|
||||
- **AWS Services**: Інтегрується безпосередньо з іншими сервісами AWS, такими як DynamoDB або S3.
|
||||
- Ресурс: **`arn:partition:states:region:account:servicename:APIname`**.
|
||||
- Resource: **`arn:partition:states:region:account:servicename:APIname`**.
|
||||
- **HTTP Task**: Викликає сторонні API.
|
||||
- Поле ресурсу: **`arn:aws:states:::http:invoke`**. Потім ви повинні надати деталі конфігурації кінцевої точки API, такі як URL API, метод та деталі аутентифікації.
|
||||
- Resource field: **`arn:aws:states:::http:invoke`**. Потім ви повинні надати деталі конфігурації кінцевої точки API, такі як URL API, метод та деталі аутентифікації.
|
||||
|
||||
Наступний приклад показує визначення стану Task, який викликає функцію Lambda під назвою HelloWorld:
|
||||
```json
|
||||
@@ -52,12 +52,12 @@ AWS Step Functions пропонує два типи **робочих проце
|
||||
"End": true
|
||||
}
|
||||
```
|
||||
### Choice
|
||||
### Вибір
|
||||
|
||||
Стан **Choice** додає умовну логіку до робочого процесу, що дозволяє приймати рішення на основі вхідних даних. Він оцінює вказані умови та переходить до відповідного стану на основі результатів.
|
||||
|
||||
- **Comparison**: Кожне правило вибору включає оператор порівняння (наприклад, **`NumericEquals`**, **`StringEquals`**), який порівнює вхідну змінну з вказаним значенням або іншою змінною.
|
||||
- **Next Field**: Стан вибору не підтримує поле **`End`**, натомість вони визначають стан **`Next`**, до якого потрібно перейти, якщо порівняння є істинним.
|
||||
- **Порівняння**: Кожне правило вибору включає оператор порівняння (наприклад, **`NumericEquals`**, **`StringEquals`**), який порівнює вхідну змінну з вказаним значенням або іншою змінною.
|
||||
- **Поле Next**: Стан вибору не підтримує поле **`End`**, натомість він визначає стан **`Next`** для переходу, якщо порівняння є істинним.
|
||||
|
||||
Приклад стану **Choice**:
|
||||
```json
|
||||
@@ -95,7 +95,7 @@ AWS Step Functions пропонує два типи **робочих проце
|
||||
|
||||
### Pass
|
||||
|
||||
Стан **Pass** передає свій вхідний сигнал на вихід або без виконання будь-якої роботи, або перетворюючи вхідний JSON стан за допомогою фільтрів, а потім передаючи перетворені дані до наступного стану. Це корисно для тестування та побудови станів машин, дозволяючи вам впроваджувати статичні дані або перетворювати їх.
|
||||
Стан **Pass** передає свій вхідний сигнал на вихід або без виконання будь-якої роботи, або перетворюючи вхідний JSON стан за допомогою фільтрів, а потім передаючи перетворені дані до наступного стану. Це корисно для тестування та побудови станів машин, дозволяючи вам вводити статичні дані або перетворювати їх.
|
||||
```json
|
||||
"PassState": {
|
||||
"Type": "Pass",
|
||||
@@ -106,7 +106,7 @@ AWS Step Functions пропонує два типи **робочих проце
|
||||
```
|
||||
### Wait
|
||||
|
||||
Стан **Wait** затримує виконання машини станів на вказаний проміжок часу. Є три основні методи для налаштування часу очікування:
|
||||
Стан **Wait** затримує виконання машини станів на вказаний проміжок часу. Існує три основні методи для налаштування часу очікування:
|
||||
|
||||
- **X Seconds**: Фіксована кількість секунд для очікування.
|
||||
|
||||
@@ -128,7 +128,7 @@ AWS Step Functions пропонує два типи **робочих проце
|
||||
}
|
||||
```
|
||||
|
||||
- **Dynamic Wait**: На основі вхідних даних за допомогою **`SecondsPath`** або **`TimestampPath`**.
|
||||
- **Dynamic Wait**: На основі вхідних даних, використовуючи **`SecondsPath`** або **`TimestampPath`**.
|
||||
|
||||
```json
|
||||
jsonCopiar código
|
||||
@@ -234,16 +234,16 @@ jsonCopiar código
|
||||
|
||||
### Versions and aliases
|
||||
|
||||
Step Functions також дозволяє вам керувати розгортаннями робочих процесів через **версії** та **псевдоніми** станів машин. Версія представляє знімок стану машини, який може бути виконаний. Псевдоніми служать вказівниками на до двох версій стану машини.
|
||||
Step Functions також дозволяє вам керувати розгортаннями робочих процесів через **версії** та **псевдоніми** станів машин. Версія представляє собою знімок стану машини, який може бути виконаний. Псевдоніми служать вказівниками на до двох версій стану машини.
|
||||
|
||||
- **Versions**: Ці незмінні знімки стану машини створюються з найостаннішої ревізії цієї стану машини. Кожна версія ідентифікується унікальним ARN, який поєднує ARN стану машини з номером версії, розділеним двокрапкою (**`arn:aws:states:region:account-id:stateMachine:StateMachineName:version-number`**). Версії не можуть бути відредаговані, але ви можете оновити стан машини та опублікувати нову версію або використовувати бажану версію стану машини.
|
||||
- **Aliases**: Ці вказівники можуть посилатися на до двох версій одного й того ж стану машини. Можна створити кілька псевдонімів для однієї стану машини, кожен з яких ідентифікується унікальним ARN, побудованим шляхом поєднання ARN стану машини з назвою псевдоніма, розділеною двокрапкою (**`arn:aws:states:region:account-id:stateMachine:StateMachineName:aliasName`**). Псевдоніми дозволяють маршрутизацію трафіку між однією з двох версій стану машини. Альтернативно, псевдонім може вказувати на одну конкретну версію стану машини, але не на інші псевдоніми. Їх можна оновити, щоб перенаправити на іншу версію стану машини за потреби, що полегшує контрольовані розгортання та управління робочими процесами.
|
||||
- **Aliases**: Ці вказівники можуть посилатися на до двох версій однієї і тієї ж стану машини. Можна створити кілька псевдонімів для однієї стану машини, кожен з яких ідентифікується унікальним ARN, побудованим шляхом поєднання ARN стану машини з ім'ям псевдоніма, розділеним двокрапкою (**`arn:aws:states:region:account-id:stateMachine:StateMachineName:aliasName`**). Псевдоніми дозволяють маршрутизацію трафіку між однією з двох версій стану машини. Альтернативно, псевдонім може вказувати на одну конкретну версію стану машини, але не на інші псевдоніми. Їх можна оновити, щоб перенаправити на іншу версію стану машини за потреби, що полегшує контрольовані розгортання та управління робочими процесами.
|
||||
|
||||
Для отримання більш детальної інформації про **ASL** перевірте: [**Amazon States Language**](https://states-language.net/spec.html).
|
||||
|
||||
## IAM Roles for State machines
|
||||
|
||||
AWS Step Functions використовує ролі AWS Identity and Access Management (IAM) для контролю доступу до ресурсів і дій у станах машин. Ось ключові аспекти, пов'язані з безпекою та ролями IAM в AWS Step Functions:
|
||||
AWS Step Functions використовує ролі AWS Identity and Access Management (IAM) для контролю доступу до ресурсів та дій у станах машин. Ось ключові аспекти, пов'язані з безпекою та ролями IAM в AWS Step Functions:
|
||||
|
||||
- **Execution Role**: Кожна стан машина в AWS Step Functions асоційована з роллю виконання IAM. Ця роль визначає, які дії стан машина може виконувати від вашого імені. Коли стан машина переходить між станами, які взаємодіють з сервісами AWS (наприклад, виклик функцій Lambda, доступ до DynamoDB тощо), вона приймає цю роль виконання для виконання цих дій.
|
||||
- **Permissions**: Роль виконання IAM повинна бути налаштована з дозволами, які дозволяють необхідні дії з іншими сервісами AWS. Наприклад, якщо вашій стану машини потрібно викликати функції AWS Lambda, роль IAM повинна мати дозволи **`lambda:InvokeFunction`**. Аналогічно, якщо їй потрібно записувати в DynamoDB, повинні бути надані відповідні дозволи (**`dynamodb:PutItem`**, **`dynamodb:UpdateItem`** тощо).
|
||||
|
||||
Reference in New Issue
Block a user