AWS Lambdaを活用したSlackとGitHubの連携&サーバレス活用事例3選:AWS Lambdaで始めるサーバレスアーキテクチャ入門(終)(2/3 ページ)
システム開発の常識を覆す「サーバレスアーキテクチャ」について「AWS Lambda」を使って構築方法を学ぶ連載。今回は、AWSとSlack、GitHubを連携させたサーバレスアーキテクチャの構築方法について解説し、他に3つのサーバレス活用事例を紹介します。
GitHubとSNSの連携
続いて、GitHubとSNSの連携を行います。
GitHubで通知を行うリポジトリの設定画面を開き「Integrations & services」を選択します。今回は「sample」というリポジトリを用意しました。
「Add service」から「Amazon SNS」を選択します。
先ほど作成したSNS Topicの「Arn」、および、IAMユーザーのセキュリティ認証情報を入力します。
これでGitHubとSNSの連携は完了です。
GitHubのIntegrations Eventの設定
GitHub API Hooksを見れば分かりますが、GitHubからSNSへ通知可能なデフォルトイベントは「Push」のみとなっていて、必要に応じてGitHub APIをコールしイベントを追加する必要があります。今回は「Issue Comment」を追加してみます。
{ "name": "amazonsns", "events": [ "push" ], "supported_events": [ "commit_comment", "create", "delete", "deployment", "deployment_status", "download", "follow", "fork", "fork_apply", "gist", "gollum", "issue_comment", "issues", "member", "public", "pull_request", "pull_request_review_comment", "push", "release", "status", "team_add", "watch" ], "title": "AmazonSNS", "schema": [ [ "string", "aws_key" ], [ "string", "sns_topic" ], [ "string", "sns_region" ], [ "password", "aws_secret" ] ] }
まずはWebHook APIをコールするためのトークンを取得します。「Personal Access Tokens」にアクセスし「Generate new token」を選択します。
トークンを識別する文言とトークンのスコープを選択します。今回は私個人のリポジトリが対象であるためスコープは「admin:repo_hook」としましたが、必要に応じて適切な権限を選択してください。
トークンが表示されるので控えておきます。
続いて、通知を行うGitHubリポジトリのHook IDを確認します。
ターミナルなどから下記のコマンドを実行します。「YOUR_TOKEN」には1つ前の手順で確認したトークンを入力し、「OWNER」と「REPOSITORY_NAME」は適宜GitHubの情報で置き換えてください。
curl -X GET -s -H "Authorization: token YOUR_TOKEN" \ https://api.github.com/repos/OWNER/REPOSITORY_NAME/hooks
実行結果の「id」がHook IDです。
[ { "type": "Repository", "id": ********, "name": "amazonsns", "active": true, "events": [ "push" ], "config": { "aws_key": "********", "aws_secret": "********", "sns_region": "ap-northeast-1", "sns_topic": "arn:aws:sns:ap-northeast-1:************:github" }, "updated_at": "2017-08-19T06:53:53Z", "created_at": "2017-08-19T06:53:53Z", "url": "https://api.github.com/repos/OWNER/REPOSITORY_NAME/hooks/HOOK_ID", "test_url": "https://api.github.com/repos/OWNER/REPOSITORY_NAME/hooks/HOOK_ID/test", "ping_url": "https://api.github.com/repos/OWNER/REPOSITORY_NAME/hooks/HOOK_ID/pings", "last_response": { "code": 0, "status": "unused", "message": "Unused" } } ]
最後に、Integrations Eventの設定を行います。HOOK_IDは取得したものに置き換えてください。
curl -X PATCH -s -H "Authorization: token YOUR_TOKEN" \ https://api.github.com/repos/OWNER/REPOSITORY_NAME/hooks/HOOK_ID \ -d '{"active": true, "events": ["push", "issue_comment"]}'
実行結果の「events」に「issue_comment」が追加されていたら完了です。
{ "type": "Repository", "id": ********, "name": "amazonsns", "active": true, "events": [ "issue_comment", "push" ], "config": { "aws_key": "AKIAIXD6KKDO5LYIT2GA", "aws_secret": "********", "sns_region": "ap-northeast-1", "sns_topic": "arn:aws:sns:ap-northeast-1:************:github" }, "updated_at": "2017-08-19T08:28:06Z", "created_at": "2017-08-19T06:53:53Z", "url": "https://api.github.com/repos/OWNER/REPOSITORY_NAME/hooks/HOOK_ID", "test_url": "https://api.github.com/repos/OWNER/REPOSITORY_NAME/hooks/HOOK_ID/test", "ping_url": "https://api.github.com/repos/OWNER/REPOSITORY_NAME/hooks/HOOK_ID/pings", "last_response": { "code": 0, "status": "unused", "message": "Unused" } }
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ライセンスに基づくオープンソースコードとして公開。同社は特徴として、オープン性とエコシステムの展開を強調している。