jaws-ug初心者支部第4回 simple front 53

38
JAWS-UG 初心者支部 4回勉強会 Simple Front 53 @matetsu

Upload: tetsuya-mase

Post on 09-Jan-2017

3.708 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: JAWS-UG初心者支部第4回 Simple Front 53

JAWS-UG 初心者支部 第4回勉強会

Simple Front 53@matetsu

Page 2: JAWS-UG初心者支部第4回 Simple Front 53

私は誰?

• 間瀬 哲也 / matetsu

• 名刺管理アプリEightのインフラを担当

• https://8card.net/p/matetsu

• JAWS-UG京王線

• Amazon Web Services実践入門 共著

Page 3: JAWS-UG初心者支部第4回 Simple Front 53

本日の内容

• 本の紹介

• 本題

• S3

• CloudFront

• Route 53

Page 4: JAWS-UG初心者支部第4回 Simple Front 53

本の紹介

Page 5: JAWS-UG初心者支部第4回 Simple Front 53

Amazon Web Services 実践入門 • サーバーワークス(?)のリーダーを始め6人で共著

• Route 53とS3/CloudFrontの章を担当

• 結構売れてるはず

• みなさんも買ってください!買ってくださった方、ありがとうございます!

Page 6: JAWS-UG初心者支部第4回 Simple Front 53

Amazon Web Services 実践入門 裏話• githubをほぼ初利用だったのでとまどった

• Management Consoleの日本語対応は焦った

• おかげで売りの一つにはなった

• 本当は半年くらい前に出ていたかもw

• この時も一時的にS3コンソールの日本語化が出ちゃって焦りまくり

Page 7: JAWS-UG初心者支部第4回 Simple Front 53

本題

Page 8: JAWS-UG初心者支部第4回 Simple Front 53

S3

Page 9: JAWS-UG初心者支部第4回 Simple Front 53

S3

• Amazon Simple Storage Service • みんなに愛されるオブジェクトストレージ

• 3つ以上のDCに保存して99.999999999%の耐久性

• 可用性は設計上99.99%、SLAでは99.9%

• 安い

Page 10: JAWS-UG初心者支部第4回 Simple Front 53

S3の利用例

• ログの保存

• ローテート後

• fluentd • 静的ファイルの配信

• 静的ウェブサイトの配信

• ユーザコンテンツの保存

EC2

EC2

S3

EC2

S3

S3

S3

Page 11: JAWS-UG初心者支部第4回 Simple Front 53

ログの保存

• ログローテート時にSDKやCLIを利用

• fluentdのS3 pluginで定期的に

• ライフサイクルの利用で財布にも優しく

• より安いストレージへ移動/アーカイブ

• 標準-低頻度アクセス / Amazon Glacier

• 削除

Page 12: JAWS-UG初心者支部第4回 Simple Front 53

静的ウェブサイトホスティング

• 安く手間なくウェブサイト/静的ファイルの運用

• デフォルトでSSL/TLS利用可能

• S3のサブドメインドメイン

• 独自ドメインも利用可能

• バケット名をFQDNに

• 独自ドメインのSSL/TLSはS3単独では不可

Page 13: JAWS-UG初心者支部第4回 Simple Front 53

S3 応用例

• 静的ウェブサイトホスティング+ JavaScript + Cognito

• AWSの他サービスと連携

• 流行りのサーバーレス

