SlideShare ist ein Scribd-Unternehmen logo
1 von 25
node.jsでS3にバックアップを送り
続けるコードを書いてみた話
S3にセミリアルタイム同期
with node.js
node-s3maの紹介
ARAKI Yasuhiro (ar1@)
自己紹介
名前
• 荒木 靖宏(twitter: ar1)
肩書
• プリンシパルソリューション
アーキテクト

好きなAWSサービス
• Amazon Virtual Private
Cloud
• AWS Direct Connect
クラウドストレージ Amazon S3
世界中の8拠点から選択

S3
東京リージョン
データ置くだけ。イ
ンフラ、電源、気に
しない。
容量無制限。

保存するデータは、
自動で暗号化する
ことも可能
データセンターA

バケット

データセンターB

データセンターC

3か所以上で
自動複製

安価な従量課金
ファイル(バイナリ、
テキスト、画像、動画)

例:1GB/月 – 約10円

高い耐久性で
データ失わない:
99.999999999%
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
node-s3ma
Automatic local file backup to two of S3
buckets.
node-s3maの動作
Region

node-s3ma
1)ファイル保存

2)S3にPUT

3)S3にバケット間
COPY命令

指定したディレクトリ以
下のファイル更新を検出

Region
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"
}
node-s3maの機能
nodeが動けばどんな環境でも動く(はず)
ファイルの変更監視
• inotify (linux)
• WindowsやMacなどなどでも動かすためにnode-watch.js

並列転送
• nodeなんでC10Kとか
• コア数分はマルチプロセス動作

mime-typeの自動判別
• mime.jsの使用。拡張子毎に任意に設定可能
協力したい?
https://github.com/armaniacs/node-s3ma/
• コアコードは100行弱です!
• いっしょに試してくれる人募集
• 特にLinuxとMac以外で試していただける方
使用例
S3を使って静的なウェブサイトを
ホスティングする
S3でウェブサイトをホスティングする理由
運用いらず
• データがなくならないので、バックアップの必要なし
• ハードウェア障害でサイトにアクセスできなくなる心配な
し
• 容量無制限なのでディスクがあふれる心配なし
• 大量トラフィックによりサイトが落ちる心配なし
• 操作はシンプルで簡単

安い
• 従量課金で1ヶ月10円からはじめられる

技術で料金を下げることが可能
例: 月間10000PVのサイトが月157円
想定スペック
• ページ数100
• 1ページ当たりのファイル数 30
• 1ページ当たりの平均サイズ 1MB
• 月間PV 10000
項目

単価

ストレージ

10円/GB

リクエスト

0.4円/10000リクエスト

転送量

15.7円/GB

合計

金額
1円
12円
144円

157円
S3を使って静的Webサイトを公開する手順
1. Webサイト用にS3のバケットを設定する。
2. バケット内のファイルがアップロードした際、自動的
に公開されるようバケットポリシーを追加する。
続くスライドではここを説明します

3. 手元でnode-s3maを動かす
4. S3のwebsite endpointにアクセスし、ウェブサイトが表
示されることを確認する。
S3を使って静的なウェブサイトを
ホスティングするためのバケット設定方法
Webサイト用にバケットを設定する
[All Buckets]をクリックしてバケット一覧ページを表示します。

1. [All Buckets]をクリック
Webサイト用にバケットを設定する
虫めがねボタンをクリックして右側にバケットのプロパティを表示します

1. 虫めがねボタンをクリック
Webサイト用にバケットを設定する
[Static Website Hosting]をクリックし、静的ウェブサイト用の設定項目を表
示します。

1. [Static Website Hosting]をクリック
Webサイト用にバケットを設定する
[Enable website hosting]を選択し、Index 、Error Documentに
ファイル名を入力したら、[Save]ボタンをクリックし設定を有効にします。
1. [Enable website hosting]をクリック

2. [index.html]と入力
3. [error.html]と入力

4. [Save]をクリック
Webサイト用にバケットを設定する
Endpointを確認しておきます。
•

Endpoint経由でアクセスすることで、パス指定なしのURLでアクセスした場合に、Index
Documentに指定したファイル(index.html)が、ファイルが存在しないURLにアクセスし
た場合にError Documentに指定したファイル(error.html)が表示されるようになります。

