LoginSignup
14
13

More than 5 years have passed since last update.

SNSでSlack投稿

Posted at

はじめに

SNS(手動実行) -> Lambda -> Slackにメッセージを投稿します。
動作確認メモ

事前に準備しておくもの

  • SlackのWebフック

内容

1. SNSトピックの作成

SNSにてトピックの作成を行います。
※今回の場合は、トピック名・表示名は実際の投稿に反映されません。

1.PNG
2.PNG

サブスクリプション未作成のトピックができました。

3.PNG

2. Lambdaの作成

次に、Slackへ投稿するためのLambda関数を作成していきます。
テンプレートは使わず一から作成します。

4.PNG

ロールは既存のロールを使用します。
※ロールを作っていない場合はカスタムロールの作成から設定を変更せず作成してください。

5.PNG

コードを添付します。今回はNode.js 6.10を使用しています。
 ※コードは過去に記載されていたものを参考にしています。
  コード内容は今回の本題ではありません。

console.log('Loading function');

const https = require('https');
const url = require('url');
const slack_url = 'https://hooks.ここにwebフックを記載';
const slack_req_opts = url.parse(slack_url);
slack_req_opts.method = 'POST';
slack_req_opts.headers = {'Content-Type': 'application/json'};

exports.handler = function(event, context) {
  (event.Records || []).forEach(function (rec) {
    if (rec.Sns) {
      var req = https.request(slack_req_opts, function (res) {
        if (res.statusCode === 200) {
          context.succeed('posted to slack');
        } else {
          context.fail('status code: ' + res.statusCode);
        }
      });
      req.on('error', function(e) {
        console.log('problem with request: ' + e.message);
        context.fail(e.message);
      });
      req.write(JSON.stringify({text: JSON.stringify(rec.Sns.Message, null, '  ')}));
      req.end();
    }
  });
};

6.PNG

トリガーを追加します。
SNSトピックを選択し最初に作成したSNSトピック名を設定します。

7.PNG

8.PNG
9.PNG

テストを行い保存します。
SNSテンプレートを選択し実行してください。

10.PNG
11.PNG

Lambda関数が作成されました。

12.PNG

3. SNSトピックを発行しSlackへ投稿(検証)

SNSトピックに戻ると未設定だったサブスクリプションに
先ほど作成したLambda関数が設定されています。

さっそくトピックに発行を実行してみましょう。

13.PNG

本文を記載し、メッセージの発行を押下します。

14.PNG

Slackへの投稿が確認できました。
お疲れさまでした。

15.PNG

まとめ、その他感想など

  • SNSに設定した任意のメッセージをSlackへ投稿することができました。

  • 今回作成した内容を部品とし、応用することが可能なので今後試していきたいと思います。

    • 例1) 特定のサービス -> Lambda -> [SNS -> Lambda -> Slack]
    • 例2) CloudWatch -> [SNS -> Lambda -> Slack]
14
13
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
14
13