ローディング中

Severless frameworkとwp rest APIを使ってブログの投稿数を表示する

みなさんこんにちは、個別指導塾コミット塾長、AWESOME開発担当の船津です。

一昨日くらいからpythonを触りはじめました。
今回はserverless frameworkとwp-rest-apiを使ってユーザ別のブログ投稿数を取得してみます。

WP REST APIとは

wordpressの記事をhttp://awe-some.net/wp-json/wp/v2/posts?page=1のような形で取得することが出来ます。
公開したくない部分まで公開されてしまうこともあるので、使用できないようにするプラグイン等もでていますが、今回はせっかくなので使ってみます。

serverless frameworkとは

AWSやAzureに対応したフレームワークです
今回はAWSのlambdaとAPIgatewayを用いて簡単にアプリケーションを作ってみましょう。

https://serverless.com/

やりたいこと

  • serverless frameworkとpythonを使って、lambdaとAPI gatewayを連携させる
  • wp rest apiを使ってブログの投稿者と記事数を取得する
  • 結果をslackに投稿する。

セットアップ

基本的にはクラスメソッド様の記事通りです。

Serverless Frameworkのプラグインを利用した外部モジュールの管理

  • 作業ディレクトリに移動して以下を実行します。

npm install serverless -g
sls create --template aws-python --name Serverless-test

モジュールをまとめてimportする設定を書く

普段pythonでimportを頻繁に使うと思いますが、lambdaではpipが使えないので、
npm install --save serverless-python-requirements
を入力して依存関係のあるライブラリをまとめてデプロイできるように設定します。

  • serverless.ymlの中身を以下のように変更します。

requirements.txtとrequirements.pyを作成する

  • ドキュメントや参考記事を見るとsls requirements installで作成されると書いてありましたが、作成されないので、公式レポジトリを参考に自作して、プロジェクトの一番上に置きます。

get,postを使うので、requestsを使います。

  • requirements.txt
requests
  • requirements.py

とりあえず実行してみる

ここまで上手くいけば、とりあえず以下のコマンドが実行できるはずです。
sls invoke local -f hello

Screen Shot 2017 03 06 at 14 03 35

デプロイしてみる

  • sls deploy
    パッケージもまとめてインストールされているのがわかると思います。

Screen Shot 2017 03 06 at 14 06 42

デプロイが完了するとエンドポイントが表示され、アクセスすることができるようになります。

Screen Shot 2017 03 06 at 14 08 22

関数を自作してみる

handler.pyの中身を以下のようにします。 中身は適当です。

テストしてみる

sls invoke local -f helloを実行するとローカルで関数のテストをすることができます。

特にエラーが出なければ、再度デプロイしてみましょう。

Screen Shot 2017 03 06 at 14 18 16

はい、問題なく投稿されていますね。

おわり

なんとなく使ってみたくてserverless frameworkに手を出してみましたが、意外と簡単でびっくりしました。
間違いなく、これからもっと使われるようになってくるでしょう。
僕も頑張って使いこなします。

ホームページ制作のご相談・ご依頼は

079-451-5881

68ED4C65-BA1E-46D0-A7AC-B9869923C696 Created with sketchtool. A07C553F-CF16-4B7D-94FE-D36AE0A6297D Created with sketchtool. 37B7D8F4-7A18-4725-9EC6-595ABDF69D64 Created with sketchtool. 95DFB680-1EDF-4199-BC4A-BB6752EBA23C Created with sketchtool. 02DDF754-E1DB-4EF2-B6BB-C884722938C4 Created with sketchtool. NEW! 1A95E369-6469-4C46-B38F-F83410B928B0 Created with sketchtool. Group 5Group 2Group 4Group 3 E4FC8CF2-721D-4699-8162-18E886C432C1 Created with sketchtool.