如何在 AWS 的 ruby​​ 中使用 get_object ?

Sha*_*wal 5 ruby amazon-s3

我对红宝石很陌生。我可以使用 ruby​​ 连接到 AWS S3。我正在使用以下代码

    filePath = '/TMEventLogs/stable/DeviceWiFi/20160803/1.0/20160803063600-2f9aa901-2ce7-4932-aafd-f7286cdb9871.csv'

    s3.get_object({bucket: "analyticspoc", key:"TMEventLogs/stable/DeviceWiFi/20160803/1.0/"}, target:filePath ) do |chunk|
            puts "1"
    end
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,s3 是客户端。“analyticspoc”是根存储桶。我的 csv 文件路径如下All Buckets /analyticspoc/TMEventLogs/stable/DeviceWiFi/20160803/1.0/20160803063600-2f9aa901-2ce7-4932-aafd-f7286cdb9871.csv。

我已经尝试过上面的代码。我在上面的代码中遇到了错误Error getting objects: [Aws::S3::Errors::NoSuchKey] - The specified key does not exist。使用上面的代码我想读取文件的内容。怎么做 ?请告诉我上面的代码有什么错误

Sha*_*wal 5

得到答案了。您可以使用 list_objects 来访问块中的文件名数组(一次 1000 个),其中 get_object 用于访问单个文件的内容,如下所示

BUCKET = "analyticspoc"
path = "TMEventLogs/stable/DeviceWiFi/20160803/1.0/"
s3.list_objects(bucket:BUCKET, prefix: path).each do |response|
  contents = response.contents
end


file_name = "TMEventLogs/stable/DeviceWiFi/20160803/1.0/012121212121"
response = s3.get_object(bucket: BUCKET, key: file_name)
Run Code Online (Sandbox Code Playgroud)