api

LambdaとPythonでAPI GatewayをエンドポイントにしてSlackに何かを送る

経緯 今週の水曜日にJAWS-UG 初心者支部#23 次回のハンズオン勉強会向けのチューター向け予習会へ参加することになりました。 Lambdaは、花屋時代にローカル環境でテスト実行してみてQiitaに上げたきりだったので その時の記事 => Pythonでaws-sam-cliをローカル実行するまで もうすこし踏み込んで (実用性を意識しながらLambdaを触ってみたいなぁ) と、思った&予習も兼ねて 『API GatewayをエンドポイントにしてLambdaを起動しSlackに何かを流す』 というのをやってみました。 API Gatewayをエンドポイントにした実行を試したいと考えた理由として 外部から連携したい場合、HTTPリクエストを受けて発火させる場面が多くあるので これから効率化を考える際に、よく使いそうな手法として要領を掴んで慣れておきたかったからです。 逆にAPI Gatewayを使わないパターンとして AWS内のサービスを使うときは、わざわざエンドポイントを外に置かなくても AWSのサービス同士はだいたいIAMロールを使えばAWS内でセキュアに連携できます。 流れ 流れとしては SlackでIncoming Webhookの設定をしてWebhook URLを控えます。 Lambdaのコンソール上で関数を作成して Webhook URLをその関数内で使用し、連携させます。 API Gatewayのコンソール上でLambda関数を紐付けて エンドポイントをデプロイすると、発火用のURLが発行されます。 そのURLにアクセスする(HTTPリクエストが届く)と それを合図にしてLambdaが起動して SlackのBotが起動する、という仕組みです。 Slack 1. Incoming Webhookの設定 2. Webhook URLを控える Lambda 1. 関数の作成 2. 関数内にWebhook URLを仕込む API Gateway 1. Lambda関数の紐付け 2. エンドポイントをデプロイして発火用URLを控える (例えば)ブラウザなど エンドポイントURLにアクセスしてみる Slack Botが起動する Slack Incoming Webhookの設定 まずはSlackの設定です。 『Slackをカスタマイズ』を選択します。 左上の『MENU』から 『App 管理』を選択します。 『 Incoming Webhook』を検索し、アプリを『Slackに追加』します。

Pixelaという草APIサービスを利用して、WordPressのPV数をGitHub風に草生やしてサイドバーに表示させたい(丁寧に)

https://wp.suwa3.me/2019/12/25/pixela%e3%81%a8%e3%81%84%e3%81%86%e8%8d%89api%e3%82%b5%e3%83%bc%e3%83%93%e3%82%b9%e3%82%92%e5%88%a9%e7%94%a8%e3%81%97%e3%81%a6%e3%80%81wordpress%e3%81%aepv%e6%95%b0%e3%82%92github%e9%a2%a8%e3%81%ab/ こちらのblog内容の続きです。 準備内容だとか箇条書きな感じになっているので もう少し丁寧に書きます。 まず、GitHub風に草を生やすことができるPixela 超かわいい!!と、見た瞬間一目惚れして ぜひこれでblogのPV数をサイドバーなどに表示させたいと思いました。 (スマホの場合は下にスクロールしてもらうと記事&検索窓の下に表示されます) 順序としては以下のとおりです。 PixelaでユーザーとIDを作成してグラフを表示させてみる PV数を調べるため、対象blogにGoogleAnalyticsを導入する GoogleAnalytics APIを利用してjsonファイルをDLする PythonでjsonファイルからPixelaの求める出力ができるように整形する ディレクトリをサーバーなどに置いてcron実行させる htmlにで埋め込む PixelaでユーザーとIDを作成してグラフを表示させてみる https://pixe.la/ こちらのサービスですが 基本的にすべてWeb APIで構成されるサービスになるため ユーザーやIDの登録など、設定もAPIで行います。 初めはユーザー登録からAPIで設定することにハードルの高さを感じたのですが 使ううちに、無駄がなくて洗練されているなぁと感じるようになりました。 以下の a-know には自分の希望ユーザー名 thisissecret にはパスワードを入力します。 $ curl -X POST https://pixe.la/v1/users -d '{"token":"thisissecret", "username":"a-know", "agreeTermsOfService":"yes", "notMinor":"yes"}' 成功すると以下が表示されます。 {"message":"Success.","isSuccess":true} test-graph には希望するID(URLに使われます) graph-name には希望する名前 commit には希望する単位(kgやmなどでもOK) int は、今回はPV数ということで整数を扱うのでそのままです。 shibafu には色を入力します。 green,red,blue,yellow,purple,blackから選べます。 $ curl -X POST https://pixe.la/v1/users/a-know/graphs -H 'X-USER-TOKEN:thisissecret' -d '{"id":"test-graph","name":"graph-name","unit":"commit","type":"int","color":"shibafu"}' 成功すると以下が表示されます。 {"message":"Success.","isSuccess":true} ブラウザで以下にアクセスします。 a-know にはユーザー名 test-graph にはIDを指定してください。 https://pixe.la/v1/users/a-know/graphs/test-graph (ユーザー名にsuwa3/IDにtest-graphを指定した例)