通过JS上传Amazon S3:安全凭据

时间:2016-08-10 08:26:05

标签: amazon-web-services amazon-s3

我正在尝试将视频文件上传到AWS S3存储桶,而无需用户通过谷歌或其他任何内容进行登录(用户不必做任何事情!)This page建议有3个选项:

  1. 使用Amazon Cognito对用户进行身份验证
  2. 使用网络身份联合身份验证用户
  3. 在您的申请中硬编码
  4. 第3个选项适用于我,但在生产环境中不可接受。 第一和第二选项都需要大量的麻烦,不仅对开发人员而且对于用户而言,如果我理解正确的话。

    // Not safe, but working!
    /*AWS.config.update({
          accessKeyId: "myaccesskey",
          secretAccessKey: "mysecretkey",
          "region": "eu-central-1"   
     });*/
    
     AWS.config.region = 'eu-central-1';
    
     var s3 = new AWS.S3();
    
         var params = {
             Bucket: 'mybucketname',
             Key: file.name,
             Body: file
         };
         s3.putObject(params, function (err, res) {
              if (err) {
                 console.log("Error uploading data: ", err);
              } else {
                 console.log("Successfully uploaded data to myBucket/myKey");
              }
         });
    

    我也尝试从json文件加载凭据,但这也不起作用。

      

    AWS.config.loadFromPath( './ config.json');

    这种方法的错误是:

      

    aws-sdk-2.4.13.min.js?ver = 0.0.1:5未捕获的TypeError:   n.FileSystemCredentials不是构造函数

    我是否需要使用服务器脚本上传文件? (在我的JS和S3之间创建一个代理)

    任何帮助表示感谢。

    感谢。

    编辑:有人建议我跟踪http://docs.aws.amazon.com/general/latest/gr/sigv4_signing.html通过浏览器/ js发出安全请求。也许还有人试过吗?任何JS示例在哪里?

1 个答案:

答案 0 :(得分:0)

发布答案(如果可以这样调用),因为我注意到这没有回答:我实际上使用服务器端AWS库来完成这项工作,并且变量被安全地存储为ENV变量。此外,我改变了一些功能,所以我不需要使用JS来完成这项工作。

所以不需要摆弄上面提到的第一和第二选项。 如果有人找到上述两种方法的JS解决方案,我很乐意接受他们的回答。