3.2.5. Ruby AWS S3 を使用した Ceph Object Gateway へのアクセス


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

前提条件

  • Ceph Object Gateway へのユーザーレベルのアクセス。
  • Ceph Object Gateway にアクセスするノードへのルートレベルのアクセス。
  • インターネットアクセス。

手順

  1. ruby パッケージをインストールします。

    [root@dev ~]# yum install ruby
    注記

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

  2. Ruby パッケージ aws-s3 をインストールします。

    [root@dev ~]# gem install aws-s3
  3. プロジェクトディレクトリーを作成します。

    [user@dev ~]$ mkdir ruby_aws_s3
    [user@dev ~]$ cd ruby_aws_s3
  4. コネクションファイルを作成します。

    [user@dev ~]$ vim conn.rb
  5. 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'
    )

    FQDN_OF_GATEWAY_NODE は、Ceph Object Gateway ノードの FQDN に置き換えます。MY_ACCESS_KEYMY_SECRET_KEY は、Red Hat Ceph Storage Object Gateway 設定および管理ガイド に記載されているように、S3 アクセス用の radosgw ユーザーの作成時に生成された access_keysecret_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'
    )

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

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

    [user@dev ~]$ chmod +x conn.rb
  7. コマンドを実行します。

    [user@dev ~]$ ./conn.rb | echo $?

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

  8. バケットを作成するための新規ファイルを作成します。

    [user@dev ~]$ vim create_bucket.rb

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

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

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

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

    [user@dev ~]$ chmod +x create_bucket.rb
  10. コマンドを実行します。

    [user@dev ~]$ ./create_bucket.rb

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

  11. 所有されるバケットをリスト表示するために新規ファイルを作成します。

    [user@dev ~]$ 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

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

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

    [user@dev ~]$ chmod +x list_owned_buckets.rb
  13. コマンドを実行します。

    [user@dev ~]$ ./list_owned_buckets.rb

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

    my-new-bucket1 2020-01-21 10:33:19 UTC
  14. オブジェクトを作成するための新規ファイルを作成します。

    [user@dev ~]$ 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'
    )

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

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

    [user@dev ~]$ chmod +x create_object.rb
  16. コマンドを実行します。

    [user@dev ~]$ ./create_object.rb

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

  17. バケットのコンテンツをリスト表示するための新規ファイルを作成します。

    [user@dev ~]$ 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

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

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

    [user@dev ~]$ chmod +x list_bucket_content.rb
  19. コマンドを実行します。

    [user@dev ~]$ ./list_bucket_content.rb

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

    hello.txt    12    Fri, 22 Jan 2020 15:54:52 GMT
  20. 空のバケットを削除するために新規ファイルを作成します。

    [user@dev ~]$ vim del_empty_bucket.rb

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

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

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

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

    [user@dev ~]$ chmod +x del_empty_bucket.rb
  22. コマンドを実行します。

    [user@dev ~]$ ./del_empty_bucket.rb | echo $?

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

    注記

    create_bucket.rb ファイルを編集し、空のバケットを作成します (例: my-new-bucket4my-new-bucket5)。次に、空のバケットの削除を試みる前に、上記の del_empty_bucket.rb ファイルを適宜編集します。

  23. 空でないバケットを削除する新規ファイルを作成します。

    [user@dev ~]$ vim del_non_empty_bucket.rb

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

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

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

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

    [user@dev ~]$ chmod +x del_non_empty_bucket.rb
  25. コマンドを実行します。

    [user@dev ~]$ ./del_non_empty_bucket.rb | echo $?

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

  26. オブジェクトを削除する新しいファイルを作成します。

    [user@dev ~]$ vim delete_object.rb

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

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

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

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

    [user@dev ~]$ chmod +x delete_object.rb
  28. コマンドを実行します。

    [user@dev ~]$ ./delete_object.rb

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

Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

会社概要

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

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

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

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

Legal Notice

Theme

© 2026 Red Hat
トップに戻る