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

ジョブ管理システムをAWS Step Functionsに移行する時の勘所

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.

ジョブ管理システムをAWS Step Functionsに移行する時の勘所

ジョブ管理システムをAWS Step Functionsに移行する際に考えるべきこと注意することをまとめてみました。

Avatar for のんピ

のんピ

July 29, 2022
Tweet

More Decks by のんピ

Other Decks in Technology

Transcript

  1. 2 自己紹介 { "ニックネーム": "のんピ", "Twitter ID": "@non____97", "部署": "AWS事業本部

    コンサルティング部", "興味のあること": "面白そうなブログネタ探し", "好きなAWSサービス" : [ "AWS Step Functions", "AWS Transit Gateway", "Amazon FSx for NetApp ONTAP" ], "称号" : [ "2022 APN ALL AWS Certifications Engineers", "2022 APN AWS Top Engineers (Networking)" ] }
  2. 21 SSM Run Commandの注意点 実行が完了したか定期的にポーリングする必要がある • SSM RunCommandでスクリプトを実行する • ListCommandInvocations

    APIを呼び出す • SSM RunCommandが正常終了したかどうか確 認する • まだ実行中であれば10秒間待機して再度 ListCommandInvocations APIを呼び出す • 正常終了していれば次の処理に移る • 異常終了していればステートマシン自体を異常終 了させる
  3. 23 EventBridgeルールのCron式の例 スケジュール Cron式 毎日午前 10:00 (UTC+0) に実行 cron (0

    10 * * ? *) 毎日午後 12:15 (UTC+0) に実行 cron (15 12 * * ? *) 毎週月曜日から金曜日まで午後 6:00 (UTC+0) に実行 cron (0 18 ? * MON-FRI *) 毎月 1 日の午前 8:00 (UTC+0) に実行 cron (0 8 1 * ? *) 15 分ごとに実行 cron (0/15 * * * ? *) 月曜日から金曜日まで 10 分ごとに実行 cron (0/10 * ? * MON-FRI *) 月曜日から金曜日まで午前 8:00 から午後 5:55 (UTC+0) の間に5 分ごとに実行 cron (0/10 * ? * MON-FRI *) 月曜日から金曜日まで開始日の午後10時から翌日の午前2時 (UTC) の間、30分間隔で実行 cron (0/30 20-2 ? * MON-FRI *)
  4. 24 Cron式で表現が難しい場合 「祝日や締め日のみ実行 or 実行しない」 • AWS Systems Manager Change

    Calendarを活用する • ワークフローの前段でSSM Change CalendarのGetCalendarState APIを呼び出して後続の処理を実行すべきか、そうでないかを判 断 • 複数のカレンダーを組み合わせ、ANDやORで評価したい場合も 対応可能
  5. 詳細は以下記事参照 26 SSM Change Calendarとの連携 [AWS Step Functions] AWS Systems

    Manager Change Calendarと 連携して定期実行処理のイレギュラーケースに対応してみた
  6. 28 イベントパターンの例 { "source": ["aws.states"], "detail-type": ["Step Functions Execution Status

    Change"], "detail": { "status": ["SUCCEEDED"], "stateMachineArn": ["<先行ステートマシンのARN>"] } }
  7. 31 イベントパターン どの先行ステートマシンが実行完 了した際も、ステートマシンαが起動 するように設定 { "source": ["aws.states"], "detail-type": ["Step

    Functions Execution Status Change"], "detail": { "status": ["SUCCEEDED"], "stateMachineArn": [ "<ステートマシンAのARN>", "<ステートマシンBのARN>", "<ステートマシンCのARN>" ] } }