Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/428.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何获取和使用javascript aws sdk寻址MinIO服务器的多部分上载的临时安全凭据?_Javascript_Aws Sdk Js_Minio_Aws Sts - Fatal编程技术网

如何获取和使用javascript aws sdk寻址MinIO服务器的多部分上载的临时安全凭据?

如何获取和使用javascript aws sdk寻址MinIO服务器的多部分上载的临时安全凭据?,javascript,aws-sdk-js,minio,aws-sts,Javascript,Aws Sdk Js,Minio,Aws Sts,我有一个MinIO服务器,需要编写一个简单的web应用程序,用于选择文件并使用临时安全凭据执行多部分上载。我想做一些如下所述的事情:使用我以前创建的一些用户凭据获取临时安全凭据。但是我想使用aws sdk js来实现它。我不知道MinIO如何做到这一点,比如指向正确的端点并使用现有的用户凭据调用AssumeRole或其他相应的函数。之后,我想做一个多端口加载,我也在努力使用它 我已经阅读了文档,但是我正在努力以我想要的方式使用MinIO提供的函数 假设角色: 多部分上传: 我已经设置了一些代码来

我有一个MinIO服务器,需要编写一个简单的web应用程序,用于选择文件并使用临时安全凭据执行多部分上载。我想做一些如下所述的事情:使用我以前创建的一些用户凭据获取临时安全凭据。但是我想使用aws sdk js来实现它。我不知道MinIO如何做到这一点,比如指向正确的端点并使用现有的用户凭据调用AssumeRole或其他相应的函数。之后,我想做一个多端口加载,我也在努力使用它

我已经阅读了文档,但是我正在努力以我想要的方式使用MinIO提供的函数

假设角色:

多部分上传:

我已经设置了一些代码来显示我想做什么。multipart-upload.js创建了一个express服务器,该服务器公开客户端和端点以检索临时安全凭据,这样我就不必与客户端共享任何长期凭据

multipart-upload.js

const AWS = require('aws-sdk')

var sts = new AWS.STS();

const server = require('express')()

server.get('/openTemporarySession', (req, res) => {
    var params = {
      DurationSeconds: 'NUMBER_VALUE',
      SerialNumber: 'STRING_VALUE',
      TokenCode: 'STRING_VALUE'
    };
    sts.getSessionToken(params, function(err, data) {
      if (err) console.log(err, err.stack); // an error occurred
      else     res.send(data);           // successful response
    })
})

server.get('/', (req, res) => {
    res.sendFile(__dirname + '/indexmultipart.html');
})

server.listen(8080)
客户端通过按钮选择文件并上传。相应的函数从服务器获取临时安全凭据,并按顺序执行多部分上载

indexmultipart.html

<input type="file" id="selector" multiple>
<button onclick="upload()">Upload with minio</button>

<div id="status">No uploads</div>

<script src="https://sdk.amazonaws.com/js/aws-sdk-2.1.12.min.js"></script>
<script type="text/javascript">
  var sts = new AWS.STS();

  // invoke helper function to get temporary security credentials and perform multipart upload
  function upload() {
    // Reset status text on every upload.
    $('#status').text(`No uploads`)
    retrieveTempCredentials()
    // Get selected files from the input element.
    var files = $("#selector")[0].files
    for (var i = 0; i < files.length; i++) {
      var file = files[i]
      uploadFile(file)
    }
  }

  // call endpoint to generate a pre-signed URL for use in uploading file. 
  function retrieveTempCredentials() {
    $.get(`/openTemporarySession`, (data) => {
      AWS.config.credentials = sts.credentialsFrom(data);
    })
  }

  // upload file to MinIO using the presigned url
  function uploadFile(file) {
    var upload = new AWS.S3.ManagedUpload({
      params: {Bucket: 'bucket', Key: 'key', Body: file},
      tags: [{Key: 'tag1', Value: 'value1'}, {Key: 'tag2', Value: 'value2'}]
    });
  }
</script>

用minio上传
没有上传
var sts=新的AWS.sts();
//调用helper函数以获取临时安全凭据并执行多部分上载
函数上传(){
//每次上传时重置状态文本。
$('#status')。文本(`No uploads`)
retrieveTempCredentials()
//从输入元素获取选定的文件。
var files=$(“#选择器”)[0]。文件
对于(var i=0;i{
AWS.config.credentials=sts.credentialsFrom(数据);
})
}
//使用预先指定的url将文件上载到MinIO
函数上载文件(文件){
var upload=新的AWS.S3.ManagedUpload({
参数:{Bucket:'Bucket',Key:'Key',Body:file},
标记:[{Key:'tag1',Value:'value1'},{Key:'tag2',Value:'value2'}]
});
}
这段代码实际上不起作用,我需要一些帮助来实现类似的功能,因为我对javascript和html都是新手