HTMLからAWS経由で外部APIを使う様々な方法

様々な分野で用意されている便利なAPIですが、WEBページから利用しようとするとつまずきがちです。

ブラウザはドメインの異なるデータを取得できません(同一生成元ポリシー)。

CORS (Cross-Origin Resource Sharing) ヘッダーのAccess-Control-Allow-Originが「*」とでも設定されていれば使えますが、まずないです。

AWSを使って外部のAPIを使うための方法をいくつかまとめます。

続きを読む HTMLからAWS経由で外部APIを使う様々な方法

【AWS】LightSailでNode.jsを使ったスクレイピング

月額5$の安価で借りれるLightsailを使ってスクレイピングしてみました。

Node.js付きのインスタンスを作れるので、これを使っていきます。

続きを読む 【AWS】LightSailでNode.jsを使ったスクレイピング

【AWS】サーバレスで画像を返す機能を作る

久々にAWSで遊びたくなったので画像処理系をしてみます。

サーバレスの構成にしてメンテナンスフリーに。

まずは最初の一歩としてURLで指定した画像を返す機能を作ります。

続きを読む 【AWS】サーバレスで画像を返す機能を作る

ラズベリーパイで仮想通貨マイニング

最初はLightsailでやろうとしたけど5$のプランではメモリが足りなかった。

昔買ったラズパイ3が余ってたのを思い出してこれを使うことにした。

マシンパワーのいらないPoS式で有名どころの XP Coin で試してみました。

続きを読む ラズベリーパイで仮想通貨マイニング

Lightsailのメモリが足りないからスワップ追加

EC2(t2.micro) から Lightsail (5$) に乗り換えたところメモリが足りなくなりました。

EC2(t2.nano)と同じで 512MB しかないのでうまいこと使わないといけないです。

とりあえず一時しのぎにスワップファイルを追加しました。

続きを読む Lightsailのメモリが足りないからスワップ追加

LightsailからS3にファイル転送

Lightsailで作ったインスタンスからS3にファイル転送したい。

EC2やLambdaみたいにロールの追加ができないのでユーザの追加から行います。

続きを読む LightsailからS3にファイル転送

Lightsailにnodeとかスクレイピングツールを入れる

Lightsailへのnodejs&npm、phantomjs(ヘッドレスブラウザ)、casperjs(phantomjsライブラリ)導入メモ。

環境はBitnami(Ubuntu)で前回Jenkinsを入れた後です。

続きを読む Lightsailにnodeとかスクレイピングツールを入れる

【AWS】LightSailにJenkinsをインストール

ほぼまっさらの状態からJenkinsを入れたので手順メモ。

内容はシステムアップデートとJava&Jenkinsのインストールです。

続きを読む 【AWS】LightSailにJenkinsをインストール

【AWS】EC2からLightsailに乗り換え

AWSのサーバはクラウドサーバのEC2とVPSサーバのLightsailがあります。

大雑把に言うと自由自在で従量課金のEC2と安定して安い月額のLightsailです。

コストダウンのためにWordPressブログの移行をしたのでそのメモ。

続きを読む 【AWS】EC2からLightsailに乗り換え

情報をスタック&可視化するサービスを作りたい

定期的に更新される情報。

数字だけで小難しかったり、単体で見てもわかりにくかったり。

そういうのをDBにスタックしてわかりやすく表示する機能を作ってみたい。

次の要素があると作りやすい。

  1.  1日1回定期更新
  2.  フォーマットが変わらない
  3.  意味のある数値が毎日変化する

今回は練習作としてFXのスワップ金利を対象に作ってみた。

※スワップ金利とは2国間の金利差を日割りにして付与するものです。

 

仕組み

基本的にAWSで収まる設計にする。

概要 : CloudWatch -> Lambda -> DynamoDB <- Lambda <- API  <- S3

  • 入力
    1. CloudWatch Events – Schedule: daily  で1日1回Lambda関数を起動する
    2. Lambda関数でスクレイピング+DB格納
  • 出力
    1. S3に置いたHTMLファイルからAPI呼び出し
      • 普通にHTTP POST(GETしたかったがうまく設計できなかった)
    2. APIからLambdaを起動
      • Lambda関数と統合する
    3. DBから検索結果を返す
      • JSON形式でパススルー

 

可視化

次に持ってきたJSONをグラフ化する。

グラフ作成系のJavascriptは結構あるけど、どれも面倒な感じ。

今回は比較的簡単そうでデザインと名前が好みのChart.jsを使ってみる。

これは基本機能は簡単ではあったけど、ちょっと変えようとすると難しい。

頻繁に仕様が変わっているのか、ブログや紹介記事なんかはまったく当てにならなかったので公式ドキュメント以外は信用しない方がいい(Update関連は公式通りではうまくいかなかったけど)。

出来上がったチャートはこんな感じ。アニメーションが心地良い。

swap

 

さて何をつくろうかな。