如何使用滑轨将图像和视频上传和下载到s3冰川

时间:2019-03-06 08:57:41

标签: ruby-on-rails ruby aws-sdk

我想在Rails上使用ruby在s3冰川上上传图像和视频。 现在,我在S3冰川上创建了一个保管库,并设置了所有权限。

现在,我使用类似:

的rails方法在Vault中创建了一个存档
  

vault.archives.create(:body => File.open(video_path).to_s,   :description =>“我的第一个档案”)

然后,我创建基于存档的作业,例如:

  

vault.jobs.create(:type => Fog :: AWS :: Glacier :: Job :: ARCHIVE,   :archive_id =>“我的存档ID”)

并通过以下方式获得这些工作:

  

vault.jobs.get(“我的工作ID”)

**它为我提供了如下响应:**

id="return my job id",
action="ArchiveRetrieval",
archive_id="return my archive id",
archive_size=24,
completed=true,
completed_at=2019-03-05 19:49:36 UTC,
created_at=2019-03-05 15:55:29 UTC,
inventory_size=0,
description=nil,
tree_hash="xxxxxx",
sns_topic=nil,
status_code="Succeeded",
status_message="Succeeded",
vault_arn="xxxxxxxxxx:vaults/myvalutname",
format=nil,
type=nil

我的问题是:

  
      
  1. 以上代码中上传图像/视频的方法是否正确?如果不正确,请建议我正确的上传方式。
  2.   
  3. 我将如何从冰川s3获取上传的图像/视频URL。
  4.   
  5. 我将在哪里看到冰川上存储的上传视频和图像。现在,它仅显示我的保管库中的档案数量。
  6.   

我需要专家建议来解决我的问题。 请帮帮我。

1 个答案:

答案 0 :(得分:1)

S3和Glacier之间存在主要区别。 Glacier的基本概念是存储长期文件以进行备份。 S3可以快速访问。但是Glacier是保存文件很长时间很少访问的。因此,对用户来说,在要保存文件但在很少发生紧急情况的情况下很少进行检索的位置进行备份对用户而言是一件好事。因此,检索文件的价格要比保存文件贵。我不确定为什么要在Glacier中保存视频,但是要确定Glacier的检索速度很慢,并且要保存图像/视频,您可能会认为S3比冰川更重要。以下是对您答案的答复

  1. 是的,您做得正确,这就是您必须这样做的方式。

  2. 这有点棘手。您必须使用数据库保存所有检索到的ID。因此,以后您可以轻松检索。这意味着无需拥有任何目录,您可以将所有信息保存在数据库中,以便以后可以检索它。

id="return my job id",   # save it to database
action="ArchiveRetrieval",   
archive_id="return my archive id", # better save in relation table of archives
archive_size=24,
completed=true,
completed_at=2019-03-05 19:49:36 UTC,
created_at=2019-03-05 15:55:29 UTC,
inventory_size=0,
description=nil,
tree_hash="xxxxxx",
sns_topic=nil,
status_code="Succeeded",
status_message="Succeeded",
vault_arn="xxxxxxxxxx:vaults/myvalutname",
format=nil,
type=nil

因此,这意味着您在db中的所有上传都将具有以下字段以供访问。

  1. 要检索文件,您必须使用数据库并获取所有内容。现在,只需使用您的对象ID即可获取文件。
archive_id         -          id             -  description
return my archive id  -   return my job id  -  my first archive

要列出文件列表时,只需运行ActiveRecord db记录即可获取它并以某种方式链接它,以便操作可以使用对象ID检索该文件。