如何将公共S3文件列表复制到私有S3存储桶

用户名

在rails中,并使用aws-sdkgem (例如5k个文件),最简单的方法是将S3(不是我的帐户)上托管的公共文件列表复制到我的私有存储桶中?我想保持相同的文件和路径名。

例子:

http://target.com.s3.amazonaws.com/assets/videos/abc123.mp4 (public)

http://myexample.com.s3.amazonaws.com/assets/videos/abc123.mp4 (private)

我想将文件读到内存中,然后直接流到S3中。我的托管服务提供商(Heroku)没有磁盘空间。这些文件是MP4,大小约为3-4MB。

这是我的方法(未测试):

vid_file = 'http://example.com.s3.amazonaws.com/assets/videos/abc123.mp4'
vid_response = HTTParty.get(vid_file)

if vid_response.code == 200

  filename = File.basename(vid_file) # TOOD - fix to include s3 folder before object filename

  s3 = Aws::S3::Resource.new(region: ENV['AWS_REGION'])
  obj = s3.bucket(ENV['S3_BUCKET']).object(filename)
  obj.put(body: vid_response.body)
end

但是,SDK是否可以引导AWS在S3存储桶之间执行内部复制,尽管我没有第一个存储桶的密钥(但对象是公共的)?如果不是,我的上述方法是否正确(流式传输到内存中,发布到S3)?

用户名

1)没有将公共S3对象的“内部副本”复制到私有S3存储桶的sdk功能。

2)下面的源代码工作,保持了相同的S3目录结构

vid_file = 'http://example.com.s3.amazonaws.com/assets/videos/abc123.mp4'
vid_response = HTTParty.get(vid_file)

if vid_response.code == 200

  uri_path = URI(vid_url).path 
  uri_path.slice!(0) # slice!(0) removes leading slash, otherwise creates an empty s3 folder

  s3 = Aws::S3::Resource.new(region: ENV['AWS_REGION'])
  obj = s3.bucket(ENV['S3_BUCKET']).object(uri_path)
  obj.put(body: vid_response.body) if !obj.exists?
end

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将文件列表从 S3 存储桶复制到 S3 存储桶

如何将S3存储桶复制到Kubernetes节点上

如何将整个文件夹从 s3 存储桶复制到 ec2 实例

将CSV文件从公共Git子目录复制到S3存储桶

将文件从一个存储桶复制到另一个帐户中的另一个存储桶,仍将s3文件所有者设置为源文件

将文件从Box文件夹复制到AWS s3存储桶

当对象acl是公共的时,如何将S3存储桶策略设置为(大部分)私有?

如何限制用户将公共S3对象创建到私有存储桶中

将文件从 AWS s3 (SSE) 存储桶复制到谷歌云

将 Python 中的大文件复制到 S3 存储桶时出现 OSError

将多个文件从 hadoop 复制到 s3 存储桶

将文件从 S3 存储桶复制到 Google Cloud Storage

我无法将主文件夹复制到 s3 存储桶

将公共 s3 存储桶同步到我的私有 s3 存储桶的干净方法

Shell 脚本 - 如何将最后修改的 AWS S3 对象从一个存储桶复制到另一个存储桶?

通过Data Factory将S3文件复制到Azure Blob存储时如何保留修改日期

s3cmd:将文件从s3中的加密存储桶复制到本地计算机

每次将文件发布到存储桶时都将 s3 文件复制到 ec2?

使用 AZCopy 将 AWS s3 存储桶复制到 Azure 存储时出错

从远程服务器复制到s3的文件在s3存储桶上不显示状态

AWS S3存储桶策略公共。如何使对象私有?

S3 访问私有存储桶文件

解压缩文件并将其从Web复制到s3存储桶

增量表:仅从 S3 存储桶复制到特定分区文件夹

无法将构建工件复制到 S3 存储桶

当我尝试将文件复制到 aws S3 存储桶时,Jenkins 作业失败

将文件从 s3 存储桶复制到另一个 AWS 账户

如何将视频文件从S3存储桶传递到opencv VideoCapture?

Laravel 5:如何将本地文件复制到Amazon S3?