Upgrade to Pro — share decks privately, control downloads, hide ads and more …

第130回 雲勉【オンライン】Step Functions を使ってS3のファイルを操作してみよう

第130回 雲勉【オンライン】Step Functions を使ってS3のファイルを操作してみよう

iret.kumoben

March 12, 2024
Tweet

More Decks by iret.kumoben

Other Decks in Technology

Transcript

  1. 0.⾃⼰紹介 2 ▪ 徳井 雄介 (Tokui Yusuke) ▪ CI事業部 CSMセクション所属

    ▪ 2021年10月 入社 ▪ 前職:PHPでWebサービス開発 ▪ 好きなAWSのサービス ▪ Step Functions ▪ Lambda
  2. アジェンダ 3 0.⾃⼰紹介 1. Step Functions とは 2. 活⽤例 3.

    ASLの書き⽅について 4. Step Functionsを動かしてみる 5. まとめ
  3. Step Functions とは 6 ワークフロー(ステートマシーン)の具体例 自販機 入金 商品選択 商品排出 お釣り返却

    入金されるまでは待機 金額を次のフローに渡す 金額が足りているか 金額
  4. Step Functions とは 7 ワークフロー(ステートマシーン)の具体例 自販機 入金 商品選択 商品排出 お釣り返却

    商品選択されるまでは待機 選択した商品と金額を次のフローに渡す 金額が足りているか 商品 金額
  5. Step Functions とは 8 ワークフロー(ステートマシーン)の具体例 自販機 入金 商品選択 商品排出 お釣り返却

    金額が足りているか確認して 次のフローを選択 もしくは 金額が足りるまで待機(xx秒後に返 金) 金額が足りているか 商品 金額
  6. Step Functions とは 11 • ステートマシンは JSON ベースの Amazon States

    Language (ASL) で定義する • 状態(Type)の一例 ◦ Task(単一の作業単位) ◦ Choice(分岐) ◦ Wait(待機) ◦ Parallel(並行処理) ◦ Succeed(成功) ◦ Fail(失敗) Amazon States Language (ASL) { ・ ・ "States": { "State1": { "Type": "Task", "Resource": "xxx", "Next": "State2" }, ・ ・ }
  7. Step Functions とは 12 分岐 Start End State1 State2 State4

    State3 条件によって、フローを変更したい パラメータの値などで条件分岐してフローを選択 例)ユーザー登録 ユーザーが新しいアカウントを作成する ユーザーが「個人」「法人」で処理を分岐
  8. Step Functions とは 13 並列 Start End State1 State2 特定の処理を同時に実行したい

    例)注文処理 顧客が注文を確定すると、並列ステップで ・在庫確認 ・支払い処理 ・配送準備 などのタスクが同時に実行される
  9. Step Functions とは 14 繰り返し Start End State1 State3 State2

    特定の処理が終わるまで繰り返し処理を行う 例)月次レポート作成 月初から月末まで、繰り返して日次のデータを取得し 、レポート生成プロセスを繰り返し実行
  10. Step Functions とは 17 コストについて リソースの効率的な利用 • 不必要な実行を避ける • 必要な時に必要なものを動かす

    スケーラビリティの向上と変更が容易 • 必要に応じてタスクを追加できる • 容易にワークフローを変更できる 実行時間・実行数で料金がかかる サーバーレス • インフラストラクチャの管理コストを削減
  11. Step Functionsとは? 18 • ワークフローを定義し、各ステップの状態を直感的に管理できる • 処理の進行状況の追跡が容易になる • 可読性と保守性の向上(デバッグの効率化) 状態管理・監視とデバッグ

    リトライやエラーハンドリング • 各ステップの失敗、タイムアウトなどのイベントを監視できる • エラーハンドリングやリトライのロジックを統合的に管理できる • アプリケーションの信頼性と耐障害性を向上できる Step Functionsのメリット
  12. 活用例 21 • S3ストレージサービスの1つ • アーカイブデータを保存するためのもの ◦ 低コスト ◦ 耐久性

    ◦ セキュリティ S3 Glacier とは ※ S3 Glacier復元通知 というものがあります... • S3 Glacier からの復元の開始 • S3 Glacier からの復元の完了 今回こちらはあえて使いません。
  13. ASLの書き方について 26 • SearchContent ◦ ファイルの検索 • RestoreContent ◦ ファイルの復元

    • WaitRestoration ◦ 復元待機 • ChoiceState ◦ 復元できているか • CopyContent ◦ ファイルコピー
  14. ASLの書き方について① 27 • SearchContent ◦ ファイルの検索 • RestoreContent ◦ ファイルの復元

    • WaitRestoration ◦ 復元待機 • ChoiceState ◦ 復元できているか • CopyContent ◦ ファイルコピー
  15. 28 ASLの書き方について① { "StartAt": "SearchContent", "States": { "SearchContent": { "Type":

    "Task", "Resource": "xxx", "Parameters": { "type": "search", }, "Next": "RestoreContent" }, ステートマシンの開始地点 ステートマシン内のステートを定義 • Type:ステートの種類 • Resource:リソースのARN • Parameters:パラメータ 次のステートを指定
  16. ASLの書き方について② 29 • SearchContent ◦ ファイルの検索 • RestoreContent ◦ ファイルの復元

    • WaitRestoration ◦ 復元待機 • ChoiceState ◦ 復元できているか • CopyContent ◦ ファイルコピー
  17. 30 ASLの書き方について② "ChoiceState": { "Type": "Choice", "Choices": [ { "Variable":

    "$.condition", "BooleanEquals": false, "Next": "WaitRestoration" }, { "Variable": "$.condition", "BooleanEquals": true, "Next": "CopyContent" } … 選択状態 条件に応じて次のステートを定義 • $.condition が false ◦ WaitRestoration へ • $.condition が true ◦ CopyContent へ
  18. ASLの書き方について③ 31 • SearchContent ◦ ファイルの検索 • RestoreContent ◦ ファイルの復元

    • WaitRestoration ◦ 復元待機 • ChoiceState ◦ 復元できているか • CopyContent ◦ ファイルコピー
  19. 32 ASLの書き方について③ "CopyContent": { "Type": "Task", "Resource": "xxx", "Parameters": {

    "type": "copy", }, "End": true } ステートが実行された後に、 ステートマシンが終了するかどうかを指定 「true」を指定すると、 ステートマシンが終了
  20. Step Functionsを動かしてみる 39 トリガー Lambda Lambda にトリガーを設定し、Lambda から Step Functions

    を呼び出す S3 S3 バケットに新しいオブジェクトが作成されると、イベントがトリガー API Gateway RESTful API エンドポイントを使用して Step Functions をトリガー Cloudwatch Events AWS リソースの状態変更やスケジュールされたイベントなど、 さまざまなイベントの監視に応じて Step Functions をトリガー
  21. 43 Step Functionsを動かしてみる 実行したLambdaのコンソールへ CloudWatchログへ • output ◦ 実行結果として出力される情報 •

    outputDetail ◦ 出力の詳細情報を含むオブジェクト ▪ ※出力が切り捨てられた場合はtrue
  22. まとめ 45 • サーバーの管理なしでワークフローを定義実行できる • Workflow Studio(GUI)でワークフローを定義できる • ASLでワークフローを定義できる •

    エラーハンドリング / 監視・デバッグが容易にできる • Lambda の実行が15分を超える可能性が出てきた時の対策になる