Endpointを確認しておきます。
バケットポリシーを設定する
バケットポリシーを設定し、このバケットにアップロードされたファイルは
自動的に公開されるように設定します。
プロパティから[Permissions]をクリックし、[Add bucket policy]をクリックし
て、Bucket Policy Editorを起動します。
1. [Permissions]をクリック

2. [Add bucket policy]をクリック
バケットポリシーを設定する
Editorが表示されたら、下側にある [Sample Bucket Policies]をクリックし、
サンプルページを表示します。サンプルページは別ウィンドウで開きます。

1. [Sample Bucket Policies]をクリック
バケットポリシーを設定する
[Granting Permission to Anonymous User]を見つけて、その内容をコピーし
ます。

1. この部分をコピー
バケットポリシーを設定する
コピーしたポリシーをEditorに貼り付けます。

1. この部分に貼り付け
バケットポリシーを設定する
貼り付けた内容の[bucket]という部分を自分のバケット名に書きかえます。
書きかえ終えたら、[Save]ボタンをクリックし設定を保存します。

1. この部分を自分のバケット名に書きかえる

2. [Save]をクリック
バケットポリシーを設定する
バケットポリシーの保存が正常に完了すると
[Add bucket policy]が[Edit bucket policy]に変わります。

Edit bucket policyに変わっている

Weitere ähnliche Inhalte

Was ist angesagt?

EC2でマルチキャスト
EC2でマルチキャストEC2でマルチキャスト
EC2でマルチキャスト
Kenta Yasukawa
 

Was ist angesagt? (20)

Lambda Layerの権限制御を試してみた
Lambda Layerの権限制御を試してみたLambda Layerの権限制御を試してみた
Lambda Layerの権限制御を試してみた
 
AWS Lambda を使ってみた話 at づや会Vol.3
AWS Lambda を使ってみた話 at  づや会Vol.3AWS Lambda を使ってみた話 at  づや会Vol.3
AWS Lambda を使ってみた話 at づや会Vol.3
 
20160312 Jaws Days 2016 API Gateway+Lambda
20160312 Jaws Days 2016 API Gateway+Lambda20160312 Jaws Days 2016 API Gateway+Lambda
20160312 Jaws Days 2016 API Gateway+Lambda
 
AWS Lambda のご紹介 2015 JAWS沖縄
AWS Lambda のご紹介 2015 JAWS沖縄AWS Lambda のご紹介 2015 JAWS沖縄
AWS Lambda のご紹介 2015 JAWS沖縄
 
New Cloud Design Pattern using Amazon Aurora
New Cloud Design Pattern using Amazon AuroraNew Cloud Design Pattern using Amazon Aurora
New Cloud Design Pattern using Amazon Aurora
 
AWS re:Invent2019 Overview & New Releases Summary for Game
AWS re:Invent2019 Overview &New Releases Summary for GameAWS re:Invent2019 Overview &New Releases Summary for Game
AWS re:Invent2019 Overview & New Releases Summary for Game
 
第18回 jaws ug札幌 勉強会 やってみたで終わらないlambdaな話
第18回 jaws ug札幌 勉強会 やってみたで終わらないlambdaな話第18回 jaws ug札幌 勉強会 やってみたで終わらないlambdaな話
第18回 jaws ug札幌 勉強会 やってみたで終わらないlambdaな話
 
AWS Batch Fargate対応は何をもたらすか
AWS Batch Fargate対応は何をもたらすかAWS Batch Fargate対応は何をもたらすか
AWS Batch Fargate対応は何をもたらすか
 
前座Lambda
前座Lambda前座Lambda
前座Lambda
 
俺のLambda
俺のLambda俺のLambda
俺のLambda
 
AWS Search Services
AWS Search ServicesAWS Search Services
AWS Search Services
 
Tune Up AWS Lambda
Tune Up AWS LambdaTune Up AWS Lambda
Tune Up AWS Lambda
 
AWS Black Belt Online Seminar 2017 Deployment on AWS
AWS Black Belt Online Seminar 2017 Deployment on AWSAWS Black Belt Online Seminar 2017 Deployment on AWS
AWS Black Belt Online Seminar 2017 Deployment on AWS
 
Talk: serverless-express
Talk: serverless-expressTalk: serverless-express
Talk: serverless-express
 
AWS Black Belt Online Seminar 2017 AWS X-Ray
AWS Black Belt Online Seminar 2017 AWS X-RayAWS Black Belt Online Seminar 2017 AWS X-Ray
AWS Black Belt Online Seminar 2017 AWS X-Ray
 
