如何使用 Ruby 将文件内容从 S3 存储桶下载到内存中

2024-04-26

我在 Amazon AWS S3 中有一个存储桶,其中有一个名为users.csv.

如何使用 Ruby 将该文件的内容从 S3 存储桶加载到内存中以便我可以解析它?

这是我的代码:

require 'aws-sdk'
s3 = Aws::S3::Resource.new(region: 'us-west-1')
resp = s3.list_objects(bucket: 'bucket-name', max_keys: 1)
resp.contents.each do |object|
    puts #{object.value}
end

当我在 IRB 中尝试这个时,我得到:

struct Aws::S3::Types::Object key="users.csv", last_modified=2017-11-15 19:10:28 UTC, etag="\"9a3d50c07aa4aa6976037ce774294a26\"", size=101, storage_class="STANDARD", owner=struct Aws::S3::Types::Owner display_name="owner-name", id="42093cfa4ccb23a8156cdab8500a41a10bdbf90deebb0ee8a3b340dd1e0c3622"

我怎样才能解析内容users.csv?


来自 AWS 文档:

将对象下载到内存中

对于小对象,获取对象并使其在 Ruby 进程中可用可能会很有用。如果你 不指定:target下载时,会加载整个对象 到内存中成为一个 StringIO 对象。

def import_from_s3 

  #initiate the client
  s3 = Aws::S3::Client.new({
      region:            region,
      access_key_id:     key_id,
      secret_access_key: secret
  })

  #Get the object
  resp = s3.get_object(bucket: bucket, key: key)

 resp.body
 #=> #<StringIO ...> 

 resp.body.read
 #=> '...'

Call #read or #string在 StringIO 上获取字符串对象形式的主体。

