2017-06-13 283 views
2

我试图允许从预先登记的URL访问资产,但我不确定如何执行此操作。从this page我可以看到我需要以下条件:使用Javascript AWS SDK生成预先签名的S3 URL

Authorization = "AWS" + " " + AWSAccessKeyId + ":" + Signature; 

Signature = Base64(HMAC-SHA1(YourSecretAccessKeyID, UTF-8-Encoding-Of(StringToSign))); 

StringToSign = HTTP-Verb + "\n" + 
    Content-MD5 + "\n" + 
    Content-Type + "\n" + 
    Date + "\n" + 
    CanonicalizedAmzHeaders + 
    CanonicalizedResource; 

CanonicalizedResource = [ "/" + Bucket ] + 
    <HTTP-Request-URI, from the protocol name up to the query string> + 
    [ subresource, if present. For example "?acl", "?location", "?logging", or "?torrent"]; 

CanonicalizedAmzHeaders = <described below> 

我知道如何找到AWSAccessKeyIdYourSecretAccessKeyID,但它使用HMAC-SHA1,以形成最终的签名我怎么编码?

+0

这个伪无关生成使用JavaScript SDK签署的网址。那是你想要做的吗? –

+0

是的,我认为这是你如何生成它 –

+0

看来你可以这样生成它: 's3.getSignedUrl('getObject',params,function(err,url){ console.log(“URL是“,url); });' 但是这是下载文件,我只需要能够在浏览器中显示它 –

回答

1

我能够生成中获取文件根据this Amazon S3 node example page像presigned网址:

declare var AWS:any; 

AWS.config.accessKeyId = "key_goes_here"; 
AWS.config.secretAccessKey = "secret_key_goes_here"; 
AWS.config.region = "region_goes_here"; 

params = { 
    Bucket: 'bucket_name_goes_here', 
    Key: 'path_to_file_goes_here' 
} 

s3.getSignedUrl('getObject', params, function (err, url) { 
    // Do some sort of processing with url 
}); 
相关问题