2011-02-11 11 views
4

ブラウザでユーザーが入力したデータを収集し、Amazon S3に保存します。これは私がJavascript/Jqueryでできることですか?JavascriptまたはJqueryを使用してS3にデータを保存する

+0

が答えてくれてありがとう私Amazon Webサービスを使ってデータを保存するルートを辿るつもりです。今、それは私の最高の賭けに見えます。歓声 – WooHoo

答えて

4

悪いアイデアは:

1)楽しい人々は、彼らがあなたのJavascriptのコードに埋め込まれたあなたのS3の資格情報を見つけたとき、あなたの銀行口座を空にして持っている可能性がどのくらいと考えてください。

2)javascriptはサーバーからロードされ、Amazonのサーバーと通信しようとします。これは、クロスドメイン通信として禁止されています。

これはサーバー上で処理したいと思うようなものです。あなたは簡単にデータを送信するAJAXのインターフェイスをホイップすることができるclient browser -> your server -> amazon。そうすれば、あなたのS3の資格情報はあなたのサーバーに保存され、あなたのサイトを使っている誰もが無制限に送信されることはありません。

+0

S3またはアマゾンサービスで実行されているjavascriptに情報を渡すことはありますか?ポイント2に関しては、S3からjavascriptを提供できますか? – WooHoo

+0

Javascriptは一般にクライアント側の言語です。ネイティブのデータベース機能はないので、MySQLと話すために(たとえば)使用することはできませんでした。私はそれが役立つことができると確信していますが、私はS3についてはあまり知らないので、確かにいずれかの方法を言うことはできません。 –

+0

私は具体的にS3について質問しているかもしれませんが、おそらく誰か他の人がチップインすることができます。乾杯 – WooHoo

0

クライアント側のコードを経由してS3にアクセスしようとするとさまざまな問題があります。

  • 資格情報をセキュリティで保護する方法はありません。
  • 多くの回答はJSONの代わりにXMLであり、JavaScriptのXML解析エンジンは重くて遅いです。
  • 要求を認証するには、HMAC-SHA1のJavaScript実装が必要です。
  • プロキシを経由せずにJavaScriptからクロスドメイン要求を行う際に問題があります。

オールインワンでは、現時点ではクライアントサイドJavaScriptの実現可能なソリューションはありません。サーバー側のJavaScriptに興味があるなら、Node.js用にGitHubに浮かぶS3クラスがいくつかあります。

+0

Skylerに感謝 - 私は徐々にS3についてもう少し理解し始めています。現時点では、顧客は自分のページ内のスクリプトリファレンスをS3上のjsに追加することができます。しかし、私はボタンをクリックしてjsにデータを送ってもらいたいと思っています。私は今、私のWebサイトにWebサービスをセットアップし、jsにそれを呼び出させるのが最善であると考えています。あなたはこれとのクロスドメインの問題を見ることができますか? – WooHoo

+0

私の答えで言及したように、リクエストごとに一意の署名付き署名を作成し、それをS3へのPOSTリクエストに直接含めることで、リクエストを認証する方法があります。サーバー側でシグネチャを生成できるため、クライアント側でHMACを実装する必要がなく、AWSの資格情報は安全なままです。 –

8

私はこれが古い質問だと知っていますが、同じ問題があり、解決策を見つけたと思います。 S3にはREST interfaceがあり、AWS秘密鍵を公開することなく直接データをPOSTできます。したがって、JavascriptまたはjQueryを使用してS3バケットエンドポイントにAJAX POSTリクエストを作成できます。リクエスト内でアクセスポリシーを指定することもできます。これにより、特定のバケットおよび特定のディレクトリのみへのアップロードアクセスが制限されます。

Amazonは、リクエストで提供されたHMAC署名を使用して、リクエストの真正性を検証します。署名は、あなたとAmazonだけが知っているリクエストとAWS秘密鍵の詳細を使用して作成されるため、署名が有効な人がいなければ不正なリクエストを行うことはできません。

+1

おかげさまで、ありがとうございました。私は、S3からjavascriptウィジェットを提供し、次にeasyxdmを使用して、情報を格納するためのWebサーバーへのクロスドメイン投稿を作成しました。 – WooHoo

1

はたぶんノードを見ています。JS、およびによりAWS-SDKパッケージを試してみてください。私はS3にファイルをアップロードする方法について見つけブログやドキュメントがあります

npm install aws-sdk 

this blog.aws doc.

関連する問題