从我的节点服务器上的AWS S3提取签名的URL

5 file-upload amazon-s3 amazon-web-services node.js pre-signed-url

解决了:

我想从我的Amazon S3服务器上获得一个签名的URL。我是AWS的新手。我在哪里设置我的密钥access_id_key,以便S3识别来自服务器的请求。

var express=require('express');
var app=express();


var AWS = require('aws-sdk')
, s3 = new AWS.S3()
, params = {Bucket: 'my-bucket', Key: 'path/to/key', Expiration: 20}

s3.getSignedUrl('getObject', params, function (err, url) {
console.log('Signed URL: ' + url)
})

app.listen(8000)
Run Code Online (Sandbox Code Playgroud)

小智 5

后来我解决了我的问题。这非常有帮助 http://aws.amazon.com/sdkfornodejs/此外,您也可以将您的凭据硬编码为

var express=require("express");
var app=express();

var AWS = require('aws-sdk')
, s3 = new AWS.S3()
, params = {Bucket:'your-bucket-name on s3', Key: 'key-name-on s3 you want to store under', Expires: 20}

AWS.config.update({accessKeyId: 'Your-Access-Key-Id', secretAccessKey:     
'Your-secret-key'});

AWS.config.region = 'us-west-2';


s3.getSignedUrl('getObject', params, function (err, url) {
console.log('Signed URL: ' + url);
});

app.listen(8000);
Run Code Online (Sandbox Code Playgroud)


小智 5

如果您使用多个存储桶,您还可以为每个存储桶设置凭据,您只需要将凭据传递到 S3 对象的构造函数中,如下所示:

var AWS = require('aws-sdk');
var credentials = {
  accessKeyId: AWS_CONSTANTS.S3_KEY,
  secretAccessKey: AWS_CONSTANTS.S3_SECRET,
  region: AWS_CONSTANTS.S3_REGION
};
var s3 = new AWS.S3(credentials);
var params = {Bucket:'bucket-name', Key: 'key-name', Expires: 20};
s3.getSignedUrl('getObject', params, function (err, url) {
  console.log('Signed URL: ' + url);
});
Run Code Online (Sandbox Code Playgroud)