🤖

5分でできる SlackでBedrock連携 with Terraform

に公開

はじめに

GW でもカレンダー通りに仕事中の @___nix___ です。
いつも地味が記事を公開していますが、たまには AI系 の記事をということでご紹介致します。

記事執筆の理由は以下の記事で、毎度のこと、Terraform で簡単に使いたいというのが理由でした。

https://qiita.com/moritalous/items/b63d976c2c40af1c39e5

背景

AWS BedrockとSlackの連携は、AWS Chatbotの機能拡張により実現可能になりました。しかし、この設定には以下の課題がありました。

  1. 手動での設定作業が多く、時間がかかる
  2. 設定の再現性が低い
  3. 環境ごとの設定管理が煩雑
  4. セキュリティ設定の一貫性が保ちにくい

これらの課題を解決するため、Terraformモジュールとして実装することで、インフラストラクチャのコード化(Infrastructure as Code)を実現しました。

https://github.com/nix-tkobayashi/terraform-aws-bedrock-slack-agent

概要

terraform-aws-bedrock-slack-agent は、AWS BedrockエージェントとSlackの連携を自動化するTerraformモジュールです。主な特徴は以下の通りです。

  1. シンプルな設定

    • 必要なのはSlackチャンネルIDとチームIDのみ
    • その他の設定はデフォルト値で最適化済み
  2. セキュリティの考慮

    • IAMロールとポリシーの適切な設定
    • 最小権限の原則に基づく設計
  3. 柔軟なカスタマイズ

    • エージェントの指示や説明のカスタマイズ
    • モデルの選択やパラメータの調整が可能
  4. 運用のしやすさ

    • 環境ごとの設定管理が容易
    • 変更履歴の追跡が可能

使い方

前提条件

  • AWSアカウント(Bedrockの利用権限が必要)
  • Slackワークスペース(管理者権限が必要)
  • Terraform v1.11.4以上

セットアップ手順

  1. モジュールのせt

    module "aws_bedrock_slack_agent" {
      source = "./modules/aws-bedrock-slack-agent"
      
      chatbot_slack_channel_id = "C0123456789"
      chatbot_slack_team_id    = "T0123456789"
    }
    
  2. Terraformの実行

    terraform init
    terraform apply
    
  3. Slackでの設定

    • AWS Chatbotアプリの追加
    • エージェントの接続
    • 質問の開始

カスタマイズ例

module "aws_bedrock_slack_agent" {
  source = "./modules/aws-bedrock-slack-agent"

  bedrock_agent_name        = "custom-agent"
  bedrock_agent_instruction = "カスタム指示..."
  bedrock_agent_description = "カスタムAIアシスタント"
  
  chatbot_slack_channel_id = "C0123456789"
  chatbot_slack_team_id    = "T0123456789"
  chatbot_logging_level    = "DEBUG"
}

終わりに

このモジュールにより、AWS BedrockとSlackの連携がより簡単に、より安全に実現できるようになりました。今後も以下のような機能追加を予定しています。

  1. 複数のSlackチャンネルへの対応
  2. より細かい権限設定のオプション
  3. モニタリングとアラートの設定
  4. バックアップとリストアの機能

また、コミュニティからのフィードバックを積極的に取り入れ、より使いやすいモジュールにしていきたいと考えています。

一言

この記事良かったと少しでも思って頂けたら是非 @___nix___ をフォローしてあげてください。或いは記事に対してリアクションをお願い致します。

謝辞

このモジュールの作成にあたり、以下の記事を参考にさせて頂きました。

ついにBedrockとSlackがノーコードで連携できるようになったよ! by @moritalous
この記事で紹介されている手順を基に、Terraformモジュールとして実装することで、より再現性の高い設定が可能になりました。

この場を借りて感謝申し上げます。

Discussion