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
Node.js 根据https s3 url将文件上载到s3_Node.js_Amazon S3_Aws Sdk - Fatal编程技术网

Node.js 根据https s3 url将文件上载到s3

Node.js 根据https s3 url将文件上载到s3,node.js,amazon-s3,aws-sdk,Node.js,Amazon S3,Aws Sdk,我试图将一个对象从一个s3 bucket复制到我的s3 bucket,但我得到了一个类似这样的文件的http url 如果我使用这个浏览器,我会得到一个csv,一点也不担心(注意:我已经模糊了真实url的一部分,所以它对你不起作用) 我在节点中使用具有以下参数的copyObject API: 变量参数={ 水桶:“我的水桶”, 文案来源:“ ,键:“数据” }; 我不断得到错误: “InvalidArgument:不支持的复制源参数。” 我做错了什么???上述错误表明您提供的CopySourc

我试图将一个对象从一个s3 bucket复制到我的s3 bucket,但我得到了一个类似这样的文件的http url

如果我使用这个浏览器,我会得到一个csv,一点也不担心(注意:我已经模糊了真实url的一部分,所以它对你不起作用)

我在节点中使用具有以下参数的copyObject API:

变量参数={ 水桶:“我的水桶”, 文案来源:“ ,键:“数据” };

我不断得到错误: “InvalidArgument:不支持的复制源参数。”


我做错了什么???

上述错误表明您提供的CopySource参数不正确。给出CopySource参数的正确方法如下:

var params = { Bucket: "your_bucket", CopySource: "/source_bucketname_url/sourceobjectkey"};

注意:源bucket的名称和源对象的键名称必须用斜杠(/)分隔。

S3不支持将预签名URL(或任何其他URL)用作
CopySource
。您想要的值是
/${bucket}/${key}
,在本例中,它是
/不是我的bucket/1234567381…acZMLZ.csv.gz
(前导的
https://
被前导的斜杠取代,
.s3.amazonaws.com
被删除,而
及其后的所有内容都被删除)

但是。。。除非调用
copyObject()
的用户具有直接读取源对象的权限,否则这仍然不可能起作用,这不太可能。。。否则第三方就不会给你预先签名的URL

如上所述“修复”您的请求可能会将错误更改为
AccessDenied


如果没有直接读取对象的权限,则不能使用
copyObject()
。您需要下载该文件,然后分两步将其上载到bucket。

谢谢,但身份验证仍然会导致问题。如果这样可以解决问题,我将不得不采用其他方式进行etl