1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

lambda(Node.js)からSlackにメッセージを送ってSlackアプリに発言してもらう

Last updated at Posted at 2023-04-11

概要

  • lambdaからSlackアプリのWebhook URLにリクエストを投げて紐付いているSlackアプリに発言してもらう方法を簡単にまとめる。

前提

  • 下記の内容、もしくはそれに準ずる方法が実施され、Slackに独自のアプリ作成とWebhook URLが分かっていること。

  • lambda関数を作成するAWSユーザーはIAMロールを作成する権限を保有していること。
  • ローカルPCでNode.js 18.xがインストールされ、npmコマンドが実行できる状態になっていること。

注意

  • AWSを使うため料金が発生する可能性があります。高額請求にはくれぐれもご注意ください。

方法

  1. ローカルPCの任意のディレクトリに「nodejs」ディレクトリを作成する。

  2. nodejsディレクトリで下記コマンドを実行しNode.jsのバージョンが18.xになっていることを確認する。

    node -v
    
  3. nodejsディレクトリに移動し、下記コマンドを実行する。(package nameなどを聞かれるがEnter連打でOK)

    npm init
    
  4. nodejsディレクトリで下記コマンドを実行してnpmでaxiosをインストールする。

    npm install axios
    
  5. nodejsディレクトリの一つ上のディレクトリに移動し、下記コマンドを実行しnodejsディレクトリをzip化する。

    cd ../
    zip -r ./nodejs.zip ./nodejs
    
  6. AWSのコンソールにログインする。

  7. lambdaのホームに遷移する。

  8. 左サイドバーの「その他のリソース」の中の「レイヤー」をクリックする。

  9. 「レイヤーの作成」をクリックする。

  10. 下記の様に設定を行う。(特段記載されていないものはデフォルト状態)

    項目 内容 備考
    名前 send_message_layer
    アップロード種別 .zipファイルをアップロード
    アップロード 先に作成したnodejs.zipを選択してアップロード ファイル名が「nodejs.zip」でないと正しく動作しなかった記憶がある。
    互換性のあるアーキテクチャ x86_64
    互換性のあるランタイム Node.js 18.x
  11. 上記の様に設定ができたら「作成」をクリックする。

  12. 「関数の作成」をクリックする。

  13. 下記の様に設定を行う。(特段記載されていないものはデフォルト状態)

    項目 内容 備考
    関数種別 一から作成
    関数名 send_message 任意でOK
    ランタイム Node.js 18.x
    アーキテクチャ x86_64
    実行ロール 基本的なLambdaアクセス権限で新しいロールを作成
  14. 上記の様に設定ができたら「関数の作成」をクリックする。

  15. 当該関数の「コード」のタブの最下部の「レイヤー」のフィールドで「レイヤーの追加」をクリックする。

    send_message_-_Lambda.png

    send_message_-_Lambda.png

  16. 「カスタムレイヤー」を選択し、プルダウンから「send_message_layer」を選択、「バージョン」は1を選択、し「追加」をクリックする。

    レイヤーを追加_-_Lambda.png

  17. 下記のコードをそのまま貼り付け、保存(cmd + s) → Deployをクリックする。(SlackのWebhook URLだけご自身のものに変更いただきたい。)

    import axios from 'axios';
    
    export const handler = async(event) => {
    
        const slackUrl = 'Slack Webhook URL';
    
        const data = {
            text: 'Hello, World for lambda!'
        };
    
        const config = {
            headers: {
                'Content-Type': 'application/json'
            }
        };
    
        const response = await axios.post(slackUrl, data, config)
            .then((response) => {
                console.log(response.data);
            })
            .catch((error) => {
                console.error(error);
            });
        
        return response;
    };
    
    
  18. テストのタブをクリックし、下記の様に設定を行う(特段記載されていないものはデフォルト状態)

    項目 内容 備考
    イベント名 hello-world-test
    イベント共有の設定 プライベート
    テンプレート hello-world
  19. 上記の様に設定ができたら「保存」をクリックする。

  20.  保存できたら「テスト」をクリックする。

  21.  Slackに「Hello, World for lambda!」の文字が出力されたら完了である。

  22.  あとはよしなに当該lambda関数のトリガーを設定知れあげれば良い。

参考文献

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?