2012-09-05 34 views
11

Đây là Fog walkthrough of creating a file (an S3 object) in a directory (an S3 bucket):Làm thế nào để tạo một đối tượng S3 trong một xô với một cuộc gọi Sương mù?

connection = Fog::Storage.new({ 
    :provider     => 'AWS', 
    :aws_access_key_id  => YOUR_AWS_ACCESS_KEY_ID, 
    :aws_secret_access_key => YOUR_AWS_SECRET_ACCESS_KEY 
}) 

directory = connection.directories.create(
    :key => "fog-demo-#{Time.now.to_i}", # globally unique name 
    :public => true 
) 

file = directory.files.create(
    :key => 'resume.html', 
    :body => File.open("/path/to/my/resume.html"), 
    :public => true 
) 

Nhưng có vẻ với tôi như thể điều này đòi hỏi 2 cuộc gọi API:

  1. connection.directories.create
  2. directory.files.create

Nếu tôi đã có thư mục (một thùng S3) được tạo, làm cách nào để tạo một tệp (đối tượng S3) chỉ với một cuộc gọi Sương mù?

Trả lời

15

Nếu bạn biết thư mục tồn tại bạn có thể làm

dir = connection.directories.new(:key => 'foo')# no request made 
dir.files.create(...) 
3

Hoặc, nếu đã có một cái xô mà bạn muốn để lưu trữ các tập tin, sau đó những gì bạn có thể làm điều đó như sau:

bucket = connection.directories.get({BUCKET_NAME}) 

và sau đó, bạn sẽ có thể gọi bucket.files.create, để lưu trữ tệp trên nhóm đó.

Hy vọng điều đó sẽ hữu ích!

+1

Điều này cần quyền truy cập khác nhau mặc dù: * ListAllMyBuckets * và * GetBucketLocation * trên tất cả các nhóm. – schmijos

+0

@JosuaSchmid Tốt bắt! :) – facundofarias

+0

Điều này làm cho một yêu cầu thêm không cần thiết. – mipmip

Các vấn đề liên quan