MENU

AWS HealthDashboardで検知した障害をBacklogへ自動起票する

Backlog 公式ページ:https://backlog.com/ja/

目次

手順

ステップ1: AWS CloudWatchでアラートを設定

STEP
AWS管理コンソールにサインイン

AWSアカウントにログインします。

STEP
CloudWatchサービスに移動

AWS管理コンソールのサービスリストから「CloudWatch」を選択します。

STEP
「ルール」を選択

左側のナビゲーションパネルで「ルール」を選択します。

STEP
新しいルールの作成

「新しいルールの作成」ボタンをクリックします。

STEP
イベントパターンを設定

イベントソースとして「イベントパターン」を選択します。サービス名として「Health」を選択し、具体的なイベントタイプや条件を指定します。例えば、「AWS Health events」の中から特定のイベントカテゴリー(例:「オペレーショナルイシュー」や「アカウント通知」)を選択します。

STEP
ターゲットの選択

ターゲット」セクションで、先ほど作成したLambda関数を選択します。これにより、指定したイベントが発生した際にLambda関数がトリガーされます。

STEP
ルールの詳細を設定

ルールに名前と説明を付けます。名前は一意で分かりやすいものにし、説明ではルールの目的を明確にします。

STEP
ルールの作成

すべての設定を確認した後、「ルールの作成」ボタンをクリックしてルールを作成します。

注意点

  • AWS Health Eventsを利用するには、AWS Personal Health Dashboardにアクセスできる必要があります。
  • イベントパターンの設定は、モニタリングしたい特定の条件やイベントタイプによって異なります。
  • このプロセスは、AWSアカウントの設定やポリシーによって異なる場合があります。アカウントの権限やセキュリティポリシーを確認してください。

これらの手順に従ってCloudWatch Eventsルールを設定すれば、AWS Health Dashboardの特定のイベントが発生したときに、自動的にLambda関数がトリガーされ、後続の処理(例えばBacklogにチケットを作成する)が行われます。

ステップ2: AWS Lambda関数の作成

AWS Lambda関数の作成

STEP
AWS管理コンソールにサインイン

AWSアカウントにログインします。

STEP
Lambdaサービスに移動

AWS管理コンソールのサービスリストから「Lambda」を選択します。

STEP
新しい関数の作成

「関数の作成」ボタンをクリックします。

STEP
関数の設定

「一から作成」を選択し、以下の情報を入力します。

  • 名前: 関数にわかりやすい名前を付けます(例:SendToBacklog)。
  • ランタイム: 関数のコードを書く言語を選択します(例:Python 3.8)。
STEP
実行ロールの選択または作成:

このLambda関数に適切なアクセス権限を持つIAMロールを選択、または新しいロールを作成します。

STEP
関数の作成:

「関数の作成」ボタンをクリックして関数を作成します。


Lambda関数のコードを記述

STEP
関数コードの編集:

関数の作成後、Lambda管理コンソールに表示される「関数コード」セクションでコードを記述します。コードは、CloudWatch Eventsからのイベントデータを取得し、それを解析してBacklogのAPIに適切なデータを送信するようにします。

例えば、Pythonを使用する場合、以下のような基本的なコードが考えられます(実際のAPI呼び出しとエラーハンドリングは、Backlog APIのドキュメントに基づいて適宜追加してください):

import json
import requests

def lambda_handler(event, context):
    # CloudWatchイベントからデータを解析
    print("Received event: " + json.dumps(event, indent=2))

    # Backlogに送信するデータを準備
    backlog_data = {
        "projectId": "<プロジェクトID>",
        "summary": "New AWS Health Alert",
        "description": f"Details: {json.dumps(event)}"
        # 他の必要なフィールドをここに追加
    }

    # Backlog APIにリクエストを送信
    response = requests.post("https://<Backlogドメイン>/api/v2/issues",
                             data=backlog_data,
                             headers={"Content-Type": "application/x-www-form-urlencoded",
                                      "Authorization": "Bearer <Backlog APIキー>"})

    # レスポンスを確認
    print("Response from Backlog: " + response.text)

    return {
        'statusCode': 200,
        'body': json.dumps('Success')
    }
STEP
デプロイ:

コードの編集が完了したら、「デプロイ」ボタンをクリックして変更を保存します。

注意点

  • APIキーなどの機密情報は、Lambdaの環境変数を通じて安全に管理することを推奨します。
  • Backlog APIの使用にはAPIキーが必要です。これはBacklogのアカウント設定で取得できます。
  • エラーハンドリングとロギングを適切に行うことで、関数のデバッグと保守が容易になります。
  • 実際の運用環境では、IAMロールの最小限の権限原則を適用し、関数が必要とするサービスにのみアクセスを許可するようにしてください。

ステップ3: IAMロールとポリシーの設定

IAMロールの作成

STEP
AWS管理コンソールにサインイン:

AWSアカウントにログインします。

STEP
IAMサービスに移動:

AWS管理コンソールのサービスリストから「IAM」を選択します。

STEP
ロールの作成:

左側のナビゲーションパネルで「ロール」を選択し、「ロールの作成」ボタンをクリックします。

STEP
信頼されたエンティティの選択:

「AWSサービス」を選択し、ロールの使用用途として「Lambda」を選びます。

STEP
ポリシーのアタッチ:

Lambda関数に必要な権限を持つポリシーを選択します。一般的には以下のポリシーが必要です:

  • AWSLambdaBasicExecutionRole:基本的なLambda実行権限(ログ記録など)。
  • その他のサービスへのアクセス権限に関連するポリシー(例:CloudWatch Logsへのアクセス、S3バケットへのアクセスなど)。
STEP
タグの追加(オプション):

