SlideShare a Scribd company logo
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に変わっている

More Related Content

PDF
AWSでAPI Gatewayから非同期でLambdaを起動してS3にファイルアップロードしようとしたらハマった話。
PDF
AWS LambdaとDynamoDBがこんなにツライはずがない #ssmjp
PPTX
はじめてのAWS Lambda
PDF
画像処理をAWS LambdaのPythonで!
PDF
速習 AWS Lambda
PDF
lambda-lgtm
PDF
20160526 AWSサービスアップデート
PDF
AWS Lambdaで作るクローラー/スクレイピング
AWSでAPI Gatewayから非同期でLambdaを起動してS3にファイルアップロードしようとしたらハマった話。
AWS LambdaとDynamoDBがこんなにツライはずがない #ssmjp
はじめてのAWS Lambda
画像処理をAWS LambdaのPythonで!
速習 AWS Lambda
lambda-lgtm
20160526 AWSサービスアップデート
AWS Lambdaで作るクローラー/スクレイピング

What's hot (20)

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

More from Yasuhiro Araki, Ph.D (20)

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

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