ヤマムギ

growing hard days.

*

slackのbotをAWS Lambda(Python)+API Gatewayで構築

   

slack-apigateway-lambda

slackで投稿した内容に応じて返信したり調べ物したりしてくれるbotですが、これをAWSのLambda(Python)+API Gatewayで構築しましたメモです。

AWS Lambdaで実装する

eventに辞書型でslackからusername,text,channel_nameなどがPOSTされるのでそれを受け取って、json形式で返します。

API Gatewayの設定

lambdaのAPI endpointsから設定します。

MethoはPOSTにします。

出来たAPI Gatewayの設定画面に行って、[統合リクエスト]の設定を展開します。

API_Gateway_mapping_template

[マッピングテンプレートの追加]でContent-Type 「application/x-www-form-urlencoded」を追加します。

保存します。

slackでOutgoing Webhooksを設定する

slackのログインしている状態でCustom IntegrarionsでOutgoing Webhooksを追加して設定します。
※Team Settingsで画面上部の検索窓(Search app directory)で「Outgoing Webhooks」を検索するとわりとたどりつきやすいです。

Configure_Outgoing_WebHooks

[Add Configuration]で設定します。

  • Channel トリガーとするチャンネルを指定します。全チャンネルにしたいので「Any」を設定しました。
  • Trigger Word(s) チャンネルを指定している時はブランクでもOKですが、「Any」にしている時は設定が必要です。今回はbotの名前をトリガーワードにしました。
  • URL(s) Lambda(API Gateway)で設定したAPI endpoint URLを設定します。
  • Customize Name botの名前を設定します。
  • Customize Icon botのアイコンを設定します。

これで準備完了です。

例えば、Trigger Word(s)を「test-bot」とかにしていれば、「test-bot おはよう」のように投稿すれば返事が帰ってきます。


最後までお読みいただきましてありがとうございました!

「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。

「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第3版」という本を書きました。

「ポケットスタディ AWS認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。

「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。

「AWSではじめるLinux入門ガイド」という本を書きました。

 - AWS , , ,

ad

ad

  関連記事

CloudFormationスタックポリシーでスタック更新を防止する

CloudFormationのスタックにスタックポリシーを設定することによって、 …

EC2 Auto ScalingカスタムメトリクスのモニタリングにCloudWatch検索式が便利でした

EC2 Auto Scalingで起動したインスタンスのカスタムメトリクス この …

EFSをEC2(Amazon Linux 2)からマウントする

Amazon Elastic File Systemが東京リージョンに来たことも …

Amazon Quantum Ledger Database(QLDB)でサンプル台帳の作成と検証

Quantum Ledger Database(QLDB)を触ったことなかったの …

RDSのポイントインタイムリカバリをしました

WordPressで画像アップロードができなくなった(AWS WAFでブロックし …

AWS CloudFormationでAmazon DynamoDBテーブルを作ってアイテムを追加する

デモ用にDynamoDBテーブルを作って消して、ということをたまにするので、Cl …

Lambda関数をPython3.6から3.9に変更

CodeGuru ProfilerでLambda関数(Python 3.9)のパ …

S3バケットのリクエスタ支払い

S3バケットのリクエスタ支払いを試しました。 バケットの設定 検証用のS3バケッ …

Route53でドメインを新規取得してDNSレコードを設定する

Elastic IPをAWSで発行しているのですから、DNSの設定も同じようにマ …

Cloud9環境を共有した際の環境認証

Cloud9を環境を構築したIAMユーザー以外に共有したとき、その環境から実行す …