20140418 aws-casual-network
20140418 aws-casual-network20140418 aws-casual-network
20140418 aws-casual-network
 
EC2でマルチキャスト
EC2でマルチキャストEC2でマルチキャスト
EC2でマルチキャスト
 
AWS Black Belt Online Seminar 2017 AWS Storage Gateway
AWS Black Belt Online Seminar 2017 AWS Storage GatewayAWS Black Belt Online Seminar 2017 AWS Storage Gateway
AWS Black Belt Online Seminar 2017 AWS Storage Gateway
 
EC2上のWordPressをShifterに移行してみた!
 EC2上のWordPressをShifterに移行してみた! EC2上のWordPressをShifterに移行してみた!
EC2上のWordPressをShifterに移行してみた!
 
re:invent 2016 新サービスで変わる AWS運用
re:invent 2016 新サービスで変わる AWS運用re:invent 2016 新サービスで変わる AWS運用
re:invent 2016 新サービスで変わる AWS運用
 

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

[AWSマイスターシリーズ]Amazon Simple Storage Service (S3)
[AWSマイスターシリーズ]Amazon Simple Storage Service (S3)[AWSマイスターシリーズ]Amazon Simple Storage Service (S3)
[AWSマイスターシリーズ]Amazon Simple Storage Service (S3)
Amazon Web Services Japan
 
20121221 AWS re:Invent 凱旋報告
20121221 AWS re:Invent 凱旋報告20121221 AWS re:Invent 凱旋報告
20121221 AWS re:Invent 凱旋報告
真吾 吉田
 
「はじめてのAmazon Web Services」 JAWS-UG 長崎第1回勉強会
「はじめてのAmazon Web Services」 JAWS-UG 長崎第1回勉強会「はじめてのAmazon Web Services」 JAWS-UG 長崎第1回勉強会
「はじめてのAmazon Web Services」 JAWS-UG 長崎第1回勉強会
Yasuhiro Horiuchi
 
クラウドを使ってみよう - クラウド女子会2011年4月30日
クラウドを使ってみよう - クラウド女子会2011年4月30日クラウドを使ってみよう - クラウド女子会2011年4月30日
クラウドを使ってみよう - クラウド女子会2011年4月30日
SORACOM, INC
 
S3をてなづけてオレオレバックエンドにしてみた話
S3をてなづけてオレオレバックエンドにしてみた話S3をてなづけてオレオレバックエンドにしてみた話
S3をてなづけてオレオレバックエンドにしてみた話
Yasuhiro Araki, Ph.D
 

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

20120319 aws meister-reloaded-s3
20120319 aws meister-reloaded-s320120319 aws meister-reloaded-s3
20120319 aws meister-reloaded-s3
 
20120319 aws meister-reloaded-s3
20120319 aws meister-reloaded-s320120319 aws meister-reloaded-s3
20120319 aws meister-reloaded-s3
 
[AWSマイスターシリーズ]Amazon Simple Storage Service (S3)
[AWSマイスターシリーズ]Amazon Simple Storage Service (S3)[AWSマイスターシリーズ]Amazon Simple Storage Service (S3)
[AWSマイスターシリーズ]Amazon Simple Storage Service (S3)
 
S3 -ほぼ週刊AWSマイスターシリーズ第2回-
S3 -ほぼ週刊AWSマイスターシリーズ第2回-S3 -ほぼ週刊AWSマイスターシリーズ第2回-
S3 -ほぼ週刊AWSマイスターシリーズ第2回-
 
AWSを用いたWebホスティング
AWSを用いたWebホスティングAWSを用いたWebホスティング
AWSを用いたWebホスティング
 
20120303 jaws summit-meister-03_s3
20120303 jaws summit-meister-03_s320120303 jaws summit-meister-03_s3
20120303 jaws summit-meister-03_s3
 
20120303 jaws summit-meister-08_sg-dx
20120303 jaws summit-meister-08_sg-dx20120303 jaws summit-meister-08_sg-dx
20120303 jaws summit-meister-08_sg-dx
 
次世代ディザスタリカバリを成功させるアマゾンクラウド活用法
次世代ディザスタリカバリを成功させるアマゾンクラウド活用法次世代ディザスタリカバリを成功させるアマゾンクラウド活用法
次世代ディザスタリカバリを成功させるアマゾンクラウド活用法
 
