Your SlideShare is downloading. ×
node.jsでS3にバックアップを送り続けるコードを書いてみた話。Node s3maの紹介-jawsugさいたま
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

node.jsでS3にバックアップを送り続けるコードを書いてみた話。Node s3maの紹介-jawsugさいたま

3,858
views

Published on

node.jsでS3にバックアップを送り続けるコードを書いてみた話。 …

node.jsでS3にバックアップを送り続けるコードを書いてみた話。
Node s3maの紹介-jawsugさいたま

Published in: Technology

0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,858
On Slideshare
0
From Embeds
0
Number of Embeds
16
Actions
Shares
0
Downloads
1
Comments
0
Likes
3
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. node.jsでS3にバックアップを送り 続けるコードを書いてみた話 S3にセミリアルタイム同期 with node.js node-s3maの紹介 ARAKI Yasuhiro (ar1@)
  • 2. 自己紹介 名前 • 荒木 靖宏(twitter: ar1) 肩書 • プリンシパルソリューション アーキテクト 好きなAWSサービス • Amazon Virtual Private Cloud • AWS Direct Connect
  • 3. クラウドストレージ Amazon S3 世界中の8拠点から選択 S3 東京リージョン データ置くだけ。イ ンフラ、電源、気に しない。 容量無制限。 保存するデータは、 自動で暗号化する ことも可能 データセンターA バケット データセンターB データセンターC 3か所以上で 自動複製 安価な従量課金 ファイル(バイナリ、 テキスト、画像、動画) 例:1GB/月 – 約10円 高い耐久性で データ失わない: 99.999999999%
  • 4. Simple(シンプルに使えること) ファイルのPUT/GET/DELETE/LIST/COPY • これだけ。とってもシンプル Plug & Play: クラウドストレージを簡 単に使うための3rdパーティーソリュー ションが豊富に存在。ソリューション を使う事で簡単に利用する事が可能 SDK: アプリケーションデベロッパーは、 S3 SDKを使ってアプリケーションを開 発することが可能 Internet Web Services API HTTP(S) S3 & /or Glacier S3 AWS Storage Gateway
  • 5. node-s3ma Automatic local file backup to two of S3 buckets.
  • 6. node-s3maの動作 Region node-s3ma 1)ファイル保存 2)S3にPUT 3)S3にバケット間 COPY命令 指定したディレクトリ以 下のファイル更新を検出 Region
  • 7. node-s3maをつかってみる インストール • npm install node-watch aws-sdk mime 設定ファイル { "watchDir": "/tmp", "accessKeyId": "AKIA******", "secretAccessKey": "**********", "region": "us-west-2", "bucket": "*******-oregon", "topPrefix": "backup/", "bucketSync": "**********-ireland", "topPrefixSync": "backup/", "endpointSync": "https://s3-eu-west-1.amazonaws.com" }
  • 8. node-s3maの機能 nodeが動けばどんな環境でも動く(はず) ファイルの変更監視 • inotify (linux) • WindowsやMacなどなどでも動かすためにnode-watch.js 並列転送 • nodeなんでC10Kとか • コア数分はマルチプロセス動作 mime-typeの自動判別 • mime.jsの使用。拡張子毎に任意に設定可能
  • 9. 協力したい? https://github.com/armaniacs/node-s3ma/ • コアコードは100行弱です! • いっしょに試してくれる人募集 • 特にLinuxとMac以外で試していただける方
  • 10. 使用例 S3を使って静的なウェブサイトを ホスティングする
  • 11. S3でウェブサイトをホスティングする理由 運用いらず • データがなくならないので、バックアップの必要なし • ハードウェア障害でサイトにアクセスできなくなる心配な し • 容量無制限なのでディスクがあふれる心配なし • 大量トラフィックによりサイトが落ちる心配なし • 操作はシンプルで簡単 安い • 従量課金で1ヶ月10円からはじめられる 技術で料金を下げることが可能
  • 12. 例: 月間10000PVのサイトが月157円 想定スペック • ページ数100 • 1ページ当たりのファイル数 30 • 1ページ当たりの平均サイズ 1MB • 月間PV 10000 項目 単価 ストレージ 10円/GB リクエスト 0.4円/10000リクエスト 転送量 15.7円/GB 合計 金額 1円 12円 144円 157円
  • 13. S3を使って静的Webサイトを公開する手順 1. Webサイト用にS3のバケットを設定する。 2. バケット内のファイルがアップロードした際、自動的 に公開されるようバケットポリシーを追加する。 続くスライドではここを説明します 3. 手元でnode-s3maを動かす 4. S3のwebsite endpointにアクセスし、ウェブサイトが表 示されることを確認する。
  • 14. S3を使って静的なウェブサイトを ホスティングするためのバケット設定方法
  • 15. Webサイト用にバケットを設定する [All Buckets]をクリックしてバケット一覧ページを表示します。 1. [All Buckets]をクリック
  • 16. Webサイト用にバケットを設定する 虫めがねボタンをクリックして右側にバケットのプロパティを表示します 1. 虫めがねボタンをクリック
  • 17. Webサイト用にバケットを設定する [Static Website Hosting]をクリックし、静的ウェブサイト用の設定項目を表 示します。 1. [Static Website Hosting]をクリック
  • 18. Webサイト用にバケットを設定する [Enable website hosting]を選択し、Index 、Error Documentに ファイル名を入力したら、[Save]ボタンをクリックし設定を有効にします。 1. [Enable website hosting]をクリック 2. [index.html]と入力 3. [error.html]と入力 4. [Save]をクリック
  • 19. Webサイト用にバケットを設定する Endpointを確認しておきます。 • Endpoint経由でアクセスすることで、パス指定なしのURLでアクセスした場合に、Index Documentに指定したファイル(index.html)が、ファイルが存在しないURLにアクセスし た場合にError Documentに指定したファイル(error.html)が表示されるようになります。 Endpointを確認しておきます。
  • 20. バケットポリシーを設定する バケットポリシーを設定し、このバケットにアップロードされたファイルは 自動的に公開されるように設定します。 プロパティから[Permissions]をクリックし、[Add bucket policy]をクリックし て、Bucket Policy Editorを起動します。 1. [Permissions]をクリック 2. [Add bucket policy]をクリック
  • 21. バケットポリシーを設定する Editorが表示されたら、下側にある [Sample Bucket Policies]をクリックし、 サンプルページを表示します。サンプルページは別ウィンドウで開きます。 1. [Sample Bucket Policies]をクリック
  • 22. バケットポリシーを設定する [Granting Permission to Anonymous User]を見つけて、その内容をコピーし ます。 1. この部分をコピー
  • 23. バケットポリシーを設定する コピーしたポリシーをEditorに貼り付けます。 1. この部分に貼り付け
  • 24. バケットポリシーを設定する 貼り付けた内容の[bucket]という部分を自分のバケット名に書きかえます。 書きかえ終えたら、[Save]ボタンをクリックし設定を保存します。 1. この部分を自分のバケット名に書きかえる 2. [Save]をクリック
  • 25. バケットポリシーを設定する バケットポリシーの保存が正常に完了すると [Add bucket policy]が[Edit bucket policy]に変わります。 Edit bucket policyに変わっている