Hatena::ブログ(Diary)

maachangの日記 このページをアンテナに追加 RSSフィード

2017-02-14 AWSとWebアプリでサーバレス(EC2レス)だ!! このエントリーを含むブックマーク このエントリーのブックマークコメント

最近始めましたAWS。

いやーいろんな機能ありますね。

昔AWSを見たとき、単にEC2を使うだけの、VPSもどきでDBがDynamoDBとか、値段もそれほど安くなく誰得??って思ったことがあったけど、まあ色々わかれば「安さ」は「用意」されているわけだ。

 

最近よく使うAWSの機能Cognito。

これは単に従来AWS外の環境からAWS内の資源を利用する場合、access key secret keyを利用してアクセスするわけだけど、これってIAM権限を付与することになり、この情報が万が一外部に漏れると、AWSCLIなどのコンソールを使えば、色々とできてしまう><

セキュリティ的に色々あるので、どうしてもって以外は、使いたくない代物。

 

それらの不便な状況を改善するためにできたのがCognito。

これを使えば、AWS内の資源利用に対してaccess key secret keyを付与せずとも、アクセスできるようになる。

機能としては、UnAuthでアクセスする場合は、どのAWSの機能が利用でき、Auth(OpenIdConnect)で認証成功後にアクセスする場合は、どのAWSの機能が利用できるなどの設定ができる。

 

Cognitoは言い換えれば、これまでのaccess key secret keyでアクセスしていた部分の代替的なもの+αって感じ。

 

そしてさらにこのCognitoにUserPoolsと言う機能が去年あたりに追加された。

これは何かと言えば、普通のUserId,パスワード認証のようなものを、簡単に作れるようになる。

また、この認証に成功した場合、CognitoのAuth機能と同じく、どのAWSの機能が利用できるか設定できるわけで、言い換えれば、認証成功したら、AWSの機能にアクセス権限を付与できる。

つまりEC2などのサーバが無くとも、S3やDynamoDBに代表される永続可能な情報系にアクセスできたり、Lambdaを実行して、処理が行えたり、SQSにデータセットして、他システムと連携したり、何でもとは言いすぎだけど、色々と制御できてしまう。

 

また、昨今では、ReactJSやAnglarJS、VueJSなど、これらを利用することWebアプリはクライアントベースで作成することも可能であり、また、AWSのSDKはJSでも利用可能。

ReactJSやAnglarJS、VueJSなどには、CLI環境がそろっており、その各CLI環境で最適化されたJSファイルなどを、S3に配置して、CognitoやUserPoolsなどを利用しつつ、AWSの資源を利用すれば、一通りのWebアプリができてしまうのではないか?って思う、しかもEC2レスで^^

時間があるときに、色々作ってみたいと思う今日この頃w

トラックバック - http://d.hatena.ne.jp/maachang/20170214

2017-01-28 AWS利用中〜〜安価な利用を求めて^^ このエントリーを含むブックマーク このエントリーのブックマークコメント

最近は、AWSを中心に利用している。

それ以前は自分でサーバを立ち上げて、HTTPサーバ立ててって感じだったけど、ここ2つの仕事はAWSだ。

そして、AWSは便利だなーってのと、やりようでは、安いな〜って思った次第。

ホットな話題、最近やった内容で「おおーー便利」って思ったことを、記載したいと思う。

 

1.Cognito※1+Auth(OpenID)

昔のC/S環境のような感じで、Cogniteを接続口として、OpenIDのAuthでDynamoDBやS3にスマホアプリからアクセスすることができる。

よくある形としてスマホアプリ+WebAPI(RestFull)などがあるが、AWSに置き換えると、WebAPIの動作環境がEC2になり、割高となってしまう。

それらを軽減する方法の1つとして、Cognite経由でアプリ側がAWSに直接アクセスすれば、たとえば、直接DynamoDBの書き込みを行うなどすれば、EC2は不必要となり、安価で対応できるようになる(と思う)。

※1:Cognitoとは、通常AWSの外からAWS内にアクセスする場合、IAMのアクセスキー、シークレットキーが必要となり、その管理が面倒だ(理由はそのキーで、AWS−CLIなどからAWSの操作ができてしまうから、もれると厄介)それをやらずに、AWS内にアクセス方法として、Cognitoがある。

Cogniteでは、AUTH(OpenIDでの認証)UnAUTH(認証なし)の2つのモードでアクセス許可が出せる。

 

Cognitoと、AUTHについて、簡単に説明すると、CognitoのAUTHは、オープンIDを利用するわけだが、それを利用するアプリ側が対象プロバイダに対して、OpenIDで認証を行う(1)。

(1)の処理結果、アクセストークンと呼ばれるものが取得されるので、これをCogniteに接続するときに、そのトークンを渡してやる(2)

Cogniteでは、(2)のアクセストークンに対して、そのOpenIDで許可されたアプリID経由で発行されたものかの妥当性を、そのプロバイダに問い合わせる(3)

