Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.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
Amazon s3 如何添加';授权';S3.upload()请求的标题?_Amazon S3_Aws Sdk_Aws Sdk Js - Fatal编程技术网

Amazon s3 如何添加';授权';S3.upload()请求的标题?

Amazon s3 如何添加';授权';S3.upload()请求的标题?,amazon-s3,aws-sdk,aws-sdk-js,Amazon S3,Aws Sdk,Aws Sdk Js,我的代码使用AWS Javascript SDK直接从浏览器上传到S3。在上传之前,我的服务器向它发送一个用于“授权”的值 但是我在AWS.S3.upload()方法中看不到可以添加此头的方法 我知道在.upload()方法下面使用了AWS.S3.ManagedUpload,但它似乎也不会在任何地方返回请求对象来添加头 当我在S3()对象中硬编码我的凭证时,它在我的开发环境中成功地工作,但在生产环境中无法这样做 如何将授权标头放入upload()调用?客户端 本文介绍了如何使用预先生成的签名从h

我的代码使用AWS Javascript SDK直接从浏览器上传到S3。在上传之前,我的服务器向它发送一个用于“授权”的值

但是我在AWS.S3.upload()方法中看不到可以添加此头的方法

我知道在.upload()方法下面使用了AWS.S3.ManagedUpload,但它似乎也不会在任何地方返回请求对象来添加头

当我在S3()对象中硬编码我的凭证时,它在我的开发环境中成功地工作,但在生产环境中无法这样做

如何将授权标头放入upload()调用?

客户端 本文介绍了如何使用预先生成的签名从html表单发布

服务器端 初始化S3时,可以传递访问密钥和密码

const s3 = new AWS.S3({
  apiVersion: '2006-03-01',
  accessKeyId: '[value]',
  secretAccessKey: '[value]'
});

const params = {};
s3.upload(params, function (err, data) {
  console.log(err, data);
});
参考:


或者,如果您在AWS服务(如EC2、Lambda、ECS等)中运行此代码,则可以为您使用的服务分配IAM角色。权限可以分配给IAM角色

我建议您使用。

如果您使用其他机制,您可以发布一些代码让我看一看。这是我提到的在dev中可以工作的,但我必须硬编码我的访问密钥和机密客户端,我不想这样做。此客户端脚本只能访问Authorization它看起来不可能在SDK中使用
Authorization
头,您可能需要研究其他方法扫描我在客户端使用JS SDK中的此预先签名的url?是的,但这不会解决在客户端拥有机密的问题。您应该创建一个API来为预签名的url提供服务。这正是我最终要做的,但我找不到将预签名的url注入SDK的方法。所以我将原始XmlHttpRequest与预先签名的URL一起使用,它可以正常工作。谢谢你的建议。