これは何?
AWS Config の設定変更検知を Backlog に自動で課題起票したくて試したことを記載します!
構成図
理解しやすくなると思うので最終的な状態の構成図を先に見ていただきます😌
登場する主な AWS サービスについて
- AWS Config
- Amazon EventBridge
前提
- AWS Config で記録したいリソース設定を 頻度:連続 で記録する設定にしている前提です
ゴールについて
AWS Config で設定変更を検知したら以下のような Backlog 課題が起票されることをゴールとします。
手順
Backlog の API キーを発行
以下の公式ドキュメントを参考にして Backlog の API キーを発行してください。
https://support-ja.backlog.com/hc/ja/articles/360035641754-API%E3%81%AE%E8%A8%AD%E5%AE%9A
Backlog 課題起票させるための情報を確認
以下の Backlog API の 課題の追加 に関する公式ドキュメントを確認してリクエストパラメーターをチェックします。
https://developer.nulab.com/ja/docs/backlog/api/2/add-issue/
今回は以下のパラメーターを利用するため事前に用意をしてください。
パラメーター名 | 内容 | 必須 | 情報を取得するための API (参考) |
---|---|---|---|
projectId |
課題を登録するプロジェクトのID | 必須 | https://developer.nulab.com/ja/docs/backlog/api/2/get-project/ |
summary |
課題の件名 | 必須 | – |
description |
課題の詳細 (本文) | – | – |
issueTypeId |
課題の種別のID | 必須 | https://developer.nulab.com/ja/docs/backlog/api/2/get-issue-type-list/ |
priorityId |
課題の優先度のID | 必須 | https://developer.nulab.com/ja/docs/backlog/api/2/get-priority-list/ |
assigneeId |
課題の担当者のID (ユーザー ID を指定する) | – | https://developer.nulab.com/ja/docs/backlog/api/2/get-project-user-list/ |
notifiedUserId |
課題の登録の通知を受け取るユーザーのID (ユーザー ID を指定する) | – | https://developer.nulab.com/ja/docs/backlog/api/2/get-project-user-list/ |
一番右の列に各情報を取得するために私が利用した API を参考として記載します。
EventBridge API の送信先 の 接続 を作成
現在の設定箇所は構成図での以下に該当します
AWS マネジメントコンソールで以下のように画面遷移してください。
[Amazon EventBridge]
→[API の送信先]
→[接続]
タブ
→[接続を作成]
以下のように設定してください。
認証 の項目は以下のように設定してください。
大項目 | 小項目 | 値 | 備考欄 |
---|---|---|---|
送信タイプ | – | その他 | |
認証タイプ | – | API キー | |
API キー | API キー名 | apiKey | |
API キー | 値 | ※ Backlog API キーの値 | |
呼び出し Http パラメータ | パラメータ | シークレットのクエリ文字列 | |
呼び出し Http パラメータ | キー | apiKey | |
呼び出し Http パラメータ | 値 | ※ Backlog API キーの値 |
※ 保存をすると自動的に Secrets Manager に API キーが保存されます。
EventBridge API の送信先 を作成
現在の設定箇所は構成図での以下に該当します
AWS マネジメントコンソールで以下のように画面遷移してください。
[Amazon EventBridge]
→[API の送信先]
→[API の送信先]
タブ
→[API の送信先を作成]
以下のように設定してください。
API の送信先エンドポイント
については Backlog API の 課題の追加 用 エンドポイントを入力します。
具体的には以下になります。
https://aws-plus.backlog.jp/api/v2/issues
HTTP メソッド
は POST
を選択してください。
※ Backlog API の 課題の追加について詳細は以下の公式ドキュメントを参照ください。
https://developer.nulab.com/ja/docs/backlog/api/2/add-issue/
接続タイプ
は 既存の接続を使用
を選択してから先ほど作成した「EventBridge API の送信先 の 接続」を選択してください。
EventBridge ルール作成
現在の設定箇所は構成図での以下に該当します
AWS マネジメントコンソールで以下のように画面遷移してください。
[Amazon EventBridge]
→[ルール]
→[ルールを作成]
ステップ 1 ルールの詳細を定義
以下のように設定してください。
選択したイベントバスでルールを有効にする
を有効にしてください。
ルールタイプは イベントパターンを持つルール
を選択してください。
ステップ 2 イベントパターンを構築
以下のように設定してください。
イベントソースは AWS イベントまたは EventBridge パートナーイベント
を選択してください。
作成のメソッドは パターンフォームを使用する
を選択してください。
イベントパターンは以下のように設定してください。
今回は AWS Config で検知する設定変更全てを対象とするため以下のように設定しています。
大項目 | 小項目 | 値 | 備考欄 |
---|---|---|---|
イベントソース | – | AWS のサービス | |
AWS のサービス | – | Config | |
イベントパターン | – | Config Configuration Item Change | |
イベントタイプの仕様 1 | – | 任意のメッセージタイプ | |
イベントタイプの仕様 2 | – | 任意のリソースタイプ | |
イベントタイプの仕様 3 | – | 任意のリソース ID |
ステップ 3 ターゲットを選択
以下のように設定してください。(まず追加設定以外の部分を設定します)
API 送信先
では先ほど作成した API 送信先を選択します。
次に 追加設定
と表示されている箇所をクリックして追加設定画面を表示します。
以下のように設定してください。
次に 入力トランスフォーマーを設定
と表示されている箇所をクリックして入力トランスフォーマー設定画面を表示します。
入力トランスフォーマー設定画面では以下の二つの箇所での設定が必要です。
– 入力パス
– テンプレート
それぞれ今回のケースでの例を以下に記載します。
入力パス
{ "configurationItemCaptureTime": "$.detail.configurationItem.configurationItemCaptureTime", "awsAccountId" : "$.detail.configurationItem.awsAccountId", "awsRegion": "$.detail.configurationItem.awsRegion", "resourceType": "$.detail.configurationItem.resourceType", "resourceId": "$.detail.configurationItem.resourceId", "changeType": "$.detail.configurationItemDiff.changeType" }
- イベント情報の中からターゲットの渡す情報を変数として定義するために JSON の key-value 形式で指定します
テンプレート
{ "projectId": "[課題を起票するプロジェクトのプロジェクト ID (projectId) を入力]", "summary": "AWS Config 設定変更検知 (リソースタイプ :)", "description": "関係各位\n\nAWS Config にて設定変更を検知しましたのでご連絡させていただきます。\n*設定変更検知詳細\n|項目名|値|h\n|設定変更検知日時| |\n|AWS アカウント ID| |\n|リージョン| |\n|リソースタイプ| |\n|リソース ID| |\n|変更タイプ| |\n", "issueTypeId": "[起票する際に利用する課題の種別のID (issueTypeId) を入力]", "priorityId": "[起票する際に利用する課題の優先度のID (priorityId) を入力]", "assigneeId": "[起票された課題の担当者に指定するユーザー ID を入力]", "notifiedUserId": ["起票された課題のお知らせユーザーに指定するユーザー ID を入力"] }
- 入力パスで定義した変数を使ってターゲットの渡すデータのテンプレートを記述することで Backlog API に渡すリクエストパラメーターを定義します
<>
で括られている箇所は先ほどの 入力パス で定義した変数になりますsummary
の箇所で課題のタイトルを指定していますのでお好みの形に合わせて修正してくださいdescription
の箇所で課題の本文を指定していますのでお好みの形に合わせて修正してください[]
で括られている箇所は実際の環境に合わせて修正してください
※ 以降はタグの設定画面と設定確認画面ですので順番に進んでいって EventBridge ルール作成を実行してください。
動作確認
設定が終わったので動作確認をします。
今回は例として CloudTrail 証跡で ログファイルの検証
という設定項目を無効化してみます。
Before
After
実際に起票された課題
このような形で課題が起票されました!
締め
AWS Config の設定変更検知を Backlog に自動で課題起票させることができました!
今回は主に EventBridge を中心に説明しましたが、EventBridge はできることが多くて複雑なイメージだったのですが、記事を作る上で自分の理解も深まったので勉強になりました😌
以上になります!