Slide 1

Slide 1 text

これがLambdaレス時代のChatOpsだ! 実例で学ぶ Amazon Q Developerカスタムアクション活用法 2025-10-11 JAWS FESTA 2025 in 金沢 https://jawsfesta2025.jaws-ug.jp/ ENECHANGE株式会社 岩本隆史

Slide 2

Slide 2 text

テーマ:世界最先端のChatOpsアーキテクチャ 使うのは、2024年11月にひっそり公開されたAPI API名で検索しても、ぼく以外の利用例が見つからない このセッションを聞けば「世界最先端のChatOpsアーキテクト」

Slide 3

Slide 3 text

岩本隆史 / Takashi Iwamoto ENECHANGE株式会社 VPoT AWS Community Builder (Cloud Operations) 前職:AWS Japan 技術サポート @iwamot

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

ChatOps:イベント通知 + 人間によるアクション AWS上のイベントをチャットアプリに通知 通知にはアクションボタン アクションを実行すべきかどうか人間が判断し、必要なら実行

Slide 6

Slide 6 text

例:AWS WAFで攻撃検知 → 必要ならban 「攻撃を検知しました」とチャットアプリに通知 通知には「アクセス遮断 (ban)」ボタン banすべきかどうか人間がAbuse DBを参照して判断し、必要なら実行

Slide 7

Slide 7 text

ENECHANGEでの実例

Slide 8

Slide 8 text

ECS用のCodeDeployブルー/グリーンデプロイを操作 グリーン環境が起動されたらSlackに通知 通知には「タスク入れ替え」 「元タスク終了」 「ロールバック」ボタン 本当は「タスク」ではなく「タスクセット」 。見やすく省略 グリーン環境で動作確認し、問題なければ「タスク入れ替え」を実行

Slide 9

Slide 9 text

No content

Slide 10

Slide 10 text

マネコンでの操作が少々不便 → ChatOpsで解決 ログインが必要 グリーン環境の起動に 気づきにくい (ECSネイティブのブルー/グリーンデプロイへの移行は検討中)

Slide 11

Slide 11 text

どんなアーキテクチャで実装すべきか

Slide 12

Slide 12 text

以前:Lambdaが一般的 https://tech.smartcamp.co.jp/entry/code-deploy-char-ops (2021)

Slide 13

Slide 13 text

世界最先端ChatOps:EventBridge + Q Developer Lambdaレス:コード管理なし、EOL対応なし Lambdaレスについては、AWS淡路さんの資料を参照 https://pages.awscloud.com/rs/112-TZM-766/images/AWS-30_Serverless_AWS_Summit_JP_2024.pdf

Slide 14

Slide 14 text

世界最先端ChatOpsで活躍する3つの機能

Slide 15

Slide 15 text

主役:Amazon Q Developerカスタムアクション 条件にマッチした通知にアクションボタンを表示 例:メタデータAの値が「〇〇」なら表示 アクションボタン押下でCLIコマンドを実行 SlackとMicrosoft Teamsに対応

Slide 16

Slide 16 text

サポート役:Amazon Q Developerカスタム通知 チャットアプリへの通知内容をカスタマイズ 例: 「次のステップ」を案内 カスタムアクションにメタデータを提供 表示条件やCLIコマンドのパラメータとして利用

Slide 17

Slide 17 text

サポート役:EventBridge入力トランスフォーマー 入力:AWSサービスのイベントデータ 出力:Amazon Q Developerのカスタム通知形式

Slide 18

Slide 18 text

主役とサポート役が、それぞれの得意分野を担当 EventBridge入力トランスフォーマーがイベントをカスタム通知形式に 条件にマッチした通知にカスタムアクションボタンを表示 ボタン押下でカスタムアクションのCLIコマンドを実行

Slide 19

Slide 19 text

おすすめの実装ステップ

Slide 20

Slide 20 text

おもなステップは5つ。ゴールから逆算で設定 1. 実行したいCLIコマンドの決定 2. カスタムアクションの作成 3. カスタムアクションとチャンネル設定の紐づけ 4. EventBridgeルールの作成 5. 入力トランスフォーマーの設定

Slide 21

Slide 21 text

今回は各ステップの概要を解説 基本的な設定は省略 例:チャンネル設定の作成、SNSトピックへのサブスクライブ IAMロールは最小権限を推奨 https://tech.enechange.co.jp/entry/2025/05/15/213951 も参考に カスタムアクションやEventBridgeのTerraform設定例を紹介

Slide 22

Slide 22 text

1. 実行したいCLIコマンドの決定 例:CodeDeployでECSのタスクセットを入れ替えたい aws deploy continue-deployment --deployment-id $DeploymentId --deployment-wait-type READY_WAIT --region $Region

