2012-09-05 10 views
11

Fog walkthrough of creating a file (an S3 object) in a directory (an S3 bucket)次のとおりです。1つのフォグ・コールでバケットにS3オブジェクトを作成するにはどうすればいいですか?ここ

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 
) 

しかし、これは2つのAPI呼び出し必要があるかのように、それは私になります

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

を私はすでにディレクトリがある場合(S3バケット)が作成された場合、唯一のフォグコールでファイル(S3オブジェクト)を作成するにはどうすればよいですか?

答えて

15

あなたが知っている場合、ディレクトリは、あなたが

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

を行うことができますまたは、次すでにあなたがそれを何ができるか、その後、あなたがファイルを保存するバケットを持っている場合はされて存在している:

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

以降、bucket.files.createを呼び出して、そのバケットにファイルを格納することができます。

希望すると助かります!

+1

これには、異なるバケットの* ListAllMyBuckets *と* GetBucketLocation *という異なるアクセス権が必要です。 – schmijos

+0

@JosuaSchmid良いキャッチ! :) – facundofarias

+0

これは不必要な追加要求をします。 – mipmip

関連する問題