Amazon SNSのメッセージ発行でBacklogの課題を自動作成してみる
データ事業本部の荒木です。
最近ではプロジェクト管理にBacklogを使う企業も多くあるかと思います。
弊社でもBacklogを使用していますが、プロジェクトで作成したプログラムでエラーが起きた際にメールではなくBacklogのチケットにエラー内容を入れて課題作成する処理の実装がありました。
簡単に実装できるので紹介したいと思います。
本題
今回の方法は、Backlogの外部サービスとの連携機能の「メールによる課題登録」を使った方法のご紹介です。
Backlogの課題登録用メールアドレスの作成
- まずBacklogにプロジェクト管理者権限が付与されたユーザーでアクセスします。プロジェクト管理者であるユーザーのみメニュー画面から「プロジェクト設定 > インテグレーション」の設定画面が表示されます。
- インテグレーションに「メールによる課題登録」があるので、これの設定画面を開きます。
- 「課題登録用メールアドレスの追加」を押下し、アドレスの設定画面を開きます。
- 作成される課題がどのような内容にするかを設定します。
今回はSNSでメール送信するため、メッセージの件名をそのまま使いたいのと送信者がAWSのメールアドレスになるため以下の設定だけ設定し、それ以外はデフォルトのまま作成したいと思います。
- 課題の件名
- メールに記載された件名で登録
- 課題の登録者
- 課題の登録者を以下のユーザーに設定する(自分のユーザーを選択します)
- 設定を保存するとメールアドレスが作成されますので、このアドレスをSNSのトピックにサブスクリプションとしてを作成します。
SNSにメールアドレスを追加
- Amazon SNSのトピックを作成し、先ほど作成したメールアドレスのサブスクリプションを作成します。
- Backlogにサブスクリプションの承認メールが課題として作成されますのでこれを承認します。
※作成された課題には購読停止ボタンが含まれます。そのため本番運用を想定し、購読停止ボタンを無効化したい場合は以下のブログを参考にリンクの無効化対応を実施してください。
誰かサブスクリプション解除した?を無くすために Amazon SNS によるメール通知の停止(Unsubscribe)リンクを無効化してみた | DevelopersIO
以上でSNSのサブスクリプションの設定も完了です。
プログラムからSNSトピックにメッセージをパブリッシュする
Pythonで実際に作成したSNSトピックにメッセージをパブリッシュしてみます。
実行するプログラムは以下になります。
import boto3
sns_client_csa = boto3.client('sns', region_name='ap-northeast-1')
topic_arn='<作成したトピックのARN>'
subject='【テスト】エラーが発生しました。'
error_message='''
プログラム処理でエラーが発生しました。
'''
# SNSのリクエスト指定
sns_request = {
'TopicArn': topic_arn,
'Subject': subject,
'Message': error_message,
}
# SNSメッセージをパブリッシュ
sns_client_csa.publish(**sns_request)
プログラムを実行すると以下のようにBacklogに課題が作成されます。
条件分岐させればエラー内容によって作成する課題内容を制御できるので結構使えるかなと思います。