欲了解更多信息,请参阅“使用适用于 Ruby 的 AWS 开发工具包从 Amazon S3 下载对象 https://aws.amazon.com/blogs/developer/downloading-objects-from-amazon-s3-using-the-aws-sdk-for-ruby/".

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Ruby 将文件内容从 S3 存储桶下载到内存中 的相关文章

  • 广告过滤服务器端[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在开发一个 Web 应用程序 在其中显示来自其他网站的 HTML 在显示最终版本之前 我想去掉广告 关于如何实现这一目标有什么想法
  • AWS Serverless Lambda + Angular - TypeError:express 不是函数

    该应用程序在 localhost 4200 中运行良好 但是 当我通过无服务器 Lambda 迁移到 AWS 时 我在 cloudwatch 日志中收到此错误 我想正因为如此我得到了500 message Internal server e
  • 不活动后自动“停止”Sagemaker 笔记本实例?

    我有一个 Sagemaker Jupyter 笔记本实例 我一直错误地将它留在网上过夜 不必要地花费了金钱 当没有活动 例如 1 小时 时 是否有任何方法可以自动停止 Sagemaker 笔记本实例 或者我必须制作一个自定义脚本 您可以使用
  • 如何删除/统计 s3 存储桶中的对象?

    所以我知道这是一个常见问题 但似乎没有任何好的答案 我有一个桶 里面有大量 我不知道有多少 文件 都在2k一个以内 1 我如何知道我有多少个这些文件没有列出他们 我使用过 s3cmd rb aws s3 和 jets3t 的东西 我能找到的
  • 调用 StartQueryExecution 操作时出现错误“请求中包含的安全令牌无效”UnrecognizedClientException

    我在使用 athena 凭证在 redash 中设置数据源连接时遇到错误 我在 athena 中有有效的访问权限 可以运行查询并从 S3 获取日志 现在我想将 athena 与 redash 集成 所以我收到错误 调用 StartQuery
  • 如何强制send_data在浏览器中下载文件?

    好吧 我的问题是我正在使用send data on my Rails 3应用程序向用户发送文件AWS S3类似的服务 Base establish connection access key id gt my key secret acce
  • Amazon S3 适合提供视频吗? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我正在开发一个网站 其主要功能是播放视频 通常是一个接一个地播放视频 将 MP4 和 WebM 文件存储在 Amazon S3 上 然后使用 HTML
  • 覆盖 Rails ActiveRecord 销毁行为的最佳方法是什么?

    我有一个应用程序 我想在其中覆盖许多模型的销毁行为 用例是用户可能有删除特定记录的合法需要 但实际上从数据库中删除该行会破坏引用完整性 从而影响其他相关模型 例如 系统的用户可能想要删除不再与其有业务往来的客户 但需要维护与该客户的交易 看
  • 如何使用符号来标识 ruby​​ 方法中的参数

    我正在学习 Rails 并回到 ruby 来了解 Rails 中的方法 以及 ruby 的实际工作原理 当我看到如下方法调用时 validates first name presence gt true 我有点迷惑不解了 如何在 ruby
  • 更新AWS S3过期时间

    我想知道如何延长密钥的有效期 我指的不是访问对象的签名 URL 而是密钥本身 我将 AWS 设置为存储桶中的所有对象应在 90 天后过期的规则 在大多数情况下 这就是我希望发生的事情 有时我需要将单个密钥的使用寿命最多再延长 90 天 事实
  • 在 Ruby 中从一个数组减去另一个数组

    我有两个任务数组 创建和分配 我想从创建的任务数组中删除所有分配的任务 这是我的工作代码 但很混乱 assigned tasks user assigned tasks created tasks user created tasks Do
  • Rails 3 ActiveAdmin。如何为关联记录设置默认排序顺序?

    我有一个发货模型和一个发票模型 发票属于装运 所以我添加了一个默认的发货排序顺序 如下所示 config sort order file number desc 但现在我想为发票添加相同的排序顺序 发货表是具有 file number 列的
  • 您将如何整理这个控制器逻辑?

    我在控制器中有一些逻辑 如果满足某些条件 它会设置对象的状态 if params concept consulted legal 0 params concept consulted marketing 1 concept attribut
  • AWS CLI S3API 查找路径中的最新文件夹

    我有一个非常大的桶 数十万个对象 我有一条路径 假设 s3 myBucket path1 path2 path2 获取也是文件夹的上传内容 因此 示例可能如下所示 s3 myBucket path1 path2 v6 1 0 s3 myBu
  • AWS ALB 截断 HTTP 响应

    我有一个带有目标组的 ALB 和运行 PHP API 的 ECS 集群 我正在尝试查询 API 以获得 CSV 响应 但如果请求通过 ALB 我会得到被截断的结果 当我通过 SSH 连接到运行集群的 EC2 实例并尝试手动运行curl 通过
  • 如何让我的导航栏出现在 Rails 应用程序的每个页面上?

    目前 我的导航栏位于我的index htm erb 文件中 目前仅在主页上显示 我想知道为了让导航栏出现在我的应用程序的每一页上 必须采取哪些必要步骤 我的导航栏的代码如下所示
  • Ruby 元编程,RSpec 的“应该”如何工作?

    我正在阅读 RSpec 并试图弄清楚 RSpec 的 应该 是如何实现的 有人可以帮忙解释一下这个函数的元性质是如何工作的吗 代码位于此处 http github com dchelimsky rspec blob master lib s
  • 扩展策略中的AWS ASG冷却期和预热期有什么区别?

    AWS ASG 冷却期 当我想要更新自动扩展组时可以编辑该冷却期 和扩展策略中的预热期之间有什么区别 冷却时间可以防止失控的缩放事件 如果您的系统在 CPU 上运行较高 并且您的自动扩展规则添加了一个实例 则该实例将需要 5 分钟左右的时间
  • 安装 Sass 时出错(Ruby 2.5.0.1、MSYS2 20161025.0.0)

    我尝试安装 Sass 我安装了Ruby and MSYS2在此之前 来自所有人的最新消息巧克力味 https chocolatey org choco install ruby choco install msys2 看来它们已正确安装 r
  • RSpec 抛出分段错误

    有时我的测试套件会无缘无故地抛出分段错误 这是输出 Users Test rvm gems ruby 1 9 3 p392 gems activerecord 3 2 9 lib active record relation query m

随机推荐