検索

2.4.2. Ruby AWS::S3 Examples (aws-s3 gem)

download PDF

Ruby プログラミング言語は、S3 アクセスに aws-s3 gem と共に使用できます。Ruby AWS::S3 で Ceph Object Gateway サーバーにアクセスするために使用されるノードで以下の手順を実行します。

Ruby の設定

以下の手順を実行して Ruby を設定します。

  1. root として ruby をインストールします。

    # yum install ruby
    注記

    上記のコマンドは ruby と、rubygemsruby-libs などの基本的な依存関係もインストールします。コマンドによってすべての依存関係がインストールされない場合は、個別にインストールします。

  2. root として、aws-s3 をインストールします。

    # gem install aws-s3

コネクションの作成

  1. プロジェクトディレクトリーを作成します。

    $ mkdir ruby_aws_s3
    $ cd ruby_aws_s3
  2. コネクションファイルを作成します。

    $ vim conn.rb
  3. conn.rb ファイルに以下のコンテンツを貼り付けます。

    #!/usr/bin/env ruby
    
    require 'aws/s3'
    require 'resolv-replace'
    
    AWS::S3::Base.establish_connection!(
            :server            => '<FQDN_of_gateway_node>',
            :port           => '8080',
            :access_key_id     => 'my-access-key',
            :secret_access_key => 'my-secret-key'
    )

    &lt ;FQDN_of_gateway_node> をゲートウェイノードの FQDN に置き換えます。Red Hat Enterprise Linux のオブジェクトゲートウェイガイド または Ubuntu のオブジェクトゲートウェイガイド で説明されているように、my-access-key および my-secret-key は、S3 アクセスの radosgw が作成されたときに生成された access_key および secret_key に置き換えます。

    コネクションファイルの例を以下に示します。

    #!/usr/bin/env ruby
    
    require 'aws/s3'
    
    require 'resolv-replace'
    
    AWS::S3::Base.establish_connection!(
            :server            => 'testclient.englab.pnq.redhat.com',
            :port           => '8080',
            :access_key_id     => '98J4R9P22P5CDL65HKP8',
            :secret_access_key => '6C+jcaP0dp0+FZfrRNgyGA9EzRy25pURldwje049'
    )

    ファイルを保存して、エディターを終了します。

  4. ファイルを実行可能にします。

    $ chmod +x conn.rb
  5. コマンドを実行します。

    $ ./conn.rb | echo $?

    ファイルに正しく値を指定した場合は、コマンドの出力は 0 になります。

バケットの作成

  1. 新しいファイルを作成します。

    $ vim create_bucket.rb

    以下のコンテンツをファイルに貼り付けます。

    #!/usr/bin/env ruby
    
    load 'conn.rb'
    
    AWS::S3::Bucket.create('my-new-bucket1')

    ファイルを保存して、エディターを終了します。

  2. ファイルを実行可能にします。

    $ chmod +x create_bucket.rb
  3. コマンドを実行します。

    $ ./create_bucket.rb

    コマンドの出力が true の場合は、バケット my-new-bucket1 が正常に作成されたことを意味します。

所有するバケットの一覧表示

  1. 新しいファイルを作成します。

    $ vim list_owned_buckets.rb

    以下のコンテンツをファイルに貼り付けます。

    #!/usr/bin/env ruby
    
    load 'conn.rb'
    
    AWS::S3::Service.buckets.each do |bucket|
            puts "#{bucket.name}\t#{bucket.creation_date}"
    end

    ファイルを保存して、エディターを終了します。

  2. ファイルを実行可能にします。

    $ chmod +x list_owned_buckets.rb
  3. コマンドを実行します。

    $ ./list_owned_buckets.rb

    出力は以下のようになります。

    my-new-bucket1 2016-01-21 10:33:19 UTC

オブジェクトの作成

  1. 新しいファイルを作成します。

    $ vim create_object.rb

    以下のコンテンツをファイルに貼り付けます。

    #!/usr/bin/env ruby
    
    load 'conn.rb'
    
    AWS::S3::S3Object.store(
            'hello.txt',
            'Hello World!',
            'my-new-bucket1',
            :content_type => 'text/plain'
    )

    ファイルを保存して、エディターを終了します。

  2. ファイルを実行可能にします。

    $ chmod +x create_object.rb
  3. コマンドを実行します。

    $ ./create_object.rb

    これで、文字列 Hello World!hello.txt が作成されます。

バケットの内容の一覧表示

  1. 新しいファイルを作成します。

    $ vim list_bucket_content.rb

    以下のコンテンツをファイルに貼り付けます。

    #!/usr/bin/env ruby
    
    load 'conn.rb'
    
    new_bucket = AWS::S3::Bucket.find('my-new-bucket1')
    new_bucket.each do |object|
            puts "#{object.key}\t#{object.about['content-length']}\t#{object.about['last-modified']}"
    end

    ファイルを保存して、エディターを終了します。

  2. ファイルを実行可能にします。

    $ chmod +x list_bucket_content.rb
  3. コマンドを実行します。

    $ ./list_bucket_content.rb

    出力は以下のようになります。

    hello.txt    12    Fri, 22 Jan 2016 15:54:52 GMT

空のバケットの削除

  1. 新しいファイルを作成します。

    $ vim del_empty_bucket.rb

    以下のコンテンツをファイルに貼り付けます。

    #!/usr/bin/env ruby
    
    load 'conn.rb'
    
    AWS::S3::Bucket.delete('my-new-bucket1')

    ファイルを保存して、エディターを終了します。

  2. ファイルを実行可能にします。

    $ chmod +x del_empty_bucket.rb
  3. コマンドを実行します。

    $ ./del_empty_bucket.rb | echo $?

    バケットが正常に削除されると、コマンドは 0 を出力として返します。

    注記

    create_bucket.rb ファイルを編集して、my-new-bucket9my-new-bucket10 などの空のバケットを作成し、空のバケットの削除を試みる前に上記の del_empty_bucket.rb ファイルを適宜編集してください。

空でないバケットの削除(強制的に実行)

  1. 新しいファイルを作成します。

    $ vim del_non_empty_bucket.rb

    以下のコンテンツをファイルに貼り付けます。

    #!/usr/bin/env ruby
    
    load 'conn.rb'
    
    AWS::S3::Bucket.delete('my-new-bucket1', :force => true)

    ファイルを保存して、エディターを終了します。

  2. ファイルを実行可能にします。

    $ chmod +x del_non_empty_bucket.rb
  3. コマンドを実行します。

    $ ./del_non_empty_bucket.rb | echo $?

    バケットが正常に削除されると、コマンドは 0 を出力として返します。

オブジェクトの削除

  1. 新しいファイルを作成します。

    $ vim delete_object.rb

    以下のコンテンツをファイルに貼り付けます。

    #!/usr/bin/env ruby
    
    load 'conn.rb'
    
    AWS::S3::S3Object.delete('hello.txt', 'my-new-bucket1')

    ファイルを保存して、エディターを終了します。

  2. ファイルを実行可能にします。

    $ chmod +x delete_object.rb
  3. コマンドを実行します。

    $ ./delete_object.rb

    これにより、オブジェクト hello.txt が削除されます。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.