必要に応じて、ロールにタグを追加します。

STEP
ロールのレビューと作成:

ロールに名前を付け(例:LambdaBacklogIntegrationRole)、設定内容を確認した後、「ロールの作成」をクリックします。

Lambda関数へのロールのアタッチ

STEP
Lambda管理コンソールに戻る:

作成したIAMロールをLambda関数にアタッチするために、Lambda管理コンソールに戻ります。

STEP
Lambda関数を選択:

編集したいLambda関数を選択します。

STEP
実行ロールの変更:

「設定」タブの「実行ロール」セクションで、「既存のロールを使用する」を選択し、作成したIAMロール(例:LambdaBacklogIntegrationRole)を選択します。

STEP
変更の保存:

設定を保存します。

注意点

  • IAMロールには最小限の権限を付与することを推奨します。Lambda関数に必要なサービスやリソースへのアクセスのみを許可するようにしてください。
  • ロールの作成と関数へのアタッチを正確に行うことで、セキュリティリスクを軽減できます。
  • 実際の運用環境では、IAMポリシーの詳細な設定を通じて、関数が必要とするサービスへのアクセスを細かくコントロールすることが重要です。

ステップ4: Backlog APIの利用

Backlog APIキーの取得

STEP
Backlogにログイン

まず、Backlogのアカウントにログインします。

STEP
個人設定にアクセス:

右上のユーザーアイコンをクリックし、「個人設定」を選択します。

STEP
API設定に移動:

「API」セクションを選択します。

STEP
APIキーの生成:

「新しいAPIキーを追加」をクリックして新しいキーを生成します。キーにはわかりやすい名前を付けることをお勧めします(例:LambdaIntegration)。

STEP
APIキーの保存:

生成されたAPIキーをコピーして安全な場所に保存します。このキーはBacklog APIにリクエストを送信する際に使用します。

Lambda関数でのAPIの使用

STEP
関数コードの編集:

Lambda関数のコードにBacklogのAPIを呼び出すコードを追加します。Pythonを使用する場合、以下のようなコードスニペットが考えられます:

import requests

def create_backlog_ticket(event):
    url = "https://[あなたのBacklogドメイン].backlog.com/api/v2/issues"
    headers = {
        "Content-Type": "application/x-www-form-urlencoded",
        "Authorization": "Bearer [あなたのAPIキー]"
    }
    data = {
        "projectId": [プロジェクトID],
        "summary": "Issue Title",
        "description": "Issue Description"
        # 他の必要なフィールド
    }
    response = requests.post(url, headers=headers, data=data)
    return response.json()
STEP
環境変数の使用:

APIキーなどの機密情報は、Lambdaの環境変数を通じて安全に管理することを推奨します。Lambda関数の設定で環境変数を追加し、コード内で参照します。

STEP
デプロイとテスト:

変更をデプロイした後、Lambda関数をテストしてBacklogにチケットが正しく作成されることを確認します。

注意点

  • APIキーは機密情報です。Lambda関数のコードに直接含めるのではなく、AWSのシークレットマネージャーまたは環境変数を使用して安全に管理してください。
  • BacklogのAPIリクエストには、プロジェクトIDや課題タイプIDなど、Backlog固有の情報が必要です。これらの値はBacklogのプロジェクト設定やAPIドキュメントを参照して適切に設定してください。
  • Backlog APIの使用には、HTTPリクエストの送信が伴います。このため、Lambda関数の実行ロールには適切なインターネットアクセス権限が必要です。

ステップ5: テストとデバッグ

テストイベントの作成

STEP
Lambda管理コンソールにアクセス

AWS管理コンソールで、Lambdaサービスに移動し、テストする関数を選択します。

STEP
テストイベントの作成:

関数の上部にある「テスト」ボタンの近くにあるドロップダウンから、「新しいテストイベントの設定」を選択します。

STEP
テストイベントの設定:

テストイベントに名前を付け(例:TestEvent)、関数が処理するイベントの形式に合わせたJSONデータを入力します。これは、CloudWatch Eventsや他のトリガーから受け取るであろうデータのサンプルです。

STEP
テストイベントの保存:

テストイベントの情報を入力したら、「保存」ボタンをクリックします。

Lambda関数のテスト

STEP
テストの実行:

テストイベントが選択されていることを確認し、「テスト」ボタンをクリックします。

STEP
実行結果の確認:

関数の実行後、実行結果が画面に表示されます。成功した場合は、実行結果とログ出力が表示されます。エラーが発生した場合は、エラーメッセージとスタックトレースが表示されます。

STEP
ログの確認:

詳細なログ情報は、関連付けられているCloudWatch Logsのロググループで確認できます。Lambda管理コンソールの「モニタリング」タブからログを表示できます。

デバッグ

STEP
エラーメッセージの分析:

テスト実行でエラーが発生した場合、エラーメッセージとスタックトレースを分析して問題の原因を特定します。

STEP
コードの修正:

問題の原因を特定したら、Lambda関数のコードを修正します。

STEP
再テスト:

修正後、再び「テスト」ボタンをクリックして関数をテストします。必要に応じてこのプロセスを繰り返します。

注意点

  • テストイベントは、実際のイベントデータの形式を模倣する必要があります。CloudWatch Eventsの場合、イベントの形式を正確に模倣してください。
  • ログには関数の実行に関する詳細情報が含まれています。エラーが発生した場合は、ログを詳細に確認して問題の原因を特定します。
  • デバッグ中は、問題の原因を絞り込むために、関数のコードに追加のログ出力を追加することが有効です。
  • Lambda関数のタイムアウトやメモリの割り当てなどの設定も、問題の原因となる場合があります。これらの設定も適切に調整する必要があります。
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次