我是 AWS 的新手,我正在尝试遍历我的存储桶对象以生成 url 来读取对象。我在 AWS 文档中找到了以下参考:
bucket.objects.myobject.url_for(:read)
我有以下方法,其中包含一个循环,该循环至少可以打印每个对象的键,但我正在努力使 url_for 工作。有任何想法吗?
def aws_s3_url
s3_client = Aws::S3::Resource.new(region: ENV['AWS_REGION'])
bucket = s3_client.bucket(ENV['S3_BUCKET'])
bucket.objects.each do |name|
puts name.key
end
end
感谢所有帮助。
我不知道您拥有的具体用例,但您不需要 URL 来读取存储桶中的对象,因为 AWS 开发工具包将存储桶中的文件映射到Object 的实例。
要读取文件的内容,请尝试以下操作:
@s3_client = Aws::S3::Resource.new(region: ENV['AWS_REGION'])
def file_content(key)
bucket = @s3_client.bucket(ENV['S3_BUCKET'])
obj = @s3_client.get_object(bucket: bucket, key: key)
obj.body.read
end
def get_all_files
bucket = @s3_client.bucket(ENV['S3_BUCKET'])
bucket.objects.each do |o|
puts file_content(o.key)
end
end
要返回对象的公共 URL,您可以尝试:
def get_url(key)
bucket = @s3_client.bucket(ENV['S3_BUCKET'])
obj = @s3_client.get_object(bucket: bucket, key: key)
obj.public_url
end
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句