繁体   English   中英

将AWS SDK与Web工作者一起使用

[英]Using AWS SDK with web workers

此处有离子/ cordova /角的总瘤。 上周开始,所以我在这里挣扎。 我正在尝试从应用程序(在iOS上)上传文件,该应用程序是使用Ionic和Cordova创建的。 文件是图像,因此非常大。 我想在后台工作线程中上传这些图像。 因此需要网络工作者。

图像必须上传到Amazon S3。 我的工作者javascript文件中有以下代码。

onmessage = function(e) {
  importScripts("aws-sdk.min.js");
  console.log("Doing work");
  self.AWS.config.region = 'us-east-1';  //Error here. config is not defined :(
  self.AWS.config.update({accessKeyId: 'XXX', secretAccessKey: 'ABCD'});
  //More AWS stuff
  postMessage("DONE");
}

我的主要javascript文件都很好,因为我尝试使用非AWS配置(普通的旧console.log("stuff here"))并且它运行良好。 一旦我尝试使用AWS SDK做任何事情,它就会开始失败。 此外,正确导入了aws-sdk.min.js (至少Chrome在控制台上没有显示错误)。

啊哈,这似乎解决了我的问题http://www.jefferydurand.com/amazon/web/services/worker/2015/05/08/amazon-javascript-sdk-web-worker.html

有趣的是,它不适用于aws-sdk-2.2.3,但使用了示例中显示的那个。

来自网站:

  // this was the trick I needed to get the aws sdk to load.
  // web workers don't have a 'window' object but the library assumes 
  // there is a window object
  window = {};
  importScripts('https://sdk.amazonaws.com/js/aws-sdk-2.1.27.min.js');

  // initialize our dynamodb table and get it ready to accept values
  window.AWS.config.update({accessKeyId: 'XXXXXXXXXX', secretAccessKey: 'XXXXXXXJJJJXXXXX'});
  window.AWS.config.region = 'us-east-1';
  var table = new window.AWS.DynamoDB({params: {TableName: 'song_player_metrics'}});

我之前从网页上做过这个。 话虽如此,我听说向公众公开你的秘密钥匙是一种非常糟糕的做法。 我想大多数人都有一个签名上传的服务器或lambda实例。 但是,它适用于原型设计。

不管怎样,这段代码对我有用。

var accessKeyId = "public key here"
var secretAccessKey =  "secret key here" // secret key. This should be hidden. Maybe on a server or lambda instance. 
var bucketName = "my-new-bucket"
var region = "us-west-2"
//make bucket
AWS.config.update({accessKeyId: accessKeyId, secretAccessKey: secretAccessKey})
AWS.config.region = region
var bucket = new AWS.S3({
  params: {
    Bucket: bucketName
  }
})
// upload something into bucket
//    note: you need to define a callbackFunction
bucket.putObject({
  Key: "test.txt,
  Body: "hello world. this is just a test."
}, callbackFunction)

此示例上载了一个文本文件,但您也可以上传图像的Blob。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM