Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
AWS Step Functions上でエラーが発生した場合の効果的な通知方法を検討してみた
Search
TakaakiKakei
October 05, 2021
Programming
0
7.6k
AWS Step Functions上でエラーが発生した場合の効果的な通知方法を検討してみた
Developers.IO 2021 Decade で発表した資料です
TakaakiKakei
October 05, 2021
Tweet
Share
More Decks by TakaakiKakei
See All by TakaakiKakei
企業が押さえるべきMCPの未来
takaakikakei
5
1.4k
5分で語るMCP
takaakikakei
0
26
生成AIの現在地点とこれからの可能性
takaakikakei
0
210
AIプロダクト開発から得られた知見 - 2025年1月版
takaakikakei
0
370
re:Invent 2024 生成AIまとめ
takaakikakei
0
510
OpenAIのAssistants API(Beta)の概要と使い方
takaakikakei
0
660
企業向け生成AIアプリの 開発から得られた知見
takaakikakei
0
670
「AWSによる独自データ活用の生成AIソリューション」というタイトルでCM re:Growth 2023に登壇しました #AWSreInvent #cmregrowth
takaakikakei
0
1.1k
LangChainを使ってChatGPTの機能を拡張してみた ~過去の会話やGoogle検索結果を活用して自然な応答を生成する方法~ #DevIO2023
takaakikakei
1
2.5k
Other Decks in Programming
See All in Programming
VS Code Update for GitHub Copilot
74th
1
560
Hypervel - A Coroutine Framework for Laravel Artisans
albertcht
1
110
WindowInsetsだってテストしたい
ryunen344
1
220
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
50
32k
dbt民主化とLLMによる開発ブースト ~ AI Readyな分析サイクルを目指して ~
yoshyum
2
250
deno-redisの紹介とJSRパッケージの運用について (toranoana.deno #21)
uki00a
0
170
CursorはMCPを使った方が良いぞ
taigakono
1
210
PHP 8.4の新機能「プロパティフック」から学ぶオブジェクト指向設計とリスコフの置換原則
kentaroutakeda
2
710
関数型まつりレポート for JuliaTokai #22
antimon2
0
160
技術同人誌をMCP Serverにしてみた
74th
1
530
Goで作る、開発・CI環境
sin392
0
190
Flutterで備える!Accessibility Nutrition Labels完全ガイド
yuukiw00w
0
140
Featured
See All Featured
Making Projects Easy
brettharned
116
6.3k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
35
2.4k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
Optimising Largest Contentful Paint
csswizardry
37
3.3k
It's Worth the Effort
3n
185
28k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
48
5.4k
The Cost Of JavaScript in 2023
addyosmani
51
8.5k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
53
2.8k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
800
Designing Experiences People Love
moore
142
24k
Music & Morning Musume
bryan
46
6.6k
Transcript
AWS Step Functions上でエラーが発生した 場合の効果的な通知方法を検討してみた 2021-10-05 AWS事業本部 オペレーション部 サービスグロースチーム 筧 剛彰
どうもみなさん初めまして 筧 剛彰(かけい たかあき)と申します 2
エラー通知方法についてよく検討をされていますか? 私はサービスのメインロジックに焦点をあてがちで、 エラー通知方法について深く検討できていない状態でした 3
本セッションのゴール エラー通知方法を見直すきっかけとなり、 サービス品質向上につながれば幸いです! 4
5 おさらい • サーバレスオーケストレーションサービス • グラフィカルコンソールによる可視化 • 各コンポーネントの状態を記録 https://docs.aws.amazon.com/ja_jp/step-functions/latest/dg/welcome.html
6 通知先 • セクションでエラー通知先のチャンネルを簡単にまとめれて見やすい • スレッドでエラーについてコミュニケーションしやすい • AWSサービスと親和性が高い
7 デプロイツール • サーバレスアプリケーションのデプロイツール • 構築や管理が簡単になる https://www.serverless.com/
8 ステートマシンの構成 • 意図的にタイムアウトを発生する Lambda関数のステップ(TimeOut) • 必要情報をまとめて Slack通知するLambda関数のステップ(NotifyError) • 失敗で終わらせるための
Failタイプのステップ(FailState)
9 完成形がこちらです • 緊急度に応じて色とメンション有無変更 • 調査に必要な情報を分かりやすく表示 • タイトルリンクから対象のステートマシンの実 行ページにいける ※表示しているAWSアカウントIDはダミーです
各項目の取得方法は? 10 項目 取得元 ・Error(エラー名) ・Cause(エラー原因) 1.前のステップの出力 ・リージョン ・AWSアカウントID ・ステートマシン名
・From Time(実行開始時間) ・Input(実行入力) ・対象のステートマシンの実行ページ URL 2.Contextオブジェクト
11 1.前のステップの出力から取得 • TimeOutステップの出力にエラー内容が含まれる • NotifyErrorステップのParametersフィールドで、paramキーに渡す • Lambdaからは、event["param"]["Error"] などでアクセス https://docs.aws.amazon.com/ja_jp/step-functions/latest/dg/input-output-input
path-params.html#input-output-parameters state-machines.yml slack.py
12 2. Context オブジェクトから取得 https://docs.aws.amazon.com/ja_jp/step-functions/latest/dg/input-out put-contextobject.html • Context オブジェクトには、ステートマシンおよ び実行に関する情報
が含まれる • ワークフロー上で各ステップからアクセスが可 能 Context オブジェクトの形式
13 2. Context オブジェクトから取得 • Parametersフィールドで、Execution.$: $$Execution などで取得できる • Lambdaからは、event["Execution"]["Id"]
などでアクセス • Context オブジェクトの情報をパース処理 state-machines.yml slack.py
各項目の取得方法は? 14 項目 取得元 ・Error(エラー名) ・Cause(エラー原因) 1.前のステップの出力 ・リージョン ・AWSアカウントID ・ステートマシン名
・From Time(実行開始時間) ・Input(実行入力) ・対象のステップマシンの実行ページ URL 2.Contextオブジェクト
15 2. Context オブジェクトから取得 • 対象ステップへの実行 URLは以下の形式 https://{リージョン}.console.aws.amazon.com/states/home?region={リージョ ン}#/executions/details/{実行ARN} •
Context オブジェクトから取得した項目(リージョンと実行 ARN) を組み合わせて作成
Slackへの通知方法は? • エラー原因に応じて通知メッセージを変更 • 緊急度中:alert_middle関数 緊急度高:alert_high関数 • 翌日以降の対応でよいものは、 alert_middleで 通知されるようにチューニングする想定
17 通知内容の違い • メンション有無 • タイトルのアイコン • カラー
Slackへの通知方法は? • https://api.slack.com/reference/messaging/attachments
緊急度が低い通知はどうするの? • 管理するサービスが増えるほど、エラー通知数は増加しが ちです • 対応不要なエラーまで通知していると、エラー対応に追わ れてチームが疲弊します • 新しい開発や重要なエラー対応に注力するためにも 不要な通知はコード上で抑制することを検討しましょう
19
まとめ • AWS Step Funtionsのエラー通知には、前のステップ出力 やContextオブジェクトを活用 • 緊急度を表現するには、色やメンション有無を変える • チームが疲弊しない為に、不要な通知はコード上で抑制
20
None