AWS Lambdaを活用したSlackとGitHubの連携&サーバレス活用事例3選AWS Lambdaで始めるサーバレスアーキテクチャ入門(終)(1/3 ページ)

システム開発の常識を覆す「サーバレスアーキテクチャ」について「AWS Lambda」を使って構築方法を学ぶ連載。今回は、AWSとSlack、GitHubを連携させたサーバレスアーキテクチャの構築方法について解説し、他に3つのサーバレス活用事例を紹介します。

» 2017年09月05日 05時00分 公開
[先崎一樹三菱総研DCS]

 システム開発の常識を覆す「サーバレスアーキテクチャ」について「AWS Lambda」を使って構築方法を学ぶ本連載「AWS Lambdaで始めるサーバレスアーキテクチャ入門」。前回の「簡単なサーバレスアプリ構築で分かるAWS Lambdaの実装方法の基本」では、サンプルとなるサーバレスアプリケーションの構築を例にAWS Lambdaを使ったアプリケーションの実装方法を紹介しました。

 最終回となる今回は、AWSとSlack、GitHubを連携させたサーバレスアーキテクチャの構築方法について解説し、他に3つのサーバレス活用事例を紹介します。

SlackとGitHubの連携

 SlackにはもともとGitHubと連携するための仕組みが用意されているため、既に利用されている方が多くいるかと思います。普段利用する分には十分ですが、GitHubとSlackとで異なるユーザー名を登録してしまい、メンションがうまく通知されずに困っている方や、Slackへの通知内容を自由にカスタマイズしたいといった要望をお持ちの方もいるのではないかと思います。サーバレスアーキテクチャを活用することでこれらが簡単に実現できます。

 今回構築するサーバレスアーキテクチャは下記の通り、とてもシンプルな構成です。

 GitHubからの通知を一度SNSで受け、Lambdaで解析し、最終的にSlackへと通知する流れです。

SlackのIncoming WebHooks設定

 まずは、Lambdaからの通知をSlackで受けるため、Incomig Webhooksの設定を行います。

 「Incoming WebHooks」にアクセスし「Add Configuration」を選択します。

 通知先の「Channel」を選択し「Add Incoming WebHooks integration」を選択します。今回は事前に用意しておいた「#github」というChannelを利用します。

 そうするとWebhook URLが生成されるので控えておきます。

 以上でIncomig WebHooksの設定は完了です。

SNS Topicの作成

 続いて、GitHubからの通知をSNSで受けるためSNS Topicを作成します。

 AWSのマネジメントコンソールにサインインし、SNSの管理画面から「Create new topic」をクリックします。今回は「Topic name」と「Display name」を「github」として作成します。

 作成したSNS Topicの「Arn」を控えておきます。

 以上でSNS Topicの作成は完了です。

IAMユーザーの作成

 続いて、先ほど作成したSNS Topic宛てにGitHubが通知を送る際の認証情報を作成します。

 AWSで認証情報というとIAMロールを思い浮かべる方が多いと思いますが、今回はIAMユーザーを作成します。理由は、GitHubにAccessKeyIDとSecretAccessKeyを設定する必要があり、それらはIAMユーザーでしか生成できないためです。

 AWSのマネジメントコンソールよりサービスIAMを開き「ユーザーを追加」からIAMユーザーを作成します。ユーザー名は「github」とし「アクセスの種類」は「プログラムによるアクセス」を選択します。

 いったん、アクセス権限は設定せずにIAMユーザーの作成を終えます。「このユーザーにはアクセス権限がありません」と表示されますが、そのまま「ユーザーの作成」を選択します。セキュリティ認証情報のダウンロード画面が表示されるので、忘れずにダウンロードします。

 次に、作成したIAMユーザーに権限をアタッチしていきます。

 IAMユーザーの一覧画面から先ほど作成したIAMユーザーを選択し、「アクセス権限」タブの右下にある「インラインポリシーの追加」を選択してください。

 ポリシーの生成には「カスタムポリシー」を利用します。

 「ポリシー名」には「github」、「ポリシードキュメント」には下記を入力し、「ポリシーの適用」を選択します。「Resource」の値は、先ほど作成したSNS Topicの「Arn」です。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": [
        "sns:Publish"
      ],
      "Sid": "github",
      "Resource": [
        "arn:aws:sns:ap-northeast-1:xxxxxxx:github"
      ],
      "Effect": "Allow"
    }
  ]
}

 アクセス権限に先ほど作成したSNS Topicへの書き込み権限が設定されていたらIAMユーザーの作成は完了です。

       1|2|3 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。