(3)が正しい場合、この時点でそのOpenIDがAWS側で認可され、以降AWS内にアクセスすることが可能になる。

こんな感じで、セキュリティが担保されている。

また、AWS-SDKのJS版を利用すれば、普通のWebアプリからでも、AWSを直接いじれるとか、もうやりたい放題(とは言え、CogniteのプールIDとか、AUTHのポリシーIAMIDとか、埋め込むので、NGだろうが><)

 

2.サーバレス

サーバレスと言うのは、AWSでは、APIGWとLambdaの構成だ。

Lambdaは、色々なイベントに対して、トリガー実行ができる。

そして、安い。

ただ、このサーバレスの構成では、問題がある。

それは、Lambdaは即時応答に対応できないということ。

速度的には、トリガー起動に対して、200ミリ秒〜8秒ぐらいの幅がある。

たぶんだが、対象Lambdaが起動してから、時間が経過すれば、リソースを稼ぐために、そのLambdaをクリーンするだろう(コールドスリープ)

そして、秒単位の起動では、たぶんだが、コールドスリープから復帰するための時間なのか?と思う。

・・・・・・・・・・・・・

サーバレスの問題はここにある。普通にEC2でたてたAPIサーバと比べると、返信時間にばらつきがあること、遅い場合があること。最悪8秒とか><

だけど、これはこれで、別途解決(に近いこと)ができそうだ。

 

結論から言えば、Ping的な感じで、コールドスリープする前に、1度空実行させれば良いと言うこと。

そうすることで、コールドスリープされず、比較的高速にLambda実行ができる(らしい)

 

また、(A)のような構成でも実行できるが、同一データに対して、複数のLambdaにわけで実行させたい場合、たとえば、APIGWで1つのPOSTデータが来た場合、1つのLambdaではデータ保存、もう1つのLambdaでは、PushNotificationを飛ばすなど、この場合は、(B)のKinesisをかますことで、対応できる。

 

(A)APIGW => Lambda

(B)APIGW => Kinesis => Lambda

 

うーん、便利ですね^^

また、Cogniteやサーバレスを利用する場合、WebViewやWebアプリなどで動的なものを作りたい場合は、それらコンテンツはS3に配備して、ReactJSなり、AngularJSなり、VueJSなりを利用すれば、EC2などのサーバいらずになりそうだ。

 

最近見聞きした、AWSを安価に利用する方法。

まあとにかく言えることは、EC2やRDSを利用しないことが、安価に利用するための方法論なのか?と言う結果でしかないけどね。

トラックバック - http://d.hatena.ne.jp/maachang/20170128

2017-01-25 [js]vue.jsが使いやすいので俺俺フレームワークを作成してみた このエントリーを含むブックマーク このエントリーのブックマークコメント

超ひさしぶりの更新。

最近は、仕事してやめて、また仕事して・・・忙しい限りの毎日です。

以前は、AWSなにそれおいしいの?って感じだったけど、AWSは美味しいですね^^と言う感じで、AWS三昧な環境で飯食っている状況。

最近は、スマフォアプリ作ることが多いのだけど、サーバがWebAPI(RESTFULL)で、クライアントがWebViewで、1ページアプリで作る必要があり、それらは

・AngularJS

・ReactJS

などが現在主流なわけだけど、以前AngularJS、今回ReactJSを使った結果、どちらも「重い」。

AngularJSは、機能がそろっているけど、その分覚えることが多くて「敷居」が高い。

一方、一見簡単そうなReactJSだけど、これはこれでコンポーネント思考(Angularも似たようなものだが)で、独自タグ記載満載であり、結果的にデザインの入れ替えが面倒くさいし、工数がかかる。

何か良いフレームワークは無いか!!!

と探してみると、ありました。vue.jsと言うものが!!

ReactJSに近い感じだけど、まあそれよりももう少し楽に組める感じ。

ただ、これだけだと色々不便。ReactJSと同じく、なんらかのフレームワークがいりそうな感じがすね。

ってことで、作ってみました。

GIT作成しました^^

https://github.com/maachang1978/seabass

上記GITから[seabass.js]を取得して、vue.jsを読み込んで利用します。

[demo]フォルダーをダウンロードして、実行してみると、わかりやすいかもしれません。

 

また、たとえば、以下のような構成を用いて、seabass.jsは利用できます。

フォルダ構成をこんな感じで定義します。

 +app

 | +-----pages

 | |    +------page.html

 | |    +------page.js

 | +-----main.js

 +lib

 | +-----seabass.js

 | +-----vue.js

 |

 +index.html

index.html

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width,
  initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=no">
<meta name="format-detection" content="telephone=no, email=no, address=no">

<script src="./lib/seabass.js"></script>
<script src="./lib/vue.js"></script>

</head>
<body>

<div id="body"></div>
<div id="popup"></div>

<script src="./app/main.js"></script>
</body>
</html>

1ページViewのTOPページテンプレートです。

(function(global) {
"use strict";

// 初期ページのロード.
Seabass.load("page");

})(window);

