メニュー
Amazon Simple Storage Service
開発者ガイド (API Version 2006-03-01)

AWS SDK for Ruby を使用したオブジェクトのアップロード

以下のタスクは、Ruby スクリプトで Ruby の SDK のいずれかのバージョンのオブジェクトをアップロードする手順を示しています。

AWS SDK for Ruby バージョン 2 の使用

AWS SDK for Ruby バージョン 2 には、Amazon S3 へのオブジェクトへのアップロードのために 2 つの方法があります。1 つ目は、ディスクから任意のサイズのファイルを簡単にアップロードできる、マネージド型ファイルアップローダーです。

ファイルのアップロード

1

Aws::S3::Resource クラスのインスタンスを作成します。

2

バケット名とキーで、対象オブジェクトを参照します。

2

オブジェクトで #upload_file を呼び出します。

Copy
require 'aws-sdk' s3 = Aws::S3::Resource.new(region:'us-west-2') obj = s3.bucket('bucket-name').object('key') obj.upload_file('/path/to/source/file')

Ruby の SDK バージョン 2 でオブジェクトをアップロードできる 2 つ目の方法では、Aws::S3::Object#put メソッドを使用します。この方法は、オブジェクトが文字列であるか、ディスク上のファイルではない IO オブジェクトである場合に役立ちます。

PUT Object

1

Aws::S3::Resource クラスのインスタンスを作成します。

2

バケット名とキーで、対象オブジェクトを参照します。

2

#put を呼び出し、文字列や IO オブジェクトを渡します。

Copy
require 'aws-sdk' s3 = Aws::S3::Resource.new(region:'us-west-2') obj = s3.bucket('bucket-name').object('key') # string data obj.put(body: 'Hello World!') # IO object File.open('source', 'rb') do |file| obj.put(body: file) end

AWS SDK for Ruby バージョン 1 の使用

この API には、データのアップロード方法を指定するためのオプションを取ることのできる #write メソッドが用意されています。

オブジェクト Ruby の SDK バージョン 1 のアップロード

1

AWS 認証情報を指定して、AWS::S3 クラスのインスタンスを作成します。

2

AWS::S3::S3Object#write メソッドを使用します。このメソッドはデータパラメーターと、ファイルのデータまたはストリームのアップロードを可能にする options ハッシュを取ります。

次のコード例は Ruby の SDK バージョン 1 用の前述のタスクを実装したもので、options ハッシュ :file を使用して、アップロードするファイルのパスを指定しています。

Copy
s3 = AWS::S3.new # Upload a file. key = File.basename(file_name) s3.buckets[bucket_name].objects[key].write(:file => file_name)

次の Ruby の SDK バージョン 1 のスクリプト例では、ファイルを Amazon S3 バケットにアップロードします。実際に動作するコードを作成、テストする方法については、「AWS SDK for Ruby の使用 - バージョン 2」を参照してください。

Copy
#!/usr/bin/env ruby require 'rubygems' require 'aws-sdk' bucket_name = '*** Provide bucket name ***' file_name = '*** Provide file name ****' # Get an instance of the S3 interface. s3 = AWS::S3.new # Upload a file. key = File.basename(file_name) s3.buckets[bucket_name].objects[key].write(:file => file_name) puts "Uploading file #{file_name} to bucket #{bucket_name}."