• 実際は裏でたくさんのサーバが(ry

• オブジェクト登録時のEvent発火

• Lambdaを使って画像のリサイズ

Page 14: JAWS-UG初心者支部第4回 Simple Front 53

Event

Event

サーバレス的な

S3(静的Webサイト)

+ SDK for JavaScript

in the browser

Cognito STS (時限式認証情報)

SES

DynamoDB

S3

POSTデータを メールで送信

POSTデータをNoSQLに格納

POSTデータをS3に格納

Page 15: JAWS-UG初心者支部第4回 Simple Front 53

画像のリサイズ

S3

画像が 登録される

Event発火

Lambda

S/M/Lに リサイズ

S3保存

S3

Page 16: JAWS-UG初心者支部第4回 Simple Front 53

CloudFront

Page 17: JAWS-UG初心者支部第4回 Simple Front 53

CloudFront

• Amazon CloudFront

• 便利なCDN

• 動的なコンテンツでも使うと良い

• 独自のDDoS監視システム

• レポート機能が便利

• アクセスログはKinesisで集められている

Page 18: JAWS-UG初心者支部第4回 Simple Front 53

CloudFrontの利用例

• CDN

• ウェブサイトのSSL/TLS対応

• 地域に応じたレスポンス/制限

• Geo Targeting

• Geo Restriction

• AWS WAFとの統合でセキュリティ向上

Page 19: JAWS-UG初心者支部第4回 Simple Front 53

CDN (Contents Delivery Network)• キャッシュによるオリジンの負荷低減

• 世界中のエッジでレイテンシ低下

• コネクションの最適化

• 動的コンテンツでもKeepAliveで3way

handshakeのオーバーヘッドを低減

Page 20: JAWS-UG初心者支部第4回 Simple Front 53

CDN CloudFront

エッジロケーションEC2

ELB

S3

オンプレミスなど

Page 21: JAWS-UG初心者支部第4回 Simple Front 53

ウェブサイトのSSL/TLS対応

• CloudFront+S3で最強静的ウェブサイト

• CMSでHTML生成しているようなサイトなどで有用

• 残念ながらHTTP/2には未対応

• Certificate Managerで無料+更新不要の証明書

• 東京リージョン未対応(ELBで使えない)

• admin@などのメール受信はSESのInbound Emailで

Page 22: JAWS-UG初心者支部第4回 Simple Front 53

HTML等出力+

Sync

カスタム証明書 設定

証明書発行

オリジン(S3)へのアクセスは CloudFrontに限定

HTTPS

ACM (AWS Certificate Manager)

低コストウェブサイト運用

ドメイン所有確認

SES inbound

更新時以外は 停止

S3CloudFront

SSL/TLS証明書

EC2

Page 23: JAWS-UG初心者支部第4回 Simple Front 53

Geo Targeting/Restriction

• HTTPヘッダにアクセスされた国を保持

• CloudFront-Viewer-Country

• 同一URLで国別のコンテンツ

• 国別URLへのリダイレクトも(実装/設定しだい)

• ホワイトリスト/ブラックリスト

Page 24: JAWS-UG初心者支部第4回 Simple Front 53

Geo TargetingFrom A国

From B国

From C国

Cloudfront-Viewer-Country: AA

Cloudfront-Viewer-Country: BB

Cloudfront-Viewer-Country: CC

Contents A

Contents B

Contents C

From B国

From C国

Type: blacklist Country: BB, CC

From A国

Geo Restrictionreturn 403

EC2

EC2

ELB

ELB

CloudFront

CloudFront

エッジロケーション

エッジロケーション

Page 25: JAWS-UG初心者支部第4回 Simple Front 53

AWS WAFとの統合

• セキュリティ対策

• IPアドレスマッチ

• SQLインジェクション

• 文字列マッチ

• リクエストサイズ制限

Page 26: JAWS-UG初心者支部第4回 Simple Front 53

WAF + CloudFront

IP Address not match:192.0.2.0/24

192.0.2.0/24

198.51.100.0/24

203.0.113.0/24

CloudFront

AWS WAF

ELB EC2

ルールに応じて アクセスを制限したり、 SQL Injectionの検知で ブロックしたり

Page 27: JAWS-UG初心者支部第4回 Simple Front 53

Route 53

Page 28: JAWS-UG初心者支部第4回 Simple Front 53

Route 53

• Amazon Route 53

• 安くて手間いらずのDNSサービス

• SLAで可用性100%

• サーバがオンプレでも使っておくべき

• VPC内PrivateDNSはホント助かる

Page 29: JAWS-UG初心者支部第4回 Simple Front 53

Route 53利用時の注意点

• DNSキャッシュサーバではないです

• AWS CLIでの管理は苦行

• 簡単な操作ならマネージメントコンソール

• 自動化などはAWS SDKのほうがよい

• JSON大好きっ子はどうぞ

Page 30: JAWS-UG初心者支部第4回 Simple Front 53

{ "Comment": "Create records set.", "Changes": [ { "Action": "CREATE", "ResourceRecordSet": { "Name": "jawsug-beginner.example.com.", "Type": "A", "TTL": 3600, "ResourceRecords": [ { "Value": "192.0.2.1" } ] } } ] }

Aレコード登録したいだけなんです!!

Page 31: JAWS-UG初心者支部第4回 Simple Front 53

Route 53の利用例

• DNSフェイルオーバー

• 加重ラウンドロビン

• レイテンシベースルーティング

• Geo DNS

• ドメイン登録

Page 32: JAWS-UG初心者支部第4回 Simple Front 53

Primary

Health Checkで

NGになったら

SecondaryFailoverして

Secondaryに アクセスが行くようになる

DNS Failover

EC2

ELB

RDS

S3

Route 53

障害発生!!

Page 33: JAWS-UG初心者支部第4回 Simple Front 53

Weighted Round Robin

重み:90 重み:10AZ-a AZ-b

RDS

EC2

ELB ELB

EC2

重みづけに応じて振り分けの 割合を変えられる。 サイトの移行などでも使える。

Page 34: JAWS-UG初心者支部第4回 Simple Front 53

Region A Region B

Latency Based Routing

50ms 100ms

ELBELB

EC2 EC2

RDSRDS

レイテンシが一番小さくなる リージョンへ振り分けられる

Page 35: JAWS-UG初心者支部第4回 Simple Front 53

eu-west-1 ap-northeast-1

Geo DNS(Geo Routing)From Europe

From Japan

ELB ELB

EC2EC2

RDS RDS

レイテンシではなく、地理的な場所で リージョンなどの振り分けを行う

Page 36: JAWS-UG初心者支部第4回 Simple Front 53

まとめ

• 3サービスとも手がかからない

• 使い方いろいろ

• 安い

• 料金だけでなく運用コスト全体で見て

• わからないことがあったら

『Amazon Web Services 実践入門』を読んでみよう

Page 37: JAWS-UG初心者支部第4回 Simple Front 53

ご清聴ありがとうございました

Page 38: JAWS-UG初心者支部第4回 Simple Front 53

   のインフラ やりませんか!ステッカーほしい方、差し上げます