RubyからAmazon CloudSearchを操作する(AWS SDK Version2版)


こんにちは@joytomoです。
全文検索エンジンと言えば近頃はElasticsearchが元気ですが、
いろいろあって今回はAmazon CloudSearchを使ってみました。

AWS SDKは昨年メジャーアップデートがあり、
それ以降のCloudSearch周りの日本語資料があまり見つからないので、
個人的なメモも兼ねて導入部分を紹介します。

CloudSearchの設定

早速AWSコンソールからからCloudSearchを開いてみましょう。
他のAWSのサービスと同様に、メニューバーの「Service」から選択して開くことができます。

この画面では手動で「Domain」を作成したり、「Index Fields」の構成を行ったりできます。
DomainというのはRDBで言うところのテーブルで、Index Fieldsはテーブル定義みたいなものです。

今回はRubyのSDKからDomainを作ったりするのが目的なので、
この画面での操作方法は割愛します。

ではSDKからAWSにアクセスするため、
ACCESS_KEYとSECRET_ACCESS_KEYを発行していきましょう。

この辺りは既知の方も多いと思いますので詳細は省きますが、
Security Credentialsを開いてユーザを発行しましょう。

ユーザを作成するとACCESS_KEYとSECRET_ACCESS_KEYが発行されます。
続いて、Usersのリストから今作成したユーザを開き、ポリシーを追加します。
まずAttach Policyをクリックしましょう。

「CloudSearchFullAccess」を選択します。

するとポリシーが追加されました。

これでSDKからCloudSearchにアクセスする準備は完了です。

Rubyから操作する

まずは準備です。gemのaws-sdkをインストールします。

$gem install aws-sdk

では早速スクリプトを書いていきます。
まずはDomainを作ってみましょう。

createCloudSearchDomain.rb
# encoding: utf-8
require 'aws-sdk-core'

cloudsearch = Aws::CloudSearch::Client.new(
  region: 'ap-northeast-1', #Tokyoリージョンです
  access_key_id: 'ACCESS_KEY',
  secret_access_key: 'SECRET_ACCESS_KEY'
)

resp = cloudsearch.create_domain(
  domain_name: "testdomain",
)
puts resp.successful?

ACCESS_KEYとSECRET_ACCESS_KEYは先程作成して設定したものを代入してください。
ではこれを流してみます。

$ruby createCloudSearchDomain.rb
true

responseがtrueになってます。
AWSコンソールを確認すると...

ちゃんとDomainが新たにできていました。
これでひとまずRubyからAmazon CloudSearchを操作するのは出来そうです。

ひとまず今回は以上で!