• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Node.jsとAWS入門(Elastic Beanstalk & AWS SDK for Node.js)
 

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

on

  • 7,296 views

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

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

Statistics

Views

Total Views
7,296
Views on SlideShare
7,128
Embed Views
168

Actions

Likes
31
Downloads
0
Comments
0

3 Embeds 168

https://twitter.com 165
https://www.chatwork.com 2
https://www.google.co.jp 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel

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

  • しみず @shimy_net2013 / 5 / 11Node.js とAmazon Web Service 入門- Node.js on AWS Elastic Beanstalk- AWS SDK for Node.js!!" "    ー 大阪Node学園5 ー
  • 目次  自己紹介(LTダイジェスト)  AWS 超入門  Node.js on AWS Elastic Beanstalk  AWS SDK for Node.js
  • 自己紹介しみず @shimy_netWebアーキテクトアマゾン芸人JAWSUG 大阪無駄に技術を使って面白いことをする
  • 本を執筆しました
  •  JAWSイベントLTダイジェスト版本編はこちらhttp://www.slideshare.net/shimy_net/awsjawsdays2013shimynet
  • !!!えっ私にもAWSを使えますか?
  • ミクさんに仮想空間で!サーバーを設置してもらおう!!Kinect SDK AWS TOOL Xtion & Kinect MMD
  • ラックミク!MikuMikuDance DataCenter
  • ジェスチャー判定ラックを蹴るとサーバー起動JointType.AnkleRight JointType.HipCenter
  • やったー私にも出来たぁ!
  • !!!AWSは誰でも使えます本日、言いたいこと
  • この機会にAWSも覚えてね
  • JAWS-UG 大阪初心者向け勉強会 開催決定6/22(土) グランフロント!!
  • AWS 超入門!
  • □提供モデル アプリ・ソフト プラットフォーム インフラ・NWクラウド とはIaaSPaaSSaaS
  • □メリット・デメリットスモールスタートできるエンジニアが遊ぶのにはすごく便利クラウド とはクラウド オンプレミス 初期コスト 低い 高い 運用コスト 従量課金 定額 セキュリティ 高い あまり高くない 性能 作り方しだい 作り方しだい 可用性 作り方しだい 作り方しだい 拡張性 高い 低い 楽しさ プライスレス!
  • AWS の主なサービス  S3(Simple Storage Service)・クラウドストレージ・1Gで10円くらい  EC2・仮想サーバ・インスタンスタイプはマイクロから(1500円/月くらい)  ELB(Elastic Load Balancing)・オートスケール・負荷分散  RDS(Relational Database Manegement System)・Oracle、MySQL、SQLServer・MultiAZ・バックアップ
  • AWS の主なサービス  DynamoDB・分散NoSQLデータベース・スループット  SES(Simple Email Service)・SMTP・  Elastic Beanstalk・JavaやPHPが動作するPaaS・Node.jsも対応  EMR(Elastic MapReduce)・Hadoop・データマイング・ウェブインデックス
  • AWSの利用方法□アカウント作成 必要なもの   Emailアドレス、クレジットカード、電話
  • AWSの利用方法□AWS Management Console(ブラウザ)Webブラウザでほとんどの設定や管理ができる初心者でも大丈夫
  • AWSの利用方法□SDKs・IDE Toolkits・Command Line Tools  → http://aws.amazon.com/jp/tools/SDKやツールが豊富なので開発環境に合わせて選択できる
  • □AWS の上で Node.js を動かす□Node.js から AWS の各種サービスを利用するNode.js と AWS の使いどころ・EC2、ELB、CloudWatch・Elastic BeanstalkS3SQSDyanamoDBまずはAWS Elastic Beanstalk の話
  • AWS Elastic Beanstalk!
  • Node.js を AWS の上で動かす□2つの方法・EC2 に Node.js をインストールして環境を作る →手間がかかる  自由度が高い・AWS Elastic Beanstalk を利用する →とりあえず便利  バージョン・環境の管理
  • AWS Elastic Beanstalk とは□Webアプリの実行環境を構築・管理するサービスAuto scaling GroupInstanceInstanceAmazon RDSElastic LoadBalancingCloudWatchwar zipAWS Elastic Beanstalk
  • 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
  • AWS Elastic Beanstalk とは□アプリをアップロードするだけで自動的にデプロイ・容量のプロビジョニング・負荷分散・Auto-Scaling・アプリケーション状態モニタリング□実行環境の設定・サーバースペック・40項目以上の設定が可能□利用できるAPIの制約・処理時間の制約はない
  • AWS Elastic Beanstalk とは□アプリのバージョン管理・WARやZIPの世代管理が可能・アプリのロールバック・ロールフォワードが容易□複数環境の構築・本番、テストなど目的によって構築できる
  • AWS Elastic Beanstalk とは  Applicationの論理構成URLApplicationEnvironmentEnvironmentConfigurationURLEnvironmentEnvironmentConfigurationVersionwar / zipwar / zipwar / zipwar / zip
  • 開発・管理ツール  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ここからスタート
  • アプリと環境を作成① Create New Application をクリック③ Node.js を選択④ サンプルアプリを選択② アプリケーション名称 を指定
  • アプリと環境を作成⑥ URL を指定⑤ 環境名称 を指定
  • アプリと環境を作成⑦ インスタンスタイプ を指定
  • アプリと環境を作成⑧ 完了
  • アプリと環境を作成サンプルアプリが起動
  • 出来上がった構成は  サンプルアプリが起動URLApplicationEnvironmentEnvironmentConfigurationVersionwar / zipサンプルアプリhttp://XXXXX.elasticbeanstalk.com/
  • 新しいアプリをデプロイ  アプリを切り替えるURLApplicationEnvironmentEnvironmentConfigurationVersionwar / ziphttp://XXXXX.elasticbeanstalk.com/war / zip新しいアプリサンプルアプリ
  • 新しいアプリをデプロイ□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まずはマネコンからデプロイ
  • マネコンからアプリをデプロイ□別のアプリをデプロイするには① Deploy a Different Versionをクリック② バージョンラベルをつける③ アプリ を選択④ 完了
  • 新しいアプリをデプロイ□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からデプロイ
  • 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
  • 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
  • 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
  • Gitからアプリをデプロイ□ローカルリポジトリにコミット□AWS Elastic Beanstalk へデプロイ$ git add server.js$ git commit –m “initial commit”$ git aws.push
  • Gitからアプリをデプロイ□新しいアプリがデプロイされる新しいアプリサンプルアプリ
  • アプリのバージョンを管理Version をクリックVersion の一覧
  • 新しい環境を追加  Environmentを追加URLApplicationEnvironmentEnvironmentConfigurationVersionwar / zipwar / zipテスト環境
  • 新しい環境を追加  Environmentを追加URLApplicationEnvironmentEnvironmentConfigurationVersionwar / zipwar / zipURLNew EnvironmentEnvironmentConfigurationテスト環境本番環境
  • 新しい環境を追加① Launch New Environment をクリック③ URL を指定② 環境名称 を指定④ アプリ を指定⑤ Node.js を選択
  • 新しい環境を追加⑥ インスタンスタイプ を選択
  • 新しい環境を追加⑦ 完了
  • 新しい環境を追加
  • 環境の設定を管理Edit Configuration をクリック設定項目の一覧
  • AWS Elastic Beanstalk まとめ□アプリをアップロードするだけで自動的にデプロイ□実行環境の設定が柔軟□アプリのバージョン管理ができる□複数環境の管理ができる□使い方がわかれば便利
  • □AWS の上で Node.js を動かす□Node.js から AWS の各種サービスを利用するNode.js と AWS の使いどころ・EC2、ELB、CloudWatch・Elastic BeanstalkS3SQSDyanamoDBつぎはAWS SDK for Node.js の話
  • AWS SDK for Node.js
  • SDK正式版の一般公開が開始   AWS SDK for Node.js5/6 SDK正式版の一般公開を開始
  • AWS SDK for Node.jsとは□AWSのサービスを利用するためのライブラリ  →http://docs.aws.amazon.com/AWSJavaScriptSDK/guide/index.htmlDynamoDBS3 BucketAmazon SESAmazon SQSAWS SDKアプリ ElastiCache
  • AWS SDK for Node.jsとは□サポートしているサービス
  • SDKのインストール□npm でインストール□AWS パッケージを require する$ npm install aws-sdkvar AWS = require("aws-sdk");NEW
  • SDKの設定□2つの方法・AWS.config でグローバルに設定  →簡単に設定できる・各サービスのオブジェクトごとに設定  →サービスごとに細かく制御できる
  • SDKの設定□おもな設定項目・accessKeyId アクセスキー・secretAccessKey シークレットキー・region リージョン・sslEnabled (optional) SSL を有効にするかどうか・maxRetries (optional) リクエストのリトライ回数□ハードコーディングで設定AWS.config.update({   "accessKeyId": "AKIXXXXXXXXXX",   "secretAccessKey": "XXXXXXXXXXXX",   "region": "ap-northeast-1" });
  • SDKの設定□ハードコーディング以外の方法・JSONファイルから・環境変数から・EC2メタデータから□JSONファイルから読み込み{"accessKeyId": "AKIXXXXXXXXXX","secretAccessKey": "XXXXXXXXXXXX","region": "ap-northeast-1"}AWS.config.loadFromPath("./config.json");
  • SDKの設定□その他の設定項目・APIバージョン・プロキシAWS.config.apiVersions = {dynamodb: "2011-12-05",redshift: "latest"}AWS.config.update({httpOptions: {proxy: "http://localhost:8080"}});
  • Amazon S3□拡張性・信頼性が高いクラウドストレージ□S3の利用Bucketの一覧BucketObjectvar s3 = new AWS.S3();
  • 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・・・
  • 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 }
  • 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 }
  • Amazon S3ファイルの中身Objectが作成されているBucketが作成されている
  • 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ファイルがローカルディスクにダウンロードされ保存される
  • 他にも相性が良さそうなサービス□S3、EC2、ELB、DynamoDB、SQS、SES、SNS・・・□もっと詳しくhttp://docs.aws.amazon.com/AWSJavaScriptSDK/guide/index.html↑ここを読むべし
  • AWS SDK for Node.jsまとめ□AWSのサービスを利用するためのライブラリ群□AWSの信頼性と拡張性が高いサービスをすぐ利用できる□使い方も簡単(ドキュメントも豊富)
  • 全体 まとめ□Node.jsを動かすプラットフォームとしてのAWS  →AWS Elastic Beanstalk□Node.jsからすぐ利用できる機能としてAWS  →AWS SDK for Node.js□Node.jsやると英語ドキュメントばかり  →あきらめて読む□発表の活動限界は  →5分 (*́Д`)
  • !    以上!ありがとうございました!