簡體   English   中英

在Sinatra中使用AWS :: S3列出存儲桶

[英]Listing buckets with AWS::S3 in Sinatra

我正在嘗試使用aws-s3 gem訪問我的Amazon S3帳戶,但無論我做什么,我甚至無法打印存儲桶列表。

錯誤:

undefined method `bytesize' for #<AWS::S3::Bucket:0x1b9e488>

來自代碼:

# hello_world.rb
require 'rubygems'
require 'sinatra'
require 'aws/s3'

get '/' do
  connection = AWS::S3::Base.establish_connection!(
     :access_key_id     => '***',
     :secret_access_key => '***'
   )
  AWS::S3::Service.buckets
end

我對Ruby沒有太多經驗,我只是錯過了一些明顯的東西嗎?

你真的應該先將你的AWS secred_access_key混淆,然后在stackoverflow上粘貼它,或者至少在有人開始玩你的桶之前改變它...

問題是你正在嘗試輸出整個存儲桶集,但是沒有字符串序列化方法,這就是你得到這個錯誤的原因。

試試這個:

app.rb

require 'rubygems'
require 'sinatra'
require 'aws/s3'

include AWS::S3

def s3_connect
  Base.establish_connection!(
    :access_key_id     => 'THISISMYACCESSKEYITMAYNOTBETHEBESTBUTITISMINE',
    :secret_access_key => 'HERPADERPSECRETKEYISSECRET'
  )
end

get '/' do
  s3_connect
  @buckets = Service.buckets
  erb :index
end

get '/bucket/:key' do
  s3_connect
  @bucket = Bucket.find(params[:key])
  erb :bucket
end

查看:index.erb

<h1>Buckets</h1>
<ul>
  <% @buckets.each do |b| %>
    <li><a href='/bucket/<%= b.name %>'><%= b.name %></a> (<%= b.objects.length %> objects)</li>
  <% end %>
</ul>

查看:bucket.erb

<h1>Bucket: <%= @bucket.name %> Objects</h1>
<% @bucket.objects.each do |obj| %>
  Object: <%= obj.key %> <%= obj.about['content-length'] %> bytes<br/>
<% end %>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM