Systems Managerのオートメーションステップで外部Webhookを呼び出すための統合機能が追加されました

2022.01.19

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

いわさです。

SSM AutomationにWebhook統合と、Runbookステップでその統合されたWebhookの呼び出しが出来るようになりました。

これによって、SSM Automationを外部システムとWebhookで連携させて、シンプルな通知をおこなったりあるいは承認ステップの操作を促したりすることが出来ます。
別途SlackとChatbotの連携アップデートも公開されていたので、外部システムと双方向っぽいChatOpsも実現出来るようになりそうです。

やってみる

統合の追加

まずはドキュメントにステップを追加する前段階として、Webhookの統合設定を追加する必要があります。
今回はWebhook.siteを使ってWebhook URLを用意しました。便利です。

Webhookを外部に用意出来たら、URLからデフォルトBodyとカスタムヘッダーを追加します。
なお、統合の呼び出しにはaws:invokeWebhookアクションの許可とKMSへのアクセス許可も必要です。

Runbookの作成

ステップでアクションタイプにInvoke a webhook integrationを指定します。
そして、integrationNameで先程作成した統合を選択します。

ここではドキュメントパラメータをBodyの値として指定してみます。
統合設定でデフォルトBodyを設定しましたが、どのように干渉するのでしょうか。

ここで作成したドキュメントは以下になります。

description: '# Webhookテスト'
schemaVersion: '0.3'
parameters:
  inputval1:
    type: String
  inputval2:
    type: String
mainSteps:
  - name: invoke_webhook
    action: 'aws:invokeWebhook'
    inputs:
      IntegrationName: hoge-webhook-1
      Body: |-
        {
          "hoge2": {{ inputval1 }}
          "hoge3": {{ inputval2 }}
        }

実行

今回はシンプル実行してリクエストを確認してみましょう。
必須パラメータを指定して実行します。

呼び出されました。
カスタムヘッダーは固定でそのまま渡ってきていますね。
Bodyについてはデフォルトは無視される結果となりました。(hoge1は設定されない)

さいごに

本日はSSM Automation RunbookにWebhook呼び出しステップを追加してみました。
お手軽にアウトバウンドの外部連携が出来るようになったことで幅が広がりそうです。
冒頭で触れたSlack+SSM呼び出しとあわせて使って、Webhookで関連ステップの情報をSlackへ送信する、その情報をもとにSlackからSSM操作を行うなどできればおもしろい使い方が出来そうです。