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