2012-03-27 11 views
4

私はしばらくの間、アマゾンS3との直接POSTのアップロードをベースのブラウザを使用して、そしてつい最近HTTPS経由投稿を開始したかったしてきました。通常のHTTP投稿は正常に動作します。しかし、同じフォームをhttps://s3.amazonaws.com/に投稿すると、「405 Method Not Allowed」と表示されます。ファイルをSSL経由でS3に直接アップロードするにはどうすればよいですか?

ブラウザベースの直接AWS POSTアップロードはHTTPSをサポートしていませんか?もしそうなら、どうすれば405エラーが出ることなくそれを行うことができますか?

ありがとう!

答えて

7

それはあなたのHTMLのFORMアクションといくつかの問題がある可能性があります。

The action specifies the URL that processes the request, which must be set to the URL of the 
bucket. For example, if the name of your bucket is "johnsmith", the URL 
is "http://johnsmith.s3.amazonaws.com/". 

詳細については、このAmazon S3のドキュメントのリンクをご確認ください: http://docs.amazonwebservices.com/AmazonS3/latest/dev/HTTPPOSTForms.html#HTTPPOSTFormDeclaration

をこの上の他の記事もあります。 Amazon S3 - HTTPS/SSL - Is it possible?

UPDATE: は、私は、このHTML & Policy.Checkフォームアクションを使用してSSL経由でS3バケットにオブジェクトをアップロードすることができました。

ポリシー:

{ 
    "expiration": "2012-06-04T12:00:00.000Z", 
    "conditions": [ 
    {"bucket": "<YourBucketName>" }, 
    {"acl": "public-read" }, 
    ["eq", "$key", "testImage.jpg"], 
    ["starts-with", "$Content-Type", "image/jpeg"], 
    ] 
} 

HTML:

<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
</head> 
<body> 
<form action="https://s3.amazonaws.com/<YourBucketName>/" method="post" enctype="multipart/form-data"> 
<input type="text" name="key" value="testImage.jpg" /> 
<input type="text" name="acl" value="public-read" /> 
<input type="text" name="content-type" value="image/jpeg" /> 
<input type="hidden" name="AWSAccessKeyId" value="<YOUR ACCESS KEY>" /> 
<input type="hidden" name="policy" value="<YOUR GENERATED POLICY>" /> 
<input type="hidden" name="signature" value="<YOUR GENERATED SIGNATURE>" /> 
<input name="file" type="file" /> 
<input name="submit" value="Upload" type="submit" /> 
</form> 
</body> 
</html> 

あなたがエンコードされたポリシーと署名を生成する方法を知っている必要があります。

+0

カスタムバケットとHTTPSのURLを指定した場合、それは、SSLエラーがスローされますので、それは残念ながらオプションではありません。 –

+1

カスタムバケットでHTTPS urlに成功しました。 https://s3.amazonaws.com//のように。私の答えの更新を確認してください。 – shashankaholic

+0

ありがとう!私はそれがどのように署名を生成しているのかを見るために使っているライブラリのソースを調べなければならないでしょう。 –