AWS上で使えるストレージ十番勝負
AWS上で使えるストレージ十番勝負AWS上で使えるストレージ十番勝負
AWS上で使えるストレージ十番勝負
 
20121221 AWS re:Invent 凱旋報告
20121221 AWS re:Invent 凱旋報告20121221 AWS re:Invent 凱旋報告
20121221 AWS re:Invent 凱旋報告
 
AWS Black Belt Techシリーズ AWS re:Invent 2014 最新情報のアップデート
AWS Black Belt Techシリーズ  AWS re:Invent 2014 最新情報のアップデートAWS Black Belt Techシリーズ  AWS re:Invent 2014 最新情報のアップデート
AWS Black Belt Techシリーズ AWS re:Invent 2014 最新情報のアップデート
 
「はじめてのAmazon Web Services」 JAWS-UG 長崎第1回勉強会
「はじめてのAmazon Web Services」 JAWS-UG 長崎第1回勉強会「はじめてのAmazon Web Services」 JAWS-UG 長崎第1回勉強会
「はじめてのAmazon Web Services」 JAWS-UG 長崎第1回勉強会
 
20190828 AWS Black Belt Online Seminar Amazon Aurora with PostgreSQL Compatib...
20190828 AWS Black Belt Online Seminar Amazon Aurora with PostgreSQL Compatib...20190828 AWS Black Belt Online Seminar Amazon Aurora with PostgreSQL Compatib...
20190828 AWS Black Belt Online Seminar Amazon Aurora with PostgreSQL Compatib...
 
ディザスタリカバリとAWS最新動向 - AWSクラウドアドバンテージセミナー
ディザスタリカバリとAWS最新動向 - AWSクラウドアドバンテージセミナーディザスタリカバリとAWS最新動向 - AWSクラウドアドバンテージセミナー
ディザスタリカバリとAWS最新動向 - AWSクラウドアドバンテージセミナー
 
はじめてのAWS - ビギナー編 -
はじめてのAWS - ビギナー編 - はじめてのAWS - ビギナー編 -
はじめてのAWS - ビギナー編 -
 
Aws S3 Usecase on Jawsug Niigata 20190126
Aws S3 Usecase on Jawsug Niigata 20190126Aws S3 Usecase on Jawsug Niigata 20190126
Aws S3 Usecase on Jawsug Niigata 20190126
 
クラウドを使ってみよう - クラウド女子会2011年4月30日
クラウドを使ってみよう - クラウド女子会2011年4月30日クラウドを使ってみよう - クラウド女子会2011年4月30日
クラウドを使ってみよう - クラウド女子会2011年4月30日
 
S3をてなづけてオレオレバックエンドにしてみた話
S3をてなづけてオレオレバックエンドにしてみた話S3をてなづけてオレオレバックエンドにしてみた話
S3をてなづけてオレオレバックエンドにしてみた話
 
20190220 AWS Black Belt Online Seminar Amazon S3 / Glacier
20190220 AWS Black Belt Online Seminar Amazon S3 / Glacier20190220 AWS Black Belt Online Seminar Amazon S3 / Glacier
20190220 AWS Black Belt Online Seminar Amazon S3 / Glacier
 
AWS Black Belt Techシリーズ Amazon Simple Storage Service (Amazon S3)
AWS Black Belt Techシリーズ Amazon Simple Storage Service (Amazon S3)AWS Black Belt Techシリーズ Amazon Simple Storage Service (Amazon S3)
AWS Black Belt Techシリーズ Amazon Simple Storage Service (Amazon S3)
 

Mehr von Yasuhiro Araki, Ph.D

20140628 AWSの2014前半のアップデートまとめ
20140628 AWSの2014前半のアップデートまとめ20140628 AWSの2014前半のアップデートまとめ
20140628 AWSの2014前半のアップデートまとめ
Yasuhiro Araki, Ph.D
 
opsworks本番前提でopsworksを使わないで開発する話 at #jawsug #chibadan
opsworks本番前提でopsworksを使わないで開発する話 at #jawsug #chibadanopsworks本番前提でopsworksを使わないで開発する話 at #jawsug #chibadan
opsworks本番前提でopsworksを使わないで開発する話 at #jawsug #chibadan
Yasuhiro Araki, Ph.D
 

Mehr von Yasuhiro Araki, Ph.D (20)

1999年JUSメールサーバワークショップ@伊勢志摩
1999年JUSメールサーバワークショップ@伊勢志摩1999年JUSメールサーバワークショップ@伊勢志摩
1999年JUSメールサーバワークショップ@伊勢志摩
 