Slide 23

Slide 23 text

2. カスタムアクションの作成 aws chatbot create-custom-action --action-name SwitchTasks --cli-input-json file://input.json --region us-east-2 アクションボタンのテキスト・表示条件・CLIコマンドを定義 2024年11月リリースのCreateCustomAction APIを利用 サービスエンドポイントのあるリージョンをどれでもよいので指定 us-east-2 , us-west-2 , eu-west-1 , ap-southeast-1

Slide 24

Slide 24 text

参考:input.json の例 { "Definition": { "CommandText": "codedeploy continue-deployment --deployment-id $DeploymentId --region $Region --deployment-wait-type READY_WAIT" }, "Attachments": [ { "NotificationType": "Custom", "ButtonText": " タスク入れ替え", "Criteria": [ { "Operator": "EQUALS", "VariableName": "ActionGroup", "Value": "blue-green-deployment-test" } ], "Variables": { "ActionGroup": "event.metadata.additionalContext.ActionGroup", "DeploymentId": "event.metadata.additionalContext.DeploymentId", "Region": "event.metadata.additionalContext.Region" } } ] }

Slide 25

Slide 25 text

3. カスタムアクションとチャンネル設定の紐づけ aws chatbot associate-to-configuration --resource $CustomActionArn --chat-configuration $ChannelConfigurationArn --region us-east-2 例: 「タスク入れ替え」ボタンをデプロイ用チャンネルに紐づけ 2024年11月リリースのAssociateToConfiguration APIを利用

Slide 26

Slide 26 text

4. EventBridgeルールの作成 例:CodeDeployデプロイグループの状態が READY になったら実行 { "detail": { "deploymentGroup": ["my-deployment-group"], "state": ["READY"] }, "detail-type": ["CodeDeploy Deployment State-change Notification"], "source": ["aws.codedeploy"] }

Slide 27

Slide 27 text

5. 入力トランスフォーマーの設定 EventBridgeルールのターゲット設定の一部 イベントデータをカスタム通知形式に変換 「入力パス」で変数を割り当て、 「入力テンプレート」に埋め込む ターゲット(SNSトピック)への送信前に実行

Slide 28

Slide 28 text

参考:入力パスの例 { "account": "$.account", "deploymentGroup": "$.detail.deploymentGroup", "deploymentId": "$.detail.deploymentId", "region": "$.region", "time": "$.time" }

Slide 29

Slide 29 text

参考:入力テンプレートの例 { "version": "1.0", "source": "custom", "content": { "textType": "client-markdown", "title": ":large_blue_circle::large_green_circle: デプロイの動作確認が可能になりました", "description": "*Deployment group:* \n*Deployment ID:* \n*Account:* \n*Region:* \n*Time:*

Slide 30

Slide 30 text

メリット/デメリット

Slide 31

Slide 31 text

メリット:運用もユーザーも楽 運用 Lambdaレス:コード管理なし、EOL対応なし ユーザー グリーン環境が起動したら通知が来る マネコンにログインせずにデプロイ可能 業務委託スタッフや非エンジニアにも任せやすい

Slide 32

Slide 32 text

デメリット:ボタンの並び順が指定不可 位置でボタンを覚えていると誤操作するリスク AWSには改善要望済み 1つのボタンで済むケースなら問題なし 許容不可ならLambda方式を検討

Slide 33

Slide 33 text

ENECHANGEでの導入状況

Slide 34

Slide 34 text

35件のECS環境で利用中 5月:導入開始 9月:27件の新規導入あり

Slide 35

Slide 35 text

まとめ

Slide 36

Slide 36 text

祝・世界最先端のChatOpsアーキテクト誕生 2024年11月リリースのAPIを使う先進的なアーキテクチャ CreateCustomAction, AssociateToConfiguration 情報が少ないため、知っただけで「世界最先端のChatOpsアーキテクト」 Lambdaレスで運用の負担なし ChatOpsが必要になったら、ぜひお試しを!

Slide 37

Slide 37 text

参考資料 Amazon Q Developerカスタムアクション https://docs.aws.amazon.com/chatbot/latest/adminguide/custom-actions.html Amazon Q Developerカスタム通知 https://docs.aws.amazon.com/chatbot/latest/adminguide/custom-notifs.html CreateCustomAction API https://docs.aws.amazon.com/chatbot/latest/APIReference/API_CreateCustomAction.html AssociateToConfiguration API https://docs.aws.amazon.com/chatbot/latest/APIReference/API_AssociateToConfiguration.html EventBridgeルールの作成 https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-create-rule.html EventBridge入力トランスフォーマー https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-transform-target-input.html