sqs2011年10月5日水曜日S3ってなんじゃ?(サーバー側でファイルのAES256暗号化)S3がサーバーサイドでのファイル暗号化に対応しました。ファイルのアップロード時、"x-amz-server-side-encryption"ヘッダに"AES256"を指定することで暗号化が自動的に行われ、配信時に自動的に複合してくれるそうです。コンソール上で試してみます。AWSコンソールのS3タブで「Upload」ボタンを押し、アップロードダイアログを使って、普通にファイルを選択します。Encryption」という項目が追加されているのがわかります。これにチェックを入れて、あとは通常通りアップロードします。これだけでファイルが暗号化されて保持されます。次は、APIを利用して暗号化をしてみます。ドキュメントを見るかぎり現在のところ、REST、Java、.NETで対応しているようです。ここではJavaのSDKでの例を紹介します。s3client.putObject(putRequest);このように、通常のアップロードリクエストにメタデータを追加してあげるだけです。Socket.IOでプッシュ通信)前回Node編1で、スタンドアローンのHTTPサーバーをつくり、HTTP通信を行いました。今回は、WebSocketを使用した通信を行ってみます。WebSocketとは、ブラウザとサーバーの双方向通信のプロトコル規格で、現在標準化団体が仕様を策定中の技術です。chromeやsafariなど、いくつかのモダンブラウザがサポートしており、これが一般的に使用されると、いままでのサーバーアプリケーションの作り方が大きく変わってくる可能性がある、注目の技術です。いうnode.jsのモジュールです。node.jsはモジュールという単位でライブラリを管理しており、npmというモジュール管理ツールで簡単にいろいろなモジュールを追加削除できます。これはrubyでいうgemのようなものです。Socket.IOはただnode.jsでWebSocketを実装しているだけではなく、モダンブラウザ以外のWebSocketを使用できないブラウザでも、AjaxやFlashなど他の代替手段があるかどうかを自動的に検知して通信方式を自動で選択されるので、ブラウザの対応をあまり気にしなくてもよくなっています。WebSocketとその代替手段において、クロスドメイン通信を可能にしています。最初にnpmをインストールします。socket.iosocket.ioのインストールでエラーが出る場合がありますが、その場合はtarが古いので、tarを最新にしておきます。installsocket.ioをインストールします。これで実装の準備が整いました。それでは実装を始めます。今回は、メッセージを送信したら見ている全員にメッセージを表示させる、簡単なチャットの仕組みを作ってみます。});});サーバー側では任意のポート(ここでは1337)を開放したhttpサーバーにsocket.ioをつなげてリスン状態にします。通信の確立(connection)や切断(disconnect)などのビルトインイベントや、自分のアプリケーションで使用したいオリジナルのイベント(ここではmsg)のイベントハンドラを定義します。このコードでは接続したときに"welcome"、切断したときに"bye"をそのユーザーに、あるユーザーから"msg"というイベントが送られたら全員に"msg"というイベントを、それぞれプッシュ送信しています。#000000;"></div></html>クライアント側からはサーバー側の1337ポートに接続しますが、サーバー側は実際にファイルを自分で配置しなくてもSocket.IOが勝手にクライアント側のライブラリを/socket.io/socket.io.jsとして配信してくれます。そのファイルをscriptファイルでロードするようにし、あとは接続部分とサーバーからのイベントのハンドラを定義します。ボタンを押したらテキストをサーバー側に送信するように記述します。それでは、サーバー側のコードを実行してみます。startedブラウザでhtmlを表示します。サーバー側からの"welcome"メッセージが表示されていることがわかります。メッセージを入力して送信すると、メッセージ欄にサーバーから送られてきているのがわかります。別のブラウザでも開いておき、そちらからメッセージを送信するともう一方のブラウザにメッセージが表示されることが分かります。このように、socket.ioを利用することで多くのブラウザで簡単にWebSocketを実現することができます。WebSocketは通信内容が少なく、コネクションやリソースの消費が少ないので、ゲームやソーシャルサイトなどのマルチユーザーアプリや、クライアントのログ集計など、様々な分野での利用が期待できます。