nemgoとLambdaでXEM残高を取得するAPIを作成する

この記事はnem Advent Calendar 2018の12日目の記事です。

nemgoAWS LambdaAmazon API Gatewayを連携させてXEM残高を取得するAPIを作成してみました。

ただすでにnemのネットワークを構築しているノード(NIS)からは残高を取得するAPIが提供されていますので今回作成したAPIは機能的には全く意味がありません。

なので今回APIを作成した理由はGolangと、Lamdaを一度も扱ったことがないから入門するため。なだけです。

NISについての詳しくはこちら

本記事の対象者

NEM/Golang/Lambdaをこれから学習したいけど「使ったことない」または「使ってみたい」と思っている初心者になります。

nemgoとは?

Go言語で作られたNem blockchainを操作するためのライブラリです。

AWS Lambdaとは?

AWSに関するイベントによって処理を実行する環境です。例えばAWS S3にファイルをアップした時、削除したタイミングでプログラムを実行する。APIサーバとして、クライアントから通信があったらプログラムを実行するなどです。

今回はAmazon API Gatewayと連携してAPIを作成しています。また現在対応している言語はNode.js(JavaScript)、Python、Java、C#、Goとなっています。

まつしん

この記事を書いているタイミングでLambdaに関して新しいニュースが!Rubyでも処理を実行できるように。今のうちに利用方法を押さえておきたい。

実装の手順

Rawpixel 714362 unsplash

それでは早速実装の手順を見ていきましょう!

今回はAWSの操作は画面から手動で行うのではなくコマンドで操作するようにしています。

最終的に書いたコードはこちら

また、自分で今回準備したAPIのURLは「https://szqp96efe8.execute-api.ap-northeast-1.amazonaws.com/Prod/account?address=XEMアドレス」です。

開発環境

  • Mac OS Mjave v10.14.1
  • go v1.11.2
  • Docker v18.09.0
  • AWS CLI v1.16.60
  • SAM CLI v0.7.0

前提条件

  • Goがインストールされている
  • Dockerがインストールされている
  • AWS CLIがインストールされている
  • SAM CLIがインストールされている

それぞれインストールの参考になりそうな記事はこちらです。

ライブラリのインストール

AWS Lambda GOをインストール

プロジェクトのひな形を作成

ビルドしてAPI動作確認

ビルドする

Dockerを起動してからAPIのテスト用ローカルエンドポイントを準備する

ブラウザから「http://127.0.0.1:3000/hello」にアクセスして画面に「Hello」の文言が表示されればOKです。 これでLambdaと連携させるための雛形ができました! 次からNEMを扱うための手順になります。

nemgoインストール

コード実装

ここらからやっとコードを書いていきます。main.goを以下のように変更。

アドレスからアカウント情報を取得してJSON形式でアドレスとXEMの残高の単位を合わせて返すだけのシンプルなものです。URLのパラメータとして「&env=mainnet」を追加すれば本番環境(Mainnet)のアドレスでも残高を取得できるようにしました。envパラメータをつけなければTestnetになります。

あとは、プロジェクト内のファイル(template.yml、Makefile)やフォルダでHelloWorldhello-worldのような文字をAcountまたはaccountに全て置き換えます。

再度ビルドしてAPI動作確認

ブラウザから「http://127.0.0.1:3000/account?address=XEMアドレス」にアクセスして画面に残高が表示されればOK!

127 0 0 1 3000 hello address TAKXTQKUDF3WIJIRNP4TL3JSQZKJU7S5RCV2PSIK env testnet

デプロイ

S3バケットを作成する。

デプロイ用にパッケージ化を行う。

デプロイ実行!

最後に動作確認をしていきます。

API動作確認

ブラウザでアクセスしてみましょう。

ブラウザから「https://[APIのURL].execute-api.ap-northeast-1.amazonaws.com/Prod/account?address=XEMアドレス」を入力してローカルで確認した時と同様にXEMの残高が表示されればOK!!

APIのURLが分からない場合はAPI Gatewayの管理画面から確認してください。

以上で終了です。

まとめ

Relaxing 1979674 1280

SAM CLIを使うと、ローカルで簡単にLambda関数の開発ができるし、環境の構築がすぐできるのでラクでした。環境を作った後にAWSのコンソール画面からAPI GatewayやLambdaの設定を確認するとさらに学びがあるのではないかと思います。

またnemgoはnem2(Catapult)に対応していないのでアップデートにも期待したいと思います。

参考

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です