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

时间:2014-06-07 09:54:39

标签: node.js file-upload amazon-web-services amazon-s3 pre-signed-url

解决:

我想从亚马逊S3服务器中获取签名网址。我是 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)

2 个答案:

答案 0 :(得分:3)

后来我解决了我的问题。 这非常有帮助 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);

答案 1 :(得分:1)

如果使用多个存储桶,还可以设置每个存储桶的凭据,只需将凭据传递给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);
});