• Like
  • Save
Node.jsとAWS入門(Elastic Beanstalk & AWS SDK for Node.js)
Upcoming SlideShare
Loading in...5
×

Node.jsとAWS入門(Elastic Beanstalk & AWS SDK for Node.js)

  • 7,998 views
Uploaded on

大阪Node学園5で発表した資料です。 …

大阪Node学園5で発表した資料です。
AWS初心者向けに、AWS Elastic BeanstalkとAWS SDK をNode.jsと合わせて解説します。

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
7,998
On Slideshare
0
From Embeds
0
Number of Embeds
3

Actions

Shares
Downloads
0
Comments
0
Likes
37

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. しみず @shimy_net2013 / 5 / 11Node.js とAmazon Web Service 入門- Node.js on AWS Elastic Beanstalk- AWS SDK for Node.js!!" "    ー 大阪Node学園5 ー
  • 2. 目次  自己紹介(LTダイジェスト)  AWS 超入門  Node.js on AWS Elastic Beanstalk  AWS SDK for Node.js
  • 3. 自己紹介しみず @shimy_netWebアーキテクトアマゾン芸人JAWSUG 大阪無駄に技術を使って面白いことをする
  • 4. 本を執筆しました
  • 5.  JAWSイベントLTダイジェスト版本編はこちらhttp://www.slideshare.net/shimy_net/awsjawsdays2013shimynet
  • 6. !!!えっ私にもAWSを使えますか?
  • 7. ミクさんに仮想空間で!サーバーを設置してもらおう!!Kinect SDK AWS TOOL Xtion & Kinect MMD
  • 8. ラックミク!MikuMikuDance DataCenter
  • 9. ジェスチャー判定ラックを蹴るとサーバー起動JointType.AnkleRight JointType.HipCenter
  • 10. やったー私にも出来たぁ!
  • 11. !!!AWSは誰でも使えます本日、言いたいこと
  • 12. この機会にAWSも覚えてね
  • 13. JAWS-UG 大阪初心者向け勉強会 開催決定6/22(土) グランフロント!!
  • 14. AWS 超入門!
  • 15. □提供モデル アプリ・ソフト プラットフォーム インフラ・NWクラウド とはIaaSPaaSSaaS
  • 16. □メリット・デメリットスモールスタートできるエンジニアが遊ぶのにはすごく便利クラウド とはクラウド オンプレミス 初期コスト 低い 高い 運用コスト 従量課金 定額 セキュリティ 高い あまり高くない 性能 作り方しだい 作り方しだい 可用性 作り方しだい 作り方しだい 拡張性 高い 低い 楽しさ プライスレス!
  • 17. AWS の主なサービス  S3(Simple Storage Service)・クラウドストレージ・1Gで10円くらい  EC2・仮想サーバ・インスタンスタイプはマイクロから(1500円/月くらい)  ELB(Elastic Load Balancing)・オートスケール・負荷分散  RDS(Relational Database Manegement System)・Oracle、MySQL、SQLServer・MultiAZ・バックアップ
  • 18. AWS の主なサービス  DynamoDB・分散NoSQLデータベース・スループット  SES(Simple Email Service)・SMTP・  Elastic Beanstalk・JavaやPHPが動作するPaaS・Node.jsも対応  EMR(Elastic MapReduce)・Hadoop・データマイング・ウェブインデックス
  • 19. AWSの利用方法□アカウント作成 必要なもの   Emailアドレス、クレジットカード、電話
  • 20. AWSの利用方法□AWS Management Console(ブラウザ)Webブラウザでほとんどの設定や管理ができる初心者でも大丈夫
  • 21. AWSの利用方法□SDKs・IDE Toolkits・Command Line Tools  → http://aws.amazon.com/jp/tools/SDKやツールが豊富なので開発環境に合わせて選択できる
  • 22. □AWS の上で Node.js を動かす□Node.js から AWS の各種サービスを利用するNode.js と AWS の使いどころ・EC2、ELB、CloudWatch・Elastic BeanstalkS3SQSDyanamoDBまずはAWS Elastic Beanstalk の話
  • 23. AWS Elastic Beanstalk!
  • 24. Node.js を AWS の上で動かす□2つの方法・EC2 に Node.js をインストールして環境を作る →手間がかかる  自由度が高い・AWS Elastic Beanstalk を利用する →とりあえず便利  バージョン・環境の管理
  • 25. AWS Elastic Beanstalk とは□Webアプリの実行環境を構築・管理するサービスAuto scaling GroupInstanceInstanceAmazon RDSElastic LoadBalancingCloudWatchwar zipAWS Elastic Beanstalk
  • 26. AWS Elastic Beanstalk とは□サポートする言語とスタック・Apache Tomcat for Java・Apache HTTP Server for PHP・Apache HTTP Server for Python・Nginx or Apache HTTP Server for Node.js・Passenger for Ruby・Microsoft IIS 7.5 for .NET
  • 27. AWS Elastic Beanstalk とは□アプリをアップロードするだけで自動的にデプロイ・容量のプロビジョニング・負荷分散・Auto-Scaling・アプリケーション状態モニタリング□実行環境の設定・サーバースペック・40項目以上の設定が可能□利用できるAPIの制約・処理時間の制約はない
  • 28. AWS Elastic Beanstalk とは□アプリのバージョン管理・WARやZIPの世代管理が可能・アプリのロールバック・ロールフォワードが容易□複数環境の構築・本番、テストなど目的によって構築できる
  • 29. AWS Elastic Beanstalk とは  Applicationの論理構成URLApplicationEnvironmentEnvironmentConfigurationURLEnvironmentEnvironmentConfigurationVersionwar / zipwar / zipwar / zipwar / zip
  • 30. 開発・管理ツール  AWS Management Console(Webブラウザ)  AWS Elastic Beanstalk Command Line Tools→http://aws.amazon.com/code/6752709412171743  AWS Toolkit for Eclipse(Java)→http://aws.amazon.com/eclipse・AWS SDK for Java・AWS Explorer・AWS Elastic Beanstalkここからスタート
  • 31. アプリと環境を作成① Create New Application をクリック③ Node.js を選択④ サンプルアプリを選択② アプリケーション名称 を指定
  • 32. アプリと環境を作成⑥ URL を指定⑤ 環境名称 を指定
  • 33. アプリと環境を作成⑦ インスタンスタイプ を指定
  • 34. アプリと環境を作成⑧ 完了
  • 35. アプリと環境を作成サンプルアプリが起動
  • 36. 出来上がった構成は  サンプルアプリが起動URLApplicationEnvironmentEnvironmentConfigurationVersionwar / zipサンプルアプリhttp://XXXXX.elasticbeanstalk.com/
  • 37. 新しいアプリをデプロイ  アプリを切り替えるURLApplicationEnvironmentEnvironmentConfigurationVersionwar / ziphttp://XXXXX.elasticbeanstalk.com/war / zip新しいアプリサンプルアプリ
  • 38. 新しいアプリをデプロイ□2つの方法 ・AWS Management Console(マネコン)から ・git からURLApplicationEnvironmentEnvironmentConfigurationVersionwar / zipwar / zipURLApplicationEnvironmentEnvironmentConfigurationVersionwar / zipwar / zip$ git aws.configAWS Access Key: AKIXXXXAWS Secret Key: XXXXXXXAWS Region: ap-northeast-1AWS Elastic BeanstalkEnvironment: XXXXXXまずはマネコンからデプロイ
  • 39. マネコンからアプリをデプロイ□別のアプリをデプロイするには① Deploy a Different Versionをクリック② バージョンラベルをつける③ アプリ を選択④ 完了
  • 40. 新しいアプリをデプロイ□2つの方法 ・AWS Management Console(マネコン)から ・git からURLApplicationEnvironmentEnvironmentConfigurationVersionwar / zipwar / zipURLApplicationEnvironmentEnvironmentConfigurationVersionwar / zipwar / zip$ git aws.configAWS Access Key: AKIXXXXAWS Secret Key: XXXXXXXAWS Region: ap-northeast-1AWS Elastic BeanstalkEnvironment: XXXXXXつぎはgitからデプロイ
  • 41. Gitからアプリをデプロイ□必要なもの・AWS Elastic Beanstalk Command Line Tool  →http://aws.amazon.com/code/6752709412171743・Git 1.6.6 or later  →http://git-scm.com/・Ruby version 1.8.7 or later  →http://www.ruby-lang.org/en/・Python 2.7 or 3.0
  • 42. Gitからアプリをデプロイ□プロジェクトを作成□ソースコードを開発$ mkdir helloworld$ cd helloworld$ git initvar http = require("http");http.createServer(function(request, response) {response.writeHead(200, {"Content-Type": "text/plain"});response.write("Hello World");response.end();}).listen(process.env.PORT || 8888); $ vi server.js
  • 43. Gitからアプリをデプロイ□拡張コマンドのセットアップ□AWSの設定$ git aws.configAWS Access Key: AKIXXXXXXXXXXXXXXXXAWS Secret Key: XXXXXXXXXXXXXXXXXXXAWS Region [default to us-east-1]: ap-northeast-1AWS Elastic Beanstalk Application: XXXXXXXXXXAWS Elastic Beanstalk Environment: XXXXXXXXXX$ ~/AWS-ElasticBeanstalk-CLI-2.4.0/AWSDevTools/Linux/AWSDevTools-RepositorySetup.sh→http://aws.amazon.com/code/6752709412171743Security Credentials
  • 44. Gitからアプリをデプロイ□ローカルリポジトリにコミット□AWS Elastic Beanstalk へデプロイ$ git add server.js$ git commit –m “initial commit”$ git aws.push
  • 45. Gitからアプリをデプロイ□新しいアプリがデプロイされる新しいアプリサンプルアプリ
  • 46. アプリのバージョンを管理Version をクリックVersion の一覧
  • 47. 新しい環境を追加  Environmentを追加URLApplicationEnvironmentEnvironmentConfigurationVersionwar / zipwar / zipテスト環境
  • 48. 新しい環境を追加  Environmentを追加URLApplicationEnvironmentEnvironmentConfigurationVersionwar / zipwar / zipURLNew EnvironmentEnvironmentConfigurationテスト環境本番環境
  • 49. 新しい環境を追加① Launch New Environment をクリック③ URL を指定② 環境名称 を指定④ アプリ を指定⑤ Node.js を選択
  • 50. 新しい環境を追加⑥ インスタンスタイプ を選択
  • 51. 新しい環境を追加⑦ 完了
  • 52. 新しい環境を追加
  • 53. 環境の設定を管理Edit Configuration をクリック設定項目の一覧
  • 54. AWS Elastic Beanstalk まとめ□アプリをアップロードするだけで自動的にデプロイ□実行環境の設定が柔軟□アプリのバージョン管理ができる□複数環境の管理ができる□使い方がわかれば便利
  • 55. □AWS の上で Node.js を動かす□Node.js から AWS の各種サービスを利用するNode.js と AWS の使いどころ・EC2、ELB、CloudWatch・Elastic BeanstalkS3SQSDyanamoDBつぎはAWS SDK for Node.js の話
  • 56. AWS SDK for Node.js
  • 57. SDK正式版の一般公開が開始   AWS SDK for Node.js5/6 SDK正式版の一般公開を開始
  • 58. AWS SDK for Node.jsとは□AWSのサービスを利用するためのライブラリ  →http://docs.aws.amazon.com/AWSJavaScriptSDK/guide/index.htmlDynamoDBS3 BucketAmazon SESAmazon SQSAWS SDKアプリ ElastiCache
  • 59. AWS SDK for Node.jsとは□サポートしているサービス
  • 60. SDKのインストール□npm でインストール□AWS パッケージを require する$ npm install aws-sdkvar AWS = require("aws-sdk");NEW
  • 61. SDKの設定□2つの方法・AWS.config でグローバルに設定  →簡単に設定できる・各サービスのオブジェクトごとに設定  →サービスごとに細かく制御できる
  • 62. SDKの設定□おもな設定項目・accessKeyId アクセスキー・secretAccessKey シークレットキー・region リージョン・sslEnabled (optional) SSL を有効にするかどうか・maxRetries (optional) リクエストのリトライ回数□ハードコーディングで設定AWS.config.update({   "accessKeyId": "AKIXXXXXXXXXX",   "secretAccessKey": "XXXXXXXXXXXX",   "region": "ap-northeast-1" });
  • 63. SDKの設定□ハードコーディング以外の方法・JSONファイルから・環境変数から・EC2メタデータから□JSONファイルから読み込み{"accessKeyId": "AKIXXXXXXXXXX","secretAccessKey": "XXXXXXXXXXXX","region": "ap-northeast-1"}AWS.config.loadFromPath("./config.json");
  • 64. SDKの設定□その他の設定項目・APIバージョン・プロキシAWS.config.apiVersions = {dynamodb: "2011-12-05",redshift: "latest"}AWS.config.update({httpOptions: {proxy: "http://localhost:8080"}});
  • 65. Amazon S3□拡張性・信頼性が高いクラウドストレージ□S3の利用Bucketの一覧BucketObjectvar s3 = new AWS.S3();
  • 66. Amazon S3□Bucket の一覧取得→実行結果s3.listBuckets(function(err, data) {for (var index in data.Buckets) {var bucket = data.Buckets[index];console.log("Bucket:", bucket.Name);}});$ node s3-bucket-list.jsBucket: a-bucketBucket: b-bucket・・・
  • 67. Amazon S3□Bucket の作成→実行結果var params = {Bucket: "node-gakuen"};s3.createBucket(params,function(err, data) {console.log(data);});$ node s3-bucket-create.js{ Location: http://node-gakuen.s3.amazonaws.com/,RequestId: FB6A4464A19092AC }
  • 68. Amazon S3□Object を Bucket へ登録→実行結果var params = {Bucket:"node-gakuen", Key: "node-key",Body: "HelloWorld"};s3.putObject(params,function(err, data) {console.log(data);});$ node s3-object-put.js{ ETag: "68e109f0f40ca72a15e05cc22786f8e6",RequestId: A1CB2F81D19A5389 }
  • 69. Amazon S3ファイルの中身Objectが作成されているBucketが作成されている
  • 70. Amazon S3□S3にある Object をファイルに保存→実行結果var params = {Bucket:"node-gakuen", Key: "node.jpg"};var file = require("fs").createWriteStream("./node.jpg");s3.getObject(params).createReadStream().pipe(file);$ node s3-object-get.js$ lsnode.jpgあらかじめアップしておいたJPGファイルがローカルディスクにダウンロードされ保存される
  • 71. 他にも相性が良さそうなサービス□S3、EC2、ELB、DynamoDB、SQS、SES、SNS・・・□もっと詳しくhttp://docs.aws.amazon.com/AWSJavaScriptSDK/guide/index.html↑ここを読むべし
  • 72. AWS SDK for Node.jsまとめ□AWSのサービスを利用するためのライブラリ群□AWSの信頼性と拡張性が高いサービスをすぐ利用できる□使い方も簡単(ドキュメントも豊富)
  • 73. 全体 まとめ□Node.jsを動かすプラットフォームとしてのAWS  →AWS Elastic Beanstalk□Node.jsからすぐ利用できる機能としてAWS  →AWS SDK for Node.js□Node.jsやると英語ドキュメントばかり  →あきらめて読む□発表の活動限界は  →5分 (*́Д`)
  • 74. !    以上!ありがとうございました!