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

このガイドは更新されていません。最新の情報と手順については、新しい Amazon S3 ユーザーガイドを参照してください。

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

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

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

  2. バケット名とキーで、対象オブジェクトを参照します。オブジェクトはバケット内に保持され、各オブジェクトを特定するための一意のキーを持っています。

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

require 'aws-sdk-s3' # Uploads an object to a bucket in Amazon Simple Storage Service (Amazon S3). # # Prerequisites: # # - An S3 bucket. # - An object to upload to the bucket. # # @param s3_client [Aws::S3::Resource] An initialized S3 resource. # @param bucket_name [String] The name of the bucket. # @param object_key [String] The name of the object. # @param file_path [String] The path and file name of the object to upload. # @return [Boolean] true if the object was uploaded; otherwise, false. # @example # exit 1 unless object_uploaded?( # Aws::S3::Resource.new(region: 'us-east-1'), # 'doc-example-bucket', # 'my-file.txt', # './my-file.txt' # ) def object_uploaded?(s3_resource, bucket_name, object_key, file_path) object = s3_resource.bucket(bucket_name).object(object_key) object.upload_file(file_path) return true rescue StandardError => e puts "Error uploading object: #{e.message}" return false end

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

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

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

  3. #put を呼び出し、文字列または I/O オブジェクトを渡します。

require 'aws-sdk-s3' # Uploads an object to a bucket in Amazon Simple Storage Service (Amazon S3). # # Prerequisites: # # - An S3 bucket. # - An object to upload to the bucket. # # @param s3_client [Aws::S3::Resource] An initialized S3 resource. # @param bucket_name [String] The name of the bucket. # @param object_key [String] The name of the object. # @param file_path [String] The path and file name of the object to upload. # @return [Boolean] true if the object was uploaded; otherwise, false. # @example # exit 1 unless object_uploaded?( # Aws::S3::Resource.new(region: 'us-east-1'), # 'doc-example-bucket', # 'my-file.txt', # './my-file.txt' # ) def object_uploaded?(s3_resource, bucket_name, object_key, file_path) object = s3_resource.bucket(bucket_name).object(object_key) File.open(file_path, 'rb') do |file| object.put(body: file) end return true rescue StandardError => e puts "Error uploading object: #{e.message}" return false end