これは何?

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 はできることが多くて複雑なイメージだったのですが、記事を作る上で自分の理解も深まったので勉強になりました😌

以上になります!