2.4.3. Ruby AWS::SDK Examples (aws-sdk gem ~>2)


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

Ruby の設定

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

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

    # yum install ruby
    注記

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

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

    # gem install aws-sdk

コネクションの作成

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

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

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

    #!/usr/bin/env ruby
    
    require 'aws-sdk'
    require 'resolv-replace'
    
    Aws.config.update(
            endpoint: 'http://<FQDN_of_gateway_node>:8080',
            access_key_id: 'my-access-key',
            secret_access_key: 'my-secret-key',
            force_path_style: true,
            region: 'us-east-1'
    )

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

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

    #!/usr/bin/env ruby
    
    require 'aws-sdk'
    require 'resolv-replace'
    
    Aws.config.update(
            endpoint: 'http://testclient.englab.pnq.redhat.com:8080',
            access_key_id: '98J4R9P22P5CDL65HKP8',
            secret_access_key: '6C+jcaP0dp0+FZfrRNgyGA9EzRy25pURldwje049',
            force_path_style: true,
            region: 'us-east-1'
    )

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

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

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

    ./conn.rb | echo $?

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

バケットの作成

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

    vim create_bucket.rb

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

    #!/usr/bin/env ruby
    
    load 'conn.rb'
    
    s3_client = Aws::S3::Client.new
    s3_client.create_bucket(bucket: 'my-new-bucket2')

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

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

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

    ./create_bucket.rb

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

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

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

    vim list_owned_buckets.rb

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

    #!/usr/bin/env ruby
    
    load 'conn.rb'
    
    s3_client = Aws::S3::Client.new
    s3_client.list_buckets.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-bucket2 2016-01-21 10:33:19 UTC

オブジェクトの作成

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

    vim create_object.rb

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

    #!/usr/bin/env ruby
    
    load 'conn.rb'
    
    s3_client = Aws::S3::Client.new
    s3_client.put_object(
            key: 'hello.txt',
            body: 'Hello World!',
            bucket: 'my-new-bucket2',
            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'
    
    s3_client = Aws::S3::Client.new
    s3_client.list_objects(bucket: 'my-new-bucket2').contents.each do |object|
            puts "#{object.key}\t#{object.size}"
    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'
    
    s3_client = Aws::S3::Client.new
    s3_client.delete_bucket(bucket: 'my-new-bucket2')

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

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

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

    ./del_empty_bucket.rb | echo $?

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

    注記

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

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

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

    vim del_non_empty_bucket.rb

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

    #!/usr/bin/env ruby
    
    load 'conn.rb'
    
    s3_client = Aws::S3::Client.new
    Aws::S3::Bucket.new('my-new-bucket2', client: s3_client).clear!
    s3_client.delete_bucket(bucket: 'my-new-bucket2')

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

  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'
    
    s3_client = Aws::S3::Client.new
    s3_client.delete_object(key: 'hello.txt', bucket: 'my-new-bucket2')

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

  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.