vueのページ情報の初期表示用の情報を設定する。

また、他ページ表示時に、実行が必要な処理は、ここで行う。

page.html

{{message}}
<br>
メッセージ表示

page.js

var app = new Vue({
  el: '<<ID>>',
  data: {
    message: 'Hello Vue!'
  }
}

ページ表示情報

 

上記内容をブラウザで表示すると、以下のような画面が表示されるのかと思います。

Hello Vue!

メッセージ表示

まあ、こんな感じで、俺俺フレームワークと、vue.jsを利用すれば、簡単にページ作成が行えます。

ちなみに、Seabass.load("ページ名",パラメータ");とした場合、呼び出しページ名のjsファイルに対して、var params=パラメータが割り当てられ、利用できます。

トラックバック - http://d.hatena.ne.jp/maachang/20170125

2016-08-09 消費税UPしたら、景気が良くなる^^ このエントリーを含むブックマーク このエントリーのブックマークコメント

http://bylines.news.yahoo.co.jp/kazumasaoguro/20160808-00060906/

らしいです^^

ドンドン消費税をUPしましょう。

「景気が良い」と言う「言葉」だけが、先行するだけで、実態とは「乖離」しますけどねw

このようなことを、平然と言うような、「上級国民」と言うのは「パンがなければカキピーを食べればいいんじゃねえキリッ」とか平気で言いそうで、リアルでビビる。

消費税と言うのは、税金を使う側からすれば、すばらしい税金。

「景気に左右されない財源」とか「公平な税金」だとか「上級国民」が都合の良いことを言うわけで、たしかに「安定」しているので、税金を使う側からすれば、それは「すばらしい」だろうね。

しかしながら、この言動は「取られる側」からすれば「景気が悪くても」「無慈悲」に取られるわけで、ろくなものではない。

 

また、大体働いたら「所得税」とか取られるわけで、その他「収入額」に応じて、社会保障やら、住民税などが取られて、その篩にかけられたお金をさらに「奪おう」とするのが「消費税」だ。

労働が100とした場合、それら税金で取られた結果、60%程しか手元に残らないのに、さらにそこから「使うと罰金」の如く「8%」の税金が取られるわけで、既に「取られて」手元に残ったお金に対して、更に取るのか〜〜〜って思う。

正に消費税=「コバンザメ、寄生虫的な税金」でしかない。

 

まあ、そんな「消費税」をUPしたらGDPがUPする=景気がよくなる・・・なんてことは絶対にあり得ないし、しかし計算上GDPでそんな試算がだせるならば、それは「計算間違い」でしかない。

         ,,-‐----‐、 , -'"` ̄ ̄"`''-,__, --‐‐-..,
        /  、゙ヽ、 ‐-'´          ヽ‐- / /   ヽ
      ,/´ .., ヽ,,l_)'    zェェェァ'  ;rfァt ヽ ,ト/ /    ヽ
     /    ヽ,r' ,l′    _,,,   . __,,  ,l゙.-〈__r,'、   ヽ_
    _.l    ヽ」   ,l    .イてソ` l イにj`,/    ゙‐ヽ、_,,  /l   
    ,l l|  −'´ll   ,l      rソi"  ヽ じ'' f゙l    .,//゙l   //\ ココおかしいんじゃねえか
    l`l|     l|ヽ  v'⌒ヽ        .,ノ  j/    |l    //   }
   l  \    l| ,l  l_U>     r‐--‐ァ  ,l    |,l   //    l
   /   '\   l|`l   ゝ_,´    ゙ヽ__r′ .,.'   ___l ヽ //     |
  ,l     '\ l| .lヽ__lL..,,,  __ ,, _イ___./ |  ∨/      ,}
  |       ヽl |    ,| .ヽ \   //ヽ     ,|          ,l
  |          l    ,l   ヽ \//  l \           /
トラックバック - http://d.hatena.ne.jp/maachang/20160809

2016-07-28 気になるネタ

gitが落ちて、逆ギレの巻 14:42 gitが落ちて、逆ギレの巻を含むブックマーク gitが落ちて、逆ギレの巻のブックマークコメント

f:id:maachang:20160728143724j:image

さっきgithubを見に行くと、上記の画像が出てきた。

何やら威圧するユニコーン画像が、此方をみる。

次に出ると、タコ足な感じの画像と共にエラー500が

f:id:maachang:20160728143948p:image

 

どうもGITが落ちていたらしい。

現在は復帰。

 

しかしながら、あのタコは何やらまだ「和む」わけだが、しかしながら、威圧するユニコーン、ちょっと「イラ」ってしたw

まあ、タコの方も、こんな感じに料理してやりたい気分にはなった次第だけどww

f:id:maachang:20160728144150j:image

 

まあ、gitが落ちるのは半年ぶり?ぐらいで、偶に落ちるのねって、だけど今回は時間的に短かったようで、まあ良かったと思おう。

トラックバック - http://d.hatena.ne.jp/maachang/20160728