s3 event notifications やってみた

Post on 08-Jul-2015

166 Views

Category:

Internet

3 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

S3 Event Notificationsやってみた

JAWS-UG北陸 NKMC

2014/11/29

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

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

S3 Event Notifications

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

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

• キュー(SQS)

• 関数(Lambda)

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

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

用途?

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

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

今までだと・・・

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

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

こんな風に使える?

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

↓イベント通知(SQS)

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

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

他にも・・・

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

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

では実践!

•やってみること

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

S3バケットの準備

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

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

SNSトピック作成

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

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

トピックの購読者登録

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

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

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

購読の承認

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

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

トピックの権限設定

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

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

設定内容

{ "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の比較と指定

S3にイベント通知設定

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

• イベント名をつける

•通知イベントを選択

• SNSトピックを選択

通知されるか試す

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

• メールが飛んだか確認

通知される内容

• 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(もしバケットでバージョニングを有効に為ていた場合)

おしまい

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

top related