サービスをスケールさせるために AWSと利用者の技術
サービスをスケールさせるために AWSと利用者の技術サービスをスケールさせるために AWSと利用者の技術
サービスをスケールさせるために AWSと利用者の技術
 
AWSのIPv6対応状況@JAWS-UG大阪
AWSのIPv6対応状況@JAWS-UG大阪AWSのIPv6対応状況@JAWS-UG大阪
AWSのIPv6対応状況@JAWS-UG大阪
 
今だから!Amazon CloudFront 徹底活用
今だから!Amazon CloudFront 徹底活用今だから!Amazon CloudFront 徹底活用
今だから!Amazon CloudFront 徹底活用
 
20151016 soracom-araki-02
20151016 soracom-araki-0220151016 soracom-araki-02
20151016 soracom-araki-02
 
Webサービス向け、クラウドデザインパターン:アンチパターン紹介
Webサービス向け、クラウドデザインパターン:アンチパターン紹介Webサービス向け、クラウドデザインパターン:アンチパターン紹介
Webサービス向け、クラウドデザインパターン:アンチパターン紹介
 
AWSにみる日本のクラウドのトレンド予測 20150321 jaws-tohoku
AWSにみる日本のクラウドのトレンド予測 20150321 jaws-tohokuAWSにみる日本のクラウドのトレンド予測 20150321 jaws-tohoku
AWSにみる日本のクラウドのトレンド予測 20150321 jaws-tohoku
 
20141202 jaws-osaka-hangeki
20141202 jaws-osaka-hangeki20141202 jaws-osaka-hangeki
20141202 jaws-osaka-hangeki
 
20141126 jaws-antipattern
20141126 jaws-antipattern20141126 jaws-antipattern
20141126 jaws-antipattern
 
クラウドによる運用の計測と運用価値の表現、その未来
クラウドによる運用の計測と運用価値の表現、その未来クラウドによる運用の計測と運用価値の表現、その未来
クラウドによる運用の計測と運用価値の表現、その未来
 
AWS 専用線アクセス体験ラボ紹介と 開催地立候補のお願い
AWS 専用線アクセス体験ラボ紹介と開催地立候補のお願いAWS 専用線アクセス体験ラボ紹介と開催地立候補のお願い
AWS 専用線アクセス体験ラボ紹介と 開催地立候補のお願い
 
20140906 jawsfesta-araki-lt
20140906 jawsfesta-araki-lt20140906 jawsfesta-araki-lt
20140906 jawsfesta-araki-lt
 
20140906 jawsfesta-araki-public
20140906 jawsfesta-araki-public20140906 jawsfesta-araki-public
20140906 jawsfesta-araki-public
 
AWSつもり違い10箇条 at 201408 jaws高尾山ビアマウント
AWSつもり違い10箇条 at 201408 jaws高尾山ビアマウント AWSつもり違い10箇条 at 201408 jaws高尾山ビアマウント
AWSつもり違い10箇条 at 201408 jaws高尾山ビアマウント
 
20140717 awssummit2014-cloud-operation
20140717 awssummit2014-cloud-operation20140717 awssummit2014-cloud-operation
20140717 awssummit2014-cloud-operation
 
20140628 AWSの2014前半のアップデートまとめ
20140628 AWSの2014前半のアップデートまとめ20140628 AWSの2014前半のアップデートまとめ
20140628 AWSの2014前半のアップデートまとめ
 
20140621 july techfesta (JTF2014) 突発**むけAWS
20140621 july techfesta (JTF2014) 突発**むけAWS20140621 july techfesta (JTF2014) 突発**むけAWS
20140621 july techfesta (JTF2014) 突発**むけAWS
 
MTのスケールアップパターン with AWS
MTのスケールアップパターン with AWSMTのスケールアップパターン with AWS
MTのスケールアップパターン with AWS
 
Aws update jawstokyo-public
Aws update jawstokyo-publicAws update jawstokyo-public
Aws update jawstokyo-public
 
opsworks本番前提でopsworksを使わないで開発する話 at #jawsug #chibadan
opsworks本番前提でopsworksを使わないで開発する話 at #jawsug #chibadanopsworks本番前提でopsworksを使わないで開発する話 at #jawsug #chibadan
opsworks本番前提でopsworksを使わないで開発する話 at #jawsug #chibadan
 

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