我想使用aws-sdk gem(版本3)将文件从一个文件夹复制到同一存储桶中的另一个文件夹。我能够成功复制文件。
代码如下 控制器:
PrefabUtitlity.InstantiatePrefab
ps:不用理会source_key和path,因为我已经使用了载波。 我如何获得复制对象的路径/ URL。我需要网址,因为如果在复制后删除源存储桶中的文件,则目的地必须独立拥有副本。并且可以通过url访问该文件。 这是obj在命令行中的输出
任何帮助都是很好的TIA。
更新:
saved_file = path for the source file
source_bucket_name = 'bucket-name'
target_bucket_name = 'same as source bucket'
source_key = "#{saved_file.path.path}"
target_key = "path of the target"
s3 = Aws::S3::Client.new(credentials)
byebug
obj = s3.copy_object({bucket: target_bucket_name, copy_source: source_bucket_name + '/' + source_key, key: target_key})
使用该URL来查看/访问复制的对象。 这对我有用。
答案 0 :(得分:0)
对象URL只是存储区URL +文件名,因此您已经有了所需的信息。如果需要,您也可以generate a public URL或pre-signed URL。
还请记住,复制对象不会复制访问控制策略。因此,您可能没有访问权限,因为您尚未为新对象定义权限。 https://docs.aws.amazon.com/AWSRubySDK/latest/AWS/S3/S3Object.html#copy_from-instance_method