【问题标题】:How do you create a directory structure using the ruby aws-sdk on s3?如何在 s3 上使用 ruby​​ aws-sdk 创建目录结构?
【发布时间】:2015-10-22 16:25:48
【问题描述】:

我正在尝试使用 ruby​​ aws-sdk gem 将整个目录上传到 s3。我首先尝试将其分解为较小的问题,因此我目前要做的只是创建一个文件夹,然后在该文件夹中放置一个文件。我知道从技术上讲 s3 没有文件夹,而是对象。我知道你可以有一个类似目录的结构。我在网上找不到任何关于如何做到这一点的信息,除了使用 AWS::S3::Tree 阅读之外,文档也没有提到很多关于目录结构的内容

这是我目前尝试创建文件夹,然后将文件添加到文件夹:

#created an object called test
obj = bucket.objects.create('test', 'data')

#this is the path to a css file that I am uploading. 
path_to_file = './directory/mobile/player.css'

#writing file to test object
obj.write(Pathname.new(path_to_file))

这实际上是在编写 css 文件进行测试。我想要它做的是在名为 test 的文件夹中创建一个 css 文件。

我确定我误解了对象与目录相关的方式。谁能发现我哪里出错或指出我正确的方向?

【问题讨论】:

  • Amazon S3 中好像没有目录结构:serverfault.com/a/435828, stackoverflow.com/a/11503643/1008230
  • 我发现你可以通过创建带有路径名的对象来拥有类似目录的结构。 bucket.objects.create(文件夹/测试/player.css)。当您查看存储桶 as_tree 时,它​​们将显示为目录。
  • @SpencerCooley 你能详细说明你找到的解决方案吗?
  • 他正在指定他希望在创建对象时将文件存储在存储桶上的目录@Noz
  • @SpencerCooley 你应该回答你自己的问题,或者删除问题

标签: ruby amazon-web-services amazon-s3


【解决方案1】:

您可以使用以下代码:

# Instantiate the S3 client with your AWS credentials
s3 = AWS::S3.new(
  :access_key_id => 'Aws_Access_Key',
  :secret_access_key => 'Aws_Secret_Key'
)

# If you want to create bucket
# bucketName: name of the bucket
bucket = s3.buckets.create('bucketName', :acl => :public_read)

# push file to s3
# bucketName: Amazon Bucket Name 
# key: The file location that you want to create for your file.
# e.g, key = "user/appName/myapp.zip"  
# File_To_Save: The location of your file. 

obj = bucket.objects['key']
obj.write(:file => file_name)
puts obj.public_url

# This key describes the directory structure for your file

【讨论】:

  • 知道如何使用 v2 的 aws-sdk 执行此操作吗?似乎发生了很多变化,不再那么简单了。
猜你喜欢
  • 2015-04-05
  • 2016-10-17
  • 2014-04-05
  • 2017-04-15
  • 2019-04-15
  • 2021-10-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多