AWS Step Functionsの実行結果をSlackへ通知する方法
はじめに
AWS Step Functionsの実行結果をSlackへ通知する手順について解説します。
本記事では、AWS Step Functions → SNS(Simple Notification Service) → AWS Lambda → Slack という構成で、
Step Functionsの実行結果をトリガーとしてSlackに通知を送る方法を紹介します。
構成

目次
SlackのWebhookURLを取得
Slackに通知を送るために、Incoming Webhooks を利用します。
以下の手順でWebhook URLを取得します。
- Slack API を参考にSlackアプリを作成
- アプリ作成後、Incoming Webhooks を有効化
- Webhook URLを生成(後ほどLambda関数で使用)
SNSトピックの作成
AWS Step Functionsの実行結果を受け取るために、SNSトピックを作成します。
SNSは、Step FunctionsとLambdaの間のメッセージブローカーとして機能します。
手順は以下の通りです。
- AWSコンソールにログインし、SNSサービスへ移動
- 「トピックの作成」をクリック
- 任意のトピック名を入力して作成
- 作成後、ARN(Amazon Resource Name) を控えておく

Step Functionsの実行結果をSNSへ通知する設定
次に、Step Functionsが実行結果をSNSに通知するよう設定します。
- AWS Step Functionsのコンソールへ移動
- 対象のステートマシンを選択
- 編集モードに切り替え
CatchやFinallyを利用し、成功・失敗時にSNSへ通知するステップを追加
以下はSNSへ通知するTaskステートの例です。
{
"Type": "Task",
"Resource": "arn:aws:states:::sns:publish",
"Parameters": {
"TopicArn": "作成されたARN",
"Message": "Step Function完了しました"
},
"End": true
}
Lambda関数を作成し、SNSから実行結果を受け取りSlackに通知する
最後に、SNSからのメッセージを受け取りSlackへ通知するLambda関数を作成します。
Lambda関数の作成手順
- AWS Lambdaのコンソールへ移動
- 新しいLambda関数を作成
- ランタイムに Python を選択
- SNSトリガーを設定
Lambda関数のサンプルコード
import json
import urllib3
http = urllib3.PoolManager()
def lambda_handler(event, context):
# SNSからのメッセージを取得
message = event['Records'][0]['Sns']['Message']
# SlackのWebhook URL
slack_webhook_url = "https://hooks.slack.com/services/xxxx/yyyy/zzzz"
# Slackに通知するペイロード
slack_message = {
'text': f"Step Functions Result: {message}"
}
# Slackにリクエストを送信
response = http.request(
'POST',
slack_webhook_url,
body=json.dumps(slack_message),
headers={'Content-Type': 'application/json'}
)
print({
"status_code": response.status,
"response": response.data
})
return {
'statusCode': 200,
'body': json.dumps('slack通知')
}
動作確認
Step Functionsを実行し、
- SNSにメッセージが送信されていること
- Lambdaが正常に実行されていること
- Slackに通知が届くこと
を確認すれば設定完了です。
まとめ
AWS Step Functionsの実行結果をSlackへ通知することで、
バッチ処理やワークフローの成功・失敗を即座に把握できます。
SNSとLambdaを組み合わせることで、柔軟かつ拡張性の高い通知基盤を構築できるため、
運用監視やエラーハンドリングの自動化にぜひ活用してみてください。