2.4.2. Ruby AWS::S3 Examples (aws-s3 gem)
Ruby プログラミング言語は、S3
アクセスに aws-s3
gem と共に使用できます。Ruby AWS::S3
で Ceph Object Gateway サーバーにアクセスするために使用されるノードで以下の手順を実行します。
Ruby の設定
以下の手順を実行して Ruby を設定します。
root
としてruby
をインストールします。yum install ruby
# yum install ruby
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記上記のコマンドは
ruby
と、rubygems
やruby-libs
などの基本的な依存関係もインストールします。コマンドによってすべての依存関係がインストールされない場合は、個別にインストールします。root
として、aws-s3
をインストールします。gem install aws-s3
# gem install aws-s3
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
コネクションの作成
プロジェクトディレクトリーを作成します。
mkdir ruby_aws_s3 cd ruby_aws_s3
$ mkdir ruby_aws_s3 $ cd ruby_aws_s3
Copy to Clipboard Copied! Toggle word wrap Toggle overflow コネクションファイルを作成します。
vim conn.rb
$ vim conn.rb
Copy to Clipboard Copied! Toggle word wrap Toggle overflow conn.rb
ファイルに以下のコンテンツを貼り付けます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow <
;FQDN_of_gateway_node>
をゲートウェイノードの FQDN に置き換えます。Red Hat Enterprise Linux のオブジェクトゲートウェイガイド または Ubuntu のオブジェクトゲートウェイガイド で説明されているように、my-access-key
およびmy-secret-key
は、S3
アクセスのradosgw
が作成されたときに生成されたaccess_key
およびsecret_key
に置き換えます。コネクションファイルの例を以下に示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ファイルを保存して、エディターを終了します。
ファイルを実行可能にします。
chmod +x conn.rb
$ chmod +x conn.rb
Copy to Clipboard Copied! Toggle word wrap Toggle overflow コマンドを実行します。
./conn.rb | echo $?
$ ./conn.rb | echo $?
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ファイルに正しく値を指定した場合は、コマンドの出力は
0
になります。
バケットの作成
新しいファイルを作成します。
vim create_bucket.rb
$ vim create_bucket.rb
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコンテンツをファイルに貼り付けます。
#!/usr/bin/env ruby load 'conn.rb' AWS::S3::Bucket.create('my-new-bucket1')
#!/usr/bin/env ruby load 'conn.rb' AWS::S3::Bucket.create('my-new-bucket1')
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ファイルを保存して、エディターを終了します。
ファイルを実行可能にします。
chmod +x create_bucket.rb
$ chmod +x create_bucket.rb
Copy to Clipboard Copied! Toggle word wrap Toggle overflow コマンドを実行します。
./create_bucket.rb
$ ./create_bucket.rb
Copy to Clipboard Copied! Toggle word wrap Toggle overflow コマンドの出力が
true
の場合は、バケットmy-new-bucket1
が正常に作成されたことを意味します。
所有するバケットの一覧表示
新しいファイルを作成します。
vim list_owned_buckets.rb
$ vim list_owned_buckets.rb
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコンテンツをファイルに貼り付けます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ファイルを保存して、エディターを終了します。
ファイルを実行可能にします。
chmod +x list_owned_buckets.rb
$ chmod +x list_owned_buckets.rb
Copy to Clipboard Copied! Toggle word wrap Toggle overflow コマンドを実行します。
./list_owned_buckets.rb
$ ./list_owned_buckets.rb
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力は以下のようになります。
my-new-bucket1 2016-01-21 10:33:19 UTC
my-new-bucket1 2016-01-21 10:33:19 UTC
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
オブジェクトの作成
新しいファイルを作成します。
vim create_object.rb
$ vim create_object.rb
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコンテンツをファイルに貼り付けます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ファイルを保存して、エディターを終了します。
ファイルを実行可能にします。
chmod +x create_object.rb
$ chmod +x create_object.rb
Copy to Clipboard Copied! Toggle word wrap Toggle overflow コマンドを実行します。
./create_object.rb
$ ./create_object.rb
Copy to Clipboard Copied! Toggle word wrap Toggle overflow これで、文字列
Hello World!
でhello.txt
が作成されます。
バケットの内容の一覧表示
新しいファイルを作成します。
vim list_bucket_content.rb
$ vim list_bucket_content.rb
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコンテンツをファイルに貼り付けます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ファイルを保存して、エディターを終了します。
ファイルを実行可能にします。
chmod +x list_bucket_content.rb
$ chmod +x list_bucket_content.rb
Copy to Clipboard Copied! Toggle word wrap Toggle overflow コマンドを実行します。
./list_bucket_content.rb
$ ./list_bucket_content.rb
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力は以下のようになります。
hello.txt 12 Fri, 22 Jan 2016 15:54:52 GMT
hello.txt 12 Fri, 22 Jan 2016 15:54:52 GMT
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
空のバケットの削除
新しいファイルを作成します。
vim del_empty_bucket.rb
$ vim del_empty_bucket.rb
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコンテンツをファイルに貼り付けます。
#!/usr/bin/env ruby load 'conn.rb' AWS::S3::Bucket.delete('my-new-bucket1')
#!/usr/bin/env ruby load 'conn.rb' AWS::S3::Bucket.delete('my-new-bucket1')
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ファイルを保存して、エディターを終了します。
ファイルを実行可能にします。
chmod +x del_empty_bucket.rb
$ chmod +x del_empty_bucket.rb
Copy to Clipboard Copied! Toggle word wrap Toggle overflow コマンドを実行します。
./del_empty_bucket.rb | echo $?
$ ./del_empty_bucket.rb | echo $?
Copy to Clipboard Copied! Toggle word wrap Toggle overflow バケットが正常に削除されると、コマンドは
0
を出力として返します。注記create_bucket.rb
ファイルを編集して、my-new-bucket9
、my-new-bucket10
などの空のバケットを作成し、空のバケットの削除を試みる前に上記のdel_empty_bucket.rb
ファイルを適宜編集してください。
空でないバケットの削除(強制的に実行)
新しいファイルを作成します。
vim del_non_empty_bucket.rb
$ vim del_non_empty_bucket.rb
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコンテンツをファイルに貼り付けます。
#!/usr/bin/env ruby load 'conn.rb' AWS::S3::Bucket.delete('my-new-bucket1', :force => true)
#!/usr/bin/env ruby load 'conn.rb' AWS::S3::Bucket.delete('my-new-bucket1', :force => true)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ファイルを保存して、エディターを終了します。
ファイルを実行可能にします。
chmod +x del_non_empty_bucket.rb
$ chmod +x del_non_empty_bucket.rb
Copy to Clipboard Copied! Toggle word wrap Toggle overflow コマンドを実行します。
./del_non_empty_bucket.rb | echo $?
$ ./del_non_empty_bucket.rb | echo $?
Copy to Clipboard Copied! Toggle word wrap Toggle overflow バケットが正常に削除されると、コマンドは
0
を出力として返します。
オブジェクトの削除
新しいファイルを作成します。
vim delete_object.rb
$ vim delete_object.rb
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコンテンツをファイルに貼り付けます。
#!/usr/bin/env ruby load 'conn.rb' AWS::S3::S3Object.delete('hello.txt', 'my-new-bucket1')
#!/usr/bin/env ruby load 'conn.rb' AWS::S3::S3Object.delete('hello.txt', 'my-new-bucket1')
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ファイルを保存して、エディターを終了します。
ファイルを実行可能にします。
chmod +x delete_object.rb
$ chmod +x delete_object.rb
Copy to Clipboard Copied! Toggle word wrap Toggle overflow コマンドを実行します。
./delete_object.rb
$ ./delete_object.rb
Copy to Clipboard Copied! Toggle word wrap Toggle overflow これにより、オブジェクト
hello.txt
が削除されます。