AWS Lambdaを活用したSlackとGitHubの連携&サーバレス活用事例3選:AWS Lambdaで始めるサーバレスアーキテクチャ入門(終)(1/3 ページ)
システム開発の常識を覆す「サーバレスアーキテクチャ」について「AWS Lambda」を使って構築方法を学ぶ連載。今回は、AWSとSlack、GitHubを連携させたサーバレスアーキテクチャの構築方法について解説し、他に3つのサーバレス活用事例を紹介します。
システム開発の常識を覆す「サーバレスアーキテクチャ」について「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ユーザーの作成は完了です。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- AWS Lambdaの実現するイベントドリブンなプログラミングが、IoTへの扉を開く
米Amazon Web Servicesは、IoTアプリケーションの今後をどう描き、開発者にどのように構築してもらいたいのか。同社でモバイルとIoTを統括するモバイル担当副社長、マルコ・アルジェンティ氏へのインタビューの前編をお届けする。 - 米マイクロソフト、AWS Lambda的なサービス「Azure Functions」を発表
米マイクロソフトは2016年3月31日(米国時間)、AWS Lambda、Google Cloud Functionsと同様なイベントドリブン、サーバレスなコンピュートサービス、「Azure Functions」を発表した。同社はさらに、Azure Functions関連コードをオープンソースとして公開するため、Azure以外のプラットフォームでも動かせる。 - 米IBMがAWS Lambda的なサービスOpenWhiskを発表、オープンソース提供も
米IBMは2016年2月22日(米国時間)、AWS Lambdaに似たイベントドリブンなプログラミングサービス「Bluemix OpenWhisk」を発表した。同時にこれを、Apache 2.0ライセンスに基づくオープンソースコードとして公開。同社は特徴として、オープン性とエコシステムの展開を強調している。