【AWS発表】 AWS SDK for Rubyを提供開始
Rubyは"開発者の喜び"のために最適化された素晴らしい言語です。日本人である、まつもとゆきひろ氏が開発したこともあり、日本の開発者の中でも最も人気の高い言語の一つです。じつは、Rubyと、EC2やS3のようなアマゾンクラウドは、共通のゴールを持っています。開発者が、開発のスピードを鈍化させる煩雑な作業を心配することなく、イノベーティブな製品を開発するのを助ける、ということです。
本日の発表は、RubyとAWSの関係をより緊密にする、公式のAWS SDK for Rubyです!
AWS SDK for Ruby gem
このSDKは、AWSのコンピュート、ストレージ、ミドルウェアサービス(認証、リクエストのリトライ、XMLプロセッシング、エラーハンドリング)に対応しています。このSDKから、Amazon EC2、 S3、 SQS、 SNS、Simple Email Serviceにアクセスすることができ、SimpleDBのためのオブジェクト・リレーショナル・マッパーを含んでいます。我々のゴールはRubyディベロッパーに公式にサポートされ最適化された開発環境を提供することで、アプリを作成するのをより簡単にすることなのです。
SDKの使いはじめ
AWS SDK for Ruby gemをコマンドラインからインストールできます:
sudo gem install aws-sdk
これにより、AWS::EC2、AWS::S3といった特定のAWSクラスにアクセスすることができます。セキュリティ証明書を特定することで、すぐにはじめることができます。簡単なYAMLファイルを用いると良いでしょう:
access_key_id: your_access_key
secret_access_key: your_secret_key
その後、アクセス証明書をロードし、リクエストを発行することができます。例えば、下記のコードで、S3に新しいバケットを作成し、パブリックなリードアクセスに設定して、ファイルをアップロードできます:
config = YAML.load(File.read(config_file))
AWS.config(config)
s3 = AWS::S3.new
bucket = s3.buckets.create(bucket_name)
basename = File.basename(file_name)
o = b.objects[basename]
o.write(:file => file_name, :acl => :public_read)
より詳細な情報は、SDK for Ruby detail page(英語)を参照ください。
Railsで用いる
AWS SDK for Rubyは、AWS::Recordと呼ばれる、Amazon SimpleDBへのORMインターフェースを含んでいます。これを用いて、どのようにデータを保存できるか見てみましょう。この例では、非常に簡単なソーシャルブックマークサイトを作成しています。
はじめに、新しいRailsアプリケーションを作成します。AWS for Rubyのドキュメンテーションでは、どのようにアプリをセットアップするか記述されていますが、下記の簡単なアプリケーションテンプレートを用いることで、より簡単にセットアップできます:
rails new tagcloud -m http://ruby-sdk.s3.amazonaws.com/aws.rb
証明書をconfig/aws.ymlに加え、最初のmodelを作成できます:
rails generate aws_record bookmark
app/models/bookmark.rbを開き、モデル属性(model attribute)の定義を開始します。SimpleDBは、分散キー・アトリビュート・ストアなので、スキーマ等は必要としません。モデルの属性を定義するだけで良いのです。下記のクラス定義を加えます:
string_attr :title
string_attr :url
string_attr :tags, :set => true
timestamps
これにより、Bookmarkクラスに、title、URL、tagsのコレクションという3つのstring属性を加え、timestampsを追加します。Rakeタスクを用いて、もし事前に存在しなければ、新しいSimple DBのドメイン(テーブルのようなもの)を作成します:
rake aws:create_domains
ActiveRecordを使ったことがある方ならお分かりだと思いますが, 下記のように新しいBookmarkオブジェクトを作成し、その属性を下記のように保存できます:
b = Bookmark.new(
:title => 'Amazon EC2',
:url => 'http://aws.amazon.com/ec2',
:tags => [ 'aws', 'cloud', 'compute'])
b.save
また、下記のように取得したりアップデートします:
b = Bookmark.find(:first, :where => {:title => 'Amazon EC2'})
b.tags += ['elastic']
b.save
SimpleDBは、高い可用性と耐久性の高いデータストアを提供し、冗長性やレプリケーションやサーバーのことすら考える必要がありません。AWS SDK for Rubyを用いることで、非常に簡単にSimpleDBのドメインを使いはじめることができ、スキーマやデータベースサーバーのことを考えずにデータを永続保存することができるのです!
他の言語のサポート
今回発表のあったRubyの他に、 Java、PHP、iOS、Android、.Netにおいて公式のSDKが用意されています。
玉川憲 (@KenTamagawa)
コメント