s3 event notifications やってみた

17
S3 Event Notifications やってみた JAWS - UG 北陸 NKMC 2014/11/29

Upload: kenichi-nakamichi

Post on 08-Jul-2015

165 views

Category:

Internet


3 download

DESCRIPTION

JAWS-UG 北陸 勉強会 第8回 セッション S3 Event Notifications を使ってみたので報告

TRANSCRIPT

Page 1: S3 Event Notifications やってみた

S3 Event Notificationsやってみた

JAWS-UG北陸 NKMC

2014/11/29

Page 2: S3 Event Notifications やってみた

セッション枠が埋まらなかったので

•最近追加された機能を紹介&実践

Page 3: S3 Event Notifications やってみた

S3 Event Notifications

• 2014/11/13に追加されたS3の新機能

• S3にオブジェクトがアップロードされると• トピック(SNS)

• キュー(SQS)

• 関数(Lambda)

にイベントを送ることができる

•詳しくは AWSブログを見てねhttp://aws.typepad.com/aws_japan/2014/11/s3-event-notification.html

Page 4: S3 Event Notifications やってみた

用途?

• オブジェクト駆動の実装が可能

例)モバイルアプリからS3に画像をアップロードし、パスをDBに保存する

今までだと・・・

• モバイルアプリ => 画像をダイレクトS3転送 + EC2サーバのAPIをコールして通知(DBにパスを保存)

• モバイルアプリ => EC2サーバに画像送信 =>EC2サーバからS3にアップロード+DBにパスを保存

Page 5: S3 Event Notifications やってみた

こんな風に使える?

• Event Notificationsを使うとモバイルアプリ => 画像ダイレクトS3転送

↓イベント通知(SQS)

↑EC2サーバでキュー処理 =>パスをDB登録

といった感じで、クライアント-サーバ間で非同期で画像を処理できる。

Page 6: S3 Event Notifications やってみた

他にも・・・

• オブジェクトアップロード時の初期化や、ログ取り、内容チェックができそう。

• Lambdaと組み合わせれば、S3に画像をアップロードするとEC2サーバを使わずにリサイズ・変換・加工したりできるね!

Page 7: S3 Event Notifications やってみた

では実践!

•やってみること

S3バケットにオブジェクトがアップロードされたら、メールで通知する

Page 8: S3 Event Notifications やってみた

S3バケットの準備

• おもむろにS3のバケットを作成S3 > 『Create Bucket』

•既存のバケットでもいいよ

Page 9: S3 Event Notifications やってみた

SNSトピック作成

• SNSトピックをつくるSNS > SNS Dashboard > 『Create New Topic』

• トピック名、表示名を設定して作成

Page 10: S3 Event Notifications やってみた

トピックの購読者登録

• SNS > Subscriptions > トピックを選択 > 『Create Subscription』

• 「Protocol」をEmailまたはEmail-JSON

• 「Endpoint」を自分のメールアドレス

Page 11: S3 Event Notifications やってみた

購読の承認

•購読者のメールアドレスに「AWS Notification – Subscription Confirmation」というメールが届く

•本文中のURLをクリックして承認

Page 12: S3 Event Notifications やってみた

トピックの権限設定

• SNS > トピック選択 > All Topic Actions > View/Edit Topic Policy > Advanced View

• S3がSNSにイベントを通知できるように、トピックの権限を手直し

Page 13: S3 Event Notifications やってみた

設定内容

{ "Version": "2008-10-17",

"Id": "__default_policy_ID",

"Statement": [ {

"Sid": "__default_statement_ID",

"Effect": "Allow",

"Principal": { "AWS": "*" },

"Action": "SNS:Publish",

"Resource": "arn:aws:sns:ap-northeast-1:026724327907:S3-Notification",

"Condition": {

"ArnEquals": {

"AWS:SourceArn": "arn:aws:s3:::nkmc-s3-event"

}}}]

}

作成したトピックのARN

自分のS3バケットのARN

SNS:Publish

に限定

ARNの比較と指定

Page 14: S3 Event Notifications やってみた

S3にイベント通知設定

• S3 > バケット選択 > Properties > Events

• イベント名をつける

•通知イベントを選択

• SNSトピックを選択

Page 15: S3 Event Notifications やってみた

通知されるか試す

• オブジェクトをバケットにアップロード

• メールが飛んだか確認

Page 16: S3 Event Notifications やってみた

通知される内容

• Region

• Timestamp

• Event Type (上記のリストで示したイベント)

• Request Actor Principal ID

• リクエストのSource IP

• Request ID

• Host ID

• Notification Configuration Destination ID

• バケット名

• バケットARN

• Bucket Owner Principal ID

• オブジェクトのキー(オブジェクトの名前)

• オブジェクトのサイズ

• オブジェクトのETag

• オブジェクトのバージョンID(もしバケットでバージョニングを有効に為ていた場合)

Page 17: S3 Event Notifications やってみた

おしまい

•工夫次第でいろいろ使いどころがありそうですね。